fri.gui.swing.polytreetable
Class PolyTreeTable

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JTable
                          |
                          +--fri.gui.swing.polytreetable.PolyTreeTable
All Implemented Interfaces:
javax.accessibility.Accessible, javax.swing.event.CellEditorListener, java.util.EventListener, java.awt.image.ImageObserver, javax.swing.event.ListSelectionListener, java.awt.MenuContainer, javax.swing.Scrollable, java.io.Serializable, javax.swing.event.TableColumnModelListener, javax.swing.event.TableModelListener

public class PolyTreeTable
extends javax.swing.JTable

A JTable that can visualize expanding/collapsing polyhierarchies. An implementation of PolyTreeTableModel or PolyTreeTableUserObject provides the data model.

The PolyTreeTable renders children like a Tree (or TreeTable), but parents above the root node in reverse order and reverse orientation. That means parents expand upwards, children downwards. The root node has the role of a focus node, as one can change the root by a default action (double click, enter key) on any other node. Then the view is changed to show children and parents of this new focus node, keeping as much as possible expanded pathes.

The advantage of this view is the ability to show multiple parents, which is of importance when rendering polyhierarchies or hierarchies with cycles. Nevertheless all nodes except the focus node do show either children or parents, not both. So if you want to see the parents and children of a node, you got to make it the focus node by a double click.

Mind: This view can not show more than one "focus node", i.e. current root. And it can not set the root invisible, as parents would not be visible then.

Use setModelFromUserObject() or setPolyTreeTableModel() to set a model to treetable. Mind that getModel() does NOT return this passed model, but an adapter. Use getPolyTreeTableModel() for that purpose.

The implementation of the model can be built on interface PolyTreeTableUserObject, which is the most elegant access to PolyTreeTable. A DefaultTreeTableModel with a DefaultCachedTreeNode will be created when PolyTreeTable is constructed with such an userObject. Use PolyTreeTableUserObject.isColumnEditable() to set tree or other columns editable.

Version:
1.0
Author:
Ritzberger Fritz, March 2001
See Also:
fri.gui.swing.polytreetable.PolyTreeTableSelection, PolyTreeNode, PolyTreeTableModel, PolyTreeExpansionListener, fri.gui.swing.polytreetable.FileTreeTable, Serialized Form

Field Summary
protected  PolyTreeTableCellEditor editor
          The current editor for the tree column.
static boolean PARENTS_REVERSE_DEFAULT
          A settable default for constructor: show parent nodes on the right side of the view.
protected  PolyTreeTableCellRenderer renderer
          The current renderer for the tree column.
protected  PolyTreeView tree
          The current tree view proxy.
 
Fields inherited from class javax.swing.JTable
AUTO_RESIZE_ALL_COLUMNS, AUTO_RESIZE_LAST_COLUMN, AUTO_RESIZE_NEXT_COLUMN, AUTO_RESIZE_OFF, AUTO_RESIZE_SUBSEQUENT_COLUMNS, autoCreateColumnsFromModel, autoResizeMode, cellEditor, cellSelectionEnabled, columnModel, dataModel, defaultEditorsByColumnClass, defaultRenderersByColumnClass, editingColumn, editingRow, editorComp, gridColor, preferredViewportSize, rowHeight, rowMargin, rowSelectionAllowed, selectionBackground, selectionForeground, selectionModel, showHorizontalLines, showVerticalLines, tableHeader
 
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
PolyTreeTable(PolyTreeNode startNode)
          Construction with a start node, a (mutable) DefaultTreeTableModel wrapper will be created.
PolyTreeTable(PolyTreeNode startNode, boolean parentsReverse)
          Construction with a start node, a (mutable) DefaultTreeTableModel wrapper will be created.
PolyTreeTable(PolyTreeTableModel treeTableModel)
          Construction with an explicit model.
PolyTreeTable(PolyTreeTableModel treeTableModel, boolean parentsReverse)
          Construction with an explicit model.
PolyTreeTable(PolyTreeTableUserObject startUserObject)
          Construction with a start userObject.
