net.clackrouter.router.graph
Class WireRenderer

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by net.clackrouter.router.graph.WireRenderer
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class WireRenderer
extends javax.swing.JComponent
implements java.io.Serializable

This renderer draws WireViews. Based heavily on JGraph EdgeRenderer code, only minor changes exist.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  int beginDeco
          Painting attributes of the current edgeview
protected  boolean beginFill
          Boolean attributes of the current edgeview.
protected  int beginSize
          Painting attributes of the current edgeview
protected  Bezier bezier
           
protected  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 edgeview
protected  boolean endFill
          Boolean attributes of the current edgeview.
protected  int endSize
          Painting attributes of the current edgeview
 java.awt.Font extraLabelFont
          Override this if you want the extra labels to appear in a special fontJ
protected  boolean focus
          Boolean attributes of the current edgeview.
protected  java.awt.Color fontColor
          Color attributes of the current edgeview.
protected  java.awt.Graphics fontGraphics
          Static Graphics used for Font Metrics
protected  JGraph graph
          Cache the current graph for drawing
protected  boolean labelBorder
          Boolean attributes of the current edgeview.
protected  boolean labelTransformEnabled
          Boolean attributes of the current edgeview.
protected  float[] lineDash
          Contains the current dash pattern.
protected  int lineStyle
          Painting attributes of the current edgeview
protected  float lineWidth
          Width of the current edge view
protected  java.awt.FontMetrics metrics
          Reference to the font metrics of the above
protected  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 labels
protected  Spline2D spline
           
protected  WireView view
          Cache the current edgeview for drawing
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
WireRenderer(WireView v)
          Constructs a renderer that may be used to render edges.
 
Method Summary
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.
 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.
protected  void firePropertyChange(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)
          Overridden for performance reasons.
 void firePropertyChange(java.lang.String propertyName, short oldValue, short newValue)
          Overridden for performance reasons.
 java.awt.geom.Rectangle2D getBounds(CellView value)
          Returns the bounds of the edge shape.
 java.awt.Color getGradientColor()
           
 java.awt.geom.Rectangle2D getPaintBounds(WireView view)
          Returns the bounds of the edge shape without label
 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.
protected  void installAttributes(CellView view)
          Installs the attributes of specified view in this renderer instance.
 boolean intersects(java.awt.Graphics g, CellView value, java.awt.Rectangle r)
          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 paintSelectionBorder(java.awt.Graphics g)
           
 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, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, 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, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, 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, transferFocusBackward, 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, 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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

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


fontGraphics

protected transient java.awt.Graphics fontGraphics
Static Graphics used for Font Metrics


metrics

protected transient java.awt.FontMetrics metrics
Reference to the font metrics of the above


graph

protected transient JGraph graph
Cache the current graph for drawing


view

protected transient WireView 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.


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.


bezier

protected Bezier bezier

spline

protected Spline2D spline
Constructor Detail

WireRenderer

public WireRenderer(WireView v)
Constructs a renderer that may be used to render edges.

Method Detail

paint

public void paint(java.awt.Graphics g)
Paint the renderer. dw: chances are this is the only function in this file that you care about

Overrides:
paint in class javax.swing.JComponent

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 with convertValueToString.

Parameters:
graph - the graph that that defines the rendering context.
view - the object 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(java.awt.Graphics g,
                          CellView value,
                          java.awt.Rectangle r)
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.


installAttributes

protected void installAttributes(CellView view)
Installs the attributes of specified view in this renderer instance. This means, retrieve every published key from the view's hashtable and set global variables or superclass properties accordingly.


isFillable

protected boolean isFillable(int decoration)

getPaintBounds

public java.awt.geom.Rectangle2D getPaintBounds(WireView view)
Returns the bounds of the edge shape without label


paintSelectionBorder

protected void paintSelectionBorder(java.awt.Graphics g)

translateGraphics

protected void translateGraphics(java.awt.Graphics g)

createShape

public 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. dw: bad news???


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 class java.awt.Container

revalidate

public void revalidate()
Overridden for performance reasons. See the Implementation Note for more information.

Overrides:
revalidate in class javax.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 class javax.swing.JComponent

repaint

public void repaint(java.awt.Rectangle r)
Overridden for performance reasons. See the Implementation Note for more information.

Overrides:
repaint in class javax.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 class java.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 class java.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 class javax.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 class java.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 class javax.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 class java.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 class java.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 class java.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 class javax.swing.JComponent