public void AddExecutedCommand(IRevertibleCommand revertibleCommand) { lock (_lock) { PruneCommands(); _revertibleCommandsStack.Add(revertibleCommand); _currentDoneCommandStackIndex = _revertibleCommandsStack.Count - 1; UpdateCanUndoCanRedo(); } }
public void Execute(IRevertibleCommand revertibleCommand) { lock (_lock) { NotifyBeforeUndoRedoCommandExecuted(new BeforeUndoRedoCommandExecutedEventHandlerArgs(UndoRedoExecutionCategory.NEW)); revertibleCommand.Do(); AddExecutedCommand(revertibleCommand); NotifyUndoRedoCommandExecuted(new UndoRedoCommandExecutedEventHandlerArgs(UndoRedoExecutionCategory.NEW)); UpdateCanUndoCanRedo(); } }