package org.uva.student.calinwouter.qlqls.ql; import org.uva.student.calinwouter.qlqls.ql.gui.AbstractSwingGUI; import org.uva.student.calinwouter.qlqls.ql.gui.QLWidgetFetcher; import org.uva.student.calinwouter.qlqls.ql.model.StateWrapper; import org.uva.student.calinwouter.qlqls.ql.gui.widgets.LabelWithWidgetWidget; import org.uva.student.calinwouter.qlqls.qls.widgets.computedvalue.LabelWidget; import org.uva.student.calinwouter.qlqls.ql.interfaces.ITypeDescriptor; import org.uva.student.calinwouter.qlqls.ql.model.VariableTable; import org.uva.student.calinwouter.qlqls.ql.interfaces.IQLRenderer; import org.uva.student.calinwouter.qlqls.ql.model.*; import javax.swing.*; import java.awt.*; public class QLGUI extends AbstractSwingGUI implements IQLRenderer<Component> { private final QLInterpreter qlInterpreter; private final StaticFields fieldsList; private final StateWrapper stateWrapper; @Override protected String getFrameTitle() { return "QL Viewer"; } @Override protected Component renderFrameContent() { final JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); for (AbstractStaticFormField f : fieldsList) { panel.add(render(f)); } return panel; } public Component render(AbstractStaticFormField formField) { return formField.applyRenderer(this); } public Component render(StaticQuestionField staticQuestionField) { final ITypeDescriptor typeDescriptor = staticQuestionField.getTypeDescriptor(); final QLWidgetFetcher qlWidgetFetcher = new QLWidgetFetcher(qlInterpreter, staticQuestionField, stateWrapper); qlWidgetFetcher.createWidget(typeDescriptor); return qlWidgetFetcher.getWidget().getWidgetComponent(); } public Component render(StaticComputedValueField staticComputedValueField) { final String identifier = staticComputedValueField.getVariable(); final LabelWidget valueRepresentingLabelWidget = new LabelWidget(identifier, stateWrapper); final LabelWithWidgetWidget labelWithWidgetWidget; final String fieldLabel = staticComputedValueField.getLabel(); labelWithWidgetWidget = new LabelWithWidgetWidget( fieldLabel, identifier, valueRepresentingLabelWidget, stateWrapper); return labelWithWidgetWidget.getWidgetComponent(); } public QLGUI(QLInterpreter qlInterpreter, VariableTable variableTable, StaticFields fieldsList) { this.qlInterpreter = qlInterpreter; this.fieldsList = fieldsList; stateWrapper = new StateWrapper(variableTable); } }