package com.form.language.gui.widget;
import javax.swing.JPanel;
import com.form.language.ast.statement.question.Question;
import com.form.language.ast.type.BoolType;
import com.form.language.ast.type.ErrorType;
import com.form.language.ast.type.IntType;
import com.form.language.ast.type.StringType;
import com.form.language.ast.type.Type;
import com.form.language.ast.type.TypeVisitor;
import com.form.language.memory.Context;
public class WidgetFactory implements TypeVisitor<Widget> {
private Question question;
private Context context;
private JPanel panel;
public Widget createWidget(Question q, Context context, JPanel p) {
this.question = q;
this.context = context;
this.panel = p;
Type type = q.getType(context);
return type.accept(this);
}
@Override
public Widget visitBoolType(BoolType btype) {
CheckBox cb = new CheckBox(question, context);
panel.add(cb.getCheckBox());
return cb;
}
@Override
public Widget visitIntType(IntType itype) {
IntegerTextField itf = new IntegerTextField(question, context);
panel.add(itf.getTextField());
return itf;
}
@Override
public Widget visitStringType(StringType stype) {
TextField tf = new TextField(question, context);
panel.add(tf.getTextField());
return tf;
}
@Override
public Widget visitErrorType(ErrorType etype) {
return null;
}
}