package gui.fields;

import gui.document_filters.DoubleDocumentFilter;
import gui.styled_components.StyledJTextField;
import gui.utils.ColourScheme;

import javax.swing.*;
import javax.swing.text.AbstractDocument;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class DoubleField extends StyledJTextField {
    public DoubleField() {
        ((AbstractDocument) getDocument()).setDocumentFilter(new DoubleDocumentFilter());

        addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(final KeyEvent e) {
                validateField();
            }
        });

        setInputVerifier(new InputVerifier() {
            @Override
            public boolean verify(final JComponent input) {
                return validateField();
            }
        });
    }

    private boolean validateField() {
        if (getText().trim().isEmpty()) {
            setForeground(Color.RED);
            return false;
        }

        try {
            Double.parseDouble(getText().trim());
        } catch (NumberFormatException e) {
            setForeground(Color.RED);
            return false;
        }

        setForeground(ColourScheme.WHITE);
        return true;
    }
}