org.jdesktop.swingx
Class JXTreeTable

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JTable
                  extended by org.jdesktop.swingx.JXTable
                      extended by org.jdesktop.swingx.JXTreeTable
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, EventListener, Accessible, CellEditorListener, ListSelectionListener, TableColumnModelListener, TableModelListener, Scrollable, TableColumnModelExtListener

public class JXTreeTable
extends JXTable

JXTreeTable is a specialized table consisting of a single column in which to display hierarchical data, and any number of other columns in which to display regular data. The interface for the data model used by a JXTreeTable is TreeTableModel. It extends the TreeModel interface to allow access to cell data by column indices within each node of the tree hierarchy.

The most straightforward way create and use a JXTreeTable, is to first create a suitable data model for it, and pass that to a JXTreeTable constructor, as shown below:

  TreeTableModel  treeTableModel = new FileSystemModel(); // any TreeTableModel
  JXTreeTable     treeTable = new JXTreeTable(treeTableModel);
  JScrollPane     scrollpane = new JScrollPane(treeTable);
 
See JTable for an explanation of why putting the treetable inside a scroll pane is necessary.

A single treetable model instance may be shared among more than one JXTreeTable instances. To access the treetable model, always call getTreeTableModel and setTreeTableModel. JXTreeTable wraps the supplied treetable model inside a private adapter class to adapt it to a TableModel. Although the model adapter is accessible through the getModel method, you should avoid accessing and manipulating it in any way. In particular, each model adapter instance is tightly bound to a single table instance, and any attempt to share it with another table (for example, by calling setModel) will throw an IllegalArgumentException!

See Also:
Serialized Form

Nested Class Summary
protected static class JXTreeTable.TreeTableDataAdapter
           
 class JXTreeTable.TreeTableHacker
          Temporary class to have all the hacking at one place.
 class JXTreeTable.TreeTableHackerExt
          Note: currently this class looks a bit funny (only overriding the hit decision method).
 class JXTreeTable.TreeTableHackerExt2
          Patch for #471-swingx: no selection on click in hierarchical column outside of node-text.
protected static class JXTreeTable.TreeTableModelAdapter
           
 
Nested classes/interfaces inherited from class org.jdesktop.swingx.JXTable
JXTable.BooleanEditor, JXTable.GenericEditor, JXTable.NumberEditor, JXTable.TableAdapter
 
Nested classes/interfaces inherited from class javax.swing.JTable
JTable.AccessibleJTable, JTable.PrintMode
 
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 String DRAG_HACK_FLAG_KEY
          Key for clientProperty to decide whether to apply hack around #168-jdnc.
static String DROP_HACK_FLAG_KEY
          Key for clientProperty to decide whether to apply hack around #766-swingx.
 
Fields inherited from class org.jdesktop.swingx.JXTable
compoundHighlighter, dataAdapter, editorRemover, filters, FOCUS_NEXT_COMPONENT, FOCUS_PREVIOUS_COMPONENT, HORIZONTALSCROLL_ACTION_COMMAND, isXTableRowHeightSet, MATCH_HIGHLIGHTER, PACKALL_ACTION_COMMAND, PACKSELECTED_ACTION_COMMAND, resetDefaultTableCellRendererHighlighter, searchable, selectionMapper, UIPREFIX, USE_DTCR_COLORMEMORY_HACK
 
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
JXTreeTable()
          Constructs a JXTreeTable using a DefaultTreeTableModel.
JXTreeTable(TreeTableModel treeModel)
          Constructs a JXTreeTable using the specified TreeTableModel.
 
Method Summary
 void addTreeExpansionListener(TreeExpansionListener tel)
          Adds a listener for TreeExpansion events.
 void addTreeSelectionListener(TreeSelectionListener tsl)
          Adds a listener for TreeSelection events.
 void addTreeWillExpandListener(TreeWillExpandListener tel)
          Adds a listener for TreeWillExpand events.
protected  void adjustTableRowHeight(int treeRowHeight)
          Forwards treeRowHeight to table.
protected  void adjustTreeRowHeight(int tableRowHeight)
          Forwards tableRowHeight to tree.
protected  Component applyRenderer(Component component, ComponentAdapter adapter)
          Performs configuration of the tree's renderer if the adapter's column is the hierarchical column, does nothing otherwise.
 void clearSelection()
          Overridden to ensure that private renderer state is kept in sync with the state of the component.
 void collapseAll()
          Collapses all nodes in the treetable.
 void collapsePath(TreePath path)
          Collapses the node at the specified path in the treetable.
 void collapseRow(int row)
          Collapses the row in the treetable.
protected  SelectionMapper createSelectionMapper()
          Fix for #745-swingx: remove static selectionMaper.
protected  JXTreeTable.TreeTableHacker createTreeTableHacker()
           
 boolean editCellAt(int row, int column, EventObject e)
          Overriden to invoke repaint for the particular location if the column contains the tree.
 void expandAll()
          Expands all nodes in the treetable.
 void expandPath(TreePath path)
          Expands the the node at the specified path in the treetable.
 void expandRow(int row)
          Expands the specified row in the treetable.
 TableCellEditor getCellEditor(int row, int column)
          Returns an appropriate editor for the cell specified by row and column.
 TableCellRenderer getCellRenderer(int row, int column)
          Returns an appropriate renderer for the cell specified by this row and column.
