package database; import java.awt.Dimension; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class IntegerDatabaseProperty extends DatabaseProperty { private int _value; private JSpinner _editSpinner; public IntegerDatabaseProperty(String name) { _name = name; _type = "Integer"; _value = 0; JPanel editUI = new JPanel(); editUI.setLayout(new BoxLayout(editUI, BoxLayout.X_AXIS)); JLabel editLabel = new JLabel(" " + _name + ":"); editUI.add(editLabel); _editSpinner = new JSpinner(); _editSpinner.setMaximumSize(new Dimension(editLabel.getPreferredSize().width, editLabel.getPreferredSize().height*4)); _editSpinner.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { _value = (Integer)_editSpinner.getValue(); } }); editUI.add(_editSpinner); _editUI = editUI; } public void setValue(int value) { _value = value; _editSpinner.setValue(_value); } @Override public void update(DatabaseModel model) { _editSpinner.setValue(_value); } @Override public Object getTableElement() { return _value; } @Override public void setTableElement(Object value) { _value = (Integer)value; } @Override public boolean isTableElementEditable() { return true; } @Override public DatabaseProperty initializeInstance() { return new IntegerDatabaseProperty(_name); } @Override public String toXML() { String xml = "<IntegerProperty name=\"" + _name + "\" value=\"" + _value + "\"/>"; return xml; } }