/// <summary>Adds the specified action to be listed as an action that can be undone</summary> public static void AddAction(UndoableAction action) { if (redoStack.Count > 0) { redoStack.Clear(); } activitiesStack.Push(action); //todo apply ( remove excess code ) action.Apply(); OnUndoAltered(activitiesStack.Count, action); OnRedoAltered(redoStack.Count, null); }
/// <summary>Undoes the last action performed, if any</summary> public static void Undo() { if (!CanUndo) { return; } UndoableAction action = activitiesStack.Pop(); action.Undo(); redoStack.Push(action); OnRedoAltered(redoStack.Count, action); if (activitiesStack.Count == 0) { OnUndoAltered(activitiesStack.Count, null); } else { OnUndoAltered(activitiesStack.Count, activitiesStack.Peek()); } }