protected  ComponentAdapter getComponentAdapter()
          Returns the adapter that knows how to access the component data model.
 int getEditingRow()
          Overridden to provide a workaround for BasicTableUI anomaly.
 Enumeration<?> getExpandedDescendants(TreePath parent)
          Returns an Enumeration of the descendants of the path parent that are currently expanded.
 boolean getExpandsSelectedPaths()
          Returns the value of the expandsSelectedPaths property.
 int getHierarchicalColumn()
          Returns the index of the hierarchical column.
 TreePath getPathForLocation(int x, int y)
          Returns the TreePath for a given x,y location.
 TreePath getPathForRow(int row)
          Returns the TreePath for a given row.
 int getRowForPath(TreePath path)
          Returns the row for a given TreePath.
 boolean getScrollsOnExpand()
          Returns the value of the scrollsOnExpand property.
 SelectionMapper getSelectionMapper()
          Overridden to return a do-nothing mapper.
 boolean getShowsRootHandles()
          Returns the value of the showsRootHandles property.
 String getStringAt(int row, int column)
          Returns the string representation of the cell value at the given position.
 int getToggleClickCount()
          Returns the number of mouse clicks needed to expand or close a node.
 String getToolTipText(MouseEvent event)
          Overrides JComponent's getToolTipText method in order to allow the renderer's tips to be used if it has text set.
 TreeCellRenderer getTreeCellRenderer()
           
 TreeSelectionModel getTreeSelectionModel()
          Returns the selection model for the tree portion of the this treetable.
protected  JXTreeTable.TreeTableHacker getTreeTableHacker()
           
 TreeTableModel getTreeTableModel()
          Returns the underlying TreeTableModel for this JXTreeTable.
protected  boolean hackAroundDragEnabled(MouseEvent me)
          decides whether we want to apply the hack for #168-jdnc.
 boolean isCollapsed(int row)
          Returns true if the node at the specified display row is collapsed.
 boolean isCollapsed(TreePath path)
          Returns true if the node identified by path is currently collapsed, this will return false if any of the values in path are currently not being displayed.
 boolean isExpanded(int row)
          Returns true if the node at the specified display row is currently expanded.
 boolean isExpanded(TreePath path)
          Returns true if the node identified by path is currently expanded.
 boolean isHierarchical(int column)
          Determines if the specified column is defined as the hierarchical column.
 boolean isLargeModel()
          Returns true if the tree is configured for a large model.
 boolean isOverwriteRendererIcons()
          Returns a boolean indicating whether the per-tree icons should be copied to the renderer on setTreeCellRenderer.
 boolean isRootVisible()
          Returns true if the root node of the tree is displayed.
 boolean isVisible(TreePath path)
          Returns true if the value identified by path is currently viewable, which means it is either the root or all of its parents are expanded.
 Component prepareRenderer(TableCellRenderer renderer, int row, int column)
          Returns the decorated Component used as a stamp to render the specified cell.
protected  void processMouseEvent(MouseEvent e)
          Overridden to enable hit handle detection a mouseEvent which triggered a expand/collapse.
 void removeTreeExpansionListener(TreeExpansionListener tel)
          Removes a listener for TreeExpansion events.
 void removeTreeSelectionListener(TreeSelectionListener tsl)
          Removes a listener for TreeSelection events.
 void removeTreeWillExpandListener(TreeWillExpandListener tel)
          Removes a listener for TreeWillExpand events.
 void scrollPathToVisible(TreePath path)
          Makes sure all the path components in path are expanded (except for the last path component) and scrolls so that the node identified by the path is displayed.
 void setClosedIcon(Icon icon)
          Sets the specified icon as the icon to use for rendering closed container nodes.
 void setCollapsedIcon(Icon icon)
          Sets the specified icon as the icon to use for rendering collapsed nodes.
 void setEnabled(boolean enabled)
          Sets whether or not this component is enabled.
 void setExpandedIcon(Icon icon)
          Sets the specified icon as the icon to use for rendering expanded nodes.
 void setExpandsSelectedPaths(boolean expand)
          Sets the value of the expandsSelectedPaths property for the tree part.
 void setFilters(FilterPipeline pipeline)
          overridden to do nothing.
 void setLargeModel(boolean newValue)
          Specifies whether the UI should use a large model.
 void setLeafIcon(Icon icon)
          Sets the specified icon as the icon to use for rendering leaf nodes.
 void setModel(TableModel tableModel)
          Overrides superclass version to make sure that the specified TableModel is compatible with JXTreeTable before invoking the inherited version.
 void setOpenIcon(Icon icon)
          Sets the specified icon as the icon to use for rendering open container nodes.
 void setOverwriteRendererIcons(boolean overwrite)
          Property to control whether per-tree icons should be copied to the renderer on setTreeCellRenderer.
 void setRootVisible(boolean visible)
          Determines whether or not the root node from the TreeModel is visible.
 void setRowHeight(int rowHeight)
          Sets the row height for this JXTreeTable and forwards the row height to the renderering tree.
 void setRowHeight(int row, int rowHeight)
          Throws UnsupportedOperationException because variable height rows are not supported.
 void setScrollsOnExpand(boolean scroll)
          Sets the value of the scrollsOnExpand property for the tree part.
 void setSelectionBackground(Color selectionBackground)
          Sets the background color for selected cells.
 void setSelectionForeground(Color selectionForeground)
          Sets the foreground color for selected cells.
 void setSelectionMode(int mode)
          Overridden to ensure that private renderer state is kept in sync with the state of the component.
 void setShowsRootHandles(boolean visible)
          Sets the value of the showsRootHandles property for the tree part.
 void setSortable(boolean sortable)
          overridden to do nothing.
 void setToggleClickCount(int clickCount)
          Sets the number of mouse clicks before a node will expand or close.
 void setTreeCellRenderer(TreeCellRenderer cellRenderer)
          Sets the specified TreeCellRenderer as the Tree cell renderer.
 void setTreeTableModel(TreeTableModel treeModel)
          Sets the data model for this JXTreeTable to the specified TreeTableModel.
 void sizeColumnsToFit(int resizingColumn)
          Overriden to invoke supers implementation, and then, if the receiver is editing a Tree column, the editors bounds is reset.
 void tableChanged(TableModelEvent e)
          additionally updates filtered state.
