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 classJXTreeTable.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.BordercellBorderprivate inthierarchicalColumnWidthprotected javax.swing.border.BorderhighlightBorderBorder to draw around the tree, if this is non-null, it will be painted.private java.beans.PropertyChangeListenerrolloverListenerprotected JXTreeTabletreeTableprotected intvisibleRow-
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 voidbind(JXTreeTable treeTable)Immutably binds this TreeTableModelAdapter to the specified JXTreeTable.private voidbindRollover()Install rollover support.protected java.beans.PropertyChangeListenercreateRolloverListener()Creates and returns a property change listener for table's rollover related properties.protected RolloverProducercreateRolloverProducer()Creates and returns the RolloverProducer to use with this tree.voiddoClick()private java.beans.PropertyChangeListenergetRolloverListener()java.awt.ComponentgetTableCellRendererComponent(javax.swing.JTable table, java.lang.Object value, boolean isSelected, boolean hasFocus, int row, int column)private java.lang.StringgetToolTipText(java.awt.event.MouseEvent event, int row, int column)Hack around #297-swingx: tooltips shown at wrong row.booleanisRowSelected(int row)booleanisVisible()voidpaint(java.awt.Graphics g)Sublcassed to translate the graphics such that the last visible row will be drawn at 0,0.voidscrollRectToVisible(java.awt.Rectangle aRect)voidsetBorder(javax.swing.border.Border border)voidsetBounds(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 voidsetExpandedState(javax.swing.tree.TreePath path, boolean state)voidsetRowHeight(int rowHeight)Sets the row height of the tree, and forwards the row height to the table.voidsetToolTipText(java.lang.String text)protected booleanshouldApplyDropHack()Returns a boolean indicating whether the drop hack should be applied.voidupdateUI()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:
isVisiblein 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:
setToolTipTextin 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:
createRolloverProducerin classJXTree- Returns:
RolloverProducerto use with this tree- See Also:
JXTree.setRolloverEnabled(boolean)
-
scrollRectToVisible
public void scrollRectToVisible(java.awt.Rectangle aRect)
- Overrides:
scrollRectToVisiblein classjavax.swing.JComponent
-
setExpandedState
protected void setExpandedState(javax.swing.tree.TreePath path, boolean state)- Overrides:
setExpandedStatein 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:
setRowHeightin 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:
setBoundsin 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:
paintin 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:
setBorderin classjavax.swing.JComponent
-
doClick
public void doClick()
-
isRowSelected
public boolean isRowSelected(int row)
- Overrides:
isRowSelectedin 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:
getTableCellRendererComponentin interfacejavax.swing.table.TableCellRenderer
-
-