org.jgraph.graph
Class EdgeRenderer

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by org.jgraph.graph.EdgeRenderer
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, CellViewRenderer

public class EdgeRenderer
extends JComponent
implements CellViewRenderer, Serializable

This renderer displays entries that implement the CellView interface and supports the following attributes:

  • GraphConstants.POINTS GraphConstants.FONT GraphConstants.OPAQUE GraphConstants.BORDER GraphConstants.BORDERCOLOR GraphConstants.LINECOLOR GraphConstants.LINEWIDTH GraphConstants.FOREGROUND GraphConstants.BACKGROUND GraphConstants.DASHPATTERN GraphConstants.LINESTYLE GraphConstants.START GraphConstants.END GraphConstants.STARTSIZE GraphConstants.ENDSIZE
  • Version:
    1.0 1/1/02
    Author:
    Gaudenz Alder
    See Also:
    Serialized Form

    Nested Class Summary
     
    Nested classes/interfaces inherited from class javax.swing.JComponent
    JComponent.AccessibleJComponent
     
    Nested classes/interfaces inherited from class java.awt.Container
    Container.AccessibleAWTContainer
     
    Nested classes/interfaces inherited from class java.awt.Component
    Component.AccessibleAWTComponent, Component.BltBufferStrategy, 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  Color borderColor
              Color attributes of the current edgeview.
    protected  Color defaultBackground
              Color attributes of the current edgeview.
    protected  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
    protected  boolean focus
              Boolean attributes of the current edgeview.
    protected  Color fontColor
              Color attributes of the current edgeview.
    protected  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  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  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.
    protected  EdgeView 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
    EdgeRenderer()
              Constructs a renderer that may be used to render edges.
     
    Method Summary
    protected  Shape createLineEnd(int size, int style, Point src, Point dst)
              Paint the current view's direction.
    protected  Shape createShape()
              Returns the shape that represents the current edge in the context of the current graph.
     void firePropertyChange(String propertyName, boolean oldValue, boolean newValue)
              Overridden for performance reasons.
     void firePropertyChange(String propertyName, byte oldValue, byte newValue)
              Overridden for performance reasons.
     void firePropertyChange(String propertyName, char oldValue, char newValue)
              Overridden for performance reasons.
     void firePropertyChange(String propertyName, double oldValue, double newValue)
              Overridden for performance reasons.
     void firePropertyChange(String propertyName, float oldValue, float newValue)
              Overridden for performance reasons.
     void firePropertyChange(String propertyName, int oldValue, int newValue)
              Overridden for performance reasons.
     void firePropertyChange(String propertyName, long oldValue, long newValue)
              Overridden for performance reasons.
    protected  void firePropertyChange(String propertyName, Object oldValue, Object newValue)
              Overridden for performance reasons.
     void firePropertyChange(String propertyName, short oldValue, short newValue)
              Overridden for performance reasons.
     Rectangle getBounds(CellView value)
              Returns the bounds of the edge shape.
     Rectangle getLabelBounds(EdgeView view)
              Returns the label bounds of the specified view in the given graph.
     Point getLabelPosition(EdgeView view)
              Returns the label position of the specified view in the given graph.
     Dimension getLabelSize(EdgeView view)
              Returns the label size of the specified view in the given graph.
     Rectangle getPaintBounds(EdgeView view)
              Returns the bounds of the edge shape without label
     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(Graphics g, CellView value, Rectangle r)
              Returns true if the edge shape intersects the given rectangle.
    protected  boolean isFillable(int decoration)
               
     void paint(Graphics g)
              Paint the renderer.
    protected  void paintLabel(Graphics g, String label)
              Paint the specified label for the current edgeview.
     void repaint(long tm, int x, int y, int width, int height)
              Overridden for performance reasons.
     void repaint(Rectangle r)
              Overridden for performance reasons.
     void revalidate()
              Overridden for performance reasons.
    protected  void translateGraphics(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, 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, 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

    fontGraphics

    protected transient Graphics fontGraphics
    Static Graphics used for Font Metrics


    metrics

    protected transient FontMetrics metrics
    Reference to the font metrics of the above


    graph

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


    borderColor

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

    Constructor Detail

    EdgeRenderer

    public EdgeRenderer()
    Constructs a renderer that may be used to render edges.

    Method Detail

    getRendererComponent

    public 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.

    Specified by:
    getRendererComponent in interface CellViewRenderer
    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(Graphics g,
                              CellView value,
                              Rectangle r)
    Returns true if the edge shape intersects the given rectangle.


    getBounds

    public Rectangle getBounds(CellView value)
    Returns the bounds of the edge shape.


    getLabelBounds

    public Rectangle getLabelBounds(EdgeView view)
    Returns the label bounds of the specified view in the given graph.


    getLabelPosition

    public Point getLabelPosition(EdgeView view)
    Returns the label position of the specified view in the given graph.


    getLabelSize

    public Dimension getLabelSize(EdgeView view)
    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 - to retrieve the attribute values from.

    isFillable

    protected boolean isFillable(int decoration)

    getPaintBounds

    public Rectangle getPaintBounds(EdgeView view)
    Returns the bounds of the edge shape without label


    paint

    public void paint(Graphics g)
    Paint the renderer.

    Overrides:
    paint in class JComponent

    translateGraphics

    protected void translateGraphics(Graphics g)

    paintLabel

    protected void paintLabel(Graphics g,
                              String label)
    Paint the specified label for the current edgeview.


    createShape

    protected 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 Shape createLineEnd(int size,
                                  int style,
                                  Point src,
                                  Point 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.


    validate

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

    Overrides:
    validate in class Container

    revalidate

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

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

    repaint

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

    Overrides:
    repaint in class JComponent

    firePropertyChange

    protected void firePropertyChange(String propertyName,
                                      Object oldValue,
                                      Object newValue)
    Overridden for performance reasons. See the Implementation Note for more information.

    Overrides:
    firePropertyChange in class Component

    firePropertyChange

    public void firePropertyChange(String propertyName,
                                   byte oldValue,
                                   byte newValue)
    Overridden for performance reasons. See the Implementation Note for more information.

    Overrides:
    firePropertyChange in class Component

    firePropertyChange

    public void firePropertyChange(String propertyName,
                                   char oldValue,
                                   char newValue)
    Overridden for performance reasons. See the Implementation Note for more information.

    Overrides:
    firePropertyChange in class JComponent

    firePropertyChange

    public void firePropertyChange(String propertyName,
                                   short oldValue,
                                   short newValue)
    Overridden for performance reasons. See the Implementation Note for more information.

    Overrides:
    firePropertyChange in class Component

    firePropertyChange

    public void firePropertyChange(String propertyName,
                                   int oldValue,
                                   int newValue)
    Overridden for performance reasons. See the Implementation Note for more information.

    Overrides:
    firePropertyChange in class JComponent

    firePropertyChange

    public void firePropertyChange(String propertyName,
                                   long oldValue,
                                   long newValue)
    Overridden for performance reasons. See the Implementation Note for more information.

    Overrides:
    firePropertyChange in class Component

    firePropertyChange

    public void firePropertyChange(String propertyName,
                                   float oldValue,
                                   float newValue)
    Overridden for performance reasons. See the Implementation Note for more information.

    Overrides:
    firePropertyChange in class Component

    firePropertyChange

    public void firePropertyChange(String propertyName,
                                   double oldValue,
                                   double newValue)
    Overridden for performance reasons. See the Implementation Note for more information.

    Overrides:
    firePropertyChange in class Component

    firePropertyChange

    public void firePropertyChange(String propertyName,
                                   boolean oldValue,
                                   boolean newValue)
    Overridden for performance reasons. See the Implementation Note for more information.

    Overrides:
    firePropertyChange in class JComponent