com.explodingpixels.macwidgets.plaf
Class SourceListTreeUI

java.lang.Object
  extended by javax.swing.plaf.ComponentUI
      extended by javax.swing.plaf.TreeUI
          extended by javax.swing.plaf.basic.BasicTreeUI
              extended by com.explodingpixels.macwidgets.plaf.SourceListTreeUI

public class SourceListTreeUI
extends BasicTreeUI

A UI delegate that paints a JTree as an Apple defined Source List. Consider using this UI delegate with MacWidgetFactory.createSourceListScrollPane(javax.swing.JComponent).

For the best development experience, it is recommended that you migrate your code to use the SourceList with the SourceListModel, as this component abstracts away many of the complexities of JTree.

Pictured below are the two different rendering styles of a Source List: focused and unfocused. The corresponding JTree's focusable property drives this rendering style.


Focusable SourceList Non-focusable SourceList

Providing Category and Item text and icons

During the rendering process, each Category and Item node will be consulted for the text to be displayed. The renderer determines the text based on these prioritized checks:

  1. If the node is an instance of DefaultMutableTreeNode, and the DefaultMutableTreeNode.getUserObject() is an instance of TextProvider, then the TextProvider will be queried for the node text.
  2. If no implementation of TextProvider is found, the standard JTree.convertValueToText(Object, boolean, boolean, boolean, int, boolean) method will be consulted.
Also, during rendering, each Item node will be consulted for an icon. Similarly to the above mechanism for determining text, the render determines a nodes icon by the following check:
  1. If the node is an instance of DefaultMutableTreeNode, and the DefaultMutableTreeNode.getUserObject() is an instance of IconProvider, then the IconProvider will be queried for the node icon.


Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.plaf.basic.BasicTreeUI
BasicTreeUI.CellEditorHandler, BasicTreeUI.ComponentHandler, BasicTreeUI.FocusHandler, BasicTreeUI.KeyHandler, BasicTreeUI.MouseHandler, BasicTreeUI.MouseInputHandler, BasicTreeUI.NodeDimensionsHandler, BasicTreeUI.PropertyChangeHandler, BasicTreeUI.SelectionModelPropertyChangeHandler, BasicTreeUI.TreeCancelEditingAction, BasicTreeUI.TreeExpansionHandler, BasicTreeUI.TreeHomeAction, BasicTreeUI.TreeIncrementAction, BasicTreeUI.TreeModelHandler, BasicTreeUI.TreePageAction, BasicTreeUI.TreeSelectionHandler, BasicTreeUI.TreeToggleAction, BasicTreeUI.TreeTraverseAction
 
Field Summary
 
Fields inherited from class javax.swing.plaf.basic.BasicTreeUI
cellEditor, collapsedIcon, createdCellEditor, createdRenderer, currentCellRenderer, depthOffset, drawingCache, editingComponent, editingPath, editingRow, editorHasDifferentSize, expandedIcon, largeModel, lastSelectedRow, leftChildIndent, nodeDimensions, preferredMinSize, preferredSize, rendererPane, rightChildIndent, stopEditingInCompleteEditing, totalChildIndent, tree, treeModel, treeSelectionModel, treeState, validCachedPreferredSize
 
Constructor Summary
SourceListTreeUI()
           
 
Method Summary
protected  void completeUIInstall()
           
protected  AbstractLayoutCache.NodeDimensions createNodeDimensions()
           
 SourceListColorScheme getColorScheme()
          Gets the SourceListColorScheme that this SourceListTreeUI uses to paint.
 Rectangle getPathBounds(JTree tree, TreePath path)
           
protected  void installKeyboardActions()
           
protected  void installListeners()
           
 void paint(Graphics g, JComponent c)
           
protected  void paintExpandControl(Graphics g, Rectangle clipBounds, Insets insets, Rectangle bounds, TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)
           
protected  void paintHorizontalLine(Graphics g, JComponent c, int y, int left, int right)
           
protected  void paintVerticalPartOfLeg(Graphics g, Rectangle clipBounds, Insets insets, TreePath path)
           
protected  void selectPathForEvent(TreePath path, MouseEvent event)
           
 void setColorScheme(SourceListColorScheme colorScheme)
          Sets the SourceListColorScheme that this SourceListTreeUI uses to paint.
