Class JXTreeTable.TreeTableCellRenderer
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JTree
-
- org.jdesktop.swingx.JXTree
-
- org.jdesktop.swingx.JXTreeTable.TreeTableCellRenderer
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
,javax.swing.Scrollable
,javax.swing.table.TableCellRenderer
- Enclosing class:
- JXTreeTable
static class JXTreeTable.TreeTableCellRenderer extends JXTree implements javax.swing.table.TableCellRenderer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
JXTreeTable.TreeTableCellRenderer.ClippedTreeCellRenderer
-
Nested classes/interfaces inherited from class org.jdesktop.swingx.JXTree
JXTree.CellEditorRemover, JXTree.DelegatingRenderer, JXTree.TreeAdapter, JXTree.XTreeModelHandler
-
Nested classes/interfaces inherited from class javax.swing.JTree
javax.swing.JTree.AccessibleJTree, javax.swing.JTree.DropLocation, javax.swing.JTree.DynamicUtilTreeNode, javax.swing.JTree.EmptySelectionModel, javax.swing.JTree.TreeModelHandler, javax.swing.JTree.TreeSelectionRedirector
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private javax.swing.border.Border
cellBorder
private int
hierarchicalColumnWidth
protected javax.swing.border.Border
highlightBorder
Border to draw around the tree, if this is non-null, it will be painted.private java.beans.PropertyChangeListener
rolloverListener
protected JXTreeTable
treeTable
protected int
visibleRow
-
Fields inherited from class org.jdesktop.swingx.JXTree
compoundHighlighter, dataAdapter
-
Fields inherited from class javax.swing.JTree
ANCHOR_SELECTION_PATH_PROPERTY, CELL_EDITOR_PROPERTY, CELL_RENDERER_PROPERTY, cellEditor, cellRenderer, editable, EDITABLE_PROPERTY, EXPANDS_SELECTED_PATHS_PROPERTY, INVOKES_STOP_CELL_EDITING_PROPERTY, invokesStopCellEditing, LARGE_MODEL_PROPERTY, largeModel, LEAD_SELECTION_PATH_PROPERTY, ROOT_VISIBLE_PROPERTY, rootVisible, ROW_HEIGHT_PROPERTY, rowHeight, SCROLLS_ON_EXPAND_PROPERTY, scrollsOnExpand, SELECTION_MODEL_PROPERTY, selectionModel, selectionRedirector, SHOWS_ROOT_HANDLES_PROPERTY, showsRootHandles, TOGGLE_CLICK_COUNT_PROPERTY, toggleClickCount, TREE_MODEL_PROPERTY, treeModel, treeModelListener, VISIBLE_ROW_COUNT_PROPERTY, visibleRowCount
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description TreeTableCellRenderer(TreeTableModel model)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
bind(JXTreeTable treeTable)
Immutably binds this TreeTableModelAdapter to the specified JXTreeTable.private void
bindRollover()
Install rollover support.protected java.beans.PropertyChangeListener
createRolloverListener()
Creates and returns a property change listener for table's rollover related properties.protected RolloverProducer
createRolloverProducer()
Creates and returns the RolloverProducer to use with this tree.void
doClick()
private java.beans.PropertyChangeListener
getRolloverListener()
java.awt.Component
getTableCellRendererComponent(javax.swing.JTable table, java.lang.Object value, boolean isSelected, boolean hasFocus, int row, int column)
private java.lang.String
getToolTipText(java.awt.event.MouseEvent event, int row, int column)
Hack around #297-swingx: tooltips shown at wrong row.boolean
isRowSelected(int row)
boolean
isVisible()
void
paint(java.awt.Graphics g)
Sublcassed to translate the graphics such that the last visible row will be drawn at 0,0.void
scrollRectToVisible(java.awt.Rectangle aRect)
void
setBorder(javax.swing.border.Border border)
void
setBounds(int x, int y, int w, int h)
This is overridden to set the location to (0, 0) and set the dimension to exactly fill the bounds of the hierarchical column.protected void
setExpandedState(javax.swing.tree.TreePath path, boolean state)
void
setRowHeight(int rowHeight)
Sets the row height of the tree, and forwards the row height to the table.void
setToolTipText(java.lang.String text)
protected boolean
shouldApplyDropHack()
Returns a boolean indicating whether the drop hack should be applied.void
updateUI()
updateUI is overridden to set the colors of the Tree's renderer to match that of the table.-
Methods inherited from class org.jdesktop.swingx.JXTree
addHighlighter, analyseFocus, collapseAll, createDefaultCellRenderer, createHighlighterChangeListener, createLinkController, createTreeModelListener, doFind, expandAll, getCellRenderer, getComponentAdapter, getComponentAdapter, getCompoundHighlighter, getHighlighterChangeListener, getHighlighters, getLinkController, getNextMatch, getSearchable, getSelectionBackground, getSelectionForeground, getSelectionPaths, getSelectionRows, getStringAt, getStringAt, getWrappedCellRenderer, invalidateCellSizeCache, isOverwriteRendererIcons, isRolloverEnabled, removeHighlighter, removeNotify, setCellRenderer, setClosedIcon, setCollapsedIcon, setExpandedIcon, setHighlighters, setLeafIcon, setModel, setOpenIcon, setOverwriteRendererIcons, setRolloverEnabled, setSearchable, setSelectionBackground, setSelectionForeground, startEditingAtPath, updateHighlighterUI, updateRendererEditorUI
-
Methods inherited from class javax.swing.JTree
addSelectionInterval, addSelectionPath, addSelectionPaths, addSelectionRow, addSelectionRows, addTreeExpansionListener, addTreeSelectionListener, addTreeWillExpandListener, cancelEditing, clearSelection, clearToggledPaths, collapsePath, collapseRow, convertValueToText, createTreeModel, expandPath, expandRow, fireTreeCollapsed, fireTreeExpanded, fireTreeWillCollapse, fireTreeWillExpand, fireValueChanged, getAccessibleContext, getAnchorSelectionPath, getCellEditor, getClosestPathForLocation, getClosestRowForLocation, getDefaultTreeModel, getDescendantToggledPaths, getDragEnabled, getDropLocation, getDropMode, getEditingPath, getExpandedDescendants, getExpandsSelectedPaths, getInvokesStopCellEditing, getLastSelectedPathComponent, getLeadSelectionPath, getLeadSelectionRow, getMaxSelectionRow, getMinSelectionRow, getModel, getPathBetweenRows, getPathBounds, getPathForLocation, getPathForRow, getPreferredScrollableViewportSize, getRowBounds, getRowCount, getRowForLocation, getRowForPath, getRowHeight, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollsOnExpand, getSelectionCount, getSelectionModel, getSelectionPath, getShowsRootHandles, getToggleClickCount, getToolTipText, getTreeExpansionListeners, getTreeSelectionListeners, getTreeWillExpandListeners, getUI, getUIClassID, getVisibleRowCount, hasBeenExpanded, isCollapsed, isCollapsed, isEditable, isEditing, isExpanded, isExpanded, isFixedRowHeight, isLargeModel, isPathEditable, isPathSelected, isRootVisible, isSelectionEmpty, isVisible, makeVisible, paramString, removeDescendantSelectedPaths, removeDescendantToggledPaths, removeSelectionInterval, removeSelectionPath, removeSelectionPaths, removeSelectionRow, removeSelectionRows, removeTreeExpansionListener, removeTreeSelectionListener, removeTreeWillExpandListener, scrollPathToVisible, scrollRowToVisible, setAnchorSelectionPath, setCellEditor, setDragEnabled, setDropMode, setEditable, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, setRootVisible, setScrollsOnExpand, setSelectionInterval, setSelectionModel, setSelectionPath, setSelectionPaths, setSelectionRow, setSelectionRows, setShowsRootHandles, setToggleClickCount, setUI, setVisibleRowCount, stopEditing, treeDidChange
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
rolloverListener
private java.beans.PropertyChangeListener rolloverListener
-
cellBorder
private javax.swing.border.Border cellBorder
-
highlightBorder
protected javax.swing.border.Border highlightBorder
Border to draw around the tree, if this is non-null, it will be painted.
-
treeTable
protected JXTreeTable treeTable
-
visibleRow
protected int visibleRow
-
hierarchicalColumnWidth
private int hierarchicalColumnWidth
-
-
Constructor Detail
-
TreeTableCellRenderer
public TreeTableCellRenderer(TreeTableModel model)
-
-
Method Detail
-
isVisible
public boolean isVisible()
Overridden to hack around #766-swingx: cursor flickering in DnD when dragging over tree column. This is a core bug (#6700748) related to painting the rendering component on a CellRendererPane. A trick around is to let this return false.
This implementation applies the trick, that is returns false always. The hack can be disabled by setting the treeTable's client property DROP_HACK_FLAG_KEY to Boolean.FALSE.
- Overrides:
isVisible
in classjava.awt.Component
-
shouldApplyDropHack
protected boolean shouldApplyDropHack()
Returns a boolean indicating whether the drop hack should be applied.- Returns:
- a boolean indicating whether the drop hack should be applied.
-
getToolTipText
private java.lang.String getToolTipText(java.awt.event.MouseEvent event, int row, int column)
Hack around #297-swingx: tooltips shown at wrong row. The problem is that - due to much tricksery when rendering the tree - the given coordinates are rather useless. As a consequence, super maps to wrong coordinates. This takes over completely. PENDING: bidi?- Parameters:
event
- the mouseEvent in treetable coordinatesrow
- the view row indexcolumn
- the view column index- Returns:
- the tooltip as appropriate for the given row
-
setToolTipText
public void setToolTipText(java.lang.String text)
Overridden to not automatically de/register itself from/to the ToolTipManager. As rendering component it is not considered to be active in any way, so the manager must not listen.
- Overrides:
setToolTipText
in classjavax.swing.JComponent
-
bind
public final void bind(JXTreeTable treeTable)
Immutably binds this TreeTableModelAdapter to the specified JXTreeTable. For internal use by JXTreeTable only.- Parameters:
treeTable
- the JXTreeTable instance that this renderer is bound to
-
bindRollover
private void bindRollover()
Install rollover support. Not used - still has issues. - not bidi-compliant - no coordinate transformation for hierarchical column != 0 - method name clash enabled - keyboard triggered click unreliable (triggers the treetable) ...
-
getRolloverListener
private java.beans.PropertyChangeListener getRolloverListener()
- Returns:
-
createRolloverListener
protected java.beans.PropertyChangeListener createRolloverListener()
Creates and returns a property change listener for table's rollover related properties. This implementation - Synchs the tree's rolloverEnabled - maps rollover cell from the table to the cell (still incomplete: first column only)- Returns:
-
createRolloverProducer
protected RolloverProducer createRolloverProducer()
Creates and returns the RolloverProducer to use with this tree.Overridden to produce clicked client props only. The rollover are produced by a propertyChangeListener to the table's corresponding prop.
- Overrides:
createRolloverProducer
in classJXTree
- Returns:
RolloverProducer
to use with this tree- See Also:
JXTree.setRolloverEnabled(boolean)
-
scrollRectToVisible
public void scrollRectToVisible(java.awt.Rectangle aRect)
- Overrides:
scrollRectToVisible
in classjavax.swing.JComponent
-
setExpandedState
protected void setExpandedState(javax.swing.tree.TreePath path, boolean state)
- Overrides:
setExpandedState
in classjavax.swing.JTree
-
updateUI
public void updateUI()
updateUI is overridden to set the colors of the Tree's renderer to match that of the table.
-
setRowHeight
public void setRowHeight(int rowHeight)
Sets the row height of the tree, and forwards the row height to the table.- Overrides:
setRowHeight
in classjavax.swing.JTree
-
setBounds
public void setBounds(int x, int y, int w, int h)
This is overridden to set the location to (0, 0) and set the dimension to exactly fill the bounds of the hierarchical column.- Overrides:
setBounds
in classjava.awt.Component
-
paint
public void paint(java.awt.Graphics g)
Sublcassed to translate the graphics such that the last visible row will be drawn at 0,0.- Overrides:
paint
in classjavax.swing.JComponent
-
setBorder
public void setBorder(javax.swing.border.Border border)
Overridden to fix #swingx-1525: BorderHighlighter fills tree column.
Basically, the reason was that the border is set on the tree as a whole instead of on the cell level. The fix is to bypass super completely, keep a reference to the cell border and manually paint it around the cell in the overridden paint.
Note: in the paint we need to paint either the focus border or the cellBorder, the former taking precedence.
- Overrides:
setBorder
in classjavax.swing.JComponent
-
doClick
public void doClick()
-
isRowSelected
public boolean isRowSelected(int row)
- Overrides:
isRowSelected
in classjavax.swing.JTree
-
getTableCellRendererComponent
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, java.lang.Object value, boolean isSelected, boolean hasFocus, int row, int column)
- Specified by:
getTableCellRendererComponent
in interfacejavax.swing.table.TableCellRenderer
-
-