protected  void updateHierarchicalRendererEditor()
          Updates Ui of renderer/editor for the hierarchical column.
 void updateUI()
          Notification from the UIManager that the L&F has changed.
 
Methods inherited from class org.jdesktop.swingx.JXTable
addHighlighter, adjustComponentOrientation, adminSetRowHeight, columnMarginChanged, columnPropertyChange, columnRemoved, columnSelectionChanged, configureColumnControl, configureEnclosingScrollPane, convertRowIndexToModel, convertRowIndexToView, createDefaultColumnControl, createDefaultColumnModel, createDefaultColumnsFromModel, createDefaultEditors, createDefaultRenderers, createDefaultTableHeader, createHighlighterChangeListener, createLinkController, createPipelineListener, createRolloverProducer, doFind, doLayout, getAutoCreateColumnsFromModel, getColumn, getColumnControl, getColumnCount, getColumnExt, getColumnExt, getColumnFactory, getColumnMargin, getColumns, getColumns, getComponentAdapter, getCompoundHighlighter, getFillsViewportHeight, getFilterPipelineListener, getFilters, getHighlighterChangeListener, getHighlighters, getLinkController, getNewDefaultRenderer, getPreferredScrollableViewportSize, getRowCount, getRowModelMapper, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getSearchable, getSelectionMode, getSortController, getSortedColumn, getSortOrder, getSortOrder, getUIString, getUIString, getValueAt, getVisibleColumnCount, getVisibleRowCount, initializeColumnPreferredWidth, initializeColumnWidths, isAutoStartEditOnKeyStroke, isCellEditable, isColumnControlVisible, isDataChanged, isEditable, isFocusCycleRoot, isHorizontalScrollEnabled, isRolloverEnabled, isRowHeightEnabled, isSortable, isSortable, isSortable, isStructureChanged, isTerminateEditOnFocusLost, isUpdate, packAll, packColumn, packColumn, packSelected, packTable, prepareEditor, removeEditor, removeHighlighter, removeNotify, resetDefaultTableCellRendererColors, resetSortOrder, rowAtPoint, scrollCellToVisible, scrollColumnToVisible, scrollRowToVisible, setAutoResizeMode, setAutoStartEditOnKeyStroke, setColumnControl, setColumnControlVisible, setColumnFactory, setColumnMargin, setColumnSequence, setComponentOrientation, setEditable, setFillsViewportHeight, setGridColor, setHighlighters, setHorizontalScrollEnabled, setLocale, setPreferredScrollableViewportSize, setRolloverEnabled, setRowHeightEnabled, setSearchable, setSelectionModel, setShowGrid, setShowGrid, setSortOrder, setSortOrder, setTerminateEditOnFocusLost, setValueAt, setVisibleColumnCount, setVisibleRowCount, shouldSortOnChange, toggleSortOrder, toggleSortOrder, transferFocus, transferFocusBackward, unconfigureColumnControl, unconfigureEnclosingScrollPane, updateColumnControlUI, updateColumnUI, updateHighlighterUI, updateHorizontalAction, updateLocaleActionState, updateLocaleState, updateOnFilterContentChanged, updateRowHeightUI, updateViewSizeSequence
 
Methods inherited from class javax.swing.JTable
addColumn, addColumnSelectionInterval, addNotify, addRowSelectionInterval, changeSelection, columnAdded, columnAtPoint, columnMoved, convertColumnIndexToModel, convertColumnIndexToView, createDefaultDataModel, createDefaultSelectionModel, createScrollPaneForTable, editCellAt, editingCanceled, editingStopped, getAccessibleContext, getAutoResizeMode, getCellEditor, getCellRect, getCellSelectionEnabled, getColumn, getColumnClass, getColumnCount, getColumnModel, getColumnName, getColumnSelectionAllowed, getDefaultEditor, getDefaultRenderer, getDragEnabled, getEditingColumn, getEditorComponent, getGridColor, getIntercellSpacing, getModel, getPrintable, getRowHeight, getRowHeight, getRowMargin, getRowSelectionAllowed, getScrollableBlockIncrement, getScrollableUnitIncrement, getSelectedColumn, getSelectedColumnCount, getSelectedColumns, getSelectedRow, getSelectedRowCount, getSelectedRows, getSelectionBackground, getSelectionForeground, getSelectionModel, getShowHorizontalLines, getShowVerticalLines, getSurrendersFocusOnKeystroke, getTableHeader, getUI, getUIClassID, initializeLocalVars, isCellSelected, isColumnSelected, isEditing, isRowSelected, moveColumn, paramString, print, print, print, print, processKeyBinding, removeColumn, removeColumnSelectionInterval, removeRowSelectionInterval, resizeAndRepaint, selectAll, setAutoCreateColumnsFromModel, setCellEditor, setCellSelectionEnabled, setColumnModel, setColumnSelectionAllowed, setColumnSelectionInterval, setDefaultEditor, setDefaultRenderer, setDragEnabled, setEditingColumn, setEditingRow, setIntercellSpacing, setRowMargin, setRowSelectionAllowed, setRowSelectionInterval, setShowHorizontalLines, setShowVerticalLines, setSurrendersFocusOnKeystroke, setTableHeader, setUI, sizeColumnsToFit, valueChanged
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, 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, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, 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, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface javax.swing.event.TableColumnModelListener
columnAdded, columnMoved
 

