package nl.uva.se.ql.gui.listeners;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import nl.uva.se.ql.gui.mediators.Mediator;
import nl.uva.se.ql.gui.validators.Validator;
import nl.uva.se.ql.gui.widgets.questions.BaseQuestion;
public class Listener<T> {
private final Mediator med;
public Listener(Mediator med) {
this.med = med;
}
public ChangeListener<T> addListener(final BaseQuestion<T> question, final Validator validator) {
return new ChangeListener<T>() {
@Override
public void changed(ObservableValue<? extends T> observable,
T oldValue, T newValue) {
if (validator.isValid(newValue)) {
med.update(question.getQuestion(), question.getValue());
} else {
question.undoChange(newValue, oldValue);
}
}
};
}
}