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 Object implements IFeature
Abstract base class for all features. Prefer extending this class over inheriting interface IFeature.
  • Constructor Details

  • Method Details

    • 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.
      Specified by:
      canUndo in interface IFeature
      Parameters:
      context - this is the general input for this method
      Returns:
      true if the feature can be undone, false if not
      See Also:
    • 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 in AbstractFeature), 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 interface IFeature
      Returns:
      true if the feature should appear in the undo stack, false otherwise
    • getDescription

      public String getDescription()
      Description copied from interface: IDescription
      Gets the description.
      Specified by:
      getDescription in interface IDescription
      Returns:
      the description
    • getFeatureProvider

      public IFeatureProvider getFeatureProvider()
      Description copied from interface: IFeatureProviderHolder
      Gets the feature provider.
      Specified by:
      getFeatureProvider in interface IFeatureProviderHolder
      Returns:
      the feature provider
    • getName

      public String getName()
      Description copied from interface: IName
      Gets the name.
      Specified by:
      getName in interface IName
      Returns:
      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 interface IFeature
      Parameters:
      context - this is the general input for this method
      Returns:
      true if it is available, false if not
      See Also:
    • setProgressCallback

      public void setProgressCallback(IProgress progress)
      Sets the progress callback.
      Parameters:
      progress - the new progress callback
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • addGraphicalRepresentation

      protected PictogramElement addGraphicalRepresentation(IAreaContext context, Object newObject)
      Adds the graphical representation.
      Parameters:
      context - the context
      newObject - the new object
      Returns:
      the added pictogram element
    • getAllBusinessObjectsForPictogramElement

      protected 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 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 given PictogramElement. This implementation asks the feature provider for available layout features and processes the first one.
      Parameters:
      pe - the PictogramElement to layout
      Returns:
      a IReason object that indicates if a layout operation has been performed (IReason.toBoolean() is true)
      Since:
      0.9 this method returns now the IReason object, before it simply returned null
    • link

      protected void link(PictogramElement pe, Object businessObject)
      Links the given PictogramElement to the given business or domain object. After doing that, the domain object can be retrieved from the PictogramElement using the methods getBusinessObjectForPictogramElement(PictogramElement) and getAllBusinessObjectsForPictogramElement(PictogramElement); also ILinkService.getPictogramElements(Diagram, org.eclipse.emf.ecore.EObject) and ILinkService.getPictogramElements(Diagram, java.util.List, boolean) will return the PictogramElement for the domain object.
      Note: Identity of domain or business objects is determined by default using the method EcoreUtil.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 overriding IToolBehaviorProvider.equalsBusinessObjects(Object, Object).
      Parameters:
      pe - the PictogramElement to link to the domain object
      businessObject - the business object to link to the PictogramElement
    • link

      protected void link(PictogramElement pe, Object[] businessObjects)
      Links the given PictogramElement to the given business or domain objects. After doing that, the domain object can be retrieved from the PictogramElement using the methods getBusinessObjectForPictogramElement(PictogramElement) and getAllBusinessObjectsForPictogramElement(PictogramElement); also ILinkService.getPictogramElements(Diagram, org.eclipse.emf.ecore.EObject) and ILinkService.getPictogramElements(Diagram, java.util.List, boolean) will return the PictogramElement for the domain object.
      Note: Identity of domain or business objects is determined by default using the method EcoreUtil.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 overriding IToolBehaviorProvider.equalsBusinessObjects(Object, Object).
      Parameters:
      pe - the PictogramElement to link to the domain object
      businessObjects - the business objects to link to the PictogramElement
    • 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 red
      green - the green
      blue - 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, 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 fonts
      name - the name of the font
      size - the size of the font
      Returns:
      the font instance
      Since:
      0.10
    • manageFont

      public Font manageFont(Diagram diagram, 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 fonts
      name - the name of the font
      size - the size of the font
      isItalic - the is italic
      isBold - 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