Field Detail

DRAG_HACK_FLAG_KEY

public static final String DRAG_HACK_FLAG_KEY
Key for clientProperty to decide whether to apply hack around #168-jdnc.

See Also:
Constant Field Values

DROP_HACK_FLAG_KEY

public static final String DROP_HACK_FLAG_KEY
Key for clientProperty to decide whether to apply hack around #766-swingx.

See Also:
Constant Field Values
Constructor Detail

JXTreeTable

public JXTreeTable()
Constructs a JXTreeTable using a DefaultTreeTableModel.


JXTreeTable

public JXTreeTable(TreeTableModel treeModel)
Constructs a JXTreeTable using the specified TreeTableModel.

Parameters:
treeModel - model for the JXTreeTable
Method Detail

setSortable

public void setSortable(boolean sortable)
overridden to do nothing. TreeTable is not sortable by default, because Sorters/Filters currently don't work properly.

Overrides:
setSortable in class JXTable
Parameters:
sortable - boolean indicating whether or not this table supports sortable columns
See Also:
TableColumnExt.isSortable()

setFilters

public void setFilters(FilterPipeline pipeline)
overridden to do nothing. TreeTable is not sortable by default, because Sorters/Filters currently don't work properly.

Overrides:
setFilters in class JXTable
Parameters:
pipeline - the FilterPipeline to use, null removes all filters.

setEnabled

public void setEnabled(boolean enabled)
Sets whether or not this component is enabled. A component that is enabled may respond to user input, while a component that is not enabled cannot respond to user input. Some components may alter their visual representation when they are disabled in order to provide feedback to the user that they cannot take input.

Note: Disabling a component does not disable it's children.

Note: Disabling a lightweight component does not prevent it from receiving MouseEvents.

Overridden to keep the tree's enabled in synch.

Overrides:
setEnabled in class JComponent
Parameters:
enabled - true if this component should be enabled, false otherwise
See Also:
Component.isEnabled(), Component.isLightweight()

setSelectionBackground

public void setSelectionBackground(Color selectionBackground)
Sets the background color for selected cells. Cell renderers can use this color to the fill selected cells.

The default value of this property is defined by the look and feel implementation.

This is a JavaBeans bound property.

Overridden because super throws NPE on null param.

Overridden to keep the tree's selectionBackground in synch.

Overrides:
setSelectionBackground in class JXTable
Parameters:
selectionBackground - the Color to use for the background of selected cells
See Also:
JTable.getSelectionBackground(), JTable.setSelectionForeground(java.awt.Color), JComponent.setForeground(java.awt.Color), JComponent.setBackground(java.awt.Color), JComponent.setFont(java.awt.Font)

setSelectionForeground

public void setSelectionForeground(Color selectionForeground)
Sets the foreground color for selected cells. Cell renderers can use this color to render text and graphics for selected cells.

The default value of this property is defined by the look and feel implementation.

This is a JavaBeans bound property.

Overridden because super throws NPE on null param.

Overridden to keep the tree's selectionForeground in synch.

Overrides:
setSelectionForeground in class JXTable
Parameters:
selectionForeground - the Color to use in the foreground for selected list items
See Also:
JTable.getSelectionForeground(), JTable.setSelectionBackground(java.awt.Color), JComponent.setForeground(java.awt.Color), JComponent.setBackground(java.awt.Color), JComponent.setFont(java.awt.Font)

editCellAt

public boolean editCellAt(int row,
                          int column,
                          EventObject e)
Overriden to invoke repaint for the particular location if the column contains the tree. This is done as the tree editor does not fill the bounds of the cell, we need the renderer to paint the tree in the background, and then draw the editor over it. You should not need to call this method directly.

Additionally, there is tricksery involved to expand/collapse the nodes. Programmatically starts editing the cell at row and column, if those indices are in the valid range, and the cell at those indices is editable. To prevent the JTable from editing a particular table, column or cell value, return false from the isCellEditable method in the TableModel interface.

overridden to install a custom editor remover.

Overrides:
editCellAt in class JXTable
Parameters:
row - the row to be edited
column - the column to be edited
e - event to pass into shouldSelectCell; note that as of Java 2 platform v1.2, the call to shouldSelectCell is no longer made
Returns:
false if for any reason the cell cannot be edited, or if the indices are invalid

processMouseEvent

protected void processMouseEvent(MouseEvent e)
Overridden to enable hit handle detection a mouseEvent which triggered a expand/collapse.

Overrides:
processMouseEvent in class JComponent
Parameters:
e - the mouse event
See Also:
Component.processMouseEvent(java.awt.event.MouseEvent)

getTreeTableHacker

protected JXTreeTable.TreeTableHacker getTreeTableHacker()

createTreeTableHacker

protected JXTreeTable.TreeTableHacker createTreeTableHacker()

hackAroundDragEnabled

protected boolean hackAroundDragEnabled(MouseEvent me)
decides whether we want to apply the hack for #168-jdnc. here: returns true if dragEnabled() and the improved drag handling is not activated (or the system property is not accessible). The given mouseEvent is not analysed. PENDING: Mustang?

