package database; import java.awt.Dimension; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; public class TextDatabaseProperty extends DatabaseProperty { private String _text = ""; private JTextField _editField; public TextDatabaseProperty(String name) { _name = name; _type = "Text"; // Create the UI for editing this property JPanel editUI = new JPanel(); editUI.setLayout(new BoxLayout(editUI, BoxLayout.X_AXIS)); JLabel editLabel = new JLabel(" " + _name + ":"); editUI.add(editLabel); _editField = new JTextField(); _editField.setMaximumSize(new Dimension(Integer.MAX_VALUE, editLabel.getPreferredSize().height*2)); _editField.setColumns(10); _editField.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { _text = _editField.getText(); } public void insertUpdate(DocumentEvent e) { _text = _editField.getText(); } public void removeUpdate(DocumentEvent e) { _text = _editField.getText(); } }); editUI.add(_editField); _editUI = editUI; } public void setText(String text) { _text = text; _editField.setText(_text); } @Override public void update(DatabaseModel model) { _editField.setText(_text); } @Override public Object getTableElement() { return _text; } @Override public void setTableElement(Object value) { _text = value.toString(); } @Override public boolean isTableElementEditable() { return true; } @Override public DatabaseProperty initializeInstance() { return new TextDatabaseProperty(_name); } @Override public String toXML() { String xml = "<TextProperty name=\"" + _name + "\" text=\"" + _text + "\"/>"; return xml; } }