SD.Tools.Algorithmia.Commands Namespace |
Class | Description | |
---|---|---|
CommandTState |
Command class which performs a command on a given object. What is performed is set by a lambda expression. State is contained inside this object.
This is a typical implementation of the Command pattern, with undo/redo capabilities. See: http://en.wikipedia.org/wiki/Command_pattern
| |
CommandBase |
Abstract base class for command classes to use in the Command pattern implementation. A base class is used instead of an interface to be able to
keep the Do and Undo methods internal, as execution of commands should be done through the CommandQueue instances.
| |
CommandQueue |
Class which is used as a command queue to store commands to execute. Supports undo/redo.
| |
CommandQueueActionPerformedEventArgs |
Simple class for the event args for the CommandQueueActionPerformed event raised in the CommandQueueManager instance.
| |
CommandQueueManager |
Class which in in charge of managing the command queues of the application. It is used in combination of a singleton provider as there's just
one instance alive in the application.
| |
CommandQueueManagerSingleton |
Singleton provider for the actual CommandQueueManager class which manages the command queues. There's one instance per appDomain.
One thread can have access to the instance at any given time.
| |
CommandQueueStack |
Class which represents a command queue stack, which is used to keep all command queues of a given context together.
| |
DoDuringUndoException |
Exception class which is thrown when a Do action is detected during an Undo action.
| |
UndoablePeriodCommand |
Special command class which marks an Undoable Period. It doesn't perform a command itself, but marks a start and an end to other commands to be
threated as a single undoable/redoable unit. It has special features: redo will re-do all contained commands and will put the CommandManager
in a special state which blocks any new commands being queued during redo. Undo will not clear the queues after a queue is completely undone.
The advantage of an undoable period is that it doesn't call methods to do things (like a command would) and therefore can be used to mark a method
which creates new objects as an undoable period while all actions performed on datastructures inside that method are tracked in the queue
of this command.
An Undoable Period is to be used with undo/redo areas where new objects are created and stored in datastructures. Re-doing these kind of areas with
normal commands will re-create new instances which causes problems with follow up commands if these are re-done too: those commands work on the
previous objects perhaps, causing problems along te way. With an undoable period you can prevent this from happening as any method which is
called through a command should be replaced with a normal method call and inside the method you should mark the code as an undoable period.
|