Parameters:
me - the mouseEvent that triggered a editCellAt
Returns:
true if the hack should be applied.

getEditingRow

public int getEditingRow()
Overridden to provide a workaround for BasicTableUI anomaly. Make sure the UI never tries to resize the editor. The UI currently uses different techniques to paint the renderers and editors. So, overriding setBounds() is not the right thing to do for an editor. Returning -1 for the editing row in this case, ensures the editor is never painted. Returns the index of the row that contains the cell currently being edited. If nothing is being edited, returns -1.

Overrides:
getEditingRow in class JTable
Returns:
the index of the row that contains the cell currently being edited; returns -1 if nothing being edited
See Also:
JTable.editingColumn

setTreeTableModel

public void setTreeTableModel(TreeTableModel treeModel)
Sets the data model for this JXTreeTable to the specified TreeTableModel. The same data model may be shared by any number of JXTreeTable instances.

Parameters:
treeModel - data model for this JXTreeTable

getTreeTableModel

public TreeTableModel getTreeTableModel()
Returns the underlying TreeTableModel for this JXTreeTable.

Returns:
the underlying TreeTableModel for this JXTreeTable

setModel

public final void setModel(TableModel tableModel)

Overrides superclass version to make sure that the specified TableModel is compatible with JXTreeTable before invoking the inherited version.

Because JXTreeTable internally adapts an TreeTableModel to make it a compatible TableModel, this method should never be called directly. Use setTreeTableModel instead.

While it is possible to obtain a reference to this adapted version of the TableModel by calling JTable.getModel(), any attempt to call setModel() with that adapter will fail because the adapter might have been bound to a different JXTreeTable instance. If you want to extract the underlying TreeTableModel, which, by the way, can be shared, use getTreeTableModel instead

.

Overrides:
setModel in class JXTable
Parameters:
tableModel - must be a TreeTableModelAdapter
Throws:
IllegalArgumentException - if the specified tableModel is not an instance of TreeTableModelAdapter
See Also:
JTable.getModel()

tableChanged

public void tableChanged(TableModelEvent e)
Description copied from class: JXTable
additionally updates filtered state. Invoked when this table's TableModel generates a TableModelEvent. The TableModelEvent should be constructed in the coordinate system of the model; the appropriate mapping to the view coordinate system is performed by this JTable when it receives the event.

Application code will not use these methods explicitly, they are used internally by JTable.

Note that as of 1.3, this method clears the selection, if any.

Specified by:
tableChanged in interface TableModelListener
Overrides:
tableChanged in class JXTable

getSelectionMapper

public SelectionMapper getSelectionMapper()
Overridden to return a do-nothing mapper.

Overrides:
getSelectionMapper in class JXTable
Returns:
SelectionMapper

createSelectionMapper

protected SelectionMapper createSelectionMapper()
Fix for #745-swingx: remove static selectionMaper.

Returns:
a SelectionMapper to use with this treeTable. Implemented with a no-op.

setRowHeight

public final void setRowHeight(int row,
                               int rowHeight)
Throws UnsupportedOperationException because variable height rows are not supported.

Overrides:
setRowHeight in class JXTable
Parameters:
row - ignored
rowHeight - ignored
Throws:
UnsupportedOperationException - because variable height rows are not supported
See Also:
JXTable.isRowHeightEnabled()

setRowHeight

public void setRowHeight(int rowHeight)
Sets the row height for this JXTreeTable and forwards the row height to the renderering tree.

Overrides:
setRowHeight in class JXTable
Parameters:
rowHeight - height of a row.
See Also:
JXTable.isXTableRowHeightSet

adjustTreeRowHeight

protected void adjustTreeRowHeight(int tableRowHeight)
Forwards tableRowHeight to tree.

Parameters:
tableRowHeight - height of a row.

adjustTableRowHeight

protected void adjustTableRowHeight(int treeRowHeight)
Forwards treeRowHeight to table. This is for completeness only: the rendering tree is under our total control, so we don't expect any external call to tree.setRowHeight.

Parameters:
treeRowHeight - height of a row.

setSelectionMode

public void setSelectionMode(int mode)

Overridden to ensure that private renderer state is kept in sync with the state of the component. Calls the inherited version after performing the necessary synchronization. If you override this method, make sure you call this version from your version of this method.

This version maps the selection mode used by the renderer to match the selection mode specified for the table. Specifically, the modes are mapped as follows:

  ListSelectionModel.SINGLE_INTERVAL_SELECTION: TreeSelectionModel.CONTIGUOUS_TREE_SELECTION;
  ListSelectionModel.MULTIPLE_INTERVAL_SELECTION: TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION;
  any other (default): TreeSelectionModel.SINGLE_TREE_SELECTION;
 
Sets the table's selection mode to allow only single selections, a single contiguous interval, or multiple intervals.

Note: JTable provides all the methods for handling column and row selection. When setting states, such as setSelectionMode, it not only updates the mode for the row selection model but also sets similar values in the selection model of the columnModel. If you want to have the row and column selection models operating in different modes, set them both directly.

Both the row and column selection models for JTable default to using a DefaultListSelectionModel so that JTable works the same way as the JList. See the setSelectionMode method in JList for details about the modes.

Overrides:
setSelectionMode in class JTable
Parameters:
mode - any of the table selection modes
See Also:
JList.setSelectionMode(int)

prepareRenderer

public Component prepareRenderer(TableCellRenderer renderer,
                                 int row,
                                 int column)
Returns the decorated Component used as a stamp to render the specified cell. Overrides superclass version to provide support for cell decorators.

