From ca97bfc5547057c3fbb1abd566f4d247143ad0f6 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 6 Sep 2017 14:58:15 +0300 Subject: [PATCH] Add undo/redo functionality --- .../hotarufx/ui/controller/EditorController.java | 16 ++++++++++++++++ app/src/main/resources/fxml/Editor.fxml | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/annimon/hotarufx/ui/controller/EditorController.java b/app/src/main/java/com/annimon/hotarufx/ui/controller/EditorController.java index 6b7afd2..f3fbec8 100644 --- a/app/src/main/java/com/annimon/hotarufx/ui/controller/EditorController.java +++ b/app/src/main/java/com/annimon/hotarufx/ui/controller/EditorController.java @@ -20,9 +20,11 @@ import java.util.Arrays; import java.util.ResourceBundle; import java.util.concurrent.Executors; import javafx.application.Platform; +import javafx.beans.binding.Bindings; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; +import javafx.scene.control.Button; import javafx.scene.control.TextArea; import javafx.scene.control.TitledPane; import javafx.stage.Stage; @@ -32,6 +34,9 @@ import org.fxmisc.richtext.LineNumberFactory; public class EditorController implements Initializable, DocumentListener { + @FXML + private Button undoButton, redoButton; + @FXML private CodeArea editor; @@ -120,7 +125,18 @@ public class EditorController implements Initializable, DocumentListener { syntaxHighlighter = new SyntaxHighlighter(editor, Executors.newSingleThreadExecutor()); syntaxHighlighter.init(); documentManager = new FileManager(); + initUndoRedo(); openSample(); + editor.getUndoManager().forgetHistory(); + } + + private void initUndoRedo() { + undoButton.disableProperty().bind( + Bindings.not(editor.undoAvailableProperty())); + redoButton.disableProperty().bind( + Bindings.not(editor.redoAvailableProperty())); + undoButton.setOnAction(a -> editor.undo()); + redoButton.setOnAction(a -> editor.redo()); } public void setPrimaryStage(Stage primaryStage) { diff --git a/app/src/main/resources/fxml/Editor.fxml b/app/src/main/resources/fxml/Editor.fxml index eed701a..a621fce 100644 --- a/app/src/main/resources/fxml/Editor.fxml +++ b/app/src/main/resources/fxml/Editor.fxml @@ -31,12 +31,12 @@ - -