package main.nl.uva.ui.element; import javax.swing.JLabel; import javax.swing.JPanel; import main.nl.uva.parser.expression.ExpressionChangeListener; import main.nl.uva.parser.expression.Variable; import main.nl.uva.parser.expression.unary.UnaryExpression; import main.nl.uva.ui.UI; import main.nl.uva.ui.UIValueChangeListener; import main.nl.uva.ui.types.ValueUI; import main.nl.uva.validation.type.Bool; import main.nl.uva.validation.type.Money; import main.nl.uva.validation.type.Text; public class DeclarationUI extends UIElement implements UIValueChangeListener, ExpressionChangeListener { private final String _function; private final Variable _variable; protected ValueUI _valueUI; private final JPanel _panel; public DeclarationUI(final Variable variable, final String function, final UI parentUI) { super(parentUI); _function = function; _variable = variable; _variable.registerListener(this); _panel = generateDeclarationPanel(); } private JPanel generateDeclarationPanel() { JPanel layout = generateXAxisPanel(); JLabel label = new JLabel(_function); layout.add(label); _valueUI = _variable.getUserInterfaceRepresentation(this); layout.add(_valueUI.getComponent()); return layout; } @Override public JPanel getPanel() { return _panel; } @Override public void onChange(final boolean newValue) { _variable.setExpression(new UnaryExpression(new Bool(newValue))); recalculateForm(); } @Override public void onChange(final double newValue) { _variable.setExpression(new UnaryExpression(new Money(newValue))); recalculateForm(); } @Override public void onChange(final String newValue) { _variable.setExpression(new UnaryExpression(new Text(newValue))); recalculateForm(); } @Override public void onChange() { _valueUI.valueChange(_variable.getValue()); } }