Adjusts component orientation (guaranteed to happen before applying Highlighters).

Per-column highlighters contained in TableColumnExt.getHighlighters() are applied to the renderer after the table highlighters.

TODO kgs: interaction of search highlighter and column highlighters

Note: DefaultTableCellRenderer and subclasses require a hack to play nicely with Highlighters because it has an internal "color memory" in setForeground/setBackground. The hack is applied in resetDefaultTableCellRendererColors which is called after super.prepareRenderer and before applying the Highlighters. The method is called always and for all renderers.

Overridden to decorate the tree's renderer after calling super. At that point, it is only the tree itself that has been decorated.

Overrides:
prepareRenderer in class JXTable
Parameters:
renderer - the TableCellRenderer to prepare
row - the row of the cell to render, where 0 is the first row
column - the column of the cell to render, where 0 is the first column
Returns:
the Component used as a stamp to render the specified cell
See Also:
applyRenderer(Component, ComponentAdapter)

applyRenderer

protected Component applyRenderer(Component component,
                                  ComponentAdapter adapter)
Performs configuration of the tree's renderer if the adapter's column is the hierarchical column, does nothing otherwise.

Note: this is legacy glue if the treeCellRenderer is of type DefaultTreeCellRenderer. In that case the renderer's background/foreground/Non/Selection colors are set to the tree's background/foreground depending on the adapter's selection state. Does nothing if the treeCellRenderer is backed by a ComponentProvider.

Parameters:
component - the rendering component
adapter - component data adapter
Throws:
NullPointerException - if the specified component or adapter is null

setTreeCellRenderer

public void setTreeCellRenderer(TreeCellRenderer cellRenderer)
Sets the specified TreeCellRenderer as the Tree cell renderer.

Parameters:
cellRenderer - to use for rendering tree cells.

getTreeCellRenderer

public TreeCellRenderer getTreeCellRenderer()

getToolTipText

public String getToolTipText(MouseEvent event)
Description copied from class: javax.swing.JTable
Overrides JComponent's getToolTipText method in order to allow the renderer's tips to be used if it has text set.

Note: For JTable to properly display tooltips of its renderers JTable must be a registered component with the ToolTipManager. This is done automatically in initializeLocalVars, but if at a later point JTable is told setToolTipText(null) it will unregister the table component, and no tips from renderers will display anymore.

Overrides:
getToolTipText in class JTable
See Also:
JComponent.getToolTipText()

setCollapsedIcon

public void setCollapsedIcon(Icon icon)
Sets the specified icon as the icon to use for rendering collapsed nodes.

Parameters:
icon - to use for rendering collapsed nodes
See Also:
JXTree.setCollapsedIcon(Icon)

setExpandedIcon

public void setExpandedIcon(Icon icon)
Sets the specified icon as the icon to use for rendering expanded nodes.

Parameters:
icon - to use for rendering expanded nodes
See Also:
JXTree.setExpandedIcon(Icon)

setOpenIcon

public void setOpenIcon(Icon icon)
Sets the specified icon as the icon to use for rendering open container nodes.

Parameters:
icon - to use for rendering open nodes
See Also:
JXTree.setOpenIcon(Icon)

setClosedIcon

public void setClosedIcon(Icon icon)
Sets the specified icon as the icon to use for rendering closed container nodes.

Parameters:
icon - to use for rendering closed nodes
See Also:
JXTree.setClosedIcon(Icon)

setLeafIcon

public void setLeafIcon(Icon icon)
Sets the specified icon as the icon to use for rendering leaf nodes.

Parameters:
icon - to use for rendering leaf nodes
See Also:
JXTree.setLeafIcon(Icon)

setOverwriteRendererIcons

public void setOverwriteRendererIcons(boolean overwrite)
Property to control whether per-tree icons should be copied to the renderer on setTreeCellRenderer.

The default value is false.

Parameters:
overwrite - a boolean to indicate if the per-tree Icons should be copied to the new renderer on setTreeCellRenderer.
See Also:
isOverwriteRendererIcons(), setLeafIcon(Icon), setOpenIcon(Icon), setClosedIcon(Icon), JXTree.setOverwriteRendererIcons(boolean)

isOverwriteRendererIcons

public boolean isOverwriteRendererIcons()
Returns a boolean indicating whether the per-tree icons should be copied to the renderer on setTreeCellRenderer.

Returns:
true if a TreeCellRenderer's icons will be overwritten with the tree's Icons, false if the renderer's icons will be unchanged.
See Also:
setOverwriteRendererIcons(boolean), setLeafIcon(Icon), setOpenIcon(Icon), setClosedIcon(Icon), JXTree.isOverwriteRendererIcons()

clearSelection

public void clearSelection()
Overridden to ensure that private renderer state is kept in sync with the state of the component. Calls the inherited version after performing the necessary synchronization. If you override this method, make sure you call this version from your version of this method.

Overrides:
clearSelection in class JTable

collapseAll

public void collapseAll()
Collapses all nodes in the treetable.


expandAll

public void expandAll()
Expands all nodes in the treetable.


collapsePath

public void collapsePath(TreePath path)
Collapses the node at the specified path in the treetable.

Parameters:
path - path of the node to collapse

expandPath

public void expandPath(TreePath path)
Expands the the node at the specified path in the treetable.

Parameters:
path - path of the node to expand

scrollPathToVisible

