com.touchgraph.graphlayout
Class TGPanel

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 com.touchgraph.graphlayout.TGPanel
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible
Direct Known Subclasses:
GraphPanel

public class TGPanel
extends JPanel

TGPanel contains code for drawing the graph, and storing which nodes are selected, and which ones the mouse is over. It houses methods to activate TGLayout, which performs dynamic layout. Whenever the graph is moved, or repainted, TGPanel fires listener methods on associated objects.

Parts of this code build upon Sun's Graph Layout example:
http://java.sun.com/applets/jdk/1.1/demo/GraphLayout/Graph.java

Version:
1.21 $Id: TGPanel.java,v 3.6 2005/04/03 01:55:16 altheim Exp $
Author:
Alexander Shapiro, Murray Altheim (see code for details)
See Also:
Serialized Form

Nested Class Summary
protected  class TGPanel.AdjustOriginLens
          A lens that adjusts the location of the provided point to a midpoint within the panel.
 class TGPanel.BasicMouseListener
           
 class TGPanel.BasicMouseMotionListener
           
 class TGPanel.SwitchSelectUI
           
 
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.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
static Color BACK_COLOR
           
protected  TGPanel.BasicMouseMotionListener basicMML
           
protected  Point2D.Double bottomRightDraw
           
protected  GraphEltSet completeEltSet
           
protected  Node dragNode
           
static boolean fixedIsPinned
          Flag indicating when true that fixed nodes are "pinned" and not removed on locality shifts.
protected  Vector graphListeners
           
protected static Cursor handCursor
           
protected  LocalityUtils localityUtils
           
protected  boolean maintainMouseOver
           
protected  Edge mouseOverE
           
protected  Node mouseOverN
           
protected  Point mousePos
           
protected static Cursor moveCursor
           
protected  Graphics offgraphics
           
protected  Image offscreen
           
protected  Dimension offscreensize
           
protected  Vector paintListeners
           
protected  Node select
           
static String TG_THREADGROUP_ID
          The ThreadGroup identifier for all TouchGraph Threads.
 TGLayout tgLayout
           
protected  ThreadGroup threadgroup
           
protected  Point2D.Double topLeftDraw
           
protected  VisibleLocality visibleLocality
           
 
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
TGPanel()
          Default constructor.
 
Method Summary
protected  void activateMMListener(boolean activate)
          Activates or deactivate the MouseMotionListener.
 void addEdge(Edge e)
           
 Edge addEdge(Node f, Node t, int tens)
           
 void addGraphListener(GraphListener gl)
           
 Node addNode()
          Adds a Node, with its ID and label being the current node count plus 1.
 void addNode(Node node)
          Add the Node node to the visibleLocality, checking for ID uniqueness.
 void addNode(Node node, Point2D.Double p)
          Add the Node node to the visibleLocality, checking for ID uniqueness.
 Node addNode(String label)
          Adds a Node, provided its label.
 Node addNode(String id, String label)
          Adds a Node, provided its ID and label.
 void addPaintListener(TGPaintListener pl)
           
 void clearAll()
           
 void clearSelect()
           
 void collapseNode(Node node)
           
 Point2D.Double convertDrawToReal(double x, double y)
          Returns the conversion between real position and visual position for the point described by x,y.
 Point2D.Double convertDrawToReal(Point p)
          Returns the conversion between real position and visual position for the Point p.
 Point2D.Double convertDrawToReal(Point2D.Double p)
          Returns the conversion between real position and visual position for the Point2D.Double p.
 Point2D.Double convertRealToDraw(double x, double y)
          Returns the conversion between visual position and real position for the point described by x,y.
 Point2D.Double convertRealToDraw(Point p)
          Returns the conversion between visual position and real position for the Point p.
 Point2D.Double convertRealToDraw(Point2D.Double p)
          Returns the conversion between visual position and real position for the Point2D.Double p.
 void deleteEdge(Edge edge)
           
 void deleteEdge(Node from, Node to)
           
 boolean deleteNode(Node node)
          Delete the Node node from the visibleLocality.
 boolean deleteNodeById(String id)
          Remove the Node object matching the ID id, returning true if the deletion occurred, false if a Node matching the ID does not exist (or if the ID value was null).
 int edgeNum()
          Deprecated. this method has been replaced by the visibleEdgeCount() method.
 void expandNode(Node node)
           
 void fastFinishAnimation()
          Quickly wraps up the add node animation.
 Edge findEdge(Node f, Node t)
           
