Class GFPolyline

java.lang.Object
org.eclipse.draw2d.Figure
All Implemented Interfaces:
org.eclipse.draw2d.IFigure, org.eclipse.gef.handles.HandleBounds, IVisualStateChangeListener, IVisualStateHolder
Direct Known Subclasses:
GFPolygon, GFPolylineConnection, GFPolylineDecoration

public class GFPolyline extends GFAbstractPointListShape
A Graphiti Polyline Figure. Most functionality is handled in the super-class. This class only has to define the outline-path and fill-path for the figure-specific painting.
  • 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, bounds, 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
    GFPolyline(IPictogramElementDelegate pictogramElementDelegate, GraphicsAlgorithm graphicsAlgorithm)
    Creates a new GFPolyline.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    containsPointInFigure(int x, int y)
    Returns true, if the given point is contained in this Polyline.
    protected org.eclipse.swt.graphics.Path
    createPath(org.eclipse.draw2d.geometry.Rectangle outerBoundss, org.eclipse.draw2d.Graphics graphics, boolean isFill)
    Returns the Path specifying a polyline for the adjusted point-list (see getAdjustedPointList(PointList, double, double)) of this Shape.
    protected void
    fillShape(org.eclipse.draw2d.Graphics graphics)
    Suppresses the filling if specified in setSuppressFilling(boolean).
    protected org.eclipse.draw2d.geometry.PointList
    getAdjustedPointList(org.eclipse.draw2d.geometry.PointList points, double zoom, double lw)
    Returns a new instance of the input point-list, which is adjusted regarding the given zoom-factor and line-width.
    protected org.eclipse.draw2d.geometry.PointList
    Returns the points of this polyline, which are adjusted regarding their line-width but which are not zoomed (see getAdjustedPointList(PointList, double, double)).
    protected List<BezierPoint>
    getBezierPoints(org.eclipse.draw2d.geometry.PointList points, double zoom)
    Returns a new list of bezier-points, which is calculated from the given point list.
    org.eclipse.draw2d.geometry.Rectangle
    Returns the bounding box of the Polyline.
    protected int
    Returns the general bezier distance used to calculate the rounding of the bezier-curve.
    protected int[]
    Returns the specific bezier distance used to calculate the rounding of the bezier-curve.
    void
    primTranslate(int dx, int dy)
    Translates the shape by the given x/y dimensions.
    void
    setGeneralBezierDistance(int bezierDistance)
    Sets the general distance used to calculate the rounding of the bezier-curve.
    void
    setLineWidth(int lw)
    Sets the line-width of the Polyline.
    void
    setMinimumSelectionLineWidth(int minimumSelectionLineWidth)
    Sets the selection tolerance.
    void
    setSpecificBezierDistances(int[] bezierDistances)
    Sets the specific distances used to calculate the rounding of the bezier-curve.
    void
    setSuppressFilling(boolean suppressFilling)
    Set, if the filling should be suppressed under all circumstances (even if Shape.setFill(boolean) was set to true).

    Methods inherited from class org.eclipse.graphiti.ui.internal.figures.GFAbstractPointListShape

    addPoint, getEnd, getPoints, getStart, insertPoint, removeAllPoints, removePoint, setEnd, setPoint, setPoints, setStart

    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, 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, 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, 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, setLocation, setMaximumSize, setMinimumSize, setOpaque, setParent, setPreferredSize, setRequestFocusEnabled, setSize, setSize, setToolTip, setVisible, translate, translateFromParent, translateToAbsolute, translateToParent, translateToRelative, validate
  • Constructor Details

    • GFPolyline

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

    • setMinimumSelectionLineWidth

      public void setMinimumSelectionLineWidth(int minimumSelectionLineWidth)
      Sets the selection tolerance. This is the minimum line-width, which is still considered to be a selection of the polyline, independent from the real line-width. For a small line-width this makes it easier to select the polyline.
      Parameters:
      minimumSelectionLineWidth - The new minimum selection line-width to set.
    • setSuppressFilling

      public void setSuppressFilling(boolean suppressFilling)
      Set, if the filling should be suppressed under all circumstances (even if Shape.setFill(boolean) was set to true).
      Parameters:
      suppressFilling - If true, then the filling is suppressed under all circumstances.
    • setGeneralBezierDistance

      public void setGeneralBezierDistance(int bezierDistance)
      Sets the general distance used to calculate the rounding of the bezier-curve. This means, that all bezier-distances for this polyline are identical. This is different to setSpecificBezierDistances(int[]). See GFFigureUtil.getBezierPath(List, boolean) for a more details.
      Parameters:
      bezierDistance - The general distance used to calculate the rounding of the bezier-curve.
    • getGeneralBezierDistance

      protected int getGeneralBezierDistance()
      Returns the general bezier distance used to calculate the rounding of the bezier-curve. See setGeneralBezierDistance(int) for more details.
      Returns:
      The general bezier distance used to calculate the rounding of the bezier-curve.
    • setSpecificBezierDistances

      public void setSpecificBezierDistances(int[] bezierDistances)
      Sets the specific distances used to calculate the rounding of the bezier-curve. This means, that for each point of the polyline the before-distance and the after distance have to be specified. If this attribute is null, then the value of the attribute in setGeneralBezierDistance(int) will be used. See GFFigureUtil.getBezierPath(List, boolean) for a more details.
      Parameters:
      bezierDistances - The specific distance used to calculate the rounding of the bezier-curve.
    • getSpecificBezierDistances

      protected int[] getSpecificBezierDistances()
      Returns the specific bezier distance used to calculate the rounding of the bezier-curve. See setSpecificBezierDistances(int[]) for more details.
      Returns:
      The specific bezier distance used to calculate the rounding of the bezier-curve.
    • getAdjustedPointListWithoutZoom

      protected org.eclipse.draw2d.geometry.PointList getAdjustedPointListWithoutZoom()
      Returns the points of this polyline, which are adjusted regarding their line-width but which are not zoomed (see getAdjustedPointList(PointList, double, double)). This is a buffered value, which is used to check, if a point is contained on this polyline. It is re-calculated whenever the "real" point-list of this polyline changes.
      Returns:
      Returns the points of this polyline, which are translated regarding their line-width.
    • getAdjustedPointList

      protected org.eclipse.draw2d.geometry.PointList getAdjustedPointList(org.eclipse.draw2d.geometry.PointList points, double zoom, double lw)
      Returns a new instance of the input point-list, which is adjusted regarding the given zoom-factor and line-width. This is the point-list which will be outlined on the graphics. So this allows to draw along slightly different point-list than the original point-list.

      The implementation of this method just forwards to GFFigureUtil.getAdjustedPointList(PointList, double, double).

      Parameters:
      points - The point-list which to adjust.
      zoom - The zoom-factor to regard.
      lw - The line-width to regard.
    • getBounds

      public org.eclipse.draw2d.geometry.Rectangle getBounds()
      Returns the bounding box of the Polyline. This is actually the bounding box of the point-list which defines the Polyline. That means, that the bounding box changes whenever the point-list changes. Also note, that calling Figure.setBounds(Rectangle) does not change the dimension of the bounding box, but it may translate the bounding box (see primTranslate(int, int)).
      Specified by:
      getBounds in interface org.eclipse.draw2d.IFigure
      Overrides:
      getBounds in class org.eclipse.draw2d.Figure
      Returns:
      The bounding box of the Polyline.
    • setLineWidth

      public void setLineWidth(int lw)
      Sets the line-width of the Polyline. Note that changing the line-width might change the bounds of the Polyline. This is the reason, why this method is overwritten for the Polyline.
      Overrides:
      setLineWidth in class org.eclipse.draw2d.Shape
      Parameters:
      lw - The line-width to set.
      See Also:
    • containsPointInFigure

      public boolean containsPointInFigure(int x, int y)
      Returns true, if the given point is contained in this Polyline. This is the case if
      • The point is located on the line, taking into account a certain tolerance (see #setSelectionTolerance(int))
      • The point is contained in a child of this Shape
      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 in this Polyline.
      See Also:
    • primTranslate

      public void primTranslate(int dx, int dy)
      Translates the shape by the given x/y dimensions. This will translate all points of the Polyline by the given values. Note, that it is necessary to overwrite this method, because the super-class implementation only changes the bounding box, which has no affect on the coordinates of the Polyline.
      Overrides:
      primTranslate in class org.eclipse.draw2d.Figure
      Parameters:
      dx - The amount to translate horizontally
      dy - The amount to translate vertically
      See Also:
    • fillShape

      protected void fillShape(org.eclipse.draw2d.Graphics graphics)
      Suppresses the filling if specified in setSuppressFilling(boolean). Otherwise it just forwards to the super-class.
      Overrides:
      fillShape in class GFAbstractShape
      Parameters:
      graphics - The Graphics on which to fill this Shape.
    • createPath

      protected org.eclipse.swt.graphics.Path createPath(org.eclipse.draw2d.geometry.Rectangle outerBoundss, org.eclipse.draw2d.Graphics graphics, boolean isFill)
      Returns the Path specifying a polyline for the adjusted point-list (see getAdjustedPointList(PointList, double, double)) of this Shape. Note, that the outer bounds are ignored to calculate the Path, in contrast to most other Shapes. It does not differenciate between a fill Path and an outline Path.
      Specified by:
      createPath in class GFAbstractShape
      Parameters:
      outerBounds - The outer bounds which shall contain the Path. They are calculated from the bounds of this figure by GFFigureUtil.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 specifying a polyline for the point-list of this Shape.
    • getBezierPoints

      protected List<BezierPoint> getBezierPoints(org.eclipse.draw2d.geometry.PointList points, double zoom)
      Returns a new list of bezier-points, which is calculated from the given point list.
      Parameters:
      points - The point list, from which to calculate the bezier-points.
      zoom - The zoom-level used to adjust the bezier distances.
      Returns:
      a new list of bezier-points, which is calculated from the given point list.