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 @@ - -