public void scrollPathToVisible(TreePath path)
Makes sure all the path components in path are expanded (except for the last path component) and scrolls so that the node identified by the path is displayed. Only works when this JTree is contained in a JScrollPane. (doc copied from JTree) PENDING: JW - where exactly do we want to scroll? Here: the scroll is in vertical direction only. Might need to show the tree column?

Parameters:
path - the TreePath identifying the node to bring into view

collapseRow

public void collapseRow(int row)
Collapses the row in the treetable. If the specified row index is not valid, this method will have no effect.


expandRow

public void expandRow(int row)
Expands the specified row in the treetable. If the specified row index is not valid, this method will have no effect.


isVisible

public boolean isVisible(TreePath path)
Returns true if the value identified by path is currently viewable, which means it is either the root or all of its parents are expanded. Otherwise, this method returns false.

Returns:
true, if the value identified by path is currently viewable; false, otherwise

isExpanded

public boolean isExpanded(TreePath path)
Returns true if the node identified by path is currently expanded. Otherwise, this method returns false.

Parameters:
path - path
Returns:
true, if the value identified by path is currently expanded; false, otherwise

isExpanded

public boolean isExpanded(int row)
Returns true if the node at the specified display row is currently expanded. Otherwise, this method returns false.

Parameters:
row - row
Returns:
true, if the node at the specified display row is currently expanded. false, otherwise

isCollapsed

public boolean isCollapsed(TreePath path)
Returns true if the node identified by path is currently collapsed, this will return false if any of the values in path are currently not being displayed.

Parameters:
path - path
Returns:
true, if the value identified by path is currently collapsed; false, otherwise

isCollapsed

public boolean isCollapsed(int row)
Returns true if the node at the specified display row is collapsed.

Parameters:
row - row
Returns:
true, if the node at the specified display row is currently collapsed. false, otherwise

getExpandedDescendants

public Enumeration<?> getExpandedDescendants(TreePath parent)
Returns an Enumeration of the descendants of the path parent that are currently expanded. If parent is not currently expanded, this will return null. If you expand/collapse nodes while iterating over the returned Enumeration this may not return all the expanded paths, or may return paths that are no longer expanded.

Parameters:
parent - the path which is to be examined
Returns:
an Enumeration of the descendents of parent, or null if parent is not currently expanded

getPathForLocation

public TreePath getPathForLocation(int x,
                                   int y)
Returns the TreePath for a given x,y location.

Parameters:
x - x value
y - y value
Returns:
the TreePath for the givern location.

getPathForRow

public TreePath getPathForRow(int row)
Returns the TreePath for a given row.

Parameters:
row -
Returns:
the TreePath for the given row.

getRowForPath

public int getRowForPath(TreePath path)
Returns the row for a given TreePath.

Parameters:
path -
Returns:
the row for the given TreePath.

setRootVisible

public void setRootVisible(boolean visible)
Determines whether or not the root node from the TreeModel is visible.

Parameters:
visible - true, if the root node is visible; false, otherwise

isRootVisible

public boolean isRootVisible()
Returns true if the root node of the tree is displayed.

Returns:
true if the root node of the tree is displayed

setScrollsOnExpand

public void setScrollsOnExpand(boolean scroll)
Sets the value of the scrollsOnExpand property for the tree part. This property specifies whether the expanded paths should be scrolled into view. In a look and feel in which a tree might not need to scroll when expanded, this property may be ignored.

Parameters:
scroll - true, if expanded paths should be scrolled into view; false, otherwise

getScrollsOnExpand

public boolean getScrollsOnExpand()
Returns the value of the scrollsOnExpand property.

Returns:
the value of the scrollsOnExpand property

setShowsRootHandles

public void setShowsRootHandles(boolean visible)
Sets the value of the showsRootHandles property for the tree part. This property specifies whether the node handles should be displayed. If handles are not supported by a particular look and feel, this property may be ignored.

Parameters:
visible - true, if root handles should be shown; false, otherwise

getShowsRootHandles

public boolean getShowsRootHandles()
Returns the value of the showsRootHandles property.

Returns:
the value of the showsRootHandles property

setExpandsSelectedPaths

public void setExpandsSelectedPaths(boolean expand)
Sets the value of the expandsSelectedPaths property for the tree part. This property specifies whether the selected paths should be expanded.

Parameters:
expand - true, if selected paths should be expanded; false, otherwise

getExpandsSelectedPaths

public boolean getExpandsSelectedPaths()
Returns the value of the expandsSelectedPaths property.

Returns:
the value of the expandsSelectedPaths property

getToggleClickCount

public int getToggleClickCount()
Returns the number of mouse clicks needed to expand or close a node.

Returns:
number of mouse clicks before node is expanded

setToggleClickCount

public void setToggleClickCount(int clickCount)
Sets the number of mouse clicks before a node will expand or close. The default is two.

Parameters:
clickCount - the number of clicks required to expand/collapse a node.

isLargeModel

public boolean isLargeModel()
Returns true if the tree is configured for a large model. The default value is false.

Returns:
true if a large model is suggested
See Also:
setLargeModel(boolean)

setLargeModel

public void setLargeModel(boolean newValue)
Specifies whether the UI should use a large model. (Not all UIs will implement this.)

NOTE: this method is exposed for completeness - currently it's not recommended to use a large model because there are some issues (not yet fully understood), namely issue #25-swingx, and probably #270-swingx.

Parameters:
newValue - true to suggest a large model to the UI

addTreeExpansionListener

public void addTreeExpansionListener(TreeExpansionListener tel)
Adds a listener for TreeExpansion events. TODO (JW): redirect event source to this.

Parameters:
tel - a TreeExpansionListener that will be notified when a tree node is expanded or collapsed

