Imports UTS_Core.Undo Namespace UTSModule.Station Public Class RowNodeCommand Implements ICommand Private ReadOnly _row As Integer Private ReadOnly _rowNode As RowNode Sub New(rowNode As RowNode, row As Integer, redoString As String) _row = row _rowNode = rowNode End Sub Public Sub Redo() Implements ICommand.Redo End Sub Public Sub Undo() Implements ICommand.Undo End Sub Public Sub Execute() Implements ICommand.Execute Redo() End Sub End Class Public Class RowNodeCommand2 Implements ICommand Enum ChangeType Add Remove Insert RemoveChildAt RemoveChildNode MoveUp MoveDown MoveLeft MoveRight TextChanged End Enum Private _parentNode As RowNode Private _rowNode As RowNode Private _index As Integer '增加节点的位置 Private _type As ChangeType '当前操作的类型 Sub New(parentNode As RowNode, rowNode As RowNode, type As ChangeType, Optional index As Integer = 0) _parentNode = parentNode _rowNode = rowNode _index = index _type = type End Sub Public Sub Execute() Implements ICommand.Execute Redo() End Sub Public Sub Redo() Implements ICommand.Redo Select Case _type Case ChangeType.Add _parentNode.AddNode(_rowNode) _index = _rowNode.RowIndex Case ChangeType.Insert _parentNode.InsertNode(_index, _rowNode) Case ChangeType.Remove _index = _rowNode.RowIndex _parentNode.RemoveChildNode(_rowNode) Case ChangeType.RemoveChildAt _index = _rowNode.RowIndex _parentNode.RemoveChildAt(_index) Case ChangeType.RemoveChildNode _index = _rowNode.RowIndex _parentNode.RemoveChildNode(_rowNode) Case ChangeType.MoveUp _rowNode.MoveUp() Case ChangeType.MoveDown _rowNode.MoveDown() Case ChangeType.MoveLeft _rowNode.MoveLeft() Case ChangeType.MoveRight _rowNode.MoveRight() Case ChangeType.TextChanged End Select End Sub Public Sub Undo() Implements ICommand.Undo Select Case _type Case ChangeType.Add _parentNode.RemoveChildNode(_rowNode) Case ChangeType.Insert _parentNode.RemoveChildAt(_index) Case ChangeType.Remove _parentNode.InsertNode(_index, _rowNode) Case ChangeType.RemoveChildAt _parentNode.InsertNode(_index, _rowNode) Case ChangeType.RemoveChildNode _parentNode.InsertNode(_index, _rowNode) Case ChangeType.MoveUp _rowNode.MoveDown() Case ChangeType.MoveDown _rowNode.MoveUp() Case ChangeType.MoveLeft _rowNode.MoveRight() Case ChangeType.MoveRight _rowNode.MoveLeft() Case ChangeType.TextChanged End Select End Sub End Class End Namespace