Files

70 lines
1.6 KiB
VB.net
Raw Permalink Normal View History

2025-12-11 14:22:51 +08:00
Public Class CommandManager
Protected UndoCommands As New Stack(Of ICommand)
Protected RedoCommands As New Stack(Of ICommand)
''' <summary>
''' 运行命令,并将命令添加至撤销堆栈
''' </summary>
''' <param name="command"></param>
Public Sub RunCommand(command As ICommand)
command.Redo()
AddUndoCommand(command)
End Sub
''' <summary>
''' 将命令添加至撤销堆栈
''' </summary>
Public Sub AddUndoCommand(command As ICommand)
UndoCommands.Push(command)
If RedoCommands.Count > 0 Then
ClearRedoCommands()
End If
End Sub
''' <summary>
''' 清空撤销命令堆栈
''' </summary>
Public Sub ClearUndoCommands()
UndoCommands.Clear()
End Sub
''' <summary>
''' 清空重做命令堆栈
''' </summary>
Public Sub ClearRedoCommands()
RedoCommands.Clear()
End Sub
''' <summary>
''' 清空撤销与重做命令堆栈
''' </summary>
Public Sub ClearCommands()
ClearUndoCommands()
ClearRedoCommands()
End Sub
''' <summary>
''' 执行撤销命令
''' </summary>
Public Sub Undo()
If UndoCommands.Count <= 0 Then Return
Dim command As ICommand = UndoCommands.Pop()
command.Undo()
RedoCommands.Push(command)
End Sub
''' <summary>
''' 执行重做命令
''' </summary>
Public Sub Redo()
If RedoCommands.Count <= 0 Then Return
Dim command As ICommand = RedoCommands.Pop()
command.Redo()
UndoCommands.Push(command)
End Sub
End Class