org.eclipse.graphiti.pattern
Class DefaultFeatureProviderWithPatterns

java.lang.Object
  extended by org.eclipse.graphiti.features.impl.AbstractFeatureProvider
      extended by org.eclipse.graphiti.ui.features.DefaultFeatureProvider
          extended by org.eclipse.graphiti.pattern.DefaultFeatureProviderWithPatterns
All Implemented Interfaces:
IFeatureProvider, IMappingProvider, IFeatureProviderWithPatterns, IPatternContainer

public class DefaultFeatureProviderWithPatterns
extends DefaultFeatureProvider
implements IFeatureProviderWithPatterns

The class DefaultFeatureProviderWithPatterns is the base class for a feature provider that uses patterns. It is also possible to implement aspects of the functionality triggered here using features by simply returning these features here. In case of pattern-based functionality clients in general need to implement nothing here, because the registered patterns (see addPattern(IPattern) and addConnectionPattern(IConnectionPattern)) delegate to the pattern automatically.


Field Summary
private  List<IConnectionPattern> connectionPatters
           
private  List<IPattern> patterns
           
 
Fields inherited from class org.eclipse.graphiti.features.impl.AbstractFeatureProvider
EMPTY_PICTOGRAM_ELEMENTS, NO_OBJECTS
 
Constructor Summary
DefaultFeatureProviderWithPatterns(IDiagramTypeProvider dtp)
          Creates a new instance of DefaultFeatureProviderWithPatterns.
 
Method Summary
 void activateDirectEditingForPatterns(PictogramElement mainPictogramElement, Object domainObject)
          Convenience method to activate the direct editing for the given PictogramElement and domain object.
 void activateDirectEditingForPatterns(PictogramElement mainPictogramElement, Object domainObject, String keyProperty)
          Convenience method to activate the direct editing for the given PictogramElement and domain object.
 void addConnectionPattern(IConnectionPattern pattern)
          Adds a pattern defined to handle connections to the list of registered patterns.
 void addPattern(IPattern pattern)
          Adds a pattern defined to handle shapes to the list of registered patterns.
protected  boolean checkFeatureAndContext(IFeature feature, IContext context)
          Checks if a feature along with its context is available.
protected  boolean checkPattern(IPattern pattern, Object object)
          Checks the given pattern if it can deal with the given domain object.
 IAddFeature getAddFeature(IAddContext context)
          Tries to retrieve an add feature suiting the given add context from the registered patterns.
protected  IAddFeature getAddFeatureAdditional(IAddContext context)
          Gets the additional add feature functionality.
 Object getBusinessObjectForPictogramElement(PictogramElement pictogramElement)
          Helper method to find the domain object for a given PictogramElement.
protected  List<IConnectionPattern> getConnectionPatterns()
          Returns a new list of the registered patterns that deal with sonnection inside this feature provider.
 ICreateConnectionFeature[] getCreateConnectionFeatures()
          Retrieves an array of create connection features that are available from the registered patterns and the super class of this feature provider.
protected  ICreateConnectionFeature[] getCreateConnectionFeaturesAdditional()
          Gets the additional create connection feature functionality.
 ICreateFeature[] getCreateFeatures()
          Retrieves an array of create features that are available from the registered patterns and the super class of this feature provider.
protected  ICreateFeature[] getCreateFeaturesAdditional()
          Gets the additional create feature functionality.
 IDeleteFeature getDeleteFeature(IDeleteContext context)
          Tries to retrieve a delete feature suiting the given delete context from the registered patterns.
protected  IDeleteFeature getDeleteFeatureAdditional(IDeleteContext context)
          Gets the additional delete feature functionality.
 IDirectEditingFeature getDirectEditingFeature(IDirectEditingContext context)
          Tries to retrieve a direct editing feature suiting the given direct editing context from the registered patterns.
protected  IDirectEditingFeature getDirectEditingFeatureAdditional(IDirectEditingContext context)
          Gets the additional direct editing feature functionality.
 ILayoutFeature getLayoutFeature(ILayoutContext context)
          Tries to retrieve a layout feature suiting the given layout context from the registered patterns.
protected  ILayoutFeature getLayoutFeatureAdditional(ILayoutContext context)
          Gets the additional layout feature functionality.
 IMoveShapeFeature getMoveShapeFeature(IMoveShapeContext context)
          Tries to retrieve a move feature for shapes suiting the given move context from the registered patterns.
