samples.preview_new_graphdraw.impl
Class GraphLayoutPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by samples.preview_new_graphdraw.impl.GraphLayoutPanel
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible

public class GraphLayoutPanel
extends JPanel

Author:
danyelf
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
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.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  EmittedLayout cleanOriginal
           
protected  samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy clickPolicy
           
static samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy EDGE_AND_VERTEX_BOTH
          Both an edge event or a vertex event is fired from this panel.
static samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy EDGE_AND_VERTEX_POLICY
          Either an edge event or a vertex event is fired from this panel.
static samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy EDGE_ONLY_POLICY
          Only edge events are fired from this panel.
protected  EdgeRenderer mEdgeRenderer
           
protected  EmittedLayout mLayout
           
protected  VertexRenderer mVertexRenderer
           
static samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy NO_EVENT_POLICY
          No graph events are fired from this panel
protected  TransformerPipeline pipeline
           
static samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy VERTEX_ONLY_POLICY
          Only vertex events are fired from this panel.
 
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
GraphLayoutPanel(Graph g, Dimension d, VertexRenderer vr, EdgeRenderer er)
          Creates a GraphLayout panel.
 
Method Summary
 void addClickListener(ClickListener cl)
           
protected  MouseListener getDefaultMouseListener()
          By default, returns a JunGraphPanelMouseListener.
 EmittedLayout getGraphLayout()
          (Called only by vertexdrag.)
 TransformerPipeline getPipeline()
           
protected  void paintComponent(Graphics graphics)
          This method paints the component.
 void resizeLayouts()
           
 void setClickPolicy(samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy policy)
           
 void setLayoutDisplay(EmittedLayout lr2)
          We maintain, in memory, two layouts.
 void updateGraphToMatch(Graph g)
           
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, 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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, 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
 
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, validate, 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, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, 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

NO_EVENT_POLICY

public static final samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy NO_EVENT_POLICY
No graph events are fired from this panel


VERTEX_ONLY_POLICY

public static final samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy VERTEX_ONLY_POLICY
Only vertex events are fired from this panel. If a click isn't near a vertex, no events are fired.


EDGE_ONLY_POLICY

public static final samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy EDGE_ONLY_POLICY
Only edge events are fired from this panel. If a click isn't near a edge, no events are fired.


EDGE_AND_VERTEX_POLICY

public static final samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy EDGE_AND_VERTEX_POLICY
Either an edge event or a vertex event is fired from this panel. If the click is close to a vertex, a vertex event is fired; otherwise, if the click is close to an edge, the edge event.


EDGE_AND_VERTEX_BOTH

public static final samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy EDGE_AND_VERTEX_BOTH
Both an edge event or a vertex event is fired from this panel. If the click is close to a vertex, a vertex event is fired; if the click is close to an edge, the edge event. (If both, then both may be fired: it is up to the developer to choose a mechansim. For example, some applications will select only vertices if the user is holding down the control button.)


clickPolicy

protected samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy clickPolicy

mVertexRenderer

protected VertexRenderer mVertexRenderer

mEdgeRenderer

protected EdgeRenderer mEdgeRenderer

mLayout

protected volatile EmittedLayout mLayout

pipeline

protected TransformerPipeline pipeline

cleanOriginal

protected EmittedLayout cleanOriginal
Constructor Detail

GraphLayoutPanel

public GraphLayoutPanel(Graph g,
                        Dimension d,
                        VertexRenderer vr,
                        EdgeRenderer er)
Creates a GraphLayout panel. It will set its preferred size to d, its local graph to g

Parameters:
g -
d -
vr -
er -
Method Detail

getDefaultMouseListener

protected MouseListener getDefaultMouseListener()
By default, returns a JunGraphPanelMouseListener. Override this to install your own MouseListener instead of the one provided. (You can always add another listener with affecting this one.)


paintComponent

protected void paintComponent(Graphics graphics)
This method paints the component. It does so by calling renderEdge and renderVertex on every VERTEX and every EDGE in the CURRENT GRAPH. Note that this will crash if the current graph has mutated.

Overrides:
paintComponent in class JComponent
See Also:
JComponent.paintComponent(java.awt.Graphics)

addClickListener

public void addClickListener(ClickListener cl)

setClickPolicy

public void setClickPolicy(samples.preview_new_graphdraw.impl.GraphLayoutPanelMouseListener.ClickPolicy policy)

getGraphLayout

public EmittedLayout getGraphLayout()
(Called only by vertexdrag.)


setLayoutDisplay

public void setLayoutDisplay(EmittedLayout lr2)
We maintain, in memory, two layouts. One of them is the one currently being drawn. It's been distorted, warped, and bumped through the pipeline. The other is a clean original.

Parameters:
lr2 -

getPipeline

public TransformerPipeline getPipeline()

resizeLayouts

public void resizeLayouts()

updateGraphToMatch

public void updateGraphToMatch(Graph g)
Parameters:
g -