removeTreeExpansionListener

public void removeTreeExpansionListener(TreeExpansionListener tel)
Removes a listener for TreeExpansion events.

Parameters:
tel - the TreeExpansionListener to remove

addTreeSelectionListener

public void addTreeSelectionListener(TreeSelectionListener tsl)
Adds a listener for TreeSelection events. TODO (JW): redirect event source to this.

Parameters:
tsl - a TreeSelectionListener that will be notified when a tree node is selected or deselected

removeTreeSelectionListener

public void removeTreeSelectionListener(TreeSelectionListener tsl)
Removes a listener for TreeSelection events.

Parameters:
tsl - the TreeSelectionListener to remove

addTreeWillExpandListener

public void addTreeWillExpandListener(TreeWillExpandListener tel)
Adds a listener for TreeWillExpand events. TODO (JW): redirect event source to this.

Parameters:
tel - a TreeWillExpandListener that will be notified when a tree node will be expanded or collapsed

removeTreeWillExpandListener

public void removeTreeWillExpandListener(TreeWillExpandListener tel)
Removes a listener for TreeWillExpand events.

Parameters:
tel - the TreeWillExpandListener to remove

getTreeSelectionModel

public TreeSelectionModel getTreeSelectionModel()
Returns the selection model for the tree portion of the this treetable.

Returns:
selection model for the tree portion of the this treetable

sizeColumnsToFit

public void sizeColumnsToFit(int resizingColumn)
Overriden to invoke supers implementation, and then, if the receiver is editing a Tree column, the editors bounds is reset. The reason we have to do this is because JTable doesn't think the table is being edited, as getEditingRow returns -1, and therefore doesn't automaticly resize the editor for us.

Overrides:
sizeColumnsToFit in class JTable
Parameters:
resizingColumn - the column whose resizing made this adjustment necessary or -1 if there is no such column
See Also:
JTable.doLayout()

isHierarchical

public boolean isHierarchical(int column)
Determines if the specified column is defined as the hierarchical column.

Parameters:
column - zero-based index of the column in view coordinates
Returns:
true if the column is the hierarchical column; false otherwise.
Throws:
IllegalArgumentException - if the column is less than 0 or greater than or equal to the column count

getHierarchicalColumn

public int getHierarchicalColumn()
Returns the index of the hierarchical column. This is the column that is displayed as the tree.

Returns:
the index of the hierarchical column, -1 if there is no hierarchical column

getCellRenderer

public TableCellRenderer getCellRenderer(int row,
                                         int column)
Returns an appropriate renderer for the cell specified by this row and column. If the TableColumn for this column has a non-null renderer, returns that. If not, finds the class of the data in this column (using getColumnClass) and returns the default renderer for this type of data.

Note: Throughout the table package, the internal implementations always use this method to provide renderers so that this default behavior can be safely overridden by a subclass.

Overridden to fix core bug #4614616 (NPE if TableModel's Class for the column is an interface). This method guarantees to always return a not null value. Returns the default renderer for Object if super returns null.

Overrides:
getCellRenderer in class JXTable
Parameters:
row - the row of the cell to render, where 0 is the first row
column - the column of the cell to render, where 0 is the first column
Returns:
the assigned renderer; if null returns the default renderer for this type of object
See Also:
DefaultTableCellRenderer, TableColumn.setCellRenderer(javax.swing.table.TableCellRenderer), JTable.setDefaultRenderer(java.lang.Class, javax.swing.table.TableCellRenderer)

getCellEditor

public TableCellEditor getCellEditor(int row,
                                     int column)
Returns an appropriate editor for the cell specified by row and column. If the TableColumn for this column has a non-null editor, returns that. If not, finds the class of the data in this column (using getColumnClass) and returns the default editor for this type of data.

Note: Throughout the table package, the internal implementations always use this method to provide editors so that this default behavior can be safely overridden by a subclass.

Overrides:
getCellEditor in class JTable
Parameters:
row - the row of the cell to edit, where 0 is the first row
column - the column of the cell to edit, where 0 is the first column
Returns:
the editor for this cell; if null return the default editor for this type of cell
See Also:
DefaultCellEditor

updateUI

public void updateUI()
Description copied from class: JXTable
Notification from the UIManager that the L&F has changed. Replaces the current UI object with the latest version from the UIManager.

Additionally updates auto-adjusted row height and highlighters.

Another of the override motivation is to fix core issue (?? ID): super fails to update all renderers/editors.

Overrides:
updateUI in class JXTable
See Also:
JComponent.updateUI()

updateHierarchicalRendererEditor

protected void updateHierarchicalRendererEditor()
Updates Ui of renderer/editor for the hierarchical column. Need to do so manually, as not accessible by the default lookup.


getStringAt

public String getStringAt(int row,
                          int column)
Returns the string representation of the cell value at the given position.

Overridden to message the tree directly if the column is the view index of the hierarchical column.

PENDING JW: revisit once we switch to really using a table renderer. As is, it's a quick fix for #821-swingx: string rep for hierarchical column incorrect.

Overrides:
getStringAt in class JXTable
Parameters:
row - the row index of the cell in view coordinates
column - the column index of the cell in view coordinates.
Returns:
the string representation of the cell value as it will appear in the table.

getComponentAdapter

protected ComponentAdapter getComponentAdapter()
Returns the adapter that knows how to access the component data model. The component data adapter is used by filters, sorters, and highlighters.

Overrides:
getComponentAdapter in class JXTable
Returns:
the adapter that knows how to access the component data model