package org.uva.student.calinwouter.qlqls.ql.gui.widgets; import org.uva.student.calinwouter.qlqls.ql.model.StateWrapper; import org.uva.student.calinwouter.qlqls.ql.QLInterpreter; import org.uva.student.calinwouter.qlqls.ql.model.VariableTable; import org.uva.student.calinwouter.qlqls.ql.types.BooleanValue; import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; public class CheckboxWidget implements IWidget { private final String questionIdentifier; private final QLInterpreter qlInterpreter; private final StateWrapper stateWrapper; private final JCheckBox checkbox; public Component getWidgetComponent() { return checkbox; } public void resetValue() { checkbox.setSelected(false); } private ItemListener createChangeListener() { return new ItemListener() { public void itemStateChanged(ItemEvent e) { VariableTable variableTable = stateWrapper.getVariableTable(); variableTable.setVariable(questionIdentifier, new BooleanValue(checkbox.isSelected())); VariableTable newVariableTable = qlInterpreter.interpret(variableTable); stateWrapper.setVariableTable(newVariableTable); } }; } public CheckboxWidget(String questionIdentifier, QLInterpreter qlInterpreter, StateWrapper stateWrapper) { this.questionIdentifier = questionIdentifier; this.qlInterpreter = qlInterpreter; this.stateWrapper = stateWrapper; this.checkbox = new JCheckBox(); checkbox.addItemListener(createChangeListener()); } }