PolyTreeTable(PolyTreeTableUserObject startUserObject, boolean parentsReverse)
          Construction with a start userObject.
 
Method Summary
 void addPolyTreeExpansionListener(PolyTreeExpansionListener lsnr)
          Add a tree expansion listener, called after expansion took place.
 void addPolyTreeWillExpandListener(PolyTreeWillExpandListener lsnr)
          Add a tree expansion listener, called before expansion takes place.
 void addSelectedPath(java.util.Vector path, boolean parent)
          Add a selection by a path, retrieved by getPathForRow().
 void clearSelection()
          Overridden to avoid firing valueChanged() with a wrong lead selection when root changes.
protected  PolyTreeTableModel createDefaultModel(PolyTreeNode startNode)
          Override this to create another PolyTreeTableModel than DefaultPolyTreeTableModel.
protected  PolyTreeTableCellEditor createPolyTreeTableCellEditor()
           
protected  PolyTreeTableCellRenderer createPolyTreeTableCellRenderer()
           
protected  PolyTreeView createPolyTreeView(PolyTreeTableModel treeTableModel)
          Returns a new PolyTreeView with treeTableModel.
protected  javax.swing.ListSelectionModel createSelectionModel()
          Returns a newly created RestoringTableSelectionModel.
 int getFocusNodeRow()
          Returns the row of the current focus node, i.e. lead term.
 java.lang.Object getFocusUserObject()
          Returns the userObject of the current focus node, i.e. lead term.
 PolyTreeNode getNodeForRow(int row)
          Convenience method: Returns the tree node in passed table row.
 java.util.Vector getOpenChildPathes()
          Returns all currently open child pathes from tree as a list of lists.
 java.util.Vector getOpenParentPathes()
          Returns all currently open parent pathes from tree as a list of lists.
 java.util.Vector getPathForRow(int row)
          Returns a list that holds Strings describing the path for the given row.
 PolyTreeTableModel getPolyTreeTableModel()
          Return the PolyTreeTableModel that was set by constructor or by setPolyTreeTableModel() call
 int[] getRowsForNode(PolyTreeNode node)
          Convenience method: Returns the visible table rows for passed tree node.
 java.util.Vector getSelectedChildPathes()
          Returns all currently selected child pathes from tree as a list of lists.
 java.util.Vector getSelectedParentPathes()
          Returns all currently selected parent pathes from tree as a list of lists.
 java.lang.Object getStartUserObject()
          Returns the model's getStartNode(), that is never changed as long as PolyTreeTable has the same model.
 PolyTreeView getTree()
          Returns the tree proxy that holds view properties of the tree and can notify expand/collapse listeners.
protected  void init(PolyTreeTableModel treeTableModel)
          Sets the model and switches off intercell spacing and horizontal lines.
 boolean isParentsReverse()
          Returns true if parents are shown on the right side (when orientation is left to right).
 void removePolyTreeExpansionListener(PolyTreeExpansionListener lsnr)
          Remove a tree expansion listener.
 void removePolyTreeWillExpandListener(PolyTreeWillExpandListener lsnr)
          Remove a tree expansion listener.
 void repaint()
          Overridden to repaint only when denyRepaint is false.
 void setFocusNode(PolyTreeNode node)
          Sets the passed node as focus node and keeps expansion if possible.
 void setFocusUserObject(PolyTreeTableUserObject leadNode)
          Sets the current "lead term" or "focus node" (this is NOT the top node of the polyhierarchy).
 void setModelFromUserObject(PolyTreeTableUserObject startUserObject)
          Set a model built from userObject to treetable, i.e. to JTable.
 void setPolyTreeTableModel(PolyTreeTableModel polyTreeTableModel)
          Set a model to treetable, i.e. to JTable.
 void setSelectedChildPathes(java.util.Vector pathes)
          Sets selected child pathes from tree as a list of lists.
 void setSelectedParentPath(java.util.Vector path)
          Set a selection to a child path, retrieved by getSelectedChildPathes().
 void setSelectedParentPathes(java.util.Vector pathes)
          Sets selected parent pathes from tree as a list of lists.
 void setSelectedPath(java.util.Vector path, boolean parent)
          Set a selection to a parent path, retrieved by getSelectedParentPathes().