protected  void findMouseOver()
           
 Node findNode(String id)
          Return the Node whose ID matches the String id, null if no match is found.
 Node findNodeLabelContaining(String substring)
          Return the first Nodes whose label contains the String substring, null if no match is found.
 Collection findNodesByLabel(String label)
          Return a Collection of all Nodes whose label matches the String label, null if no match is found.
 Collection findNodesByLabel(String label, boolean ignoreCase)
          Return a Collection of all Nodes whose label matches the String label, null if no match is found.
protected  void fireMovedEvent()
           
 void fireResetEvent()
           
 TGPanel.AdjustOriginLens getAdjustOriginLens()
           
 Iterator getAllEdges()
          Returns an Iterator over all edges in the complete graph.
 Iterator getAllNodes()
          Returns an Iterator over all nodes in the complete graph.
 GraphEltSet getAllNodesAsSet()
          Returns all nodes in the complete graph as a GraphEltSet (used by various utilities).
 Point2D.Double getBottomRightDraw()
           
 Point2D.Double getCenter()
           
 Node getDragNode()
           
 Point2D.Double getDrawCenter()
           
 int getEdgeCount()
          Returns the current edge count in the complete graph.
 ImmutableGraphEltSet getGES()
          Return the current visible locality.
 Edge getMouseOverE()
           
 Node getMouseOverN()
           
 Point getMousePos()
           
 int getNodeCount()
          Returns the current node count.
 Image getOffscreenImage()
          Returns the offscreen Image serving as the fundamental drawing area.
 Dimension getOffscreenImageSize()
          Returns the size (as a Dimension) of the offscreen Image serving as the fundamental drawing area.
 Node getSelect()
           
 TGPanel.SwitchSelectUI getSwitchSelectUI()
           
 ThreadGroup getThreadGroup()
          Returns the ThreadGroup used with TouchGraph threads.
 Point2D.Double getTopLeftDraw()
           
 void handleMouseEvent(MouseEvent e)
          Processes mouse entered or exited events from the BasicMouseListener.
 void handleMouseMotionEvent(MouseEvent e)
          Processes motion dragged or moved events from the BasicMouseMotionListener, mouseDragged() if mouseDragged is true, mouseMoved() if false.
 void hideEdge(Edge edge)
           
 void hideNode(Node node)
           
 boolean isShiftingLocality()
          Returns true if the locality shifting thread is active.
static void main(String[] args)
           
 void multiSelect(Point2D.Double from, Point2D.Double to)
           
 Color myBrighter(Color c)
           
 int nodeNum()
          Deprecated. this method has been replaced by the visibleNodeCount() method.
 void paint(Graphics g)
           
 void paintBackground(Graphics g, Dimension d)
           
 void paintForeground(Graphics g, Dimension d)
           
 void processGraphMove()
           
protected  void redraw()
           
 void removeGraphListener(GraphListener gl)
           
 void removePaintListener(TGPaintListener pl)
           
 void repaintAfterMove()
          Called by TGLayout and others to indicate that graph has moved.
 void resetDamper()
          Makes the graph mobile, and slowly slows it down.
 void selectFirstNode()
          A convenience method that selects the first node of a graph, so that hiding works.
 void setBackColor(Color color)
           
 void setDragNode(Node node)
           
 void setGraphEltSet(GraphEltSet ges)
           
 void setLensSet(TGLensSet lensSet)
           
 void setLocale(Node node, int radius)
           
 void setLocale(Node node, int radius, int maxAddEdgeCount, int maxExpandEdgeCount, boolean unidirectional)
           
 void setMaintainMouseOver(boolean maintain)
           
 void setMouseOverE(Edge edge)
           
 void setMouseOverN(Node node)
           
 void setMousePos(Point p)
           
 void setSelect(Node node)
           
 void setTGLayout(TGLayout tgl)
           
 void sleepTGThread(int millis)
          Causes the current thread to sleep for the specified number of milliseconds, if it is a thread in the "TouchGraph" ThreadGroup.
 void startDamper()
          Start and stop the damper.
 void stopDamper()
           
 void stopMotion()
          Gently stops the graph from moving
 void update(Graphics g)
           
 void updateDrawPos(Node node)
          Sets the visual position from the real position.
 void updateDrawPositions()
           
 void updateGraphSize()
           
 void updateLocalityFromVisibility()
           
 void updatePosFromDraw(Node node)
          Sets the real position from the visual position.
 int visibleEdgeCount()
          Return the number of Edges in the Locality.
 int visibleNodeCount()
          Returns the current node count within the VisibleLocality.
 
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, 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, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, 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
 
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,