package ql.gui; import ql.ast.expression.Expr; import ql.ast.statement.CalculatedQuestion; import ql.ast.statement.IfCondition; import ql.ast.statement.Question; import ql.gui.canvas.Canvas; import ql.gui.input.ExprInputBuilder; import ql.gui.input.Input; import ql.gui.input.InputBuilder; import ql.gui.label.Label; import ql.gui.segment.Page; import ql.gui.segment.Row; import ql.gui.segment.Segment; import ql.semantics.CondQuestionTable; import java.util.ArrayList; import java.util.List; /** * Created by Nik on 17-2-15. */ public class SimpleModeler extends Modeler { public SimpleModeler(CondQuestionTable condQuestionTable) { super(condQuestionTable); } @Override public Canvas buildCanvas() { List<Segment> segments = new ArrayList<>(); for (Question q : this.getCondQuestionTable()) { Segment segment = q.accept(this); segments.add(segment); } List<Page> pages = new ArrayList<>(); pages.add(new Page(segments, "")); return new Canvas(this.getCondQuestionTable().getTitle(), pages); } @Override public Row visit(Question q) { Expr expr = this.getCondition(q.getId()); Label label = new Label(q.getLabel()); Input input = InputBuilder.build(q.getId(), q.getType()); return new Row(expr, label, input); } @Override public Row visit(CalculatedQuestion cq) { Expr expr = this.getCondition(cq.getId()); Label label = new Label(cq.getLabel()); Input input = ExprInputBuilder.build(cq.getId(), cq.getCalculation(), cq.getType()); return new Row(expr, label, input); } @Override public Row visit(IfCondition ifCond) { throw new IllegalStateException("Visiting if statement is not allowed"); } }