Package org.eclipse.graphiti.ui.internal.figures

# Class GFPolyline

java.lang.Object
org.eclipse.draw2d.Figure
org.eclipse.draw2d.Shape
org.eclipse.graphiti.ui.internal.figures.GFAbstractShape
org.eclipse.graphiti.ui.internal.figures.GFAbstractPointListShape
org.eclipse.graphiti.ui.internal.figures.GFPolyline

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`
`getAdjustedPointListWithoutZoom()`
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`
`getBounds()`
Returns the bounding box of the Polyline.
`protected int`
`getGeneralBezierDistance()`
Returns the general bezier distance used to calculate the rounding of the bezier-curve.
`protected int[]`
`getSpecificBezierDistances()`
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.graphiti.ui.internal.figures.GFAbstractShape

`containsPoint, containsPointInArea, fillPath, getClickArea, getConfigurationProvider, getGraphicsAlgorithm, getHandleBounds, getLineWidth, getPictogramElementDelegate, getPreferences, getSelectionBorder, getVisualState, getZoomLevel, outlineShape, paintFigure, paintShape, setClickArea, setSelectionBorder, transformToFillBounds, visualStateChanged`

### 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, addMouseWheelListener, 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, handleMouseWheelScrolled, hasFocus, internalGetEventDispatcher, internalGetLightweightSystem, 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, removeMouseWheelListener, 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, useDoublePrecision, 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, addMouseWheelListener, 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, handleMouseWheelScrolled, hasFocus, internalGetEventDispatcher, intersects, invalidate, invalidateTree, isCoordinateSystem, isEnabled, isFocusTraversable, isMirrored, isOpaque, isRequestFocusEnabled, isShowing, isVisible, paint, remove, removeAncestorListener, removeCoordinateListener, removeFigureListener, removeFocusListener, removeKeyListener, removeLayoutListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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:
  - `getBounds()`

### 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
  invalid reference

      #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:
  - `GFAbstractShape.containsPoint(int, int)`

### 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:
  - `getBounds()`

### 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:
  `outerBoundss` - 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.
  `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.
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.