javax.swing.plaf.basic
public class BasicTreeUI extends TreeUI
JTree
according to
the Basic look and feel.
See Also: JTree
Nested Class Summary | |
---|---|
class | BasicTreeUI.CellEditorHandler
Listener responsible for getting cell editing events and updating the tree
accordingly. |
class | BasicTreeUI.ComponentHandler
Updates the preferred size when scrolling, if necessary. |
class | BasicTreeUI.FocusHandler
Repaints the lead selection row when focus is lost/grained. |
class | BasicTreeUI.KeyHandler
This is used to get multiple key down events to appropriately genereate
events. |
class | BasicTreeUI.MouseHandler
MouseListener is responsible for updating the selection based on mouse
events. |
class | BasicTreeUI.MouseInputHandler
MouseInputHandler handles passing all mouse events, including mouse motion
events, until the mouse is released to the destination it is constructed
with. |
class | BasicTreeUI.NodeDimensionsHandler
Class responsible for getting size of node, method is forwarded to
BasicTreeUI method. |
class | BasicTreeUI.PropertyChangeHandler
PropertyChangeListener for the tree. |
class | BasicTreeUI.SelectionModelPropertyChangeHandler
Listener on the TreeSelectionModel, resets the row selection if any of the
properties of the model change. |
class | BasicTreeUI.TreeCancelEditingAction
The action to cancel editing on this tree. |
class | BasicTreeUI.TreeExpansionHandler
Updates the TreeState in response to nodes expanding/collapsing. |
class | BasicTreeUI.TreeHomeAction
TreeHomeAction is used to handle end/home actions. |
class | BasicTreeUI.TreeIncrementAction
TreeIncrementAction is used to handle up/down actions. |
class | BasicTreeUI.TreeModelHandler
Forwards all TreeModel events to the TreeState. |
class | BasicTreeUI.TreePageAction
TreePageAction handles page up and page down events. |
class | BasicTreeUI.TreeSelectionHandler
Listens for changes in the selection model and updates the display
accordingly. |
class | BasicTreeUI.TreeToggleAction
For the first selected row expandedness will be toggled. |
class | BasicTreeUI.TreeTraverseAction
TreeTraverseAction is the action used for left/right keys. |
Field Summary | |
---|---|
protected TreeCellEditor | cellEditor Editor for the tree. |
protected Icon | collapsedIcon Collapse Icon for the tree. |
protected boolean | createdCellEditor
Set to true if editor that is currently in the tree was created by this
instance. |
protected boolean | createdRenderer
Set to true if the renderer that is currently in the tree was created by
this instance. |
protected TreeCellRenderer | currentCellRenderer Renderer that is being used to do the actual cell drawing. |
protected int | depthOffset
How much the depth should be offset to properly calculate x locations. |
protected Hashtable<TreePath,Boolean> | drawingCache Used for minimizing the drawing of vertical lines. |
protected Component | editingComponent
When editing, this will be the Component that is doing the actual editing. |
protected TreePath | editingPath Path that is being edited. |
protected int | editingRow
Row that is being edited. |
protected boolean | editorHasDifferentSize Set to true if the editor has a different size than the renderer. |
protected Icon | expandedIcon Expanded Icon for the tree. |
protected boolean | largeModel
True if doing optimizations for a largeModel. |
protected int | lastSelectedRow Index of the row that was last selected. |
protected int | leftChildIndent Distance between left margin and where vertical dashes will be drawn. |
protected AbstractLayoutCache.NodeDimensions | nodeDimensions Responsible for telling the TreeState the size needed for a node. |
protected Dimension | preferredMinSize Minimum size needed to completely display all the nodes. |
protected Dimension | preferredSize Size needed to completely display all the nodes. |
protected CellRendererPane | rendererPane Used to paint the TreeCellRenderer. |
protected int | rightChildIndent
Distance between leftChildIndent and where cell contents will be drawn. |
protected boolean | stopEditingInCompleteEditing
Set to false when editing and shouldSelectCall() returns true meaning the
node should be selected before editing, used in completeEditing.
|
protected int | totalChildIndent
Total fistance that will be indented. |
protected JTree | tree Component that we're going to be drawing onto. |
protected TreeModel | treeModel Used to determine what to display. |
protected TreeSelectionModel | treeSelectionModel Model maintaining the selection. |
protected AbstractLayoutCache | treeState Object responsible for handling sizing and expanded issues. |
protected boolean | validCachedPreferredSize Is the preferredSize valid? |
Constructor Summary | |
---|---|
BasicTreeUI()
Creates a new BasicTreeUI object. |
Method Summary | |
---|---|
void | cancelEditing(JTree tree)
Cancels the current editing session.
|
protected void | checkForClickInExpandControl(TreePath path, int mouseX, int mouseY)
If the mouseX and mouseY are in the expand or
collapse region of the row, this will toggle the row.
|
protected void | completeEditing()
Messages to stop the editing session. |
protected void | completeEditing(boolean messageStop, boolean messageCancel, boolean messageTree)
Stops the editing session. |
protected void | completeUIInstall()
Invoked from installUI after all the defaults/listeners have been
installed. |
protected void | completeUIUninstall()
Invoked from uninstallUI after all the defaults/listeners have been
uninstalled. |
protected void | configureLayoutCache()
Resets the treeState instance based on the tree we're providing the look
and feel for. |
protected CellEditorListener | createCellEditorListener()
Creates a listener to handle events from the current editor
|
protected CellRendererPane | createCellRendererPane()
Returns the renderer pane that renderer components are placed in.
|
protected ComponentListener | createComponentListener()
Creates and returns a new ComponentHandler. |
protected TreeCellEditor | createDefaultCellEditor()
Creates a default cell editor.
|
protected TreeCellRenderer | createDefaultCellRenderer()
Returns the default cell renderer that is used to do the stamping of each
node.
|
protected FocusListener | createFocusListener()
Creates the listener that is responsible for updating the display when
focus is lost/grained.
|
protected KeyListener | createKeyListener()
Creates the listener reponsible for getting key events from the tree.
|
protected AbstractLayoutCache | createLayoutCache()
Creates the object responsible for managing what is expanded, as well as
the size of nodes.
|
protected MouseListener | createMouseListener()
Creates the listener responsible for updating the selection based on mouse
events.
|
protected AbstractLayoutCache.NodeDimensions | createNodeDimensions()
Creates an instance of NodeDimensions that is able to determine the size of
a given node in the tree. |
protected PropertyChangeListener | createPropertyChangeListener()
Creates a listener that is reponsible for the updates the UI based on how
the tree changes.
|
protected PropertyChangeListener | createSelectionModelPropertyChangeListener()
Creates the listener responsible for getting property change events from
the selection model.
|
protected TreeExpansionListener | createTreeExpansionListener()
Creates and returns the object responsible for updating the treestate when
a nodes expanded state changes.
|
protected TreeModelListener | createTreeModelListener()
Returns a listener that can update the tree when the model changes.
|
protected TreeSelectionListener | createTreeSelectionListener()
Creates the listener that updates the display based on selection change
methods.
|
static ComponentUI | createUI(JComponent c)
Returns an instance of the UI delegate for the specified component.
|
protected void | drawCentered(Component c, Graphics g, Icon icon, int x, int y)
Draws an icon at around a specific position
|
protected void | drawDashedHorizontalLine(Graphics g, int y, int x1, int x2)
Draws a dashed horizontal line.
|
protected void | drawDashedVerticalLine(Graphics g, int x, int y1, int y2)
Draws a dashed vertical line.
|
protected void | ensureRowsAreVisible(int beginRow, int endRow)
Ensures that the rows identified by beginRow through endRow are visible.
|
protected TreeCellEditor | getCellEditor()
Returns the TreeCellEditor for this tree.
|
protected TreeCellRenderer | getCellRenderer()
Return currentCellRenderer, which will either be the trees renderer, or
defaultCellRenderer, which ever was not null.
|
TreePath | getClosestPathForLocation(JTree tree, int x, int y)
Returns the path to the node that is closest to x,y. |
Icon | getCollapsedIcon()
Returns the current collapsed icon.
|
TreePath | getEditingPath(JTree tree)
Returns the path to the element that is being editted.
|
Icon | getExpandedIcon()
Returns the current expanded icon.
|
protected Color | getHashColor()
Returns the Hash color.
|
protected int | getHorizontalLegBuffer()
The horizontal element of legs between nodes starts at the right of the
left-hand side of the child node by default. |
protected TreePath | getLastChildPath(TreePath parent)
Returns a path to the last child of parent
|
int | getLeftChildIndent()
Returns the indent value for the left child.
|
Dimension | getMaximumSize(JComponent c)
Returns the maximum size for the component, which will be the preferred
size if the instance is currently in JTree or (0,0).
|
Dimension | getMinimumSize(JComponent c)
Returns the minimum size for this component. |
protected TreeModel | getModel()
Returns the tree's model
|
Rectangle | getPathBounds(JTree tree, TreePath path)
Returns the Rectangle enclosing the label portion that the last item in
path will be drawn to. |
TreePath | getPathForRow(JTree tree, int row)
Returns the path for passed in row. |
Dimension | getPreferredMinSize()
Gets the preferred minimum size.
|
Dimension | getPreferredSize(JComponent c)
Returns the preferred size to properly display the tree, this is a cover
method for getPreferredSize(c, false).
|
Dimension | getPreferredSize(JComponent c, boolean checkConsistancy)
Returns the preferred size to represent the tree in c. |
int | getRightChildIndent()
Returns the indent value for the right child.
|
int | getRowCount(JTree tree)
Returns the number of rows that are being displayed.
|
int | getRowForPath(JTree tree, TreePath path)
Returns the row that the last item identified in path is visible at. |
protected int | getRowHeight()
Returns the current row height.
|
protected int | getRowX(int row, int depth)
Returns the amount to indent the given row
|
protected TreeSelectionModel | getSelectionModel()
Returns the current selection model.
|
protected boolean | getShowsRootHandles()
Returns true if the node handles are to be displayed.
|
protected int | getVerticalLegBuffer()
The vertical element of legs between nodes starts at the bottom of the
parent node by default. |
protected void | handleExpandControlClick(TreePath path, int mouseX, int mouseY)
Messaged when the user clicks the particular row, this invokes
toggleExpandState.
|
protected void | installComponents()
Installs the subcomponents of the tree, which is the renderer pane. |
protected void | installDefaults()
Install all defaults for the tree. |
protected void | installKeyboardActions()
Install all keyboard actions for this |
protected void | installListeners()
Install all listeners for this |
void | installUI(JComponent c)
Install the UI for the component
|
protected boolean | isEditable()
Returns true if the receiver allows editing.
|
boolean | isEditing(JTree tree)
Returns true if the tree is being edited. |
protected boolean | isLargeModel()
Returns true if largeModel is set
|
protected boolean | isLeaf(int row)
Returns true if the node at row is a leaf.
|
protected boolean | isLocationInExpandControl(TreePath path, int mouseX, int mouseY)
Returns true if the mouseX and mouseY fall in
the area of row that is used to expand/collpse the node and the node at row
does not represent a leaf.
|
protected boolean | isMultiSelectEvent(MouseEvent event)
Returning true signifies a mouse event on the node should select from the
anchor point. |
protected boolean | isRootVisible()
Returns true if the root is visible.
|
protected boolean | isToggleEvent(MouseEvent event)
Returning true indicates the row under the mouse should be toggled based on
the event. |
protected boolean | isToggleSelectionEvent(MouseEvent event)
Returning true signifies a mouse event on the node should toggle the
selection of only the row under the mouse. |
void | paint(Graphics g, JComponent c)
Paints the specified component appropriate for the look and feel. |
protected void | paintExpandControl(Graphics g, Rectangle clipBounds, Insets insets, Rectangle bounds, TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)
Paints the expand (toggle) part of a row. |
protected void | paintHorizontalLine(Graphics g, JComponent c, int y, int left, int right)
Draws a horizontal line using the given graphic context
|
protected void | paintHorizontalPartOfLeg(Graphics g, Rectangle clipBounds, Insets insets, Rectangle bounds, TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)
Paints the horizontal part of the leg. |
protected void | paintRow(Graphics g, Rectangle clipBounds, Insets insets, Rectangle bounds, TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)
Paints the renderer part of a row. |
protected void | paintVerticalLine(Graphics g, JComponent c, int x, int top, int bottom)
Draws a vertical line using the given graphic context
|
protected void | paintVerticalPartOfLeg(Graphics g, Rectangle clipBounds, Insets insets, TreePath path)
Paints the vertical part of the leg. |
protected void | pathWasCollapsed(TreePath path)
Messaged from the VisibleTreeNode after it has collapsed |
protected void | pathWasExpanded(TreePath path)
Messaged from the VisibleTreeNode after it has been expanded.
|
protected void | prepareForUIInstall()
Invoked after the tree instance variable has been set, but before any
default/listeners have been installed. |
protected void | prepareForUIUninstall()
Prepares for the UI to uninstall. |
protected void | selectPathForEvent(TreePath path, MouseEvent event)
Messaged to update the selection based on a MouseEvent over a particular
row. |
protected void | setCellEditor(TreeCellEditor editor)
Sets the cell editor.
|
protected void | setCellRenderer(TreeCellRenderer tcr)
Sets the TreeCellRenderer to tcr . |
void | setCollapsedIcon(Icon newG)
Sets the collapsed icon.
|
protected void | setEditable(boolean newValue)
Configures the receiver to allow, or not allow, editing.
|
void | setExpandedIcon(Icon newG)
Sets the expanded icon.
|
protected void | setHashColor(Color color)
Sets the Hash color.
|
protected void | setLargeModel(boolean largeModel)
Updates the componentListener, if necessary.
|
void | setLeftChildIndent(int newAmount)
Sets the left child's indent value.
|
protected void | setModel(TreeModel model)
Sets the tree's model.
|
void | setPreferredMinSize(Dimension newSize)
Sets the preferred minimum size.
|
void | setRightChildIndent(int newAmount)
Sets the right child's indent value.
|
protected void | setRootVisible(boolean newValue)
Sets the root to being visible.
|
protected void | setRowHeight(int rowHeight)
Sets the row height.
|
protected void | setSelectionModel(TreeSelectionModel newLSM)
Resets the selection model. |
protected void | setShowsRootHandles(boolean newValue)
Determines whether the node handles are to be displayed.
|
protected boolean | shouldPaintExpandControl(TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)
Returns true if the expand (toggle) control should be drawn for the
specified row.
|
protected boolean | startEditing(TreePath path, MouseEvent event)
Will start editing for node if there is a cellEditor and shouldSelectCall
returns true. |
void | startEditingAtPath(JTree tree, TreePath path)
Selects the last item in path and tries to edit it. |
boolean | stopEditing(JTree tree)
Stops the current editing session. |
protected void | toggleExpandState(TreePath path)
Expands path if it is not expanded, or collapses row if it is expanded. |
protected void | uninstallComponents()
Uninstall the rendererPane. |
protected void | uninstallDefaults()
Uninstall the defaults for the tree |
protected void | uninstallKeyboardActions()
Uninstall all keyboard actions. |
protected void | uninstallListeners()
Uninstall all registered listeners |
void | uninstallUI(JComponent c)
Uninstall the UI for the component
|
protected void | updateCachedPreferredSize()
Updates the preferredSize instance variable, which is
returned from getPreferredSize() . |
protected void | updateCellEditor()
Updates the cellEditor based on editability of the JTree that we're
contained in. |
protected void | updateDepthOffset()
Updates how much each depth should be offset by. |
protected void | updateExpandedDescendants(TreePath path)
Updates the expanded state of all the descendants of the path
by getting the expanded descendants from the tree and forwarding to the
tree state.
|
protected void | updateLayoutCacheExpandedNodes()
Make all the nodes that are expanded in JTree expanded in LayoutCache. |
protected void | updateRenderer()
Messaged from the tree we're in when the renderer has changed. |
protected void | updateSize()
Marks the cached size as being invalid, and messages the tree with
treeDidChange . |
Parameters: tree is the tree to cancel the editing session on.
mouseX
and mouseY
are in the expand or
collapse region of the row, this will toggle the row.
Parameters: path the path we are concerned with mouseX is the cursor's x position mouseY is the cursor's y position
getInvokesStopCellEditing
, stopCellEditing will be invoked
on the current editor. Then completeEditing will be messaged with false,
true, false to cancel any lingering editing.Parameters: messageStop message to stop editing messageCancel message to cancel editing messageTree message to treeModel
Returns: the CellEditorListener that handles events from the current editor
Returns: the rendererpane that render components are placed in.
Returns: a new ComponentHandler.
Returns: the default cell editor.
Returns: the default cell renderer that is used to do the stamping of each node.
Returns: the FocusListener responsible for updating.
Returns: the KeyListener responsible for getting key events.
Returns: the object responsible for managing what is expanded.
Returns: the MouseListener responsible for updating.
Returns: the NodeDimensions of a given node in the tree
Returns: the PropertyChangeListener that is reposnsible for the updates
UNKNOWN: the PropertyChangeListener reponsible for getting property change events from the selection model.
Returns: the TreeExpansionListener responsible for updating the treestate
Returns: a listener that can update the tree when the model changes.
Returns: the TreeSelectionListener responsible for updating.
Parameters: c the JComponent
for which we need a UI delegate for.
Returns: the ComponentUI
for c.
Parameters: c is the component the new line will belong to g is the graphic context icon is the icon which will be drawn x is the center position in x-direction y is the center position in y-direction
Parameters: g - the graphics configuration. y - the y location to start drawing at x1 - the x location to start drawing at x2 - the x location to finish drawing at
Parameters: g - the graphics configuration. x - the x location to start drawing at y1 - the y location to start drawing at y2 - the y location to finish drawing at
Parameters: beginRow is the first row endRow is the last row
TreeCellEditor
for this tree.
Returns: the cellEditor for this tree.
Returns: the current Cell Renderer
Parameters: tree the tree to search for the closest path x is the x coordinate of the location to search y is the y coordinate of the location to search
Returns: the tree path closes to x,y.
Returns: the current collapsed icon.
Parameters: tree is the tree to get the editing path from.
Returns: the path that is being edited.
Returns: the current expanded icon.
Returns: the Color
of the Hash.
Returns: the horizontal leg buffer
parent
Parameters: parent is the topmost path to specified
Returns: a path to the last child of parent
Returns: the indent value for the left child.
Parameters: c the component whose preferred size is being queried
Returns: the max size or null
Parameters: c the component whose min size is being queried.
UNKNOWN: the preferred size or null
Returns: treeModel
Parameters: tree is the current tree the path will be drawn to. path is the current path the tree to draw to.
Returns: the Rectangle enclosing the label portion that the last item in the path will be drawn to.
Parameters: tree is the current tree to return path for. row is the row number of the row to return.
Returns: the path for passed in row. If row is not visible null is returned.
UNKNOWN: the preferred minimum size.
Parameters: c the component whose preferred size is being queried; this argument is often ignored but might be used if the UI object is stateless and shared by multiple components
Returns: the preferred size
Parameters: c the component whose preferred size is being queried. checkConsistancy if true must check consistancy
Returns: the preferred size
Returns: the indent value for the right child.
Parameters: tree is the current tree to return the number of rows for.
Returns: the number of rows being displayed.
Parameters: tree is the current tree to return the row for. path is the path used to find the row.
Returns: the row that the last item identified in path is visible at. Will return -1 if any of the elments in the path are not currently visible.
Returns: current row height.
Returns: amount to indent the given row.
Returns: the current selection model.
Returns: true if the node handles are to be displayed.
Returns: the vertical leg buffer
Parameters: path the path we are concerned with mouseX is the cursor's x position mouseY is the cursor's y position
Parameters: c the component to install UI for
Returns: true if the receiver allows editing.
Parameters: tree is the tree to check for editing.
Returns: true if the tree is being edited.
Returns: true if largeModel is set, otherwise false.
row
is a leaf.
Parameters: row is the row we are concerned with.
Returns: true if the node at row
is a leaf.
mouseX
and mouseY
fall in
the area of row that is used to expand/collpse the node and the node at row
does not represent a leaf.
Parameters: path the path we are concerned with mouseX is the cursor's x position mouseY is the cursor's y position
Returns: true if the mouseX
and mouseY
fall in
the area of row that is used to expand/collpse the node and the
node at row does not represent a leaf.
Parameters: event is the MouseEvent performed on the node.
Returns: true signifies a mouse event on the node should select from the anchor point.
Returns: true if the root is visible.
Parameters: event is the MouseEvent performed on the row.
Returns: true indicates the row under the mouse should be toggled based on the event.
Parameters: event is the MouseEvent performed on the row.
Returns: true signifies a mouse event on the node should toggle the selection of only the row under the mouse.
Parameters: g the Graphics context in which to paint c the component being painted; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
Parameters: g - the graphics configuration clipBounds - insets - bounds - bounds of expand control path - path to draw control for row - row to draw control for isExpanded - is the row expanded hasBeenExpanded - has the row already been expanded isLeaf - is the path a leaf
Parameters: g is the graphic context c is the component the new line will belong to y is the vertical position left specifies the left point of the line right specifies the right point of the line
Parameters: g - the graphics configuration clipBounds - insets - bounds - bounds of the cell path - path to draw leg for row - row to start drawing at isExpanded - is the row expanded hasBeenExpanded - has the row already been expanded isLeaf - is the path a leaf
Parameters: g - the graphics configuration clipBounds - insets - bounds - bounds of expand control path - path to draw control for row - row to draw control for isExpanded - is the row expanded hasBeenExpanded - has the row already been expanded isLeaf - is the path a leaf
Parameters: g is the graphic context c is the component the new line will belong to x is the horizonal position top specifies the top of the line bottom specifies the bottom of the line
Parameters: g - the graphics configuration. clipBounds - insets - path - the path to draw the vertical part for.
Parameters: path is the path that has been expanded.
Parameters: path is the path selected for an event event is the MouseEvent performed on the path.
See Also: isToggleSelectionEvent isMultiSelectEvent
Parameters: editor to set the cellEditor to.
tcr
. This invokes
updateRenderer
.
Parameters: tcr is the new TreeCellRenderer.
Parameters: newG is the new collapsed icon.
Parameters: newValue sets the receiver to allow editing if true.
Parameters: newG is the new expanded icon.
Parameters: color the Color
to set the Hash to.
Parameters: largeModel sets this.largeModel to it.
Parameters: newAmount is the new indent value for the left child.
Parameters: model to set the treeModel to.
Parameters: newSize is the new preferred minimum size.
Parameters: newAmount is the new indent value for the right child.
Parameters: newValue sets the visibility of the root
Parameters: rowHeight is the height to set this.rowHeight to.
Parameters: newLSM resets the selection model.
Parameters: newValue sets whether or not node handles should be displayed.
Parameters: path - current path to check for. row - current row to check for. isExpanded - true if the path is expanded hasBeenExpanded - true if the path has been expanded already isLeaf - true if the row is a lead
Parameters: path is the path to start editing event is the MouseEvent performed on the path
Returns: true if successful
Parameters: tree is the tree to edit on. path is the path in tree to edit on.
Parameters: tree is the tree to stop the editing on
Returns: true if the editor allows the editing session to stop.
Parameters: path the path we are concerned with
Parameters: c the component to uninstall UI for
preferredSize
instance variable, which is
returned from getPreferredSize()
.path
by getting the expanded descendants from the tree and forwarding to the
tree state.
Parameters: path the path used to update the expanded states
treeDidChange
.