package gui.questions;
import evaluator.BooleanValue;
import evaluator.Value;
import gui.listeners.Updater;
import java.util.LinkedHashSet;
public class IfElseQuestionUI implements IQuestionUI,IQuestionUpdater {
private final LinkedHashSet<IQuestionUI> ifBody, elseBody;
private final Updater updater;
private final String trueValue;
private final BooleanValue setTrue, setFalse;
public IfElseQuestionUI(Updater updater) {
this.ifBody = new LinkedHashSet<IQuestionUI>();
this.elseBody = new LinkedHashSet<IQuestionUI>();
this.updater = updater;
this.trueValue = new BooleanValue(true).toString();
this.setTrue = new BooleanValue(true);
this.setFalse = new BooleanValue(false);
}
public void showIfBody(IQuestionUI iQuestionUI) {
ifBody.add(iQuestionUI);
}
public void showElseBody(IQuestionUI accept) {
elseBody.add(accept);
}
@Override
public void setValue(Value value) {
assert false: "GUI Error. setValue() can't be used it if-statement questions.";
}
@Override
public void setVisibilityValue(Value value) {
for (IQuestionUI question : ifBody) {
question.setVisibilityValue(value);
}
for (IQuestionUI question : elseBody) {
if(trueValue.equals(value.toString())) {
question.setVisibilityValue(setFalse);
}
else {
question.setVisibilityValue(setTrue);
}
}
}
@Override
public Updater getUpdater() {
return this.updater;
}
@Override
public void updateGUI() {
this.updater.updateGUI(this);
}
}