package com.form.language.gui.components;
import javax.swing.BoxLayout;
import javax.swing.JPanel;
import com.form.language.ast.expression.Expression;
import com.form.language.ast.expression.variable.ReferenceCollection;
import com.form.language.ast.statement.question.Question;
import com.form.language.gui.widget.Label;
import com.form.language.gui.widget.Widget;
import com.form.language.gui.widget.WidgetFactory;
import com.form.language.memory.Context;
public class QuestionComponent {
protected Question question;
protected Context context;
protected JPanel panel;
protected Widget widget;
public QuestionComponent(Question question, Context context,
Expression ifCondition) {
this.question = question;
this.context = context;
this.panel = new JPanel();
this.panel.setLayout(new BoxLayout(this.panel, BoxLayout.X_AXIS));
Label label = new Label(question.getText());
this.panel.add(label.getLabel());
if (ifCondition != null) {
this.panel.setVisible(false);
context.addDependantQuestion(ifCondition, this);
ReferenceCollection referenceCollection = new ReferenceCollection();
ifCondition.collectIds(referenceCollection);
context.addReference(referenceCollection, ifCondition);
}
WidgetFactory w = new WidgetFactory();
widget = w.createWidget(question, context, panel);
}
public Question getQuestion() {
return question;
}
public Widget getWidget() {
return widget;
}
public JPanel getPanel() {
return panel;
}
public void checkVisibility(boolean visible) {
this.panel.setVisible(visible);
}
public void redraw() {
this.panel.repaint();
}
}