protected  void setTreeCellEditor()
          Sets a new PolyTreeTableCellEditor as the default editor.
protected  void setTreeCellRenderer()
          Sets a new PolyTreeTableCellRenderer as the default renderer.
 void updateUI()
          Overridden to message super and set the BasicPolyTreeTableUI.
 
Methods inherited from class javax.swing.JTable
addColumn, addColumnSelectionInterval, addNotify, addRowSelectionInterval, changeSelection, columnAdded, columnAtPoint, columnMarginChanged, columnMoved, columnRemoved, columnSelectionChanged, configureEnclosingScrollPane, convertColumnIndexToModel, convertColumnIndexToView, createDefaultColumnModel, createDefaultColumnsFromModel, createDefaultDataModel, createDefaultEditors, createDefaultRenderers, createDefaultSelectionModel, createDefaultTableHeader, createScrollPaneForTable, doLayout, editCellAt, editCellAt, editingCanceled, editingStopped, getAccessibleContext, getAutoCreateColumnsFromModel, getAutoResizeMode, getCellEditor, getCellEditor, getCellRect, getCellRenderer, getCellSelectionEnabled, getColumn, getColumnClass, getColumnCount, getColumnModel, getColumnName, getColumnSelectionAllowed, getDefaultEditor, getDefaultRenderer, getDragEnabled, getEditingColumn, getEditingRow, getEditorComponent, getGridColor, getIntercellSpacing, getModel, getPreferredScrollableViewportSize, getRowCount, getRowHeight, getRowHeight, getRowMargin, getRowSelectionAllowed, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedColumn, getSelectedColumnCount, getSelectedColumns, getSelectedRow, getSelectedRowCount, getSelectedRows, getSelectionBackground, getSelectionForeground, getSelectionModel, getShowHorizontalLines, getShowVerticalLines, getSurrendersFocusOnKeystroke, getTableHeader, getToolTipText, getUI, getUIClassID, getValueAt, initializeLocalVars, isCellEditable, isCellSelected, isColumnSelected, isEditing, isRowSelected, moveColumn, paramString, prepareEditor, prepareRenderer, processKeyBinding, removeColumn, removeColumnSelectionInterval, removeEditor, removeNotify, removeRowSelectionInterval, resizeAndRepaint, rowAtPoint, selectAll, setAutoCreateColumnsFromModel, setAutoResizeMode, setCellEditor, setCellSelectionEnabled, setColumnModel, setColumnSelectionAllowed, setColumnSelectionInterval, setDefaultEditor, setDefaultRenderer, setDragEnabled, setEditingColumn, setEditingRow, setGridColor, setIntercellSpacing, setModel, setPreferredScrollableViewportSize, setRowHeight, setRowHeight, setRowMargin, setRowSelectionAllowed, setRowSelectionInterval, setSelectionBackground, setSelectionForeground, setSelectionMode, setSelectionModel, setShowGrid, setShowHorizontalLines, setShowVerticalLines, setSurrendersFocusOnKeystroke, setTableHeader, setUI, setValueAt, sizeColumnsToFit, sizeColumnsToFit, tableChanged, unconfigureEnclosingScrollPane, valueChanged
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, 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, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, 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, 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, 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

PARENTS_REVERSE_DEFAULT

public static boolean PARENTS_REVERSE_DEFAULT
A settable default for constructor: show parent nodes on the right side of the view.


renderer

protected PolyTreeTableCellRenderer renderer
The current renderer for the tree column.


editor

protected PolyTreeTableCellEditor editor
The current editor for the tree column.


tree

protected PolyTreeView tree
The current tree view proxy.

Constructor Detail

PolyTreeTable

public PolyTreeTable(PolyTreeTableUserObject startUserObject)
Construction with a start userObject. All objects of the same class as startUserObject ("equals") are cleared from DefaultCachedTreeNode cache. A (mutable) DefaultTreeTableModel with a DefaultCachedTreeNode will be created.

