package org.uva.sea.ql.gui.questionaire; import java.util.Observable; import java.util.Observer; import org.uva.sea.ql.ast.statement.ExpressionQuestion; import org.uva.sea.ql.evaluate.EvaluateExpression; import org.uva.sea.ql.evaluate.Value; import org.uva.sea.ql.gui.widget.Widget; public class ExpressionObserver implements Observer { private final Widget widget; private final State state; private final ExpressionQuestion question; public ExpressionObserver(Widget widget, State state, ExpressionQuestion question){ this.widget = widget; this.state = state; this.question = question; } public void update(Observable o, Object arg) { Value value = question.getExpression().accept(new EvaluateExpression(state.getEnvironment())); state.addIdentifier(question.getIdentifier(), value); state.notify(question.getIdentifier()); widget.setValue(value); } }