package edu.gui.components; import edu.gui.Subject; import edu.parser.QL.nodes.question.Question; import javax.swing.*; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; /** * Created by Steven Kok on 25/02/2015. */ public class TextBox extends AbstractBox implements Subject, FocusListener { private final JTextField jTextField; public TextBox(Question question) { super(question); jTextField = new JTextField(); jTextField.addFocusListener(this); jTextField.setColumns(15); initialize(); } private void initialize() { jTextField.setText(getQuestion().getValue().getValue()); if (computedQuestion(getQuestion())) { jTextField.setEditable(false); this.removeEventListeners(); } } @Override public void removeEventListeners() { this.jTextField.removeFocusListener(this); } @Override public void notifyObservers() { getObservers().stream() .forEach(observer -> observer.update(this)); } @Override public JComponent getComponent() { return jTextField; } @Override public void focusGained(FocusEvent e) { } @Override public void focusLost(FocusEvent e) { notifyObservers(); } public String getText() { return jTextField.getText(); } }