de.cau.cs.kieler.core.model.gmf.figures
Class SplineConnection

java.lang.Object
  extended by org.eclipse.draw2d.Figure
      extended by org.eclipse.draw2d.Shape
          extended by org.eclipse.draw2d.AbstractPointListShape
              extended by org.eclipse.draw2d.Polyline
                  extended by org.eclipse.draw2d.PolylineConnection
                      extended by org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx
                          extended by de.cau.cs.kieler.core.model.gmf.figures.SplineConnection
All Implemented Interfaces:
AnchorListener, Connection, IFigure, IAnchorableFigure, IPolygonAnchorableFigure
Direct Known Subclasses:
DirectedConnection, Edge2EditPart.UndirectedEdgeFigure, Edge4EditPart.UndirectedEdgeFigure, Edge6EditPart.UndirectedEdgeFigure, Edge8EditPart.UndirectedEdgeFigure, LinkEditPart.LinkFigure, TransitionEditPart.TransitionFigure

public class SplineConnection
extends PolylineConnectionEx

A connection figure that is able to draw polylines as well as real splines or approximated splines. In these cases the bend points are interpreted as spline control points.

Rating red

Nested Class Summary
static class SplineConnection.ArrowLocatorEx
          An extension of the ArrowLocator that is capable of using spline points as references.
 
Nested classes/interfaces inherited from class org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx
PolylineConnectionEx.JumpLink, PolylineConnectionEx.JumpLinkSet
 
Nested classes/interfaces inherited from class org.eclipse.draw2d.Figure
Figure.FigureIterator, Figure.IdentitySearch
 
Nested classes/interfaces inherited from interface org.eclipse.draw2d.IFigure
IFigure.NoInsets
 
Field Summary
static String PREF_SPLINE_MODE
          Temporary preference key.
static int SPLINE_CUBIC
          Draw cubic spline segments.
static int SPLINE_CUBIC_APPROX
          Approximate cubic spline segments.
static int SPLINE_OFF
          Don't draw splines.
 
Fields inherited from class org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx
JUMPLINK_FLAG_ABOVE, JUMPLINK_FLAG_ALL, JUMPLINK_FLAG_BELOW, SMOOTH_LESS, SMOOTH_MORE, SMOOTH_NONE, SMOOTH_NORMAL
 
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.Connection
PROPERTY_CONNECTION_ROUTER, PROPERTY_POINTS
 
Fields inherited from interface org.eclipse.draw2d.IFigure
MAX_DIMENSION, MIN_DIMENSION, NO_INSETS
 
Constructor Summary
SplineConnection()
           
 
Method Summary
protected  int calculateTolerance(boolean isFeedbackLayer)
          Calculate and store the tolerance value for determining whether the line contains a point or not.
 boolean containsPoint(int x, int y)
           
 IFigure getJoinPointDecoration()
          Get the current join point decoration.
 PointList getRoundedCornersPoints(boolean calculateAppoxPoints)
           
 int getSplineMode()
          Gets the spline mode for this connection.
protected  boolean isFeedbackLayer()
          This method checks if we are on a feedback layer by comparing the value of a Dimension with the value after translating it into relative coordinates.
 boolean isRoundingBendpoints()
          Checks if edge corners should be rounded.
protected  boolean lineContainsPoint(int x1, int y1, int x2, int y2, int px, int py, boolean isFeedbackLayer)
          Checks whether a point is near a line or not.
 void outlineShape(Graphics g)
           
 void setJoinPointDecoration(IFigure dec)
          Set a join point decoration.
 void setSourceDecoration(RotatableDecoration dec)
          
 void setSplineMode(int mode)
          Set spline mode for this connection.
 void setTargetDecoration(RotatableDecoration dec)
          
 
Methods inherited from class org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx
addPoint, createAnchor, createConnectionAnchor, createDefaultAnchor, dirtyAllJumpLinks, findLineSegIndexOfPoint, getBounds, getConnectionAnchor, getConnectionAnchors, getConnectionAnchorTerminal, getCursor, getPolygonPoints, getRoundedBendpointsRadius, getSimpleBounds, getSlidableAnchorArea, getSmoothness, getSmoothPoints, getSmoothPoints, getSourceConnectionAnchorAt, getSourceDecoration, getTargetConnectionAnchorAt, getTargetDecoration, insertPoint, isAvoidObstacleRouting, isClosestDistanceRouting, isDefaultAnchorArea, isJumpLinksAngledIn, isJumpLinksOnBottom, isJumpLinksSmooth, refreshLine, setForegroundColor, setJumpLinks, setJumpLinksStyles, setLineDash, setLineWidth, setPoints, setRoundedBendpointsRadius, setRoutingStyles, setSmoothness, setSourceDecoration, setTargetDecoration, shouldJumpLinks
 
Methods inherited from class org.eclipse.draw2d.PolylineConnection
addNotify, addRoutingListener, anchorMoved, getConnectionRouter, getRoutingConstraint, getSourceAnchor, getTargetAnchor, layout, removeNotify, removeRoutingListener, revalidate, setConnectionRouter, setRoutingConstraint, setSourceAnchor, setTargetAnchor
 
Methods inherited from class org.eclipse.draw2d.Polyline
fillShape, isOpaque, primTranslate, removeAllPoints, repaint, setTolerance, shapeContainsPoint
 
Methods inherited from class org.eclipse.draw2d.AbstractPointListShape
childrenContainsPoint, getEnd, getPoints, getStart, removePoint, setEnd, setEndpoints, setPoint, setStart
 