Parameters:
startUserObject - data for the start node.

PolyTreeTable

public PolyTreeTable(PolyTreeTableUserObject startUserObject,
                     boolean parentsReverse)
Construction with a start userObject. All objects of the same class as startUserObject ("equals") are cleared from DefaultCachedTreeNode cache. A (mutable) DefaultTreeTableModel with a DefaultCachedTreeNode will be created.

Parameters:
startUserObject - data for the start node.
parentsReverse - when true parent nodes are shown on the right side of the view (when orientation left to right).

PolyTreeTable

public PolyTreeTable(PolyTreeNode startNode)
Construction with a start node, a (mutable) DefaultTreeTableModel wrapper will be created.


PolyTreeTable

public PolyTreeTable(PolyTreeNode startNode,
                     boolean parentsReverse)
Construction with a start node, a (mutable) DefaultTreeTableModel wrapper will be created.

Parameters:
parentsReverse - when true parent nodes are shown on the right side of the view (when orientation left to right).

PolyTreeTable

public PolyTreeTable(PolyTreeTableModel treeTableModel)
Construction with an explicit model.

Parameters:
treeTableModel - the model for the tree rows and table columns.

PolyTreeTable

public PolyTreeTable(PolyTreeTableModel treeTableModel,
                     boolean parentsReverse)
Construction with an explicit model.

Parameters:
treeTableModel - the model for the tree rows and table columns.
parentsReverse - when true parent nodes are shown on the right side of the view (when orientation left to right).
Method Detail

createDefaultModel

protected PolyTreeTableModel createDefaultModel(PolyTreeNode startNode)
Override this to create another PolyTreeTableModel than DefaultPolyTreeTableModel.


isParentsReverse

public boolean isParentsReverse()
Returns true if parents are shown on the right side (when orientation is left to right).


init

protected void init(PolyTreeTableModel treeTableModel)
Sets the model and switches off intercell spacing and horizontal lines.


getPolyTreeTableModel

public PolyTreeTableModel getPolyTreeTableModel()
Return the PolyTreeTableModel that was set by constructor or by setPolyTreeTableModel() call


setModelFromUserObject

public void setModelFromUserObject(PolyTreeTableUserObject startUserObject)
Set a model built from userObject to treetable, i.e. to JTable.


setPolyTreeTableModel

public void setPolyTreeTableModel(PolyTreeTableModel polyTreeTableModel)
Set a model to treetable, i.e. to JTable.


createPolyTreeView

protected PolyTreeView createPolyTreeView(PolyTreeTableModel treeTableModel)
Returns a new PolyTreeView with treeTableModel. This is called by setPolyTreeTableModel().


setTreeCellRenderer

protected void setTreeCellRenderer()
Sets a new PolyTreeTableCellRenderer as the default renderer. This is called by setPolyTreeTableModel().


createPolyTreeTableCellRenderer

protected PolyTreeTableCellRenderer createPolyTreeTableCellRenderer()

setTreeCellEditor

protected void setTreeCellEditor()
Sets a new PolyTreeTableCellEditor as the default editor. This is called by setPolyTreeTableModel().


createPolyTreeTableCellEditor

protected PolyTreeTableCellEditor createPolyTreeTableCellEditor()

createSelectionModel

protected javax.swing.ListSelectionModel createSelectionModel()
Returns a newly created RestoringTableSelectionModel. This is called by setPolyTreeTableModel().


clearSelection

public void clearSelection()
Overridden to avoid firing valueChanged() with a wrong lead selection when root changes.

Overrides:
clearSelection in class javax.swing.JTable

getTree

public PolyTreeView getTree()
Returns the tree proxy that holds view properties of the tree and can notify expand/collapse listeners.


getNodeForRow

public PolyTreeNode getNodeForRow(int row)
Convenience method: Returns the tree node in passed table row. Use this in conjunction with getRowCount().


getRowsForNode

public int[] getRowsForNode(PolyTreeNode node)
Convenience method: Returns the visible table rows for passed tree node. A node can be visible more than once in a polyhierarchy with cycles.


