org.eclipse.graphiti.features
Interface ICustomUndoableFeature

All Known Implementing Classes:
AddFeatureForPattern, CreateConnectionFeatureForPattern, CreateFeatureForPattern, DeleteFeatureForPattern, DirectEditingFeatureForPattern, LayoutFeatureForPattern, MoveShapeFeatureForPattern, ReconnectionFeatureForPattern, RemoveFeatureForPattern, ResizeShapeFeatureForPattern, UpdateFeatureForPattern

public interface ICustomUndoableFeature

This interface can by used and implemented by customers within any feature to signal the need for additional undo or redo work. When a feature implements this interface, and the framework performs an undo or a redo, the framework will call the contained methods.

Implementing this interface is especially helpful if customers want to implement undo/redo functionality for non-EMF changes, e.g. for non-EMF domain models. Note that any EMF-model change (including the changes done to the graphical representation (Graphiti PictogramElements and GraphicsAlgorithms will by handled automatically by the Graphiti framework no matter if this interface is implemented by a feature or not. The feature may use the context object (e.g. the contained properties set) passed to the contained methods while executing the feature in order to collect any information needed for undo.

Since:
0.8.0

Method Summary
 boolean canRedo(IContext context)
          Decides if the processed feature can be re-done.
 boolean canUndo(IContext context)
          Decides if the changes done by a processed feature can be undone.
 void redo(IContext context)
          This method will be called to actually do the work needed for redo.
 void undo(IContext context)
          This method will be called to actually do the work needed for undo.
 

Method Detail

canUndo

boolean canUndo(IContext context)
Decides if the changes done by a processed feature can be undone.

Note that as soon as any feature reports false here, also all previous entries in the command stack are no longer reachable for undo.

Note: this method with exactly the same signature is also already part of the IFeature contract. It is repeated here for transparency purposes only.

Parameters:
context - this is the instance of the IContext object that was in use when executing the feature.
Returns:
true if the feature can be undone, false if not

undo

void undo(IContext context)
This method will be called to actually do the work needed for undo. Customers may revert their non-EMF changes done by the feature here.

Parameters:
context - this is the instance of the IContext object that was in use when executing the feature

canRedo

boolean canRedo(IContext context)
Decides if the processed feature can be re-done.

Note that as soon as any feature reports false here, also all consecutive entries in the command stack are no longer reachable for redo.

Parameters:
context - this is the instance of the IContext object that was in use when executing the feature
Returns:
true if the feature can be re-done, false if not

redo

void redo(IContext context)
This method will be called to actually do the work needed for redo. Customers may re-apply their non-EMF changes done by the feature here. (Usually it might be sufficient to delegate to the execution method of the feature.)

Parameters:
context - this is the instance of the IContext object that was in use when executing the feature


Copyright (c) SAP AG 2005, 2010.