protected  void setModel(TreeModel model)
           
 
Methods inherited from class javax.swing.plaf.basic.BasicTreeUI
cancelEditing, checkForClickInExpandControl, completeEditing, completeEditing, completeUIUninstall, configureLayoutCache, createCellEditorListener, createCellRendererPane, createComponentListener, createDefaultCellEditor, createDefaultCellRenderer, createFocusListener, createKeyListener, createLayoutCache, createMouseListener, createPropertyChangeListener, createSelectionModelPropertyChangeListener, createTreeExpansionListener, createTreeModelListener, createTreeSelectionListener, createUI, drawCentered, drawDashedHorizontalLine, drawDashedVerticalLine, ensureRowsAreVisible, getBaseline, getBaselineResizeBehavior, getCellEditor, getCellRenderer, getClosestPathForLocation, getCollapsedIcon, getEditingPath, getExpandedIcon, getHashColor, getHorizontalLegBuffer, getLastChildPath, getLeftChildIndent, getMaximumSize, getMinimumSize, getModel, getPathForRow, getPreferredMinSize, getPreferredSize, getPreferredSize, getRightChildIndent, getRowCount, getRowForPath, getRowHeight, getRowX, getSelectionModel, getShowsRootHandles, getVerticalLegBuffer, handleExpandControlClick, installComponents, installDefaults, installUI, isEditable, isEditing, isLargeModel, isLeaf, isLocationInExpandControl, isMultiSelectEvent, isRootVisible, isToggleEvent, isToggleSelectionEvent, paintHorizontalPartOfLeg, paintRow, paintVerticalLine, pathWasCollapsed, pathWasExpanded, prepareForUIInstall, prepareForUIUninstall, setCellEditor, setCellRenderer, setCollapsedIcon, setEditable, setExpandedIcon, setHashColor, setLargeModel, setLeftChildIndent, setPreferredMinSize, setRightChildIndent, setRootVisible, setRowHeight, setSelectionModel, setShowsRootHandles, shouldPaintExpandControl, startEditing, startEditingAtPath, stopEditing, toggleExpandState, uninstallComponents, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, uninstallUI, updateCachedPreferredSize, updateCellEditor, updateDepthOffset, updateExpandedDescendants, updateLayoutCacheExpandedNodes, updateRenderer, updateSize
 
Methods inherited from class javax.swing.plaf.ComponentUI
contains, getAccessibleChild, getAccessibleChildrenCount, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SourceListTreeUI

public SourceListTreeUI()
Method Detail

completeUIInstall

protected void completeUIInstall()
Overrides:
completeUIInstall in class BasicTreeUI

installListeners

protected void installListeners()
Overrides:
installListeners in class BasicTreeUI

installKeyboardActions

protected void installKeyboardActions()
Overrides:
installKeyboardActions in class BasicTreeUI

setModel

protected void setModel(TreeModel model)
Overrides:
setModel in class BasicTreeUI

getColorScheme

public SourceListColorScheme getColorScheme()
Gets the SourceListColorScheme that this SourceListTreeUI uses to paint.

Returns:
the SourceListColorScheme that this SourceList uses to paint.

setColorScheme

public void setColorScheme(SourceListColorScheme colorScheme)
Sets the SourceListColorScheme that this SourceListTreeUI uses to paint.

Parameters:
colorScheme - the SourceListColorScheme that this SourceList uses to paint.

paintExpandControl

protected void paintExpandControl(Graphics g,
                                  Rectangle clipBounds,
                                  Insets insets,
                                  Rectangle bounds,
                                  TreePath path,
                                  int row,
                                  boolean isExpanded,
                                  boolean hasBeenExpanded,
                                  boolean isLeaf)
Overrides:
paintExpandControl in class BasicTreeUI

createNodeDimensions

protected AbstractLayoutCache.NodeDimensions createNodeDimensions()
Overrides:
createNodeDimensions in class BasicTreeUI

getPathBounds

public Rectangle getPathBounds(JTree tree,
                               TreePath path)
Overrides:
getPathBounds in class BasicTreeUI

paint

public void paint(Graphics g,
                  JComponent c)
Overrides:
paint in class BasicTreeUI

paintHorizontalLine

protected void paintHorizontalLine(Graphics g,
                                   JComponent c,
                                   int y,
                                   int left,
                                   int right)
Overrides:
paintHorizontalLine in class BasicTreeUI

paintVerticalPartOfLeg

protected void paintVerticalPartOfLeg(Graphics g,
                                      Rectangle clipBounds,
                                      Insets insets,
                                      TreePath path)
Overrides:
paintVerticalPartOfLeg in class BasicTreeUI

selectPathForEvent

protected void selectPathForEvent(TreePath path,
                                  MouseEvent event)
Overrides:
selectPathForEvent in class BasicTreeUI