Class GFAbstractShape
- java.lang.Object
-
- org.eclipse.draw2d.Figure
-
- org.eclipse.draw2d.Shape
-
- org.eclipse.graphiti.ui.internal.figures.GFAbstractShape
-
- All Implemented Interfaces:
org.eclipse.draw2d.IFigure
,org.eclipse.gef.handles.HandleBounds
,IVisualStateChangeListener
,IVisualStateHolder
- Direct Known Subclasses:
GFAbstractPointListShape
,GFAbstractRotatableDecoration
,GFEllipse
,GFRectangleFigure
,GFRoundedRectangle
public abstract class GFAbstractShape extends org.eclipse.draw2d.Shape implements org.eclipse.gef.handles.HandleBounds, IVisualStateHolder, IVisualStateChangeListener
This class is an abstract super-class for all Shapes in Graphiti. The main idea is, that the outline and fill-area of a Shape is defined by a Path. Sub-classes usually only have to implement the abstract methodcreatePath(Rectangle, Graphics, boolean)
-
-
Constructor Summary
Constructors Constructor Description GFAbstractShape(IPictogramElementDelegate pictogramElementDelegate, GraphicsAlgorithm graphicsAlgorithm)
Creates a new GFAbstractShape.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
containsPoint(int x, int y)
Returns true, if the given point is contained inside this Shape.protected java.lang.Boolean
containsPointInArea(int x, int y)
Returns true, if the given point is contained inside one of the selection-area GraphicsAlgorithms defined ingetClickArea()
.protected boolean
containsPointInFigure(int x, int y)
Returns true, if the given point is contained inside this Shape.protected abstract org.eclipse.swt.graphics.Path
createPath(org.eclipse.draw2d.geometry.Rectangle outerBounds, org.eclipse.draw2d.Graphics graphics, boolean isFill)
Returns the Path which shall be painted inpaintShape(Graphics, boolean)
.protected void
fillPath(org.eclipse.draw2d.Graphics graphics, org.eclipse.swt.graphics.Path path)
A helper method, which fills the Path according to the fill-colors of this figures GraphicsAlgorithm.protected void
fillShape(org.eclipse.draw2d.Graphics graphics)
Fills this Shape on the given Graphics.protected GraphicsAlgorithm[]
getClickArea()
Returns the selection-area GraphicsAlgorithms of this Shape.protected IConfigurationProviderInternal
getConfigurationProvider()
Returns the IConfigurationProviderInternal.protected GraphicsAlgorithm
getGraphicsAlgorithm()
Returns the GraphicsAlgorithm, which was given in the constructor.org.eclipse.draw2d.geometry.Rectangle
getHandleBounds()
Returns the selection handle bounds of this Shape.protected int
getLineWidth(org.eclipse.draw2d.Graphics graphics)
Returns the line-width of this figure adjusted according to the given Graphics.protected IPictogramElementDelegate
getPictogramElementDelegate()
Returns the PictogramElementDelegate, which was given in the constructor.protected GFPreferences
getPreferences()
protected GraphicsAlgorithm
getSelectionBorder()
Returns the selection GraphicsAlgorithm of this Shape.IVisualState
getVisualState()
Returns the visual state of this shape.protected double
getZoomLevel(org.eclipse.draw2d.Graphics graphics)
Returns the zoom-level of the given Graphics.protected void
outlineShape(org.eclipse.draw2d.Graphics graphics)
Outlines this Shape on the given Graphics.void
paintFigure(org.eclipse.draw2d.Graphics graphics)
First initializes the given Graphics with settings like alpha-value, antialias-value, ...protected void
paintShape(org.eclipse.draw2d.Graphics graphics, boolean isFill)
Outlines or fills this Shape on the given Graphics.void
setClickArea(GraphicsAlgorithm[] clickArea)
void
setSelectionBorder(GraphicsAlgorithm selectionBorder)
protected void
transformToFillBounds(org.eclipse.draw2d.geometry.Rectangle outlineBounds, org.eclipse.draw2d.Graphics graphics)
Changes the given outline-bounds which should be calculated by#getSingletonOutlineBounds(Graphics)
) to the fill-bounds.void
visualStateChanged(VisualStateChangedEvent e)
Is called after the visual state changed.-
Methods inherited from class org.eclipse.draw2d.Shape
getAlpha, getAntialias, getLineAttributes, getLineCap, getLineDash, getLineDashOffset, getLineJoin, getLineMiterLimit, getLineStyle, getLineWidth, getLineWidthFloat, setAlpha, setAlpha, setAntialias, setAntialias, setFill, setFillXOR, setLineAttributes, setLineCap, setLineDash, setLineDashOffset, setLineJoin, setLineMiterLimit, setLineStyle, setLineWidth, setLineWidthFloat, setOutline, setOutlineXOR, setXOR
-
Methods inherited from class org.eclipse.draw2d.Figure
add, add, add, add, addAncestorListener, addCoordinateListener, addFigureListener, addFocusListener, addKeyListener, addLayoutListener, addListener, addMouseListener, addMouseMotionListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, containsPoint, erase, findDescendantAtExcluding, findFigureAt, findFigureAt, findFigureAt, findFigureAtExcluding, findMouseEventTargetAt, findMouseEventTargetInDescendantsAt, fireCoordinateSystemChanged, fireFigureMoved, fireMoved, firePropertyChange, firePropertyChange, firePropertyChange, getBackgroundColor, getBorder, getBounds, getChildren, getClientArea, getClientArea, getClippingStrategy, getCursor, getFlag, getFont, getForegroundColor, getInsets, getLayoutManager, getListeners, getLocalBackgroundColor, getLocalFont, getLocalForegroundColor, getLocation, getMaximumSize, getMinimumSize, getMinimumSize, getParent, getPreferredSize, getPreferredSize, getSize, getToolTip, getUpdateManager, handleFocusGained, handleFocusLost, handleKeyPressed, handleKeyReleased, handleMouseDoubleClicked, handleMouseDragged, handleMouseEntered, handleMouseExited, handleMouseHover, handleMouseMoved, handleMousePressed, handleMouseReleased, hasFocus, internalGetEventDispatcher, intersects, invalidate, invalidateTree, isCoordinateSystem, isEnabled, isFocusTraversable, isMirrored, isMouseEventTarget, isOpaque, isRequestFocusEnabled, isShowing, isValid, isValidationRoot, isVisible, layout, paint, paintBorder, paintChildren, paintClientArea, primTranslate, remove, removeAll, removeAncestorListener, removeCoordinateListener, removeFigureListener, removeFocusListener, removeKeyListener, removeLayoutListener, removeListener, removeMouseListener, removeMouseMotionListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, revalidate, setBackgroundColor, setBorder, setBounds, setChildrenDirection, setChildrenEnabled, setChildrenOrientation, setClippingStrategy, setConstraint, setCursor, setEnabled, setFlag, setFocusTraversable, setFont, setForegroundColor, setLayoutManager, setLocation, setMaximumSize, setMinimumSize, setOpaque, setParent, setPreferredSize, setPreferredSize, setRequestFocusEnabled, setSize, setSize, setToolTip, setValid, setVisible, translate, translateFromParent, translateToAbsolute, translateToParent, translateToRelative, useLocalCoordinates, validate
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.draw2d.IFigure
add, add, add, add, addAncestorListener, addCoordinateListener, addFigureListener, addFocusListener, addKeyListener, addLayoutListener, addMouseListener, addMouseMotionListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, containsPoint, erase, findFigureAt, findFigureAt, findFigureAt, findFigureAtExcluding, findMouseEventTargetAt, getBackgroundColor, getBorder, getBounds, getChildren, getClientArea, getClientArea, getClippingStrategy, getCursor, getFont, getForegroundColor, getInsets, getLayoutManager, getLocalBackgroundColor, getLocalForegroundColor, getMaximumSize, getMinimumSize, getMinimumSize, getParent, getPreferredSize, getPreferredSize, getSize, getToolTip, getUpdateManager, handleFocusGained, handleFocusLost, handleKeyPressed, handleKeyReleased, handleMouseDoubleClicked, handleMouseDragged, handleMouseEntered, handleMouseExited, handleMouseHover, handleMouseMoved, handleMousePressed, handleMouseReleased, hasFocus, internalGetEventDispatcher, intersects, invalidate, invalidateTree, isCoordinateSystem, isEnabled, isFocusTraversable, isMirrored, isOpaque, isRequestFocusEnabled, isShowing, isVisible, paint, remove, removeAncestorListener, removeCoordinateListener, removeFigureListener, removeFocusListener, removeKeyListener, removeLayoutListener, removeMouseListener, removeMouseMotionListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, revalidate, setBackgroundColor, setBorder, setBounds, setClippingStrategy, setConstraint, setCursor, setEnabled, setFocusTraversable, setFont, setForegroundColor, setLayoutManager, setLocation, setMaximumSize, setMinimumSize, setOpaque, setParent, setPreferredSize, setRequestFocusEnabled, setSize, setSize, setToolTip, setVisible, translate, translateFromParent, translateToAbsolute, translateToParent, translateToRelative, validate
-
-
-
-
Constructor Detail
-
GFAbstractShape
public GFAbstractShape(IPictogramElementDelegate pictogramElementDelegate, GraphicsAlgorithm graphicsAlgorithm)
Creates a new GFAbstractShape.- Parameters:
pictogramElementDelegate
- The PictogramElementDelegate which provides the GraphicsAlgorithm.graphicsAlgorithm
- The GraphicsAlgorithm which provides the values to paint this Shape. It is either the immediate GraphicsAlgorithm of the PictogramElementDelegate or a child of that immediate GraphicsAlgorithm. It must not be null.
-
-
Method Detail
-
createPath
protected abstract org.eclipse.swt.graphics.Path createPath(org.eclipse.draw2d.geometry.Rectangle outerBounds, org.eclipse.draw2d.Graphics graphics, boolean isFill)
Returns the Path which shall be painted inpaintShape(Graphics, boolean)
.- Parameters:
outerBounds
- The outer bounds which shall contain the Path. They are calculated from the bounds of this figure byGFFigureUtil.getAdjustedRectangle(Rectangle, double, int)
. Note, that those outline-bounds are just a suggestion which works fine for many cases.graphics
- The Graphics on which the outline Path shall be painted. It can be used to react on Graphics specific values, like the zoom-level of the Graphics.isFill
- if true, the Path is used for filling the Shape, otherwise for outlining the Shape.- Returns:
- The Path which shall be painted in
paintShape(Graphics, boolean)
.
-
getPictogramElementDelegate
protected IPictogramElementDelegate getPictogramElementDelegate()
Returns the PictogramElementDelegate, which was given in the constructor.- Returns:
- The PictogramElementDelegate, which was given in the constructor.
-
getGraphicsAlgorithm
protected GraphicsAlgorithm getGraphicsAlgorithm()
Returns the GraphicsAlgorithm, which was given in the constructor.- Returns:
- The GraphicsAlgorithm, which was given in the constructor.
-
getConfigurationProvider
protected IConfigurationProviderInternal getConfigurationProvider()
Returns the IConfigurationProviderInternal. This is just a convenience forgetPictogramElementDelegate().getConfigurationProvider()
.- Returns:
- The IConfigurationProviderInternal.
-
getZoomLevel
protected double getZoomLevel(org.eclipse.draw2d.Graphics graphics)
Returns the zoom-level of the given Graphics.- Parameters:
graphics
- The Graphics for which to return the zoom-level.- Returns:
- The zoom-level of the given Graphics.
-
getLineWidth
protected int getLineWidth(org.eclipse.draw2d.Graphics graphics)
Returns the line-width of this figure adjusted according to the given Graphics. This means especially, that the line-width is multiplied with the zoom-level of the given Graphics.- Parameters:
graphics
- The Graphics used to adjust the line-width.- Returns:
- The line-width of this figure adjusted according to the given Graphics.
-
transformToFillBounds
protected void transformToFillBounds(org.eclipse.draw2d.geometry.Rectangle outlineBounds, org.eclipse.draw2d.Graphics graphics)
Changes the given outline-bounds which should be calculated by#getSingletonOutlineBounds(Graphics)
) to the fill-bounds. In this default implementation the fill-bounds are calculated from the outline-bounds by- Shrinking by the half line-width, so that the fill-bounds fit exactly inside the outline painted using the line-width
- Parameters:
outlineBounds
- The outline-bounds to transform. They should be calculated by#getSingletonOutlineBounds(Graphics)
.graphics
- The Graphics used to calculate the bounds.
-
getClickArea
protected GraphicsAlgorithm[] getClickArea()
Returns the selection-area GraphicsAlgorithms of this Shape. By default the bounds of a Shape are used as selection-area to calculate if a Point is inside the Shape (seecontainsPoint(int, int)
). With this method the selection area can be changed, so that the selection-area are all bounds of the returned selection-area GraphicsAlgorithm. Can be null, if no special selection-area GraphicsAlgorithms exists.By default this method returns
IToolBehaviorProvider.getClickArea(PictogramElement)
- Returns:
- The selection-area GraphicsAlgorithms of this Shape. Can be null.
- See Also:
getSelectionBorder()
-
getSelectionBorder
protected GraphicsAlgorithm getSelectionBorder()
Returns the selection GraphicsAlgorithm of this Shape. By default the bounds of a Shape are used to give selection feedback, especially the selection handles. With this method the selection feedback can be changed, so that the handle-bounds are the bounds of the returned selection GraphicsAlgorithm. Can be null, if no special selection GraphicsAlgorithm exists.By default this method returns
IToolBehaviorProvider.getSelectionBorder(PictogramElement)
- Returns:
- The selection GraphicsAlgorithm of this Shape. Can be null.
- See Also:
getClickArea()
-
containsPointInArea
protected java.lang.Boolean containsPointInArea(int x, int y)
Returns true, if the given point is contained inside one of the selection-area GraphicsAlgorithms defined ingetClickArea()
.- Parameters:
x
- The x-coordinate of the point to check.y
- The y-coordinate of the point to check.- Returns:
- true, if the given point is contained inside one of the selection-area GraphicsAlgorithms.
- See Also:
containsPoint(int, int)
-
containsPointInFigure
protected boolean containsPointInFigure(int x, int y)
Returns true, if the given point is contained inside this Shape. This implementation just forwards tosuper.contains(x, y)
.- Parameters:
x
- The x-coordinate of the point to check.y
- The y-coordinate of the point to check.- Returns:
- true, if the given point is contained inside this Shape.
- See Also:
containsPoint(int, int)
-
fillPath
protected void fillPath(org.eclipse.draw2d.Graphics graphics, org.eclipse.swt.graphics.Path path)
A helper method, which fills the Path according to the fill-colors of this figures GraphicsAlgorithm. This can be a single-color filling or a gradient filling.- Parameters:
graphics
- The graphics on which to fill the Path.path
- The Path which to fill.
-
paintShape
protected void paintShape(org.eclipse.draw2d.Graphics graphics, boolean isFill)
Outlines or fills this Shape on the given Graphics. First the outline Path is be determined by callingcreatePath(Rectangle, Graphics, boolean)
. Afterwards this Path is either outlined on the Graphics using the correct line-width or filled using a single color or color-gradients.- Parameters:
graphics
- The Graphics on which to outline or fill this Shape.isFill
- if true, fills this Shape, otherwise outlines this Shape.
-
paintFigure
public void paintFigure(org.eclipse.draw2d.Graphics graphics)
First initializes the given Graphics with settings like alpha-value, antialias-value, ... Afterwards callssuper.paintFigure(graphics)
to continue with the default painting mechanisms.- Overrides:
paintFigure
in classorg.eclipse.draw2d.Shape
- Parameters:
graphics
- The Graphics on which to paint.
-
fillShape
protected void fillShape(org.eclipse.draw2d.Graphics graphics)
Fills this Shape on the given Graphics. This implementation just forwards topaintShape(Graphics, boolean)
.- Specified by:
fillShape
in classorg.eclipse.draw2d.Shape
- Parameters:
graphics
- The Graphics on which to fill this Shape.
-
outlineShape
protected void outlineShape(org.eclipse.draw2d.Graphics graphics)
Outlines this Shape on the given Graphics. This implementation just forwards topaintShape(Graphics, boolean)
.- Specified by:
outlineShape
in classorg.eclipse.draw2d.Shape
- Parameters:
graphics
- The Graphics on which to outline this Shape.
-
containsPoint
public final boolean containsPoint(int x, int y)
Returns true, if the given point is contained inside this Shape. It first callscontainsPointInArea(int, int)
to check if there is a special selection-area defined for this Shape. If not, it returnscontainsPointInFigure(int, int)
.This method is final. Override
containsPointInFigure(int, int)
if needed.- Specified by:
containsPoint
in interfaceorg.eclipse.draw2d.IFigure
- Overrides:
containsPoint
in classorg.eclipse.draw2d.Figure
- Parameters:
x
- The x-coordinate of the point to check.y
- The y-coordinate of the point to check.- Returns:
- true, if the given point is contained inside this Shape.
-
getHandleBounds
public org.eclipse.draw2d.geometry.Rectangle getHandleBounds()
Returns the selection handle bounds of this Shape. First it checks, if a special selection GraphicsAlgorithm is defined for this Shape (seegetSelectionBorder()
. Otherwise it just returns the bounds of this Shape.- Specified by:
getHandleBounds
in interfaceorg.eclipse.gef.handles.HandleBounds
- Returns:
- The selection handle bounds of this Shape.
-
getVisualState
public IVisualState getVisualState()
Returns the visual state of this shape.- Specified by:
getVisualState
in interfaceIVisualStateHolder
- Returns:
- The visual state of this shape.
-
visualStateChanged
public void visualStateChanged(VisualStateChangedEvent e)
Is called after the visual state changed.- Specified by:
visualStateChanged
in interfaceIVisualStateChangeListener
-
setSelectionBorder
public void setSelectionBorder(GraphicsAlgorithm selectionBorder)
- Parameters:
selectionBorder
- the selectionBorder to set
-
setClickArea
public void setClickArea(GraphicsAlgorithm[] clickArea)
- Parameters:
clickArea
- the clickArea to set
-
getPreferences
protected GFPreferences getPreferences()
-
-