package ql.gui.content; import javax.swing.JComponent; import ql.Value; import ql.ast.expression.Identifier; import ql.ast.visitor.evaluator.ValueEnvironment; import ql.gui.DefaultComponent; import ql.gui.Component; import ql.gui.structure.Panel; public class UIQuestion extends DefaultComponent { private final Identifier identifier; private final Panel questionPanel; private final ValueEnvironment valueEnvironment; private final Component questionText, questionWidget; public UIQuestion(Identifier identifier, Component questionText, Component widget, ValueEnvironment valueEnvironment) { this.identifier = identifier; this.questionText = questionText; this.questionWidget = widget; questionPanel = new Panel(this); questionPanel.addComponent(this.questionText); questionPanel.addComponent(this.questionWidget); this.valueEnvironment = valueEnvironment; } @Override public void handleChange(Value changedValue, Component source) { valueEnvironment.store(identifier, changedValue); super.handleChange(changedValue, this); } @Override public void updateComponent() { questionPanel.updateComponent(); } @Override public JComponent getComponent() { return questionPanel.getComponent(); } }