package dev.kske.undoredo.javafx; import java.util.Optional; import javafx.beans.property.*; import dev.kske.undoredo.core.*; /** * A change manager that exposes its state through JavaFX properties, thereby allowing a direct * integration of Undo-Redo with JavaFX listeners and property bindings. * * @param the change type to store in this change manager * @author Kai S. K. Engelbart * @since 0.0.1 * @see ChangeManagerWrapper */ public interface ObservableChangeManager extends ChangeManager { ReadOnlyObjectProperty lastChangeProperty(); @Override default Optional getLastChange() { return Optional.ofNullable(lastChangeProperty().get()); } ReadOnlyBooleanProperty atMarkedChangeProperty(); @Override default boolean isAtMarkedChange() { return atMarkedChangeProperty().get(); } ReadOnlyBooleanProperty undoAvailableProperty(); @Override default boolean isUndoAvailable() { return undoAvailableProperty().get(); } ReadOnlyBooleanProperty redoAvailableProperty(); @Override default boolean isRedoAvailable() { return redoAvailableProperty().get(); } }