protected  IMoveShapeFeature getMoveShapeFeatureAdditional(IMoveShapeContext context)
          Gets the additional move feature functionality for shapes.
 IPattern getPatternForPictogramElement(PictogramElement pe)
          Gets the pattern for pictogram element.
protected  List<IPattern> getPatterns()
          Returns a new list of the registered patterns that deal with shapes inside this feature provider.
 IRemoveFeature getRemoveFeature(IRemoveContext context)
          Tries to retrieve a remove feature suiting the given remove context from the registered patterns.
protected  IRemoveFeature getRemoveFeatureAdditional(IRemoveContext context)
          Gets the additional remove feature functionality.
 IResizeShapeFeature getResizeShapeFeature(IResizeShapeContext context)
          Tries to retrieve a resize feature for shapes suiting the given resize context from the registered patterns.
protected  IResizeShapeFeature getResizeShapeFeatureAdditional(IResizeShapeContext context)
          Gets the additional resize feature functionality for shapes.
 IUpdateFeature getUpdateFeature(IUpdateContext context)
          Tries to retrieve an update feature suiting the given update context from the registered patterns.
protected  IUpdateFeature getUpdateFeatureAdditional(IUpdateContext context)
          Gets the additional update feature functionality.
protected  void traceWarning(String string, IPattern pattern, IPattern choosenPattern)
          Helper method to trace warnings when more than one pattern is executed.
 
Methods inherited from class org.eclipse.graphiti.ui.features.DefaultFeatureProvider
getAddBendpointFeature, getCopyFeature, getCustomFeatures, getMoveAnchorFeature, getMoveBendpointFeature, getMoveConnectionDecoratorFeature, getPasteFeature, getPrintFeature, getRemoveBendpointFeature, getSaveImageFeature
 
Methods inherited from class org.eclipse.graphiti.features.impl.AbstractFeatureProvider
addIfPossible, canAdd, canLayout, canUpdate, dispose, getAllBusinessObjectsForPictogramElement, getAllPictogramElementsForBusinessObject, getDiagramTypeProvider, getDirectEditingInfo, getDragAndDropFeatures, getIndependenceSolver, getLinkService, getPictogramElementForBusinessObject, getReconnectionFeature, hasPictogramElementForBusinessObject, layoutIfPossible, link, link, setIndependenceSolver, updateIfPossible, updateIfPossibleAndNeeded, updateNeeded
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

patterns

private List<IPattern> patterns

connectionPatters

private List<IConnectionPattern> connectionPatters
Constructor Detail

DefaultFeatureProviderWithPatterns

public DefaultFeatureProviderWithPatterns(IDiagramTypeProvider dtp)
Creates a new instance of DefaultFeatureProviderWithPatterns. This is usually done from the diagram type provider.

Parameters:
dtp - The diagram type provider associated with this feature provider.
Method Detail

addPattern

public void addPattern(IPattern pattern)
Adds a pattern defined to handle shapes to the list of registered patterns. For adding connection-based patterns see addConnectionPattern(IConnectionPattern). The pattern must not be null, or a IllegalArgumentException will be thrown.

Specified by:
addPattern in interface IPatternContainer
Parameters:
pattern - The Pattern to add

addConnectionPattern

public void addConnectionPattern(IConnectionPattern pattern)
Adds a pattern defined to handle connections to the list of registered patterns. For adding shape-based patterns see addPattern(IPattern). The pattern must not be null, or a IllegalArgumentException will be thrown.

Parameters:
pattern - The Pattern to add

getPatterns

protected List<IPattern> getPatterns()
Returns a new list of the registered patterns that deal with shapes inside this feature provider.

Returns:
A List of the registered shape-based patterns.

getConnectionPatterns

protected List<IConnectionPattern> getConnectionPatterns()
Returns a new list of the registered patterns that deal with sonnection inside this feature provider.

Returns:
A List of the registered connection-based patterns.

checkFeatureAndContext

protected boolean checkFeatureAndContext(IFeature feature,
                                         IContext context)
Checks if a feature along with its context is available. Delegates to the IFeature.isAvailable(IContext) method.

Parameters:
feature - The feature to check
context - The according context
Returns:
true, if the feature is available, false otherwise.

getAddFeature

public IAddFeature getAddFeature(IAddContext context)
Tries to retrieve an add feature suiting the given add context from the registered patterns. First the shape patterns, then the connection patterns are queried. If no suitable pattern functionality is found the call is delegated to the super class (via the method getAddFeatureAdditional(IAddContext)).

