Methods
public void
cancelEditing
(
JTree tree)
[Specified in TreeUI]
Cancels the current editing session.
protected void
checkForClickInExpandControl
(
TreePath path,
int mouseX,
int mouseY)
If the mouseX
and mouseY
are in the
expand/collapse region of the row
, this will toggle
the row.
protected void
completeEditing
()
Messages to stop the editing session.
Messages to stop the editing session. If the UI the receiver
is providing the look and feel for returns true from
getInvokesStopCellEditing
, stopCellEditing will
invoked on the current editor. Then completeEditing will
be messaged with false, true, false to cancel any lingering
editing.
protected void
completeEditing
(
boolean messageStop,
boolean messageCancel,
boolean messageTree)
Stops the editing session.
Stops the editing session. If messageStop is true the editor
is messaged with stopEditing, if messageCancel is true the
editor is messaged with cancelEditing. If messageTree is true
the treeModel is messaged with valueForPathChanged.
protected void
completeUIInstall
()
Invoked from installUI after all the defaults/listeners have been
installed.
protected void
completeUIUninstall
()
protected void
configureLayoutCache
()
Resets the TreeState instance based on the tree we're providing the
look and feel for.
public boolean
contains
(
JComponent c,
int x,
int y)
[Inherited From ComponentUI]
Returns
true
if the specified
x,y location is
contained within the look and feel's defined shape of the specified
component.
Returns
true
if the specified
x,y location is
contained within the look and feel's defined shape of the specified
component.
x
and
y
are defined to be relative
to the coordinate system of the specified component. Although
a component's
bounds
is constrained to a rectangle,
this method provides the means for defining a non-rectangular
shape within those bounds for the purpose of hit detection.
Parameters:
-
c - the component where the
x,y location is being queried;
this argument is often ignored,
but might be used if the UI object is stateless
and shared by multiple components
-
x - the
x coordinate of the point
-
y - the
y coordinate of the point
See Also:
JComponent.contains(int, int)
,
Component.contains(int, int)
,
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.
Creates and returns a new ComponentHandler. This is used for
the large model to mark the validCachedPreferredSize as invalid
when the component moves.
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 a listener that is responsible for updating the display
when focus is lost/gained.
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 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 responsible that 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 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.
protected void
drawDashedHorizontalLine
(
Graphics g,
int y,
int x1,
int x2)
protected void
drawDashedVerticalLine
(
Graphics g,
int x,
int y1,
int y2)
protected void
ensureRowsAreVisible
(
int beginRow,
int endRow)
Ensures that the rows identified by beginRow through endRow are
visible.
public Accessible
getAccessibleChild
(
JComponent c,
int i)
[Inherited From ComponentUI]
Returns the
i
th
Accessible
child of the object.
Returns the
i
th
Accessible
child of the object.
UIs might need to override this if they present areas on the
screen that can be viewed as components, but actual components
are not used for presenting those areas.
Note: As of v1.3, it is recommended that developers call
Component.AccessibleAWTComponent.getAccessibleChild()
instead of
this method.
Returns:
the i
th Accessible
child of the object
Parameters:
- i - zero-based index of child
See Also:
ComponentUI.getAccessibleChildrenCount(javax.swing.JComponent)
,
public int
getAccessibleChildrenCount
(
JComponent c)
[Inherited From ComponentUI]
Returns the number of accessible children in the object.
Returns the number of accessible children in the object. If all
of the children of this object implement
Accessible
,
this
method should return the number of children of this object.
UIs might wish to override this if they present areas on the
screen that can be viewed as components, but actual components
are not used for presenting those areas.
Note: As of v1.3, it is recommended that developers call
Component.AccessibleAWTComponent.getAccessibleChildrenCount()
instead
of this method.
Returns:
the number of accessible children in the object
See Also:
ComponentUI.getAccessibleChild(javax.swing.JComponent, int)
,
public int
getBaseline
(
JComponent c,
int width,
int height)
[Overrides ComponentUI]
Returns the baseline.
protected TreeCellRenderer
getCellRenderer
()
Return currentCellRenderer, which will either be the trees
renderer, or defaultCellRenderer, which ever wasn't null.
public TreePath
getClosestPathForLocation
(
JTree tree,
int x,
int y)
[Specified in TreeUI]
Returns the path to the node that is closest to x,y.
Returns the path to the node that is closest to x,y. If
there is nothing currently visible this will return null, otherwise
it'll always return a valid path. If you need to test if the
returned object is exactly at x, y you should get the bounds for
the returned path and test x, y against that.
public Icon
getCollapsedIcon
()
public TreePath
getEditingPath
(
JTree tree)
[Specified in TreeUI]
Returns the path to the element that is being edited.
public Icon
getExpandedIcon
()
protected Color
getHashColor
()
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.
The horizontal element of legs between nodes starts at the
right of the left-hand side of the child node by default. This
method makes the leg end before that.
pack-private InputMap
getInputMap
(
int condition)
protected TreePath
getLastChildPath
(
TreePath parent)
Returns a path to the last child of parent
.
public int
getLeftChildIndent
()
public Dimension
getMaximumSize
(
JComponent c)
[Overrides ComponentUI]
Returns the maximum size for this component, which will be the
preferred size if the instance is currently in a JTree, or 0, 0.
public Dimension
getMinimumSize
(
JComponent c)
[Overrides ComponentUI]
Returns the minimum size for this component.
Returns the minimum size for this component. Which will be
the min preferred size or 0, 0.
public Rectangle
getPathBounds
(
JTree tree,
TreePath path)
[Specified in TreeUI]
Returns the Rectangle enclosing the label portion that the
last item in path will be drawn into.
Returns the Rectangle enclosing the label portion that the
last item in path will be drawn into. Will return null if
any component in path is currently valid.
public TreePath
getPathForRow
(
JTree tree,
int row)
[Specified in TreeUI]
Returns the path for passed in row.
Returns the path for passed in row. If row is not visible
null is returned.
public Dimension
getPreferredMinSize
()
Returns the minimum preferred size.
public Dimension
getPreferredSize
(
JComponent c)
[Overrides ComponentUI]
Returns the preferred size to properly display the tree,
this is a cover method for getPreferredSize(c, false).
public Dimension
getPreferredSize
(
JComponent c,
boolean checkConsistancy)
Returns the preferred size to represent the tree in
c.
Returns the preferred size to represent the tree in
c. If
checkConsistancy is true
checkConsistancy is messaged first.
public int
getRightChildIndent
()
public int
getRowCount
(
JTree tree)
[Specified in TreeUI]
Returns the number of rows that are being displayed.
public int
getRowForPath
(
JTree tree,
TreePath path)
[Specified in TreeUI]
Returns the row that the last item identified in path is visible
at.
Returns the row that the last item identified in path is visible
at. Will return -1 if any of the elements in path are not
currently visible.
protected int
getRowHeight
()
protected int
getRowX
(
int row,
int depth)
Returns the location, along the x-axis, to render a particular row
at.
Returns the location, along the x-axis, to render a particular row
at. The return value does not include any Insets specified on the JTree.
This does not check for the validity of the row or depth, it is assumed
to be correct and will not throw an Exception if the row or depth
doesn't match that of the tree.
Returns:
amount to indent the given row.
Parameters:
-
row - Row to return x location for
-
depth - Depth of the row
Since:
1.5
protected boolean
getShowsRootHandles
()
protected int
getVerticalLegBuffer
()
The vertical element of legs between nodes starts at the bottom of the
parent node by default.
The vertical element of legs between nodes starts at the bottom of the
parent node by default. This method makes the leg start below that.
protected void
handleExpandControlClick
(
TreePath path,
int mouseX,
int mouseY)
Messaged when the user clicks the particular row, this invokes
toggleExpandState.
protected void
installComponents
()
Intalls the subcomponents of the tree, which is the renderer pane.
protected void
installDefaults
()
protected void
installKeyboardActions
()
protected void
installListeners
()
protected boolean
isEditable
()
public boolean
isEditing
(
JTree tree)
[Specified in TreeUI]
Returns true if the tree is being edited.
Returns true if the tree is being edited. The item that is being
edited can be returned by getEditingPath().
protected boolean
isLargeModel
()
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 mouseX
and mouseY
fall
in the area of row that is used to expand/collapse 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
()
protected boolean
isToggleEvent
(
MouseEvent event)
Returning true indicates the row under the mouse should be toggled
based on the event.
Returning true indicates the row under the mouse should be toggled
based on the event. This is invoked after checkForClickInExpandControl,
implying the location is not in the expand (toggle) control
protected boolean
isToggleSelectionEvent
(
MouseEvent event)
Returning true signifies a mouse event on the node should toggle
the selection of only the row under mouse.
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.
Paints the expand (toggle) part of a row. The receiver should
NOT modify
clipBounds
, or
insets
.
protected void
paintHorizontalLine
(
Graphics g,
JComponent c,
int y,
int left,
int right)
Paints a horizontal line.
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.
Paints the horizontal part of the leg. The receiver should
NOT modify
clipBounds
, or
insets
.
NOTE: parentRow
can be -1 if the root is not visible.
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.
Paints the renderer part of a row. The receiver should
NOT modify
clipBounds
, or
insets
.
protected void
paintVerticalLine
(
Graphics g,
JComponent c,
int x,
int top,
int bottom)
Paints a vertical line.
protected void
paintVerticalPartOfLeg
(
Graphics g,
Rectangle clipBounds,
Insets insets,
TreePath path)
Paints the vertical part of the leg.
Paints the vertical part of the leg. The receiver should
NOT modify
clipBounds
,
insets
.
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 defaults/listeners have been installed.
protected void
prepareForUIUninstall
()
protected void
selectPathForEvent
(
TreePath path,
MouseEvent event)
Messaged to update the selection based on a MouseEvent over a
particular row.
Messaged to update the selection based on a MouseEvent over a
particular row. If the event is a toggle selection event, the
row is either selected, or deselected. If the event identifies
a multi selection event, the selection is updated from the
anchor point. Otherwise the row is selected, and if the event
specified a toggle event the row is expanded/collapsed.
protected void
setCellEditor
(
TreeCellEditor editor)
Sets the cell editor.
protected void
setCellRenderer
(
TreeCellRenderer tcr)
Sets the TreeCellRenderer to
tcr
.
Sets the TreeCellRenderer to
tcr
. This invokes
updateRenderer
.
public void
setCollapsedIcon
(
Icon newG)
protected void
setEditable
(
boolean newValue)
Configures the receiver to allow, or not allow, editing.
public void
setExpandedIcon
(
Icon newG)
protected void
setHashColor
(
Color color)
protected void
setLargeModel
(
boolean largeModel)
Updates the componentListener, if necessary.
public void
setLeftChildIndent
(
int newAmount)
protected void
setModel
(
TreeModel model)
Sets the TreeModel.
public void
setPreferredMinSize
(
Dimension newSize)
Sets the preferred minimum size.
public void
setRightChildIndent
(
int newAmount)
protected void
setRootVisible
(
boolean newValue)
Sets the root to being visible.
protected void
setRowHeight
(
int rowHeight)
Sets the row height, this is forwarded to the treeState.
protected void
setSelectionModel
(
TreeSelectionModel newLSM)
Resets the selection model.
Resets the selection model. The appropriate listener are installed
on the 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
shouldSelectCell returns true.
Will start editing for node if there is a cellEditor and
shouldSelectCell returns true.
This assumes that path is valid and visible.
public void
startEditingAtPath
(
JTree tree,
TreePath path)
[Specified in TreeUI]
Selects the last item in path and tries to edit it.
Selects the last item in path and tries to edit it. Editing will
fail if the CellEditor won't allow it for the selected item.
public boolean
stopEditing
(
JTree tree)
[Specified in TreeUI]
Stops the current editing session.
Stops the current editing session. This has no effect if the
tree isn't being edited. Returns true if the editor allows the
editing session to stop.
protected void
toggleExpandState
(
TreePath path)
Expands path if it is not expanded, or collapses row if it is expanded.
Expands path if it is not expanded, or collapses row if it is expanded.
If expanding a path and JTree scrolls on expand, ensureRowsAreVisible
is invoked to scroll as many of the children to visible as possible
(tries to scroll to last visible descendant of path).
protected void
uninstallComponents
()
Uninstalls the renderer pane.
protected void
uninstallDefaults
()
protected void
uninstallKeyboardActions
()
protected void
uninstallListeners
()
public void
update
(
Graphics g,
JComponent c)
[Inherited From ComponentUI]
Notifies this UI delegate that it's time to paint the specified
component.
Notifies this UI delegate that it's time to paint the specified
component. This method is invoked by
JComponent
when the specified component is being painted.
By default this method will fill the specified component with
its background color (if its
opaque
property is
true
) and then immediately call
paint
.
In general this method need not be overridden by subclasses;
all look-and-feel rendering code should reside in the
paint
method.
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
See Also:
ComponentUI.paint(java.awt.Graphics, javax.swing.JComponent)
,
JComponent.paintComponent(java.awt.Graphics)
,
protected void
updateCachedPreferredSize
()
Updates the
preferredSize
instance variable,
which is returned from
getPreferredSize()
.
Updates the
preferredSize
instance variable,
which is returned from
getPreferredSize()
.
For left to right orientations, the size is determined from the
current AbstractLayoutCache. For RTL orientations, the preferred size
becomes the width minus the minimum x position.
protected void
updateCellEditor
()
Updates the cellEditor based on the editability of the JTree that
we're contained in.
Updates the cellEditor based on the editability of the JTree that
we're contained in. If the tree is editable but doesn't have a
cellEditor, a basic one will be used.
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 path
by getting the expanded descendants from the tree and forwarding
to the tree state.
protected void
updateLayoutCacheExpandedNodes
()
Makes all the nodes that are expanded in JTree expanded in LayoutCache.
Makes all the nodes that are expanded in JTree expanded in LayoutCache.
This invokes updateExpandedDescendants with the root path.
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
.
Fields
protectedtransient
Icon collapsedIcon
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.
protectedtransient
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.
How much the depth should be offset to properly calculate
x locations. This is based on whether or not the root is visible,
and if the root handles are visible.
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.
Row that is being edited. Should only be referenced if
editingComponent is not null.
protected
boolean editorHasDifferentSize
Set to true if the editor has a different size than the renderer.
protectedtransient
Icon expandedIcon
protected
boolean largeModel
True if doing optimizations for a largeModel.
True if doing optimizations for a largeModel. Subclasses that
don't support this may wish to override createLayoutCache to not
return a FixedHeightLayoutCache instance.
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
NodeDimensions nodeDimensions
Reponsible for telling the TreeState the size needed for a node.
protected
Dimension preferredMinSize
Minimum preferred size.
protected
Dimension preferredSize
Size needed to completely display all the nodes.
protected
int rightChildIndent
Distance to add to leftChildIndent to determine where cell
contents will be drawn.
protected
boolean stopEditingInCompleteEditing
Set to false when editing and shouldSelectCell() returns true meaning
the node should be selected before editing, used in completeEditing.
protected
int totalChildIndent
Total distance that will be indented.
Total distance that will be indented. The sum of leftChildIndent
and rightChildIndent.
protected
JTree tree
Component that we're going to be drawing into.
protected
TreeModel treeModel
Used to determine what to display.
protected
AbstractLayoutCache treeState
Object responsible for handling sizing and expanded issues.
protected
boolean validCachedPreferredSize
Is the preferredSize valid?
Nested Classes
BasicTreeUI.MouseInputHandler
MouseInputHandler handles passing all mouse events,
including mouse motion events, until the mouse is released to
the destination it is constructed with.