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