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()); } } }