package de.fhswf.fbin.java2fx.validation; import java.util.ArrayList; import java.util.List; import javafx.beans.value.ObservableValue; public abstract class ValidationAdapter implements Validator { private List> listeners; private boolean wasValid = true; // Partial implementation of interface Validator public boolean validate(T value) { boolean isValidNow = isValid(value); if (isValidNow != wasValid) { // state changed fireChangedEvent(value, isValidNow); wasValid = isValidNow; } return (isValidNow); } // Implementation of interface ChangeListener @Override public void changed(ObservableValue observable, T oldValue, T newValue) { validate(newValue); } // Support for StatusListeners public void addStatusListener(StatusListener l) { if (listeners == null) { listeners = new ArrayList<>(); } listeners.add(l); } public void removeStatusListener(StatusListener l) { if (listeners != null) { listeners.remove(l); } } public void fireChangedEvent(T value, boolean status) { if (listeners != null) { StatusEvent event = new StatusEvent(value, status); for (StatusListener sl : listeners) { sl.stateChanged(event); } } } }