package gui.observers;
import gui.Evaluation;
import gui.render.State;
import javax.swing.JComponent;
import ast.evaluate.Bool;
import ast.evaluate.Value;
import ast.form.IfElse;
public class IfElseObserver extends ControlObserver {
private final IfElse ifelseStat;
protected JComponent ifPanel;
protected JComponent elsePanel;
private final State state;
public IfElseObserver(IfElse ifelseStat, JComponent ifComp, JComponent elseComp, State state) {
this.state = state;
this.ifelseStat = ifelseStat;
this.ifPanel = ifComp;
this.elsePanel = elseComp;
}
@Override
public void evaluate() {
Value val = ifelseStat.getExpr().accept(new Evaluation(state.getEnvValues()));
boolean visible = ((Bool)val).getValue();
ifPanel.setVisible(visible);
if(elsePanel != null){
elsePanel.setVisible(!visible);
}
}
}