package com.framsticks.gui.components; import com.framsticks.params.types.ValueParam; import com.framsticks.util.Strings; import javax.swing.*; import java.awt.*; @SuppressWarnings("serial") public class TextFieldControl extends ValueControl { private static final Color CORRECT_COLOR = new Color(180, 255, 215); private static final Color WRONG_COLOR = new Color(255, 180, 215); private JTextField textField = new JTextField(); @Override protected boolean notifyOfChange() { boolean result = super.notifyOfChange(); textField.setBackground(result ? CORRECT_COLOR : WRONG_COLOR); return result; } public TextFieldControl(ValueParam valueParam) { super(valueParam); textField.setMinimumSize(new Dimension(0, Control.LINE_HEIGHT)); this.setMaximumSize(new Dimension(Integer.MAX_VALUE, Control.LINE_HEIGHT)); textField.setEditable(!isReadOnly()); textField.getDocument().addDocumentListener(createDocumentListener(this)); addAsOnlyChild(textField); } @Override public void setValueImpl(Object text) { textField.setText(Strings.toStringNullProof(text)); } @Override public Object getValue() { return textField.getText(); } }