java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.TreeUI
javax.swing.plaf.basic.BasicTreeUI
- Direct Known Subclasses:
MetalTreeUI
,SynthTreeUI
public class BasicTreeUI extends TreeUI
The basic L&F for a hierarchical data structure.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description 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/gained.class
BasicTreeUI.KeyHandler
This is used to get multiple key down events to appropriately generate events.class
BasicTreeUI.MouseHandler
TreeMouseListener 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
ActionListener that invokes cancelEditing when action performed.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
Fields Modifier and Type Field Description protected TreeCellEditor
cellEditor
Editor for the tree.protected Icon
collapsedIcon
The collapsed icon.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
The expanded icon.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
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 CellRendererPane
rendererPane
Used to paint the TreeCellRenderer.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.protected JTree
tree
Component that we're going to be drawing into.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
Constructors Constructor Description BasicTreeUI()
Constructs a new instance ofBasicTreeUI
. -
Method Summary
Modifier and Type Method Description void
cancelEditing(JTree tree)
Cancels the current editing session.protected void
checkForClickInExpandControl(TreePath path, int mouseX, int mouseY)
If themouseX
andmouseY
are in the expand/collapse region of therow
, 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()
Uninstalls UI.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 a listener that is responsible for updating the display when focus is lost/gained.protected KeyListener
createKeyListener()
Creates the listener responsible 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 ofNodeDimensions
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.static ComponentUI
createUI(JComponent x)
Constructs a new instance ofBasicTreeUI
.protected void
drawCentered(Component c, Graphics graphics, Icon icon, int x, int y)
Draws theicon
centered at (x,y).protected void
drawDashedHorizontalLine(Graphics g, int y, int x1, int x2)
Draws a horizontal dashed line.protected void
drawDashedVerticalLine(Graphics g, int x, int y1, int y2)
Draws a vertical dashed line.protected void
ensureRowsAreVisible(int beginRow, int endRow)
Ensures that the rows identified bybeginRow
throughendRow
are visible.int
getBaseline(JComponent c, int width, int height)
Returns the baseline.Component.BaselineResizeBehavior
getBaselineResizeBehavior(JComponent c)
Returns an enum indicating how the baseline of the component changes as the size changes.protected TreeCellEditor
getCellEditor()
Returns the editor used to edit entries in the drawn tree component, ornull
if the tree cannot be edited.protected TreeCellRenderer
getCellRenderer()
Returns the current instance of theTreeCellRenderer
that is rendering each cell.TreePath
getClosestPathForLocation(JTree tree, int x, int y)
Returns the path to the node that is closest to x,y.Icon
getCollapsedIcon()
Returns the collapsed icon.protected Rectangle
getDropLineRect(JTree.DropLocation loc)
Returns a unbounding box for the drop line.TreePath
getEditingPath(JTree tree)
Returns the path to the element that is being edited.Icon
getExpandedIcon()
Returns the 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 ofparent
.protected int
getLeadSelectionRow()
Returns the lead row of the selection.int
getLeftChildIndent()
Returns the left child indent.Dimension
getMaximumSize(JComponent c)
Returns the maximum size for this component, which will be the preferred size if the instance is currently in a JTree, or 0, 0.Dimension
getMinimumSize(JComponent c)
Returns the minimum size for this component.protected TreeModel
getModel()
Returns the tree model.Rectangle
getPathBounds(JTree tree, TreePath path)
Returns the Rectangle enclosing the label portion that the last item in path will be drawn into.TreePath
getPathForRow(JTree tree, int row)
Returns the path for passed in row.Dimension
getPreferredMinSize()
Returns the minimum preferred size.Dimension
getPreferredSize(JComponent c)
Returns the preferred size to properly display the tree, this is a cover method forgetPreferredSize(c, true)
.Dimension
getPreferredSize(JComponent c, boolean checkConsistency)
Returns the preferred size to represent the tree in c.int
getRightChildIndent()
Returns the right child indent.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 height of each row in the drawn tree component.protected int
getRowX(int row, int depth)
Returns the location, along the x-axis, to render a particular row at.protected TreeSelectionModel
getSelectionModel()
Returns the current instance of theTreeSelectionModel
which is the model for selections.protected boolean
getShowsRootHandles()
Returnstrue
if the root 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 invokestoggleExpandState
.protected void
installComponents()
Intalls the subcomponents of the tree, which is the renderer pane.protected void
installDefaults()
Installs default properties.protected void
installKeyboardActions()
Registers keyboard actions.protected void
installListeners()
Registers listeners.protected boolean
isDropLine(JTree.DropLocation loc)
Tells if aDropLocation
should be indicated by a line between nodes.protected boolean
isEditable()
Returns whether the drawn tree component should be enabled for editing.boolean
isEditing(JTree tree)
Returns true if the tree is being edited.protected boolean
isLargeModel()
Returnstrue
if large model is set.protected boolean
isLeaf(int row)
Returnstrue
if the node atrow
is a leaf.protected boolean
isLocationInExpandControl(TreePath path, int mouseX, int mouseY)
Returnstrue
ifmouseX
andmouseY
fall in the area of row that is used to expand/collapse the node and the node atrow
does not represent a leaf.protected boolean
isMultiSelectEvent(MouseEvent event)
Returningtrue
signifies a mouse event on the node should select from the anchor point.protected boolean
isRootVisible()
Returns whether the root node of the drawn tree component should be displayed.protected boolean
isToggleEvent(MouseEvent event)
Returningtrue
indicates the row under the mouse should be toggled based on the event.protected boolean
isToggleSelectionEvent(MouseEvent event)
Returningtrue
signifies a mouse event on the node should toggle the selection of only the row under mouse.protected void
paintDropLine(Graphics g)
Paints the drop line.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)
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.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)
Paints a vertical line.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 theVisibleTreeNode
after it has collapsed.protected void
pathWasExpanded(TreePath path)
Messaged from theVisibleTreeNode
after it has been expanded.protected void
prepareForUIInstall()
Invoked after thetree
instance variable has been set, but before any defaults/listeners have been installed.protected void
prepareForUIUninstall()
Invoked before unstallation of UI.protected void
selectPathForEvent(TreePath path, MouseEvent event)
Messaged to update the selection based on aMouseEvent
over a particular row.protected void
setCellEditor(TreeCellEditor editor)
Sets the cell editor.protected void
setCellRenderer(TreeCellRenderer tcr)
Sets theTreeCellRenderer
totcr
.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)
Sets thelargeModel
.void
setLeftChildIndent(int newAmount)
Sets the left child indent.protected void
setModel(TreeModel model)
Sets theTreeModel
.void
setPreferredMinSize(Dimension newSize)
Sets the preferred minimum size.void
setRightChildIndent(int newAmount)
Sets the right child indent.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.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)
Returnstrue
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 acellEditor
andshouldSelectCell
returnstrue
.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()
Uninstalls the renderer pane.protected void
uninstallDefaults()
Uninstalls default properties.protected void
uninstallKeyboardActions()
Unregisters keyboard actions.protected void
uninstallListeners()
Unregisters listeners.protected void
updateCachedPreferredSize()
Updates thepreferredSize
instance variable, which is returned fromgetPreferredSize()
.protected void
updateCellEditor()
Updates the cellEditor based on the 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 ofpath
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.protected void
updateLeadSelectionRow()
Updates the lead row of the selection.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 withtreeDidChange
.Methods declared in class javax.swing.plaf.ComponentUI
contains, getAccessibleChild, getAccessibleChildrenCount, installUI, paint, uninstallUI, update
-
Field Details
-
collapsedIcon
The collapsed icon. -
expandedIcon
The expanded icon. -
leftChildIndent
protected int leftChildIndentDistance between left margin and where vertical dashes will be drawn. -
rightChildIndent
protected int rightChildIndentDistance to add to leftChildIndent to determine where cell contents will be drawn. -
totalChildIndent
protected int totalChildIndentTotal distance that will be indented. The sum of leftChildIndent and rightChildIndent. -
preferredMinSize
Minimum preferred size. -
lastSelectedRow
protected int lastSelectedRowIndex of the row that was last selected. -
tree
Component that we're going to be drawing into. -
currentCellRenderer
Renderer that is being used to do the actual cell drawing. -
createdRenderer
protected boolean createdRendererSet to true if the renderer that is currently in the tree was created by this instance. -
cellEditor
Editor for the tree. -
createdCellEditor
protected boolean createdCellEditorSet to true if editor that is currently in the tree was created by this instance. -
stopEditingInCompleteEditing
protected boolean stopEditingInCompleteEditingSet to false when editing and shouldSelectCell() returns true meaning the node should be selected before editing, used in completeEditing. -
rendererPane
Used to paint the TreeCellRenderer. -
preferredSize
Size needed to completely display all the nodes. -
validCachedPreferredSize
protected boolean validCachedPreferredSizeIs the preferredSize valid? -
treeState
Object responsible for handling sizing and expanded issues. -
drawingCache
Used for minimizing the drawing of vertical lines. -
largeModel
protected boolean largeModelTrue if doing optimizations for a largeModel. Subclasses that don't support this may wish to override createLayoutCache to not return a FixedHeightLayoutCache instance. -
nodeDimensions
Reponsible for telling the TreeState the size needed for a node. -
treeModel
Used to determine what to display. -
treeSelectionModel
Model maintaining the selection. -
depthOffset
protected int depthOffsetHow 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. -
editingComponent
When editing, this will be the Component that is doing the actual editing. -
editingPath
Path that is being edited. -
editingRow
protected int editingRowRow that is being edited. Should only be referenced if editingComponent is not null. -
editorHasDifferentSize
protected boolean editorHasDifferentSizeSet to true if the editor has a different size than the renderer.
-
-
Constructor Details
-
BasicTreeUI
public BasicTreeUI()Constructs a new instance ofBasicTreeUI
.
-
-
Method Details
-
createUI
Constructs a new instance ofBasicTreeUI
.- Parameters:
x
- a component- Returns:
- a new instance of
BasicTreeUI
-
getHashColor
Returns the hash color.- Returns:
- the hash color
-
setHashColor
Sets the hash color.- Parameters:
color
- the hash color
-
setLeftChildIndent
public void setLeftChildIndent(int newAmount)Sets the left child indent.- Parameters:
newAmount
- the left child indent
-
getLeftChildIndent
public int getLeftChildIndent()Returns the left child indent.- Returns:
- the left child indent
-
setRightChildIndent
public void setRightChildIndent(int newAmount)Sets the right child indent.- Parameters:
newAmount
- the right child indent
-
getRightChildIndent
public int getRightChildIndent()Returns the right child indent.- Returns:
- the right child indent
-
setExpandedIcon
Sets the expanded icon.- Parameters:
newG
- the expanded icon
-
getExpandedIcon
Returns the expanded icon.- Returns:
- the expanded icon
-
setCollapsedIcon
Sets the collapsed icon.- Parameters:
newG
- the collapsed icon
-
getCollapsedIcon
Returns the collapsed icon.- Returns:
- the collapsed icon
-
setLargeModel
protected void setLargeModel(boolean largeModel)Sets thelargeModel
. Called when thelargeModel
property is changed in the drawn tree component.- Parameters:
largeModel
- the new value of thelargeModel
property
-
isLargeModel
protected boolean isLargeModel()Returnstrue
if large model is set.- Returns:
true
if large model is set
-
setRowHeight
protected void setRowHeight(int rowHeight)Sets the row height, this is forwarded to the treeState. Called when therowHeight
property is changed in the drawn tree component.- Parameters:
rowHeight
- the new value of therowHeight
property
-
getRowHeight
protected int getRowHeight()Returns the height of each row in the drawn tree component. If the returned value is less than or equal to 0 the height for each row is determined by the renderer.- Returns:
- the height of each row, in pixels
-
setCellRenderer
Sets theTreeCellRenderer
totcr
. This invokesupdateRenderer
. Called when thecellRenderer
property is changed in the drawn tree component.- Parameters:
tcr
- the new value of thecellRenderer
property
-
getCellRenderer
Returns the current instance of theTreeCellRenderer
that is rendering each cell.- Returns:
- the
TreeCellRenderer
instance
-
setModel
Sets theTreeModel
.- Parameters:
model
- the new value
-
getModel
Returns the tree model.- Returns:
- the tree model
-
setRootVisible
protected void setRootVisible(boolean newValue)Sets the root to being visible. Called when therootVisible
property is changed in the drawn tree component.- Parameters:
newValue
- the new value of therootVisible
property
-
isRootVisible
protected boolean isRootVisible()Returns whether the root node of the drawn tree component should be displayed.- Returns:
true
if the root node of the tree is displayed
-
setShowsRootHandles
protected void setShowsRootHandles(boolean newValue)Determines whether the node handles are to be displayed. Called when theshowsRootHandles
property is changed in the drawn tree component.- Parameters:
newValue
- the new value of theshowsRootHandles
property
-
getShowsRootHandles
protected boolean getShowsRootHandles()Returnstrue
if the root handles are to be displayed.- Returns:
true
if the root handles are to be displayed
-
setCellEditor
Sets the cell editor. Called when thecellEditor
property is changed in the drawn tree component.- Parameters:
editor
- the new value of thecellEditor
property
-
getCellEditor
Returns the editor used to edit entries in the drawn tree component, ornull
if the tree cannot be edited.- Returns:
- the
TreeCellEditor
instance, ornull
-
setEditable
protected void setEditable(boolean newValue)Configures the receiver to allow, or not allow, editing. Called when theeditable
property is changed in the drawn tree component.- Parameters:
newValue
- the new value of theeditable
property
-
isEditable
protected boolean isEditable()Returns whether the drawn tree component should be enabled for editing.- Returns:
true
if the tree is editable
-
setSelectionModel
Resets the selection model. The appropriate listener are installed on the model. Called when theselectionModel
property is changed in the drawn tree component.- Parameters:
newLSM
- the new value of theselectionModel
property
-
getSelectionModel
Returns the current instance of theTreeSelectionModel
which is the model for selections.- Returns:
- the
TreeSelectionModel
instance
-
getPathBounds
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.- Specified by:
getPathBounds
in classTreeUI
- Parameters:
tree
- theJTree
forpath
path
- theTreePath
identifying the node- Returns:
- the
Rectangle
enclosing the label portion that the last item in path will be drawn into,null
if any component in path is currently valid.
-
getPathForRow
Returns the path for passed in row. If row is not visible null is returned.- Specified by:
getPathForRow
in classTreeUI
- Parameters:
tree
- aJTree
objectrow
- an integer specifying a row- Returns:
- the
path
forrow
ornull
ifrow
is not visible
-
getRowForPath
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.- Specified by:
getRowForPath
in classTreeUI
- Parameters:
tree
- theJTree
forpath
path
- theTreePath
object to look in- Returns:
- an integer specifying the row at which the last item
identified is visible, -1 if any of the elements in
path
are not currently visible
-
getRowCount
Returns the number of rows that are being displayed.- Specified by:
getRowCount
in classTreeUI
- Parameters:
tree
- theJTree
for which to count rows- Returns:
- an integer specifying the number of row being displayed
-
getClosestPathForLocation
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.- Specified by:
getClosestPathForLocation
in classTreeUI
- Parameters:
tree
- aJTree
objectx
- an integer giving the number of pixels horizontally from the left edge of the display areay
- an integer giving the number of pixels vertically from the top of the display area, minus any top margin- Returns:
- the
TreePath
node closest tox,y
ornull
if there is nothing currently visible
-
isEditing
Returns true if the tree is being edited. The item that is being edited can be returned by getEditingPath(). -
stopEditing
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.- Specified by:
stopEditing
in classTreeUI
- Parameters:
tree
- aJTree
object- Returns:
- true if the editor allows the editing session to stop
-
cancelEditing
Cancels the current editing session.- Specified by:
cancelEditing
in classTreeUI
- Parameters:
tree
- aJTree
object
-
startEditingAtPath
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.- Specified by:
startEditingAtPath
in classTreeUI
- Parameters:
tree
- theJTree
being editedpath
- theTreePath
to be edited
-
getEditingPath
Returns the path to the element that is being edited.- Specified by:
getEditingPath
in classTreeUI
- Parameters:
tree
- theJTree
for which to return a path- Returns:
- a
TreePath
containing the path totree
-
prepareForUIInstall
protected void prepareForUIInstall()Invoked after thetree
instance variable has been set, but before any defaults/listeners have been installed. -
completeUIInstall
protected void completeUIInstall()Invoked from installUI after all the defaults/listeners have been installed. -
installDefaults
protected void installDefaults()Installs default properties. -
installListeners
protected void installListeners()Registers listeners. -
installKeyboardActions
protected void installKeyboardActions()Registers keyboard actions. -
installComponents
protected void installComponents()Intalls the subcomponents of the tree, which is the renderer pane. -
createNodeDimensions
Creates an instance ofNodeDimensions
that is able to determine the size of a given node in the tree.- Returns:
- an instance of
NodeDimensions
-
createPropertyChangeListener
Creates a listener that is responsible that updates the UI based on how the tree changes.- Returns:
- an instance of the
PropertyChangeListener
-
createMouseListener
Creates the listener responsible for updating the selection based on mouse events.- Returns:
- an instance of the
MouseListener
-
createFocusListener
Creates a listener that is responsible for updating the display when focus is lost/gained.- Returns:
- an instance of the
FocusListener
-
createKeyListener
Creates the listener responsible for getting key events from the tree.- Returns:
- an instance of the
KeyListener
-
createSelectionModelPropertyChangeListener
Creates the listener responsible for getting property change events from the selection model.- Returns:
- an instance of the
PropertyChangeListener
-
createTreeSelectionListener
Creates the listener that updates the display based on selection change methods.- Returns:
- an instance of the
TreeSelectionListener
-
createCellEditorListener
Creates a listener to handle events from the current editor.- Returns:
- an instance of the
CellEditorListener
-
createComponentListener
Creates and returns a new ComponentHandler. This is used for the large model to mark the validCachedPreferredSize as invalid when the component moves.- Returns:
- an instance of the
ComponentListener
-
createTreeExpansionListener
Creates and returns the object responsible for updating the treestate when nodes expanded state changes.- Returns:
- an instance of the
TreeExpansionListener
-
createLayoutCache
Creates the object responsible for managing what is expanded, as well as the size of nodes.- Returns:
- the object responsible for managing what is expanded
-
createCellRendererPane
Returns the renderer pane that renderer components are placed in.- Returns:
- an instance of the
CellRendererPane
-
createDefaultCellEditor
Creates a default cell editor.- Returns:
- a default cell editor
-
createDefaultCellRenderer
Returns the default cell renderer that is used to do the stamping of each node.- Returns:
- an instance of
TreeCellRenderer
-
createTreeModelListener
Returns a listener that can update the tree when the model changes.- Returns:
- an instance of the
TreeModelListener
.
-
prepareForUIUninstall
protected void prepareForUIUninstall()Invoked before unstallation of UI. -
completeUIUninstall
protected void completeUIUninstall()Uninstalls UI. -
uninstallDefaults
protected void uninstallDefaults()Uninstalls default properties. -
uninstallListeners
protected void uninstallListeners()Unregisters listeners. -
uninstallKeyboardActions
protected void uninstallKeyboardActions()Unregisters keyboard actions. -
uninstallComponents
protected void uninstallComponents()Uninstalls the renderer pane. -
getBaseline
Returns the baseline.- Overrides:
getBaseline
in classComponentUI
- Parameters:
c
-JComponent
baseline is being requested forwidth
- the width to get the baseline forheight
- the height to get the baseline for- Returns:
- baseline or a value < 0 indicating there is no reasonable baseline
- Throws:
NullPointerException
- ifc
isnull
IllegalArgumentException
- if width or height is < 0- Since:
- 1.6
- See Also:
JComponent.getBaseline(int, int)
-
getBaselineResizeBehavior
Returns an enum indicating how the baseline of the component changes as the size changes.- Overrides:
getBaselineResizeBehavior
in classComponentUI
- Parameters:
c
-JComponent
to return baseline resize behavior for- Returns:
- an enum indicating how the baseline changes as the component size changes
- Throws:
NullPointerException
- ifc
isnull
- Since:
- 1.6
- See Also:
JComponent.getBaseline(int, int)
-
isDropLine
Tells if aDropLocation
should be indicated by a line between nodes. This is meant forjavax.swing.DropMode.INSERT
andjavax.swing.DropMode.ON_OR_INSERT
drop modes.- Parameters:
loc
- aDropLocation
- Returns:
true
if the drop location should be shown as a line- Since:
- 1.7
-
paintDropLine
Paints the drop line.- Parameters:
g
-Graphics
object to draw on- Since:
- 1.7
-
getDropLineRect
Returns a unbounding box for the drop line.- Parameters:
loc
- aDropLocation
- Returns:
- bounding box for the drop line
- Since:
- 1.7
-
paintHorizontalPartOfLeg
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. The receiver should NOT modifyclipBounds
, orinsets
.NOTE:
parentRow
can be -1 if the root is not visible.- Parameters:
g
- a graphics contextclipBounds
- a clipped rectangleinsets
- insetsbounds
- a bounding rectanglepath
- a tree pathrow
- a rowisExpanded
-true
if the path is expandedhasBeenExpanded
-true
if the path has been expandedisLeaf
-true
if the path is leaf
-
paintVerticalPartOfLeg
protected void paintVerticalPartOfLeg(Graphics g, Rectangle clipBounds, Insets insets, TreePath path)Paints the vertical part of the leg. The receiver should NOT modifyclipBounds
,insets
.- Parameters:
g
- a graphics contextclipBounds
- a clipped rectangleinsets
- insetspath
- a tree path
-
paintExpandControl
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. The receiver should NOT modifyclipBounds
, orinsets
.- Parameters:
g
- a graphics contextclipBounds
- a clipped rectangleinsets
- insetsbounds
- a bounding rectanglepath
- a tree pathrow
- a rowisExpanded
-true
if the path is expandedhasBeenExpanded
-true
if the path has been expandedisLeaf
-true
if the row is leaf
-
paintRow
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. The receiver should NOT modifyclipBounds
, orinsets
.- Parameters:
g
- a graphics contextclipBounds
- a clipped rectangleinsets
- insetsbounds
- a bounding rectanglepath
- a tree pathrow
- a rowisExpanded
-true
if the path is expandedhasBeenExpanded
-true
if the path has been expandedisLeaf
-true
if the path is leaf
-
shouldPaintExpandControl
protected boolean shouldPaintExpandControl(TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf)Returnstrue
if the expand (toggle) control should be drawn for the specified row.- Parameters:
path
- a tree pathrow
- a rowisExpanded
-true
if the path is expandedhasBeenExpanded
-true
if the path has been expandedisLeaf
-true
if the row is leaf- Returns:
true
if the expand (toggle) control should be drawn for the specified row
-
paintVerticalLine
Paints a vertical line.- Parameters:
g
- a graphics contextc
- a componentx
- an X coordinatetop
- an Y1 coordinatebottom
- an Y2 coordinate
-
paintHorizontalLine
Paints a horizontal line.- Parameters:
g
- a graphics contextc
- a componenty
- an Y coordinateleft
- an X1 coordinateright
- an X2 coordinate
-
getVerticalLegBuffer
protected int getVerticalLegBuffer()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.- Returns:
- the vertical leg buffer
-
getHorizontalLegBuffer
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. This method makes the leg end before that.- Returns:
- the horizontal leg buffer
-
drawCentered
Draws theicon
centered at (x,y).- Parameters:
c
- a componentgraphics
- a graphics contexticon
- an iconx
- an X coordinatey
- an Y coordinate
-
drawDashedHorizontalLine
Draws a horizontal dashed line. It is assumedx1
<=x2
. Ifx1
is greater thanx2
, the method draws nothing.- Parameters:
g
- an instance ofGraphics
y
- an Y coordinatex1
- an X1 coordinatex2
- an X2 coordinate
-
drawDashedVerticalLine
Draws a vertical dashed line. It is assumedy1
<=y2
. Ify1
is greater thany2
, the method draws nothing.- Parameters:
g
- an instance ofGraphics
x
- an X coordinatey1
- an Y1 coordinatey2
- an Y2 coordinate
-
getRowX
protected int getRowX(int row, int depth)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.- Parameters:
row
- Row to return x location fordepth
- Depth of the row- Returns:
- amount to indent the given row.
- Since:
- 1.5
-
updateLayoutCacheExpandedNodes
protected void updateLayoutCacheExpandedNodes()Makes all the nodes that are expanded in JTree expanded in LayoutCache. This invokes updateExpandedDescendants with the root path. -
updateExpandedDescendants
Updates the expanded state of all the descendants ofpath
by getting the expanded descendants from the tree and forwarding to the tree state.- Parameters:
path
- a tree path
-
getLastChildPath
Returns a path to the last child ofparent
.- Parameters:
parent
- a tree path- Returns:
- a path to the last child of
parent
-
updateDepthOffset
protected void updateDepthOffset()Updates how much each depth should be offset by. -
updateCellEditor
protected void updateCellEditor()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. -
updateRenderer
protected void updateRenderer()Messaged from the tree we're in when the renderer has changed. -
configureLayoutCache
protected void configureLayoutCache()Resets the TreeState instance based on the tree we're providing the look and feel for. -
updateSize
protected void updateSize()Marks the cached size as being invalid, and messages the tree withtreeDidChange
. -
updateCachedPreferredSize
protected void updateCachedPreferredSize()Updates thepreferredSize
instance variable, which is returned fromgetPreferredSize()
.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.
-
pathWasExpanded
Messaged from theVisibleTreeNode
after it has been expanded.- Parameters:
path
- a tree path
-
pathWasCollapsed
Messaged from theVisibleTreeNode
after it has collapsed.- Parameters:
path
- a tree path
-
ensureRowsAreVisible
protected void ensureRowsAreVisible(int beginRow, int endRow)Ensures that the rows identified bybeginRow
throughendRow
are visible.- Parameters:
beginRow
- the begin rowendRow
- the end row
-
setPreferredMinSize
Sets the preferred minimum size.- Parameters:
newSize
- the new preferred size
-
getPreferredMinSize
Returns the minimum preferred size.- Returns:
- the minimum preferred size
-
getPreferredSize
Returns the preferred size to properly display the tree, this is a cover method forgetPreferredSize(c, true)
.- Overrides:
getPreferredSize
in classComponentUI
- Parameters:
c
- a component- Returns:
- the preferred size to represent the tree in the component
- See Also:
JComponent.getPreferredSize()
,LayoutManager.preferredLayoutSize(java.awt.Container)
-
getPreferredSize
Returns the preferred size to represent the tree in c. If checkConsistency istrue
checkConsistency is messaged first.- Parameters:
c
- a componentcheckConsistency
- iftrue
consistency is checked- Returns:
- the preferred size to represent the tree in the component
-
getMinimumSize
Returns the minimum size for this component. Which will be the min preferred size or 0, 0.- Overrides:
getMinimumSize
in classComponentUI
- Parameters:
c
- the component whose minimum 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:
- a
Dimension
object ornull
- See Also:
JComponent.getMinimumSize()
,LayoutManager.minimumLayoutSize(java.awt.Container)
,ComponentUI.getPreferredSize(javax.swing.JComponent)
-
getMaximumSize
Returns the maximum size for this component, which will be the preferred size if the instance is currently in a JTree, or 0, 0.- Overrides:
getMaximumSize
in classComponentUI
- Parameters:
c
- the component whose maximum 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:
- a
Dimension
object ornull
- See Also:
JComponent.getMaximumSize()
,LayoutManager2.maximumLayoutSize(java.awt.Container)
-
completeEditing
protected void completeEditing()Messages to stop the editing session. If the UI the receiver is providing the look and feel for returns true fromgetInvokesStopCellEditing
, stopCellEditing will invoked on the current editor. Then completeEditing will be messaged with false, true, false to cancel any lingering editing. -
completeEditing
protected void completeEditing(boolean messageStop, boolean messageCancel, boolean messageTree)Stops the editing session. IfmessageStop
istrue
the editor is messaged withstopEditing
, ifmessageCancel
istrue
the editor is messaged withcancelEditing
. IfmessageTree
istrue
thetreeModel
is messaged withvalueForPathChanged
.- Parameters:
messageStop
- message to stop editingmessageCancel
- message to cancel editingmessageTree
- message to tree
-
startEditing
Will start editing for node if there is acellEditor
andshouldSelectCell
returnstrue
.This assumes that path is valid and visible.
- Parameters:
path
- a tree pathevent
- a mouse event- Returns:
true
if the editing is successful
-
checkForClickInExpandControl
If themouseX
andmouseY
are in the expand/collapse region of therow
, this will toggle the row.- Parameters:
path
- a tree pathmouseX
- an X coordinatemouseY
- an Y coordinate
-
isLocationInExpandControl
Returnstrue
ifmouseX
andmouseY
fall in the area of row that is used to expand/collapse the node and the node atrow
does not represent a leaf.- Parameters:
path
- a tree pathmouseX
- an X coordinatemouseY
- an Y coordinate- Returns:
true
if the mouse cursor fall in the area of row that is used to expand/collapse the node and the node is not a leaf.
-
handleExpandControlClick
Messaged when the user clicks the particular row, this invokestoggleExpandState
.- Parameters:
path
- a tree pathmouseX
- an X coordinatemouseY
- an Y coordinate
-
toggleExpandState
Expands path if it is not expanded, or collapses row if it is expanded. If expanding a path andJTree
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).- Parameters:
path
- a tree path
-
isToggleSelectionEvent
Returningtrue
signifies a mouse event on the node should toggle the selection of only the row under mouse.- Parameters:
event
- a mouse event- Returns:
true
if a mouse event on the node should toggle the selection
-
isMultiSelectEvent
Returningtrue
signifies a mouse event on the node should select from the anchor point.- Parameters:
event
- a mouse event- Returns:
true
if a mouse event on the node should select from the anchor point
-
isToggleEvent
Returningtrue
indicates the row under the mouse should be toggled based on the event. This is invoked aftercheckForClickInExpandControl
, implying the location is not in the expand (toggle) control.- Parameters:
event
- a mouse event- Returns:
true
if the row under the mouse should be toggled
-
selectPathForEvent
Messaged to update the selection based on aMouseEvent
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.- Parameters:
path
- the selected pathevent
- the mouse event
-
isLeaf
protected boolean isLeaf(int row)Returnstrue
if the node atrow
is a leaf.- Parameters:
row
- a row- Returns:
true
if the node atrow
is a leaf
-
updateLeadSelectionRow
protected void updateLeadSelectionRow()Updates the lead row of the selection.- Since:
- 1.7
-
getLeadSelectionRow
protected int getLeadSelectionRow()Returns the lead row of the selection.- Returns:
- selection lead row
- Since:
- 1.7
-