Specified by:
getAddFeature in interface IFeatureProvider
Overrides:
getAddFeature in class AbstractFeatureProvider
Parameters:
context - An IAddContext describing the needed functionality
Returns:
An IAddFeature in case a suitable functionality has been found, null otherwise.
See Also:
IAddFeature

getAddFeatureAdditional

protected IAddFeature getAddFeatureAdditional(IAddContext context)
Gets the additional add feature functionality. The default implementation simply delegates to AbstractFeatureProvider.getAddFeature(IAddContext).

Parameters:
context - An IAddContext describing the needed functionality
Returns:
An IAddFeature in case a suitable functionality has been found by the super class, null otherwise.

getCreateFeatures

public ICreateFeature[] getCreateFeatures()
Retrieves an array of create features that are available from the registered patterns and the super class of this feature provider. Only the shape patterns are queried. Then the call is delegated to the super class (via the method getCreateConnectionFeaturesAdditional()).

Specified by:
getCreateFeatures in interface IFeatureProvider
Overrides:
getCreateFeatures in class AbstractFeatureProvider
Returns:
An array of ICreateFeatures in case a suitable functionality has been found, an empty array otherwise.
See Also:
ICreateFeature

getCreateFeaturesAdditional

protected ICreateFeature[] getCreateFeaturesAdditional()
Gets the additional create feature functionality. The default implementation simply delegates to AbstractFeatureProvider.getCreateFeatures().

Returns:
An array of ICreateFeatures in case a suitable functionality has been found by the super class, an empty array otherwise.

getDeleteFeature

public IDeleteFeature getDeleteFeature(IDeleteContext context)
Tries to retrieve a delete feature suiting the given delete context from the registered patterns. Only the shape patterns are queried. If no suitable pattern functionality is found the call is delegated to the super class (via the method getDeleteFeatureAdditional(IDeleteContext)).

Specified by:
getDeleteFeature in interface IFeatureProvider
Overrides:
getDeleteFeature in class DefaultFeatureProvider
Parameters:
context - An IDeleteContext describing the needed functionality
Returns:
An IDeleteFeature in case a suitable functionality has been found, null otherwise.
See Also:
IDeleteFeature

getDeleteFeatureAdditional

protected IDeleteFeature getDeleteFeatureAdditional(IDeleteContext context)
Gets the additional delete feature functionality. The default implementation simply delegates to DefaultFeatureProvider.getDeleteFeature(IDeleteContext).

Parameters:
context - An IDeleteContext describing the needed functionality
Returns:
An IDeleteFeature in case a suitable functionality has been found by the super class, null otherwise.

getRemoveFeature

public IRemoveFeature getRemoveFeature(IRemoveContext context)
Tries to retrieve a remove feature suiting the given remove context from the registered patterns. Only the shape patterns are queried. If no suitable pattern functionality is found the call is delegated to the super class (via the method getRemoveFeatureAdditional(IRemoveContext)).

Specified by:
getRemoveFeature in interface IFeatureProvider
Overrides:
getRemoveFeature in class DefaultFeatureProvider
Parameters:
context - An IRemoveContext describing the needed functionality
Returns:
An IRemoveFeature in case a suitable functionality has been found, null otherwise.
See Also:
IRemoveFeature

getRemoveFeatureAdditional

protected IRemoveFeature getRemoveFeatureAdditional(IRemoveContext context)
Gets the additional remove feature functionality. The default implementation simply delegates to DefaultFeatureProvider.getRemoveFeature(IRemoveContext).

Parameters:
context - An IRemoveContext describing the needed functionality
Returns:
An IRemoveFeature in case a suitable functionality has been found by the super class, null otherwise.

getLayoutFeature

public ILayoutFeature getLayoutFeature(ILayoutContext context)
Tries to retrieve a layout feature suiting the given layout context from the registered patterns. Only the shape patterns are queried. If no suitable pattern functionality is found the call is delegated to the super class (via the method getLayoutFeatureAdditional(ILayoutContext)).

Specified by:
getLayoutFeature in interface IFeatureProvider
Overrides:
getLayoutFeature in class AbstractFeatureProvider
Parameters:
context - An ILayoutContext describing the needed functionality
Returns:
An ILayoutFeature in case a suitable functionality has been found, null otherwise.
See Also:
ILayoutFeature

getLayoutFeatureAdditional

protected ILayoutFeature getLayoutFeatureAdditional(ILayoutContext context)
Gets the additional layout feature functionality. The default implementation simply delegates to AbstractFeatureProvider.getLayoutFeature(ILayoutContext).

