Class GFAbstractRotatableDecoration

java.lang.Object
org.eclipse.draw2d.Figure
org.eclipse.draw2d.Shape
org.eclipse.graphiti.ui.internal.figures.GFAbstractShape
org.eclipse.graphiti.ui.internal.figures.GFAbstractRotatableDecoration
All Implemented Interfaces:
org.eclipse.draw2d.IFigure, org.eclipse.draw2d.RotatableDecoration, org.eclipse.gef.handles.HandleBounds, IVisualStateChangeListener, IVisualStateHolder
Direct Known Subclasses:
GFEllipseDecoration

public abstract class GFAbstractRotatableDecoration extends GFAbstractShape implements org.eclipse.draw2d.RotatableDecoration
This class is an abstract super-class for all RotatableDecorations in Graphiti. The main idea is, that the outline and fill-area of a RotatableDecoration is defined by a Path. Sub-classes usually only have to implement the abstract methods GFAbstractShape.createPath(Rectangle, Graphics, boolean) and getInitialTouchPoint().
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.eclipse.draw2d.Figure

    org.eclipse.draw2d.Figure.FigureIterator, org.eclipse.draw2d.Figure.IdentitySearch, org.eclipse.draw2d.Figure.ReverseFigureChildrenIterator

    Nested classes/interfaces inherited from interface org.eclipse.draw2d.IFigure

    org.eclipse.draw2d.IFigure.NoInsets
  • Field Summary

    Fields inherited from class org.eclipse.draw2d.Shape

    lineStyle, lineWidth

    Fields inherited from class org.eclipse.draw2d.Figure

    bgColor, border, fgColor, flags, font, MAX_FLAG, maxSize, minSize, NO_MANAGER, prefSize, toolTip

    Fields inherited from interface org.eclipse.draw2d.IFigure

    MAX_DIMENSION, MIN_DIMENSION, NO_INSETS
  • Constructor Summary

    Constructors
    Constructor
    Description
    GFAbstractRotatableDecoration(IPictogramElementDelegate pictogramElementDelegate, GraphicsAlgorithm graphicsAlgorithm)
    Creates a new GFAbstractRotatableDecoration.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    containsPointInFigure(int x, int y)
    Returns true, if the point is inside the translated/rotated rectangle.
    boolean
    Returns true, if the point is inside the initial figure, meaning the figure in the getInitialBounds() before translation/rotation.
    org.eclipse.draw2d.geometry.Rectangle
    Returns the bounds of this decorator shape.
    protected final org.eclipse.draw2d.geometry.Point
    Returns the decorator-location.
    protected final org.eclipse.draw2d.geometry.Point
    Returns the decorator-reference-point.
    protected final org.eclipse.draw2d.geometry.Rectangle
    Returns the initial-bounds.
    protected abstract org.eclipse.draw2d.geometry.Point
    Returns the initial touch-point of the decorator-shape.
    protected final double
    Returns the angle "phi" in degrees.
    protected final double
    Returns the angle "phi" in radians.
    protected final org.eclipse.draw2d.geometry.Point
    Returns the touch-point delta.
    protected void
    paintShape(org.eclipse.draw2d.Graphics graphics, boolean isFill)
    Fills this Shape on the given Graphics.
    protected void
    After the decorator-location or decorator-reference-point changed, the translated/rotated rectangle has to be re-calculated.
    protected org.eclipse.draw2d.geometry.PrecisionPoint
    rotateTargetToInitial(double x, double y)
    Returns the initial point for the given target point.
    protected final void
    setInitialBounds(org.eclipse.draw2d.geometry.Rectangle initialBounds)
    Sets the initial-bounds.
    void
    setLocation(org.eclipse.draw2d.geometry.Point p)
    Sets the decorator-location.
    void
    setReferencePoint(org.eclipse.draw2d.geometry.Point ref)
    Sets the decorator-reference-point.

    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, getChildren, getChildrenRevIterable, getClientArea, getClientArea, getClippingStrategy, getCursor, getFlag, getFont, getForegroundColor, getInsets, getLayoutManager, getListeners, getListenersIterable, 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, optimizeClip, 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, 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, containsPoint, erase, findFigureAt, findFigureAt, findFigureAt, findFigureAtExcluding, findMouseEventTargetAt, getBackgroundColor, getBorder, getChildren, getClientArea, getClientArea, getClippingStrategy, getCursor, getFont, getForegroundColor, getInsets, getLayoutManager, getLocalBackgroundColor, 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, 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, setMaximumSize, setMinimumSize, setOpaque, setParent, setPreferredSize, setRequestFocusEnabled, setSize, setSize, setToolTip, setVisible, translate, translateFromParent, translateToAbsolute, translateToParent, translateToRelative, validate
  • Constructor Details

    • GFAbstractRotatableDecoration

      public GFAbstractRotatableDecoration(IPictogramElementDelegate pictogramElementDelegate, GraphicsAlgorithm graphicsAlgorithm)
      Creates a new GFAbstractRotatableDecoration.
      Parameters:
      pictogramElementDelegate - The PictogramElementDelegate which provides the GraphicsAlgorithm.
      graphicsAlgorithm - The GraphicsAlgorithm which provides the values to paint this Shape.
  • Method Details

    • getInitialTouchPoint

      protected abstract org.eclipse.draw2d.geometry.Point getInitialTouchPoint()
      Returns the initial touch-point of the decorator-shape. This is the point of the decorator-shape inside the initial-bounds (see getInitialBounds()), which shall touch the decorated figure at the decorator-location (see getDecoratorLocation(). It is called "inital" because it is the point before translation/rotation.

      Example: for an Ellipse the point (0, getInitialBounds().height / 2) is returned.

      Returns:
      The initial touch-point of the decorator-shape.
    • setLocation

      public void setLocation(org.eclipse.draw2d.geometry.Point p)
      Sets the decorator-location.
      Specified by:
      setLocation in interface org.eclipse.draw2d.IFigure
      Specified by:
      setLocation in interface org.eclipse.draw2d.RotatableDecoration
      Overrides:
      setLocation in class org.eclipse.draw2d.Figure
      Parameters:
      p - The decorator-location to set.
      See Also:
    • setReferencePoint

      public void setReferencePoint(org.eclipse.draw2d.geometry.Point ref)
      Sets the decorator-reference-point. Calls processRotatableDecorationValues() afterwards to initialize the rotated rectangle values.
      Specified by:
      setReferencePoint in interface org.eclipse.draw2d.RotatableDecoration
      Parameters:
      ref - The decorator-reference-point to set.
      See Also:
    • processRotatableDecorationValues

      protected void processRotatableDecorationValues()
      After the decorator-location or decorator-reference-point changed, the translated/rotated rectangle has to be re-calculated. This includes getPhiDegrees(), getPhiRadians(), getBounds(), getTouchPointDelta().
    • getBounds

      public org.eclipse.draw2d.geometry.Rectangle getBounds()
      Returns the bounds of this decorator shape. This implementation bases on a rough calculation, which returns a bigger rectangle than necessary.
      Specified by:
      getBounds in interface org.eclipse.draw2d.IFigure
      Overrides:
      getBounds in class org.eclipse.draw2d.Figure
      Returns:
      The bounds of this decorator shape.
    • paintShape

      protected void paintShape(org.eclipse.draw2d.Graphics graphics, boolean isFill)
      Fills this Shape on the given Graphics. It enhances the implementation of the super-class by adding a rotation and translation according to the values set via RotatableDecoration.
      Overrides:
      paintShape in class GFAbstractShape
      Parameters:
      graphics - The Graphics on which to outline this Shape.
      isFill - if true, fills this Shape, otherwise outlines this Shape.
    • containsPointInFigure

      public boolean containsPointInFigure(int x, int y)
      Returns true, if the point is inside the translated/rotated rectangle. Specifics of the decorator Shape are ignored, but can be added by overwriting containsPointInInitialFigure(int, int).
      Overrides:
      containsPointInFigure in class GFAbstractShape
      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:
    • containsPointInInitialFigure

      public boolean containsPointInInitialFigure(int x, int y)
      Returns true, if the point is inside the initial figure, meaning the figure in the getInitialBounds() before translation/rotation.

      This implementation just returns true, but sub-classes can overwrite it to make decorator-shape specific checks.

    • rotateTargetToInitial

      protected org.eclipse.draw2d.geometry.PrecisionPoint rotateTargetToInitial(double x, double y)
      Returns the initial point for the given target point. This means, that it translates/rotates the given target point from the coordinates of the target-rectangle backwards to the coordinates of the initial bounds.
      Parameters:
      x - The x-coordinate of the target point to translate/rotate.
      y - The y-coordinate of the target point to translate/rotate.
      Returns:
      The initial point for the given target point.
    • setInitialBounds

      protected final void setInitialBounds(org.eclipse.draw2d.geometry.Rectangle initialBounds)
      Sets the initial-bounds. The initial-bounds are a rectangle which starts at (0,0) and has the (width, height) of the figure before rotation. The initial-bounds are set in the constructor and not changed afterwards.
      Parameters:
      initialBounds - The initial-bounds to set.
    • getInitialBounds

      protected final org.eclipse.draw2d.geometry.Rectangle getInitialBounds()
      Returns the initial-bounds. The initial-bounds are a rectangle which starts at (0,0) and has the (width, height) of the figure before rotation. The initial-bounds are set in the constructor and not changed afterwards.
      Returns:
      The initial-bounds.
    • getDecoratorLocation

      protected final org.eclipse.draw2d.geometry.Point getDecoratorLocation()
      Returns the decorator-location. The decorator-location is the start-point of the connection. This means that at this point the decorator and the figure shall touch.
      Returns:
      The decorator-location.
      See Also:
    • getDecoratorReferencePoint

      protected final org.eclipse.draw2d.geometry.Point getDecoratorReferencePoint()
      Returns the decorator-reference-point. The decorator-reference-point is the end-point of the connection. It is used to calculate the angle "phi".
      Returns:
      The decorator-reference-point.
      See Also:
    • getPhiDegrees

      protected final double getPhiDegrees()
      Returns the angle "phi" in degrees. This is the angle between the x-axis and the line through [decorator-location, decorator-reference-point].
      Returns:
      The angle "phi" in degrees.
      See Also:
    • getPhiRadians

      protected final double getPhiRadians()
      Returns the angle "phi" in radians. This is the angle between the x-axis and the line through [decorator-location, decorator-reference-point].
      Returns:
      The angle "phi" in radians.
      See Also:
    • getTouchPointDelta

      protected final org.eclipse.draw2d.geometry.Point getTouchPointDelta()
      Returns the touch-point delta. This is the distance which the decorator has to be moved, so that the initial touchpoint touches the decorator-location after the rotation.
      Returns:
      The touch-point delta.