48 lines
1.1 KiB
Java
48 lines
1.1 KiB
Java
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 <C> the change type to store in this change manager
|
|
* @author Kai S. K. Engelbart
|
|
* @since 0.0.1
|
|
* @see ChangeManagerWrapper
|
|
*/
|
|
public interface ObservableChangeManager<C extends Change> extends ChangeManager<C> {
|
|
|
|
ReadOnlyObjectProperty<C> lastChangeProperty();
|
|
|
|
@Override
|
|
default Optional<C> 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();
|
|
}
|
|
}
|