package games.strategy.engine.data.properties;
import java.awt.Dimension;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JComponent;
import javax.swing.JTextField;
/**
* A string property with a simple text field editor.
*/
public class StringProperty extends AEditableProperty {
private static final long serialVersionUID = 4382624884674152208L;
private String m_value;
public StringProperty(final String name, final String description, final String defaultValue) {
super(name, description);
m_value = defaultValue;
}
@Override
public JComponent getEditorComponent() {
final JTextField text = new JTextField(m_value);
text.addActionListener(e -> m_value = text.getText());
text.addFocusListener(new FocusListener() {
@Override
public void focusGained(final FocusEvent e) {}
@Override
public void focusLost(final FocusEvent e) {
m_value = text.getText();
}
});
final Dimension ourMinimum = new Dimension(80, 20);
text.setMinimumSize(ourMinimum);
text.setPreferredSize(ourMinimum);
return text;
}
@Override
public Object getValue() {
return m_value;
}
@Override
public void setValue(final Object value) throws ClassCastException {
m_value = (String) value;
}
@Override
public boolean validate(final Object value) {
if (value == null) {
return true;
}
return value instanceof String;
}
}