Skip to content

Commit 05112aa

Browse files
authored
Added noOpUndoManager (#881)
1 parent 19b6302 commit 05112aa

1 file changed

Lines changed: 34 additions & 1 deletion

File tree

richtextfx/src/main/java/org/fxmisc/richtext/util/UndoUtils.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import org.fxmisc.richtext.model.TextChange;
88
import org.fxmisc.undo.UndoManager;
99
import org.fxmisc.undo.UndoManagerFactory;
10-
import org.reactfx.EventStream;
10+
import org.reactfx.value.Val;
11+
12+
import javafx.beans.value.ObservableBooleanValue;
1113

1214
import java.time.Duration;
1315
import java.util.List;
@@ -35,6 +37,37 @@ public static <PS, SEG, S> UndoManager defaultUndoManager(GenericStyledArea<PS,
3537
: plainTextUndoManager(area);
3638
}
3739

40+
/**
41+
* Constructs an UndoManager with no history
42+
*/
43+
public static UndoManager noOpUndoManager() {
44+
return new UndoManager() {
45+
46+
private final Val<Boolean> alwaysFalse = Val.constant(false);
47+
48+
@Override public boolean undo() { return false; }
49+
@Override public boolean redo() { return false; }
50+
@Override public Val<Boolean> undoAvailableProperty() { return alwaysFalse; }
51+
@Override public boolean isUndoAvailable() { return false; }
52+
@Override public Val<Boolean> redoAvailableProperty() { return alwaysFalse; }
53+
@Override public boolean isRedoAvailable() { return false; }
54+
@Override public boolean isPerformingAction() { return false; }
55+
@Override public boolean isAtMarkedPosition() { return false; }
56+
57+
// not sure whether these may throw NPEs at some point
58+
@Override public Val nextUndoProperty() { return null; }
59+
@Override public Val nextRedoProperty() { return null; }
60+
@Override public ObservableBooleanValue performingActionProperty() { return null; }
61+
@Override public UndoPosition getCurrentPosition() { return null; }
62+
@Override public ObservableBooleanValue atMarkedPositionProperty() { return null; }
63+
64+
// ignore these
65+
@Override public void preventMerge() { }
66+
@Override public void forgetHistory() { }
67+
@Override public void close() { }
68+
};
69+
}
70+
3871
/* ********************************************************************** *
3972
* *
4073
* UndoManager Factory Methods *

0 commit comments

Comments
 (0)