Methods inherited from class org.eclipse.draw2d.Shape
getAlpha, getAntialias, getLineAttributes, getLineCap, getLineDash, getLineDashOffset, getLineJoin, getLineMiterLimit, getLineStyle, getLineWidth, getLineWidthFloat, paintFigure, 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, addPropertyChangeListener, addPropertyChangeListener, containsPoint, erase, findDescendantAtExcluding, findFigureAt, findFigureAt, findFigureAt, findFigureAtExcluding, findMouseEventTargetAt, findMouseEventTargetInDescendantsAt, fireCoordinateSystemChanged, fireFigureMoved, fireMoved, firePropertyChange, firePropertyChange, firePropertyChange, getBackgroundColor, getBorder, getChildren, getClientArea, getClientArea, getClippingStrategy, 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, isRequestFocusEnabled, isShowing, isValid, isValidationRoot, isVisible, paint, paintBorder, paintChildren, paintClientArea, remove, removeAll, removeAncestorListener, removeCoordinateListener, removeFigureListener, removeFocusListener, removeKeyListener, removeLayoutListener, removeListener, removeMouseListener, removeMouseMotionListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, requestFocus, setBackgroundColor, setBorder, setBounds, setChildrenDirection, setChildrenEnabled, setChildrenOrientation, setClippingStrategy, setConstraint, setCursor, setEnabled, setFlag, setFocusTraversable, setFont, 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.Connection
getPoints
 
Methods inherited from interface org.eclipse.draw2d.IFigure
add, add, add, add, addAncestorListener, addCoordinateListener, addFigureListener, addFocusListener, addKeyListener, addLayoutListener, addMouseListener, addMouseMotionListener, addPropertyChangeListener, addPropertyChangeListener, containsPoint, erase, findFigureAt, findFigureAt, findFigureAt, findFigureAtExcluding, findMouseEventTargetAt, getBackgroundColor, getBorder, getChildren, getClientArea, getClientArea, getClippingStrategy, 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, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, setBackgroundColor, setBorder, setBounds, setClippingStrategy, setConstraint, setCursor, setEnabled, setFocusTraversable, setFont, setLayoutManager, setLocation, setMaximumSize, setMinimumSize, setOpaque, setParent, setPreferredSize, setRequestFocusEnabled, setSize, setSize, setToolTip, setVisible, translate, translateFromParent, translateToAbsolute, translateToParent, translateToRelative, validate
 

Field Detail

SPLINE_OFF

public static final int SPLINE_OFF
Don't draw splines.

See Also:
Constant Field Values

SPLINE_CUBIC

public static final int SPLINE_CUBIC
Draw cubic spline segments.

See Also:
Constant Field Values

SPLINE_CUBIC_APPROX

public static final int SPLINE_CUBIC_APPROX
Approximate cubic spline segments.

See Also:
Constant Field Values

PREF_SPLINE_MODE

public static final String PREF_SPLINE_MODE
Temporary preference key.

See Also:
Constant Field Values
Constructor Detail

SplineConnection

public SplineConnection()
Method Detail

containsPoint

public boolean containsPoint(int x,
                             int y)
Specified by:
containsPoint in interface IFigure
Overrides:
containsPoint in class PolylineConnectionEx

isFeedbackLayer

protected boolean isFeedbackLayer()
This method checks if we are on a feedback layer by comparing the value of a Dimension with the value after translating it into relative coordinates. Copied from PolylineConnectionEx because it is private there but required for containsPoint().

Returns:
true if we are on a feedback layer, which means the results after translating were the same as not translating, or false if we are not on a feedback layer.

isRoundingBendpoints

public boolean isRoundingBendpoints()
Checks if edge corners should be rounded. Same as super method, except it doesn't check if edge routing is orthogonal.

Overrides:
isRoundingBendpoints in class PolylineConnectionEx
Returns:
true if edge corners should be rounded.

calculateTolerance

protected int calculateTolerance(boolean isFeedbackLayer)
Calculate and store the tolerance value for determining whether the line contains a point or not. Copied from PolylineConnectionEx because it is private there but required for containsPoint().

Parameters:
isFeedbackLayer - see the isFeedbackLayer() method
Returns:
tolerance value

lineContainsPoint

protected boolean lineContainsPoint(int x1,
                                    int y1,
                                    int x2,
                                    int y2,
                                    int px,
                                    int py,
                                    boolean isFeedbackLayer)
Checks whether a point is near a line or not.

Parameters:
x1 - line start
y1 - line start
x2 - line end
y2 - line end
px - point
py - point
isFeedbackLayer - whether we're on a feedback layer or not
Returns:
true if (px,py) is near the line

setSplineMode

public void setSplineMode(int mode)
Set spline mode for this connection.

Parameters:
mode - spline mode

getSplineMode

public int getSplineMode()
Gets the spline mode for this connection. Fall back to approximation if smooth splines are selected but no advanced graphics support is available

Returns:
spline mode

outlineShape

public void outlineShape(Graphics g)
Overrides:
outlineShape in class PolylineConnectionEx

getRoundedCornersPoints

public PointList getRoundedCornersPoints(boolean calculateAppoxPoints)
Overrides:
getRoundedCornersPoints in class PolylineConnectionEx

getJoinPointDecoration

public IFigure getJoinPointDecoration()
Get the current join point decoration. If it is null the mechanism is deactivated.

Returns:
the join point decoration or null

setJoinPointDecoration

public void setJoinPointDecoration(IFigure dec)
Set a join point decoration. Set it to null to not draw join points.

Parameters:
dec - the new join point decoration

setTargetDecoration

public void setTargetDecoration(RotatableDecoration dec)

Overrides:
setTargetDecoration in class PolylineConnectionEx

setSourceDecoration

public void setSourceDecoration(RotatableDecoration dec)

Overrides:
setSourceDecoration in class PolylineConnectionEx