| 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPanel
                          |
                          +--texsoft.java.debug.DebugTreeNodePanel
This JPanel derived class can be used to display a
 
 graph and to save a shot of the graph as a PNG image.
 DebugTreeNode
Important notice: the data structure displayed can't have nodes with back references to parent nodes. Otherwise it will result into an infinite recursion loop!
 This service can be a powerfull debug tool allowing to take/save a graphical
 view of tree data strcutures built with objects implementing the
  interface.
 DebugTreeNode
 The class recognizes a set of control codes merged into the text returned by
 
 to allow some simple
 presentation styles, changing font attribute (underline, bold), font color and
 background color of the node. This can help to highlight with the use of
 color/font attributes some objects in the tree.
 DebugTreeNode.getDebugNodeText()
The capability to save the graph as PNG image allows debugging on those contexts where SWING can't be used or where an interactive interface is not available, as well as for a kind of graphical logging feature.
 The class can show the tree in two different styles: the conventional root at
 the top style and the indentation style (using Knuth's terminology).
 By default the graph style is the conventional one. The style can be set with
 . Following images show same expression
 A || B && C && D parsed into a tree of DebugTreeNode objects and displayed
 by DebugTreeNodePanel with conventional (left) and indentation (right) style:
 setGraphStyle(int)
 
  
 
 
 The text returned by
 
 is drawn into a box for the node as node description. It can contain
 newline DebugTreeNode.getDebugNodeText()\n characters to have the text drawn on different lines.
 The text can also include control codes to change font and color
 attributes. At the beginning of each line of text the attributes are reset to
 normal font, black color. The background color codes apply to the whole node
 and only the first encountered background color code is used, others are ignored.
 The control codes are escaped by the % character. Valid
 control codes are listed in the following table:
 
%% = the % character %u = underline %s = strikeout %r = red text %b = blue text %g = green text %d = dark grey text %w = white text %m = magenta text %y = light yellow background %Y = yellow background %c = light cyan background %e = light green background %k = red background %l = blue background %0 = reset to normal font / blackUnknown control character are interpreted as the character itself.
Following image shows an example of what can be achieved using control codes:
 
DebugTreeNode, 
Serialized Form| Field Summary | |
static int | 
EXPLORER
Constant for tree drawing style indentation.  | 
static int | 
TREE
Constant for tree drawing style conventional root at the top.  | 
| 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 | |
DebugTreeNodePanel()
Creates a new DebugTreeNodePanel object.  | 
|
DebugTreeNodePanel(DebugTreeNode root)
Creates a new DebugTreeNodePanel object.  | 
|
| Method Summary | |
 void | 
drawIntoFile(java.lang.String name)
Saves the tree as a PNG image whose pathname is passed as argument.  | 
 int | 
getGraphStyle()
Return the current tree graph style.  | 
protected  void | 
paintComponent(java.awt.Graphics g)
Paint the component contents.  | 
 void | 
setGraphStyle(int graphStyle)
Set the current tree graph style.  | 
 void | 
setRoot(DebugTreeNode root)
Sets the root node of the tree to be draw.  | 
| Methods inherited from class javax.swing.JPanel | 
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI | 
| Methods inherited from class javax.swing.JComponent | 
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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 | 
public static final int TREE
public static final int EXPLORER
| Constructor Detail | 
public DebugTreeNodePanel()
public DebugTreeNodePanel(DebugTreeNode root)
root - the tree to be displayed into the panel.| Method Detail | 
public void setRoot(DebugTreeNode root)
root - the tree to be displayed into the panel.
public void drawIntoFile(java.lang.String name)
                  throws java.io.IOException
name - pathname of the PNG image file.
IOException - an I/O exception can occur while writing the image file.protected void paintComponent(java.awt.Graphics g)
paintComponent in class javax.swing.JComponentg - the Graphics to draw onto.public void setGraphStyle(int graphStyle)
graphStyle - new tree graph style, can be TREE or
 EXPLORER.public int getGraphStyle()
  | 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||