package nl.uva.se.ql.gui.widgets.questions; import javafx.scene.Node; import nl.uva.se.ql.ast.statement.Question; import nl.uva.se.ql.evaluation.value.Value; import nl.uva.se.ql.gui.mediators.Mediator; import nl.uva.se.ql.gui.validators.Validator; public abstract class BaseQuestion<T> { private final Question question; private final Validator validator; private final Mediator mediator; public BaseQuestion(Question question, Mediator mediator) { this.question = question; this.validator = initValidator(); this.mediator = mediator; } public abstract Validator initValidator(); public Mediator getMediator() { return mediator; } public Question getQuestion() { return question; } public Validator getValidator() { return validator; } public abstract T undoChange(T newValue, T oldValue); public abstract Value getValue(); public abstract Node getWidget(); }