/// <summary> /// Команда Отменить /// </summary> private void UndoImplementation() { if (!Commands.Any()) { return; } var commandToUndo = Commands[Commands.Count - 1]; commandToUndo.Rollback(); Commands.RemoveAt(Commands.Count - 1); UndoedCommands.Add(commandToUndo); }
/// <summary> /// Команда Вернуть /// </summary> private void RedoImplementation() { if (!UndoedCommands.Any()) { return; } var commandToRedo = UndoedCommands[Commands.Count - 1]; commandToRedo.Execute(); UndoedCommands.RemoveAt(Commands.Count - 1); Commands.Add(commandToRedo); }
/// <summary> /// Выполняет новую команду /// </summary> /// <param name="command">команда</param> public void ExecuteNewCommand(IUndoRedoCommand command) { if (command == null) { throw new ArgumentNullException(nameof(command)); } if (UndoedCommands.Any()) { UndoedCommands.Clear(); } Commands.Add(command); command.Execute(); }
internal void Clear() { UndoedCommands.Clear(); Commands.Clear(); }