Class AbstractFeature
- java.lang.Object
-
- org.eclipse.graphiti.features.impl.AbstractFeature
-
- All Implemented Interfaces:
IFeature
,IFeatureProviderHolder
,IDescription
,IName
- Direct Known Subclasses:
AbstractAddFeature
,AbstractCopyFeature
,AbstractCreateConnectionFeature
,AbstractCreateFeature
,AbstractCustomFeature
,AbstractDirectEditingFeature
,AbstractLayoutFeature
,AbstractMoveShapeFeature
,AbstractPasteFeature
,AbstractPrintFeature
,AbstractSaveImageFeature
,AbstractUpdateFeature
,DefaultAddBendpointFeature
,DefaultDeleteFeature
,DefaultMoveAnchorFeature
,DefaultMoveBendpointFeature
,DefaultMoveConnectionDecoratorFeature
,DefaultReconnectionFeature
,DefaultRemoveBendpointFeature
,DefaultRemoveFeature
,DefaultResizeShapeFeature
,ReconnectionFeatureForPattern
public abstract class AbstractFeature extends java.lang.Object implements IFeature
Abstract base class for all features. Prefer extending this class over inheriting interfaceIFeature
.
-
-
Constructor Summary
Constructors Constructor Description AbstractFeature(IFeatureProvider fp)
Creates a newAbstractFeature
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected PictogramElement
addGraphicalRepresentation(IAreaContext context, java.lang.Object newObject)
Adds the graphical representation.boolean
canUndo(IContext context)
Decides if the current feature can be undone - this is the undo of the execute operation.protected java.lang.Object[]
getAllBusinessObjectsForPictogramElement(PictogramElement pe)
Gets the all business objects for pictogram element.protected java.lang.Object
getBusinessObjectForPictogramElement(PictogramElement pe)
Gets the business object for pictogram element.java.lang.String
getDescription()
Gets the description.protected Diagram
getDiagram()
Gets the diagram.protected IDiagramBehavior
getDiagramBehavior()
Gets the diagram behavior.IFeatureProvider
getFeatureProvider()
Gets the feature provider.java.lang.String
getName()
Gets the name.protected IProgress
getProgressCallback()
Gets the progress callback.protected boolean
getUserDecision()
Gets the user decision.boolean
hasDoneChanges()
Is queried by the framework after a feature has been executed to find out if this feature should appear in the undo stack of e.g.boolean
isAvailable(IContext context)
Decides if the current feature is available with the given context.protected IReason
layoutPictogramElement(PictogramElement pe)
Layouts the givenPictogramElement
.protected void
link(PictogramElement pe, java.lang.Object businessObject)
Links the givenPictogramElement
to the given business or domain object.protected void
link(PictogramElement pe, java.lang.Object[] businessObjects)
Links the givenPictogramElement
to the given business or domain objects.protected Color
manageColor(int red, int green, int blue)
Manage color.protected Color
manageColor(IColorConstant colorConstant)
Manage color.protected Font
manageDefaultFont(Diagram diagram)
Provides the font instance for the default font (Arial in size 8) by either creating a new one and aggregating it to the diagram or finding it in the diagrams list of fonts.Font
manageFont(Diagram diagram, java.lang.String name, int size)
Provides a font instance by either creating a new one and aggregating it to the diagram or finding it in the diagrams list of fonts.Font
manageFont(Diagram diagram, java.lang.String name, int size, boolean isItalic, boolean isBold)
Provides a font instance by either creating a new one and aggregating it to the diagram or finding it in the diagrams list of fonts.void
setProgressCallback(IProgress progress)
Sets the progress callback.java.lang.String
toString()
protected void
updatePictogramElement(PictogramElement pe)
Updates the given pictogram element.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.graphiti.features.IFeature
canExecute, execute
-
-
-
-
Constructor Detail
-
AbstractFeature
public AbstractFeature(IFeatureProvider fp)
Creates a newAbstractFeature
.- Parameters:
fp
- the fp
-
-
Method Detail
-
canUndo
public boolean canUndo(IContext context)
Description copied from interface:IFeature
Decides if the current feature can be undone - this is the undo of the execute operation.
-
hasDoneChanges
public boolean hasDoneChanges()
Description copied from interface:IFeature
Is queried by the framework after a feature has been executed to find out if this feature should appear in the undo stack of e.g. an editor. By default all features should appear there (see implementation inAbstractFeature
), but features may decide to override this behavior. Note that this is a dynamic attribute of the feature that is queried each time after the feature has been executed.IMPORTANT NOTE: The implementor of the feature is responsible for correctly implementing this method! It might lead to inconsistencies in the command stack if this method returns
false
although the feature did changes.- Specified by:
hasDoneChanges
in interfaceIFeature
- Returns:
true
if the feature should appear in the undo stack,false
otherwise
-
getDescription
public java.lang.String getDescription()
Description copied from interface:IDescription
Gets the description.- Specified by:
getDescription
in interfaceIDescription
- Returns:
- the description
-
getFeatureProvider
public IFeatureProvider getFeatureProvider()
Description copied from interface:IFeatureProviderHolder
Gets the feature provider.- Specified by:
getFeatureProvider
in interfaceIFeatureProviderHolder
- Returns:
- the feature provider
-
getName
public java.lang.String getName()
Description copied from interface:IName
Gets the name.
-
isAvailable
public boolean isAvailable(IContext context)
Description copied from interface:IFeature
Decides if the current feature is available with the given context.- Specified by:
isAvailable
in interfaceIFeature
- Parameters:
context
- this is the general input for this method- Returns:
- true if it is available, false if not
- See Also:
IContext
-
setProgressCallback
public void setProgressCallback(IProgress progress)
Sets the progress callback.- Parameters:
progress
- the new progress callback
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
addGraphicalRepresentation
protected PictogramElement addGraphicalRepresentation(IAreaContext context, java.lang.Object newObject)
Adds the graphical representation.- Parameters:
context
- the contextnewObject
- the new object- Returns:
- the added pictogram element
-
getAllBusinessObjectsForPictogramElement
protected java.lang.Object[] getAllBusinessObjectsForPictogramElement(PictogramElement pe)
Gets the all business objects for pictogram element.- Parameters:
pe
- the pe- Returns:
- the all business objects for pictogram element
-
getBusinessObjectForPictogramElement
protected java.lang.Object getBusinessObjectForPictogramElement(PictogramElement pe)
Gets the business object for pictogram element.- Parameters:
pe
- the pe- Returns:
- the business object for pictogram element
-
getDiagram
protected Diagram getDiagram()
Gets the diagram.- Returns:
- the diagram
-
getDiagramBehavior
protected IDiagramBehavior getDiagramBehavior()
Gets the diagram behavior.- Returns:
- the diagram behavior
- Since:
- 0.10
-
getProgressCallback
protected IProgress getProgressCallback()
Gets the progress callback.- Returns:
- the progress callback
-
getUserDecision
protected boolean getUserDecision()
Gets the user decision.- Returns:
- the user decision
-
layoutPictogramElement
protected IReason layoutPictogramElement(PictogramElement pe)
Layouts the givenPictogramElement
. This implementation asks the feature provider for available layout features and processes the first one.- Parameters:
pe
- thePictogramElement
to layout- Returns:
- a
IReason
object that indicates if a layout operation has been performed (IReason.toBoolean()
istrue
) - Since:
- 0.9 this method returns now the
IReason
object, before it simply returned null
-
link
protected void link(PictogramElement pe, java.lang.Object businessObject)
Links the givenPictogramElement
to the given business or domain object. After doing that, the domain object can be retrieved from thePictogramElement
using the methodsgetBusinessObjectForPictogramElement(PictogramElement)
andgetAllBusinessObjectsForPictogramElement(PictogramElement)
; alsoILinkService.getPictogramElements(Diagram, org.eclipse.emf.ecore.EObject)
andILinkService.getPictogramElements(Diagram, java.util.List, boolean)
will return thePictogramElement
for the domain object.
Note: Identity of domain or business objects is determined by default using the methodEcoreUtil.equals(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EObject)
, which relies on the compared EMF objects having different IDs or attributes. The way Graphiti used to compare EMF business objects can be changed by overridingIToolBehaviorProvider.equalsBusinessObjects(Object, Object)
.- Parameters:
pe
- thePictogramElement
to link to the domain objectbusinessObject
- the business object to link to thePictogramElement
-
link
protected void link(PictogramElement pe, java.lang.Object[] businessObjects)
Links the givenPictogramElement
to the given business or domain objects. After doing that, the domain object can be retrieved from thePictogramElement
using the methodsgetBusinessObjectForPictogramElement(PictogramElement)
andgetAllBusinessObjectsForPictogramElement(PictogramElement)
; alsoILinkService.getPictogramElements(Diagram, org.eclipse.emf.ecore.EObject)
andILinkService.getPictogramElements(Diagram, java.util.List, boolean)
will return thePictogramElement
for the domain object.
Note: Identity of domain or business objects is determined by default using the methodEcoreUtil.equals(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EObject)
, which relies on the compared EMF objects having different IDs or attributes. The way Graphiti used to compare EMF business objects can be changed by overridingIToolBehaviorProvider.equalsBusinessObjects(Object, Object)
.- Parameters:
pe
- thePictogramElement
to link to the domain objectbusinessObjects
- the business objects to link to thePictogramElement
-
manageColor
protected Color manageColor(IColorConstant colorConstant)
Manage color.- Parameters:
colorConstant
- the color constant- Returns:
- the color
-
manageColor
protected Color manageColor(int red, int green, int blue)
Manage color.- Parameters:
red
- the redgreen
- the greenblue
- the blue- Returns:
- the color
-
manageDefaultFont
protected Font manageDefaultFont(Diagram diagram)
Provides the font instance for the default font (Arial in size 8) by either creating a new one and aggregating it to the diagram or finding it in the diagrams list of fonts.- Parameters:
diagram
- the diagram that aggregates the fonts- Returns:
- the font instance
- Since:
- 0.10
-
manageFont
public Font manageFont(Diagram diagram, java.lang.String name, int size)
Provides a font instance by either creating a new one and aggregating it to the diagram or finding it in the diagrams list of fonts.- Parameters:
diagram
- the diagram that aggregates the fontsname
- the name of the fontsize
- the size of the font- Returns:
- the font instance
- Since:
- 0.10
-
manageFont
public Font manageFont(Diagram diagram, java.lang.String name, int size, boolean isItalic, boolean isBold)
Provides a font instance by either creating a new one and aggregating it to the diagram or finding it in the diagrams list of fonts.- Parameters:
diagram
- the diagram that aggregates the fontsname
- the name of the fontsize
- the size of the fontisItalic
- the is italicisBold
- the is bold- Returns:
- the font instance
- Since:
- 0.10
-
updatePictogramElement
protected void updatePictogramElement(PictogramElement pe)
Updates the given pictogram element. This implementation asks the feature provider for available update features and processes the first one.- Parameters:
pe
- the pe
-
-