getPathForRow

public java.util.Vector getPathForRow(int row)
Returns a list that holds Strings describing the path for the given row. These Strings are made from PolyTreeNode.toString().


getOpenParentPathes

public java.util.Vector getOpenParentPathes()
Returns all currently open parent pathes from tree as a list of lists. Pathes are String lists made from PolyTreeNode.toString().

Returns:
Vector of Vectors of String

getOpenChildPathes

public java.util.Vector getOpenChildPathes()
Returns all currently open child pathes from tree as a list of lists. Pathes are String lists made from PolyTreeNode.toString().

Returns:
Vector of Vectors of String

getSelectedParentPathes

public java.util.Vector getSelectedParentPathes()
Returns all currently selected parent pathes from tree as a list of lists. Pathes are String lists made from PolyTreeNode.toString().

Returns:
Vector of Vectors of String

getSelectedChildPathes

public java.util.Vector getSelectedChildPathes()
Returns all currently selected child pathes from tree as a list of lists. Pathes are String lists made from PolyTreeNode.toString().

Returns:
Vector of Vectors of String

setSelectedParentPathes

public void setSelectedParentPathes(java.util.Vector pathes)
Sets selected parent pathes from tree as a list of lists. Pathes are String lists made from PolyTreeNode.toString().


setSelectedChildPathes

public void setSelectedChildPathes(java.util.Vector pathes)
Sets selected child pathes from tree as a list of lists. Pathes are String lists made from PolyTreeNode.toString().


addSelectedPath

public void addSelectedPath(java.util.Vector path,
                            boolean parent)
Add a selection by a path, retrieved by getPathForRow().

Parameters:
path - Vector of Strings describing the path to select.
parent - true if it is a parent path

setSelectedPath

public void setSelectedPath(java.util.Vector path,
                            boolean parent)
Set a selection to a parent path, retrieved by getSelectedParentPathes().

Parameters:
path - Vector of Strings describing the path to select.
parent - true if it is a parent path

setSelectedParentPath

public void setSelectedParentPath(java.util.Vector path)
Set a selection to a child path, retrieved by getSelectedChildPathes().


getStartUserObject

public java.lang.Object getStartUserObject()
Returns the model's getStartNode(), that is never changed as long as PolyTreeTable has the same model.


setFocusUserObject

public void setFocusUserObject(PolyTreeTableUserObject leadNode)
Sets the current "lead term" or "focus node" (this is NOT the top node of the polyhierarchy).

If the node is currently visible, its first appearance (can appear more than once, when cycles) is set as root row. Else all visible rows will be removed and the new startNode will expand first level of both parents and children. The models "startNode" will not be changed by this method!


setFocusNode

public void setFocusNode(PolyTreeNode node)
Sets the passed node as focus node and keeps expansion if possible. The passed node must be retrieved from a cache or from getNodeForRow().


getFocusNodeRow

public int getFocusNodeRow()
Returns the row of the current focus node, i.e. lead term.


getFocusUserObject

public java.lang.Object getFocusUserObject()
Returns the userObject of the current focus node, i.e. lead term.


addPolyTreeExpansionListener

public void addPolyTreeExpansionListener(PolyTreeExpansionListener lsnr)
Add a tree expansion listener, called after expansion took place.


removePolyTreeExpansionListener

public void removePolyTreeExpansionListener(PolyTreeExpansionListener lsnr)
Remove a tree expansion listener.


addPolyTreeWillExpandListener

public void addPolyTreeWillExpandListener(PolyTreeWillExpandListener lsnr)
Add a tree expansion listener, called before expansion takes place.


removePolyTreeWillExpandListener

public void removePolyTreeWillExpandListener(PolyTreeWillExpandListener lsnr)
Remove a tree expansion listener.


updateUI

public void updateUI()
Overridden to message super and set the BasicPolyTreeTableUI.

Overrides:
updateUI in class javax.swing.JTable

repaint

public void repaint()
Overridden to repaint only when denyRepaint is false.

Overrides:
repaint in class java.awt.Component