77 lines
1.9 KiB
VB.net
77 lines
1.9 KiB
VB.net
Namespace Undo
|
|
Public Class CommandManager
|
|
Protected Property UndoCommands As New Stack(Of ICommand)
|
|
|
|
Protected Property RedoCommands As New Stack(Of ICommand)
|
|
|
|
|
|
''' <summary>
|
|
''' 运行命令,并将命令添加至撤销堆栈
|
|
''' </summary>
|
|
''' <param name="command"></param>
|
|
Public Sub RunCommand(command As ICommand)
|
|
command.Execute()
|
|
|
|
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
|
|
End Namespace |