Parameters:
context - An ILayoutContext describing the needed functionality
Returns:
An ILayoutFeature in case a suitable functionality has been found by the super class, null otherwise.

getMoveShapeFeature

public IMoveShapeFeature getMoveShapeFeature(IMoveShapeContext context)
Tries to retrieve a move feature for shapes suiting the given move context from the registered patterns. Only the shape patterns are queried. If no suitable pattern functionality is found the call is delegated to the super class (via the method getMoveShapeFeatureAdditional(IMoveShapeContext)).

Specified by:
getMoveShapeFeature in interface IFeatureProvider
Overrides:
getMoveShapeFeature in class DefaultFeatureProvider
Parameters:
context - An IMoveShapeContext describing the needed functionality
Returns:
An IMoveShapeFeature in case a suitable functionality has been found, null otherwise.
See Also:
IMoveShapeFeature

getMoveShapeFeatureAdditional

protected IMoveShapeFeature getMoveShapeFeatureAdditional(IMoveShapeContext context)
Gets the additional move feature functionality for shapes. The default implementation simply delegates to DefaultFeatureProvider.getMoveShapeFeature(IMoveShapeContext).

Parameters:
context - An IMoveShapeContext describing the needed functionality
Returns:
An IMoveShapeFeature in case a suitable functionality has been found by the super class, null otherwise.

getResizeShapeFeature

public IResizeShapeFeature getResizeShapeFeature(IResizeShapeContext context)
Tries to retrieve a resize feature for shapes suiting the given resize context from the registered patterns. Only the shape patterns are queried. If no suitable pattern functionality is found the call is delegated to the super class (via the method getResizeShapeFeatureAdditional(IResizeShapeContext)).

Specified by:
getResizeShapeFeature in interface IFeatureProvider
Overrides:
getResizeShapeFeature in class DefaultFeatureProvider
Parameters:
context - An IResizeShapeContext describing the needed functionality
Returns:
An IResizeShapeFeature in case a suitable functionality has been found, null otherwise.
See Also:
IResizeShapeFeature

checkPattern

protected boolean checkPattern(IPattern pattern,
                               Object object)
Checks the given pattern if it can deal with the given domain object. The default implementation simply delegates to the pattern's IPattern.isMainBusinessObjectApplicable(Object) method.

Parameters:
pattern - The pattern to check
object - The domain object
Returns:
true, if the pattern can handle the domain object, false otherwise.

getResizeShapeFeatureAdditional

protected IResizeShapeFeature getResizeShapeFeatureAdditional(IResizeShapeContext context)
Gets the additional resize feature functionality for shapes. The default implementation simply delegates to DefaultFeatureProvider.getResizeShapeFeature(IResizeShapeContext) .

Parameters:
context - An IResizeShapeContext describing the needed functionality
Returns:
An IResizeShapeFeature in case a suitable functionality has been found by the super class, null otherwise.

getUpdateFeature

public IUpdateFeature getUpdateFeature(IUpdateContext context)
Tries to retrieve an update feature suiting the given update context from the registered patterns. Only the shape patterns are queried. If no suitable pattern functionality is found the call is delegated to the super class (via the method getUpdateFeatureAdditional(IUpdateContext)).

Specified by:
getUpdateFeature in interface IFeatureProvider
Overrides:
getUpdateFeature in class DefaultFeatureProvider
Parameters:
context - An IUpdateContext describing the needed functionality
Returns:
An IUpdateFeature in case a suitable functionality has been found, null otherwise.
See Also:
IUpdateFeature

getUpdateFeatureAdditional

protected IUpdateFeature getUpdateFeatureAdditional(IUpdateContext context)
Gets the additional update feature functionality. The default implementation simply delegates to DefaultFeatureProvider.getUpdateFeature(IUpdateContext) .

Parameters:
context - An IUpdateContext describing the needed functionality
Returns:
An IUpdateFeature in case a suitable functionality has been found by the super class, null otherwise.

getPatternForPictogramElement

public IPattern getPatternForPictogramElement(PictogramElement pe)
Description copied from interface: IFeatureProviderWithPatterns
Gets the pattern for pictogram element.

Specified by:
getPatternForPictogramElement in interface IFeatureProviderWithPatterns
Parameters:
pe - the pictogram element
Returns:
the pattern for pictogram element

activateDirectEditingForPatterns

public void activateDirectEditingForPatterns(PictogramElement mainPictogramElement,
                                             Object domainObject)
Convenience method to activate the direct editing for the given PictogramElement and domain object. The default implementation tries to retrieve the direct editing functionality from the registered patterns for shapes.

