Package org.jgraph.graph
Class EdgeRenderer
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- org.jgraph.graph.EdgeRenderer
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,CellViewRenderer
public class EdgeRenderer extends javax.swing.JComponent implements CellViewRenderer, java.io.Serializable
This renderer displays entries that implement the CellView interface.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected int
beginDeco
Painting attributes of the current edgeviewprotected boolean
beginFill
Boolean attributes of the current edgeview.protected int
beginSize
Painting attributes of the current edgeviewprotected Bezier
bezier
Cached bezier curveprotected java.awt.Color
borderColor
Color attributes of the current edgeview.protected boolean
childrenSelected
Boolean attributes of the current edgeview.protected float
dashOffset
Contains the current dash offset.protected java.awt.Color
defaultBackground
Color attributes of the current edgeview.protected java.awt.Color
defaultForeground
Color attributes of the current edgeview.protected int
endDeco
Painting attributes of the current edgeviewprotected boolean
endFill
Boolean attributes of the current edgeview.protected int
endSize
Painting attributes of the current edgeviewjava.awt.Font
extraLabelFont
Override this if you want the extra labels to appear in a special fontJprotected boolean
focus
Boolean attributes of the current edgeview.protected java.awt.Color
fontColor
Color attributes of the current edgeview.protected static java.awt.Graphics
fontGraphics
Static Graphics used for Font Metricsprotected java.awt.Color
gradientColor
The gradient color of the edgeprotected java.lang.ref.WeakReference
graph
Cache the current graph for drawingprotected java.awt.Color
gridColor
The color of the graph gridprotected java.awt.Color
highlightColor
The color of highlighted cellsprotected boolean
isMoveBelowZero
Boolean attributes of the current edgeview.protected boolean
labelBorder
Boolean attributes of the current edgeview.protected boolean
labelTransformEnabled
Boolean attributes of the current edgeview.static double
LABELWIDTHBUFFER
When zooming a graph the font size jumps at certain zoom levels rather than scaling smoothly.protected float[]
lineDash
Contains the current dash pattern.protected int
lineStyle
Painting attributes of the current edgeviewprotected float
lineWidth
Width of the current edge viewprotected java.awt.Color
lockedHandleColor
The color of the second available handleprotected java.awt.FontMetrics
metrics
Reference to the font metrics of the aboveprotected boolean
opaque
Boolean attributes of the current edgeview.protected boolean
preview
Boolean attributes of the current edgeview.protected boolean
selected
Boolean attributes of the current edgeview.boolean
simpleExtraLabels
A switch for painting the extra labelsprotected Spline2D
spline
Cached spline curveprotected EdgeView
view
Cache the current edgeview for drawing-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description EdgeRenderer()
Constructs a renderer that may be used to render edges.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.awt.Shape
createLineEnd(int size, int style, java.awt.geom.Point2D src, java.awt.geom.Point2D dst)
Paint the current view's direction.protected java.awt.Shape
createShape()
Returns the shape that represents the current edge in the context of the current graph.void
firePropertyChange(java.lang.String propertyName, boolean oldValue, boolean newValue)
Overridden for performance reasons.void
firePropertyChange(java.lang.String propertyName, byte oldValue, byte newValue)
Overridden for performance reasons.void
firePropertyChange(java.lang.String propertyName, char oldValue, char newValue)
Overridden for performance reasons.void
firePropertyChange(java.lang.String propertyName, double oldValue, double newValue)
Overridden for performance reasons.void
firePropertyChange(java.lang.String propertyName, float oldValue, float newValue)
Overridden for performance reasons.void
firePropertyChange(java.lang.String propertyName, int oldValue, int newValue)
Overridden for performance reasons.void
firePropertyChange(java.lang.String propertyName, long oldValue, long newValue)
Overridden for performance reasons.void
firePropertyChange(java.lang.String propertyName, short oldValue, short newValue)
Overridden for performance reasons.protected void
firePropertyChange(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)
Overridden for performance reasons.java.awt.geom.Rectangle2D
getBounds(CellView value)
Returns the bounds of the edge shape.java.awt.geom.Rectangle2D
getExtraLabelBounds(JGraph paintingContext, EdgeView view, int index)
Returns the label bounds of the specified view in the given graph.java.awt.geom.Point2D
getExtraLabelPosition(EdgeView view, int index)
Returns the label position of the specified view in the given graph.java.awt.Dimension
getExtraLabelSize(JGraph paintingContext, EdgeView view, int index)
Returns the label size of the specified view in the given graph.java.awt.Color
getGradientColor()
java.awt.geom.Rectangle2D
getLabelBounds(java.awt.geom.Point2D p, java.awt.Dimension d, java.lang.String label)
Returns the label bounds of the specified view in the given graph.java.awt.geom.Rectangle2D
getLabelBounds(JGraph paintingContext, EdgeView view)
Returns the label bounds of the specified view in the given graph.protected java.awt.geom.Point2D
getLabelPosition(java.awt.geom.Point2D pos)
Returns the label position of the specified view in the given graph.java.awt.geom.Point2D
getLabelPosition(EdgeView view)
Returns the label position of the specified view in the given graph.java.awt.Dimension
getLabelSize(EdgeView view, java.lang.String label)
Returns the label size of the specified view in the given graph.java.awt.geom.Rectangle2D
getPaintBounds(EdgeView view)
Returns the bounds of the edge shape without labeljava.awt.Component
getRendererComponent(JGraph graph, CellView view, boolean sel, boolean focus, boolean preview)
Configure and return the renderer based on the passed in components.protected void
installAttributes(CellView view)
Installs the attributes of specified cell in this renderer instance.boolean
intersects(JGraph graph, CellView value, java.awt.Rectangle rect)
Returns true if the edge shape intersects the given rectangle.protected boolean
isFillable(int decoration)
void
paint(java.awt.Graphics g)
Paint the renderer.protected void
paintLabel(java.awt.Graphics g, java.lang.String label, java.awt.geom.Point2D p, boolean mainLabel)
Paint the specified label for the current edgeview.protected void
paintSelectionBorder(java.awt.Graphics g)
Provided for subclassers to paint a selection border.void
repaint(long tm, int x, int y, int width, int height)
Overridden for performance reasons.void
repaint(java.awt.Rectangle r)
Overridden for performance reasons.void
revalidate()
Overridden for performance reasons.void
setGradientColor(java.awt.Color gradientColor)
protected void
translateGraphics(java.awt.Graphics g)
void
validate()
Overridden for performance reasons.-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
fontGraphics
protected static transient java.awt.Graphics fontGraphics
Static Graphics used for Font Metrics
-
LABELWIDTHBUFFER
public static double LABELWIDTHBUFFER
When zooming a graph the font size jumps at certain zoom levels rather than scaling smoothly. Sometimes the zoom on the font is more than the component zoom and cropping occurs. This buffer allows for the maximum occurance of this
-
simpleExtraLabels
public boolean simpleExtraLabels
A switch for painting the extra labels
-
extraLabelFont
public java.awt.Font extraLabelFont
Override this if you want the extra labels to appear in a special fontJ
-
metrics
protected transient java.awt.FontMetrics metrics
Reference to the font metrics of the above
-
graph
protected transient java.lang.ref.WeakReference graph
Cache the current graph for drawing
-
view
protected transient EdgeView view
Cache the current edgeview for drawing
-
beginDeco
protected transient int beginDeco
Painting attributes of the current edgeview
-
endDeco
protected transient int endDeco
Painting attributes of the current edgeview
-
beginSize
protected transient int beginSize
Painting attributes of the current edgeview
-
endSize
protected transient int endSize
Painting attributes of the current edgeview
-
lineStyle
protected transient int lineStyle
Painting attributes of the current edgeview
-
lineWidth
protected transient float lineWidth
Width of the current edge view
-
labelBorder
protected transient boolean labelBorder
Boolean attributes of the current edgeview. Fill flags are checked for valid decorations.
-
beginFill
protected transient boolean beginFill
Boolean attributes of the current edgeview. Fill flags are checked for valid decorations.
-
endFill
protected transient boolean endFill
Boolean attributes of the current edgeview. Fill flags are checked for valid decorations.
-
focus
protected transient boolean focus
Boolean attributes of the current edgeview. Fill flags are checked for valid decorations.
-
selected
protected transient boolean selected
Boolean attributes of the current edgeview. Fill flags are checked for valid decorations.
-
preview
protected transient boolean preview
Boolean attributes of the current edgeview. Fill flags are checked for valid decorations.
-
opaque
protected transient boolean opaque
Boolean attributes of the current edgeview. Fill flags are checked for valid decorations.
-
childrenSelected
protected transient boolean childrenSelected
Boolean attributes of the current edgeview. Fill flags are checked for valid decorations.
-
labelTransformEnabled
protected transient boolean labelTransformEnabled
Boolean attributes of the current edgeview. Fill flags are checked for valid decorations.
-
isMoveBelowZero
protected transient boolean isMoveBelowZero
Boolean attributes of the current edgeview. Fill flags are checked for valid decorations.
-
borderColor
protected transient java.awt.Color borderColor
Color attributes of the current edgeview. This components foreground is set to the edgecolor, the fontColor is in an extra variable. If the fontColor is null, the current foreground is used. The default background instead is used for text and is not visible if the label is not visible or if opaque is true.
-
defaultForeground
protected transient java.awt.Color defaultForeground
Color attributes of the current edgeview. This components foreground is set to the edgecolor, the fontColor is in an extra variable. If the fontColor is null, the current foreground is used. The default background instead is used for text and is not visible if the label is not visible or if opaque is true.
-
defaultBackground
protected transient java.awt.Color defaultBackground
Color attributes of the current edgeview. This components foreground is set to the edgecolor, the fontColor is in an extra variable. If the fontColor is null, the current foreground is used. The default background instead is used for text and is not visible if the label is not visible or if opaque is true.
-
fontColor
protected transient java.awt.Color fontColor
Color attributes of the current edgeview. This components foreground is set to the edgecolor, the fontColor is in an extra variable. If the fontColor is null, the current foreground is used. The default background instead is used for text and is not visible if the label is not visible or if opaque is true.
-
lineDash
protected transient float[] lineDash
Contains the current dash pattern. Null means no pattern.
-
dashOffset
protected transient float dashOffset
Contains the current dash offset. Null means no offset.
-
gradientColor
protected transient java.awt.Color gradientColor
The gradient color of the edge
-
gridColor
protected transient java.awt.Color gridColor
The color of the graph grid
-
lockedHandleColor
protected transient java.awt.Color lockedHandleColor
The color of the second available handle
-
highlightColor
protected transient java.awt.Color highlightColor
The color of highlighted cells
-
bezier
protected transient Bezier bezier
Cached bezier curve
-
spline
protected transient Spline2D spline
Cached spline curve
-
-
Method Detail
-
getRendererComponent
public java.awt.Component getRendererComponent(JGraph graph, CellView view, boolean sel, boolean focus, boolean preview)
Configure and return the renderer based on the passed in components. The value is typically set from messaging the graph withconvertValueToString
.- Specified by:
getRendererComponent
in interfaceCellViewRenderer
- Parameters:
graph
- the graph that that defines the rendering context.view
- the cell view that should be rendered.sel
- whether the object is selected.focus
- whether the object has the focus.preview
- whether we are drawing a preview.- Returns:
- the component used to render the value.
-
intersects
public boolean intersects(JGraph graph, CellView value, java.awt.Rectangle rect)
Returns true if the edge shape intersects the given rectangle.
-
getBounds
public java.awt.geom.Rectangle2D getBounds(CellView value)
Returns the bounds of the edge shape.
-
getLabelBounds
public java.awt.geom.Rectangle2D getLabelBounds(JGraph paintingContext, EdgeView view)
Returns the label bounds of the specified view in the given graph.
-
getExtraLabelBounds
public java.awt.geom.Rectangle2D getExtraLabelBounds(JGraph paintingContext, EdgeView view, int index)
Returns the label bounds of the specified view in the given graph. Note: The index is the position of the String object for the label in the extra labels array of the view.
-
getLabelBounds
public java.awt.geom.Rectangle2D getLabelBounds(java.awt.geom.Point2D p, java.awt.Dimension d, java.lang.String label)
Returns the label bounds of the specified view in the given graph.
-
getLabelPosition
public java.awt.geom.Point2D getLabelPosition(EdgeView view)
Returns the label position of the specified view in the given graph.
-
getExtraLabelPosition
public java.awt.geom.Point2D getExtraLabelPosition(EdgeView view, int index)
Returns the label position of the specified view in the given graph.
-
getLabelPosition
protected java.awt.geom.Point2D getLabelPosition(java.awt.geom.Point2D pos)
Returns the label position of the specified view in the given graph.
-
getExtraLabelSize
public java.awt.Dimension getExtraLabelSize(JGraph paintingContext, EdgeView view, int index)
Returns the label size of the specified view in the given graph.
-
getLabelSize
public java.awt.Dimension getLabelSize(EdgeView view, java.lang.String label)
Returns the label size of the specified view in the given graph.
-
installAttributes
protected void installAttributes(CellView view)
Installs the attributes of specified cell in this renderer instance. This means, retrieve every published key from the cells hashtable and set global variables or superclass properties accordingly.- Parameters:
view
- the cell view to retrieve the attribute values from.
-
isFillable
protected boolean isFillable(int decoration)
-
getPaintBounds
public java.awt.geom.Rectangle2D getPaintBounds(EdgeView view)
Returns the bounds of the edge shape without label
-
paint
public void paint(java.awt.Graphics g)
Paint the renderer.- Overrides:
paint
in classjavax.swing.JComponent
-
paintSelectionBorder
protected void paintSelectionBorder(java.awt.Graphics g)
Provided for subclassers to paint a selection border.
-
translateGraphics
protected void translateGraphics(java.awt.Graphics g)
-
paintLabel
protected void paintLabel(java.awt.Graphics g, java.lang.String label, java.awt.geom.Point2D p, boolean mainLabel)
Paint the specified label for the current edgeview.
-
createShape
protected java.awt.Shape createShape()
Returns the shape that represents the current edge in the context of the current graph. This method sets the global beginShape, lineShape and endShape variables as a side-effect.
-
createLineEnd
protected java.awt.Shape createLineEnd(int size, int style, java.awt.geom.Point2D src, java.awt.geom.Point2D dst)
Paint the current view's direction. Sets tmpPoint as a side-effect such that the invoking method can use it to determine the connection point to this decoration.
-
getGradientColor
public java.awt.Color getGradientColor()
- Returns:
- Returns the gradientColor.
-
setGradientColor
public void setGradientColor(java.awt.Color gradientColor)
- Parameters:
gradientColor
- The gradientColor to set.
-
validate
public void validate()
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
validate
in classjava.awt.Container
-
revalidate
public void revalidate()
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
revalidate
in classjavax.swing.JComponent
-
repaint
public void repaint(long tm, int x, int y, int width, int height)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
repaint
in classjavax.swing.JComponent
-
repaint
public void repaint(java.awt.Rectangle r)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
repaint
in classjavax.swing.JComponent
-
firePropertyChange
protected void firePropertyChange(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
firePropertyChange
in classjava.awt.Component
-
firePropertyChange
public void firePropertyChange(java.lang.String propertyName, byte oldValue, byte newValue)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
firePropertyChange
in classjava.awt.Component
-
firePropertyChange
public void firePropertyChange(java.lang.String propertyName, char oldValue, char newValue)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
firePropertyChange
in classjavax.swing.JComponent
-
firePropertyChange
public void firePropertyChange(java.lang.String propertyName, short oldValue, short newValue)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
firePropertyChange
in classjava.awt.Component
-
firePropertyChange
public void firePropertyChange(java.lang.String propertyName, int oldValue, int newValue)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
firePropertyChange
in classjavax.swing.JComponent
-
firePropertyChange
public void firePropertyChange(java.lang.String propertyName, long oldValue, long newValue)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
firePropertyChange
in classjava.awt.Component
-
firePropertyChange
public void firePropertyChange(java.lang.String propertyName, float oldValue, float newValue)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
firePropertyChange
in classjava.awt.Component
-
firePropertyChange
public void firePropertyChange(java.lang.String propertyName, double oldValue, double newValue)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
firePropertyChange
in classjava.awt.Component
-
firePropertyChange
public void firePropertyChange(java.lang.String propertyName, boolean oldValue, boolean newValue)
Overridden for performance reasons. See the Implementation Note for more information.- Overrides:
firePropertyChange
in classjavax.swing.JComponent
-
-