Undoable interactive actions and programmatic commands that can be carried out by MindFusion.Diagramming are represented by Command subclasses. The Command class provides the necessary interface to Execute, Undo or Redo actions. In some cases you will have to implement these methods in derived classes, but you must not call them directly. Use the Undo or Redo methods of the UndoManager to undo or redo a command. The UndoManager methods call the respective Command methods and in addition update the state of the command history and the Diagram.
The following MindFusion.Diagramming classes are derived from Command:
Command | Description |
---|---|
Adds a new item to the diagram. | |
Removes an item from the diagram. | |
Creates a new hierarchical group. | |
Destroys a group. | |
Attaches an item to a group. | |
Detaches an item from a group. | |
Moves or resizes an item. | |
Change number of table's columns or rows. | |
Expands or collapses a tree of items. | |
Scrolls table's rows. | |
Expands or collapses tables sections. | |
Handles undo/redo of item property changes. | |
Allows several actions to be undo and redone at the same time. |
Instances of most of these classes are created implicitly by MindFusion.Diagramming in response to users' actions or method calls. You might need to explicitly instantiate only ChangeItemCmd - to undo or redo property changes - and CompositeCmd - to present several actions as single undoable operation.
The data of your application might be tightly integrated in MindFusion.Diagramming diagrams, for example via Tag objects or fields in custom node classes. In these cases MindFusion.Diagramming cannot detect, undo or redo changes to your data. To enable undo of such changes, you must inherit the Command class and implement your versions of the Execute, Undo and Redo methods. To record your own action in the undo/redo history, call the ExecuteCommand method of the Diagram class.