Specified by:
activateDirectEditingForPatterns in interface IFeatureProviderWithPatterns
Parameters:
mainPictogramElement - The root PictogramElement for which direct editing shall be triggered. This pictogram element is used to find a suitable pattern for this request via AbstractPattern.isPatternRoot(PictogramElement).
domainObject - The domain object behind the direct editing request. This object is passed to the IDirectEditingInfo.

activateDirectEditingForPatterns

public void activateDirectEditingForPatterns(PictogramElement mainPictogramElement,
                                             Object domainObject,
                                             String keyProperty)
Convenience method to activate the direct editing for the given PictogramElement and domain object. The default implementation tries to retrieve the direct editing functionality from the registered patterns for shapes.

Specified by:
activateDirectEditingForPatterns in interface IFeatureProviderWithPatterns
Parameters:
mainPictogramElement - The root PictogramElement for which direct editing shall be triggered. This pictogram element is used to find a suitable pattern for this request via AbstractPattern.isPatternRoot(PictogramElement).
domainObject - The domain object behind the direct editing request. This object is passed to the IDirectEditingInfo.
keyProperty - An additional key property that is passed to the IDirectEditingInfo.

getCreateConnectionFeatures

public ICreateConnectionFeature[] getCreateConnectionFeatures()
Retrieves an array of create connection features that are available from the registered patterns and the super class of this feature provider. Only the connection patterns are queried. Then the call is delegated to the super class (via the method getCreateConnectionFeaturesAdditional()).

Specified by:
getCreateConnectionFeatures in interface IFeatureProvider
Overrides:
getCreateConnectionFeatures in class AbstractFeatureProvider
Returns:
An array of ICreateConnectionFeatures in case a suitable functionality has been found, an empty array otherwise.
See Also:
ICreateConnectionFeature

getCreateConnectionFeaturesAdditional

protected ICreateConnectionFeature[] getCreateConnectionFeaturesAdditional()
Gets the additional create connection feature functionality. The default implementation simply delegates to AbstractFeatureProvider.getCreateConnectionFeatures().

Returns:
An array of ICreateConnectionFeatures in case a suitable functionality has been found by the super class, an empty array otherwise.

getDirectEditingFeature

public IDirectEditingFeature getDirectEditingFeature(IDirectEditingContext context)
Tries to retrieve a direct editing feature suiting the given direct editing context from the registered patterns. Only the shape patterns are queried. If no suitable pattern functionality is found the call is delegated to the super class (via the method getDirectEditingFeatureAdditional(IDirectEditingContext)).

Specified by:
getDirectEditingFeature in interface IFeatureProvider
Overrides:
getDirectEditingFeature in class AbstractFeatureProvider
Parameters:
context - An IDirectEditingContext describing the needed functionality
Returns:
An IDirectEditingFeature in case a suitable functionality has been found, null otherwise.
See Also:
IDirectEditingFeature

getDirectEditingFeatureAdditional

protected IDirectEditingFeature getDirectEditingFeatureAdditional(IDirectEditingContext context)
Gets the additional direct editing feature functionality. The default implementation simply delegates to AbstractFeatureProvider.getDirectEditingFeature(IDirectEditingContext) .

Parameters:
context - An IDirectEditingContext describing the needed functionality
Returns:
An IDirectEditingFeature in case a suitable functionality has been found by the super class, null otherwise.

traceWarning

protected void traceWarning(String string,
                            IPattern pattern,
                            IPattern choosenPattern)
Helper method to trace warnings when more than one pattern is executed.

Parameters:
string - The string information to trace
pattern - The pattern
choosenPattern - The additionally chosen pattern

getBusinessObjectForPictogramElement

public Object getBusinessObjectForPictogramElement(PictogramElement pictogramElement)
Helper method to find the domain object for a given PictogramElement. The default implementation first delegates to AbstractFeatureProvider.getBusinessObjectForPictogramElement(PictogramElement) and then directly tries to follow an eventually set link property, see ILinkService.setLinkProperty(PictogramElement, String).

Specified by:
getBusinessObjectForPictogramElement in interface IMappingProvider
Overrides:
getBusinessObjectForPictogramElement in class AbstractFeatureProvider
Parameters:
pictogramElement - The PictogramElement to find the domain object for.
Returns:
A domain object in case it was found, null otherwise.
See Also:
IMappingProvider.link(PictogramElement, Object)


Copyright (c) SAP AG 2005, 2012.