summaryrefslogtreecommitdiff
path: root/src/main/java/design/controller/userinput/UndoActions.java
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-11-16 02:01:58 -0500
committersowgro <tpoke.ferrari@gmail.com>2025-11-16 02:01:58 -0500
commit969b8071dd799dfaed939e10bf77b8a1ad42f9dc (patch)
tree214016dc742a155512fbb2f851cf589509f3b361 /src/main/java/design/controller/userinput/UndoActions.java
parentcf59d52cba70742f1d4098c38b4c7a798b3d89fa (diff)
parent43530df067b1132b944e9619bdf60b72264829ec (diff)
downloaddesignproject-design-6-969b8071dd799dfaed939e10bf77b8a1ad42f9dc.tar.gz
designproject-design-6-969b8071dd799dfaed939e10bf77b8a1ad42f9dc.tar.bz2
designproject-design-6-969b8071dd799dfaed939e10bf77b8a1ad42f9dc.zip
Merge branch 'main' into import-exportimport-export
# Conflicts: # data/personaldb.json # src/main/java/design/controller/userinput/menus/MainMenu.java # src/main/java/design/persistence/JSONLeagueDatabase.java # src/main/java/design/persistence/JSONPersonalDatabase.java # src/test/java/design/model/ClubTest.java # src/test/java/design/model/GolferTest.java
Diffstat (limited to '')
-rw-r--r--src/main/java/design/controller/userinput/UndoActions.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/main/java/design/controller/userinput/UndoActions.java b/src/main/java/design/controller/userinput/UndoActions.java
new file mode 100644
index 0000000..6417284
--- /dev/null
+++ b/src/main/java/design/controller/userinput/UndoActions.java
@@ -0,0 +1,51 @@
+package design.controller.userinput;
+
+import design.model.undo.UndoManager;
+import design.persistence.PersonalDatabase;
+import design.runtime.Session;
+import java.io.IOException;
+
+public final class UndoActions {
+
+ private UndoActions() {
+ }
+
+ public static void undoWithSave() {
+ UndoManager um = UndoManager.instance();
+ if (!um.canUndo()) {
+ System.out.println("Nothing to undo.");
+ return;
+ }
+
+ String label = um.peekUndoLabel();
+ um.undo();
+ System.out.println("Undo: " + label);
+
+ saveCurrentGolfer();
+ }
+
+ public static void redoWithSave() {
+ UndoManager um = UndoManager.instance();
+ if (!um.canRedo()) {
+ System.out.println("Nothing to redo.");
+ return;
+ }
+
+ String label = um.peekRedoLabel();
+ um.redo();
+ System.out.println("Redo: " + label);
+
+ saveCurrentGolfer();
+ }
+
+ private static void saveCurrentGolfer() {
+ try {
+ var g = Session.getCurrentGolfer();
+ if (g != null) {
+ PersonalDatabase.instance().updateGolfer(g);
+ }
+ } catch (IOException e) {
+ System.err.println("Failed to save after undo/redo: " + e.getMessage());
+ }
+ }
+}