package ql.ast.form.stat; import java.util.List; import javax.swing.JPanel; import ql.ast.environment.Environment; import ql.ast.expr.exprType.Expr; import ql.ast.form.Form; import ql.ast.form.FormItems; public class IfElseStatement extends IfStatement{ private final List<FormItems> elseBody; public IfElseStatement(Expr expr, List<FormItems> ifBody, List<FormItems> elseBody) { super(expr, ifBody); this.elseBody = elseBody; } public List<FormItems> getElseBody() { return elseBody; } @Override public boolean validate(Environment environment) { boolean valid = super.validate(environment); for (FormItems f : elseBody) { if (!f.validate(environment.getScopeEnvironment(f))) valid = false; } return errors.size() == 0 && valid; } @Override public void buildForm(JPanel mainPanel, Environment environment, Form form) { super.buildForm(mainPanel, environment, form); for (FormItems f : elseBody) { f.buildForm(mainPanel, environment.getScopeEnvironment(this), form); } } @Override public void setVisible(Boolean visible) { super.setVisible(visible); for (FormItems f : elseBody) { f.setVisible(visible); } } @Override public void eval(Environment environment) { setVisible(!isExprValid(environment)); super.setVisible(isExprValid(environment)); evalIfBody(environment); if (!isExprValid(environment)) { for (FormItems f : elseBody) { f.eval(environment.getScopeEnvironment(this)); } } } }