package gui.listeners; import evaluator.ValueRepository; import gui.GUIRenderer; import gui.questions.IQuestionUI; import gui.questions.SimpleQuestionUI; import java.util.Set; import ast.expression.Expression; public class Updater { private final GUIRenderer render; private final ValueRepository valueRepository; private final Expression expression; private EvaluateExpression evaluator = null; public Updater(Expression expression, GUIRenderer render, ValueRepository valueRepository) { this.valueRepository = valueRepository; this.render = render; this.expression = expression; } public void updateGUI(IQuestionUI questionValueSetter) { this.evaluator = prepareEvaluator(questionValueSetter); Set<String> idKeys = valueRepository.getIDkeys(); for ( String key : idKeys) { if (!this.render.containsSimpleQuestionUI(key)) { continue; } SimpleQuestionUI simp = this.render.getIDSimpleQuestionUI(key); simp.getWc().addDocListener(evaluator); } } public EvaluateExpression getEvaluator() { return this.evaluator; } public EvaluateExpression prepareEvaluator(IQuestionUI questionValueSetter) { if(evaluator != null) { return this.evaluator; } return this.evaluator = new EvaluateExpression(valueRepository, expression, questionValueSetter); } }