# Class MetalTreeUI

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.TreeUI
javax.swing.plaf.basic.BasicTreeUI
javax.swing.plaf.metal.MetalTreeUI

public class MetalTreeUI extends BasicTreeUI
The metal look and feel implementation of `TreeUI`.

`MetalTreeUI` allows for configuring how to visually render the spacing and delineation between nodes. The following hints are supported:

Descriptions of supported hints: Angled, Horizontal, and None
Hint | Description
--- | ---
Angled | A line is drawn connecting the child to the parent. For handling of the root node refer to `JTree.setRootVisible(boolean)` and `JTree.setShowsRootHandles(boolean)`.
Horizontal | A horizontal line is drawn dividing the children of the root node.
None | Do not draw any visual indication between nodes.

As it is typically impractical to obtain the `TreeUI` from the `JTree` and cast to an instance of `MetalTreeUI` you enable this property via the client property `JTree.lineStyle`. For example, to switch to `Horizontal` style you would do: `tree.putClientProperty("JTree.lineStyle", "Horizontal");`

The default is `Angled`.

## Nested Class Summary

### Nested classes/interfaces declared in class BasicTreeUI

`BasicTreeUI.CellEditorHandler, BasicTreeUI.ComponentHandler, BasicTreeUI.FocusHandler, BasicTreeUI.KeyHandler, BasicTreeUI.MouseHandler, BasicTreeUI.MouseInputHandler, BasicTreeUI.NodeDimensionsHandler, BasicTreeUI.PropertyChangeHandler, BasicTreeUI.SelectionModelPropertyChangeHandler, BasicTreeUI.TreeCancelEditingAction, BasicTreeUI.TreeExpansionHandler, BasicTreeUI.TreeHomeAction, BasicTreeUI.TreeIncrementAction, BasicTreeUI.TreeModelHandler, BasicTreeUI.TreePageAction, BasicTreeUI.TreeSelectionHandler, BasicTreeUI.TreeToggleAction, BasicTreeUI.TreeTraverseAction`
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 declared in class BasicTreeUI

`cellEditor, collapsedIcon, createdCellEditor, createdRenderer, currentCellRenderer, depthOffset, drawingCache, editingComponent, editingPath, editingRow, editorHasDifferentSize, expandedIcon, largeModel, lastSelectedRow, leftChildIndent, nodeDimensions, preferredMinSize, preferredSize, rendererPane, rightChildIndent, stopEditingInCompleteEditing, totalChildIndent, tree, treeModel, treeSelectionModel, treeState, validCachedPreferredSize`
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`
Responsible 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
`MetalTreeUI()`
Constructs the `MetalTreeUI`.

## Method Summary

Modifier and Type
Method
Description
`static ComponentUI`
`createUI(JComponent x)`
Constructs the `MetalTreeUI`.
`protected void`
`decodeLineStyle(Object lineStyleFlag)`
Converts between the string passed into the client property and the internal representation (currently and int)
`protected boolean`
`isLocationInExpandControl(int row, int rowLevel, int mouseX, int mouseY)`
Returns `true` if a point with X coordinate `mouseX` and Y coordinate `mouseY` is in expanded control.
`protected void`
`paintHorizontalSeparators(Graphics g, JComponent c)`
Paints the horizontal separators.

### Methods declared in class BasicTreeUI

`cancelEditing, checkForClickInExpandControl, completeEditing, completeEditing, completeUIInstall, completeUIUninstall, configureLayoutCache, createCellEditorListener, createCellRendererPane, createComponentListener, createDefaultCellEditor, createDefaultCellRenderer, createFocusListener, createKeyListener, createLayoutCache, createMouseListener, createNodeDimensions, createPropertyChangeListener, createSelectionModelPropertyChangeListener, createTreeExpansionListener, createTreeModelListener, createTreeSelectionListener, drawCentered, drawDashedHorizontalLine, drawDashedVerticalLine, ensureRowsAreVisible, getBaseline, getBaselineResizeBehavior, getCellEditor, getCellRenderer, getClosestPathForLocation, getCollapsedIcon, getDropLineRect, getEditingPath, getExpandedIcon, getHashColor, getHorizontalLegBuffer, getLastChildPath, getLeadSelectionRow, getLeftChildIndent, getMaximumSize, getMinimumSize, getModel, getPathBounds, getPathForRow, getPreferredMinSize, getPreferredSize, getPreferredSize, getRightChildIndent, getRowCount, getRowForPath, getRowHeight, getRowX, getSelectionModel, getShowsRootHandles, getVerticalLegBuffer, handleExpandControlClick, installComponents, installDefaults, installKeyboardActions, installListeners, isDropLine, isEditable, isEditing, isLargeModel, isLeaf, isLocationInExpandControl, isMultiSelectEvent, isRootVisible, isToggleEvent, isToggleSelectionEvent, paintDropLine, paintExpandControl, paintHorizontalLine, paintHorizontalPartOfLeg, paintRow, paintVerticalLine, paintVerticalPartOfLeg, pathWasCollapsed, pathWasExpanded, prepareForUIInstall, prepareForUIUninstall, selectPathForEvent, setCellEditor, setCellRenderer, setCollapsedIcon, setEditable, setExpandedIcon, setHashColor, setLargeModel, setLeftChildIndent, setModel, setPreferredMinSize, setRightChildIndent, setRootVisible, setRowHeight, setSelectionModel, setShowsRootHandles, shouldPaintExpandControl, startEditing, startEditingAtPath, stopEditing, toggleExpandState, uninstallComponents, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, updateCachedPreferredSize, updateCellEditor, updateDepthOffset, updateExpandedDescendants, updateLayoutCacheExpandedNodes, updateLeadSelectionRow, updateRenderer, updateSize`
Modifier and Type
Method
Description
`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/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()`
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 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`
`drawCentered(Component c, Graphics graphics, Icon icon, int x, int y)`
Draws the `icon` 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 by `beginRow` through `endRow` 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, or `null` if the tree cannot be edited.
`protected TreeCellRenderer`
`getCellRenderer()`
Returns the current instance of the `TreeCellRenderer` 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 of `parent`.
`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 for `getPreferredSize(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 the `TreeSelectionModel` which is the model for selections.
`protected boolean`
`getShowsRootHandles()`
Returns `true` 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 invokes `toggleExpandState`.
`protected void`
`installComponents()`
Installs 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 a `DropLocation` 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()`
Returns `true` if large model 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 `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()`
Returns whether the root node of the drawn tree component should be displayed.
`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 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 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()`
Invoked before uninstallation of UI.
`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)`
Sets the `largeModel`.
`void`
`setLeftChildIndent(int newAmount)`
Sets the left child indent.
`protected void`
`setModel(TreeModel model)`
Sets the `TreeModel`.
`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)`
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`.
`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 the `preferredSize` instance variable, which is returned from `getPreferredSize()`.
`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 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.
`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 with `treeDidChange`.

### Methods declared in class ComponentUI

`contains, getAccessibleChild, getAccessibleChildrenCount, installUI, paint, uninstallUI, update`
Modifier and Type
Method
Description
`boolean`
`contains(JComponent c, int x, int y)`
Returns `true` if the specified x,y location is contained within the look and feel's defined shape of the specified component.
`Accessible`
`getAccessibleChild(JComponent c, int i)`
Returns the `i`th `Accessible` child of the object.
`int`
`getAccessibleChildrenCount(JComponent c)`
Returns the number of accessible children in the object.
`void`
`installUI(JComponent c)`
Configures the specified component appropriately for the look and feel.
`void`
`paint(Graphics g, JComponent c)`
Paints the specified component appropriately for the look and feel.
`void`
`uninstallUI(JComponent c)`
Reverses configuration which was done on the specified component during `installUI`.
`void`
`update(Graphics g, JComponent c)`
Notifies this UI delegate that it is time to paint the specified component.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`String`
`toString()`
Returns a string representation of the object.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## Constructor Details

### MetalTreeUI

public MetalTreeUI()
Constructs the `MetalTreeUI`.

## Method Details

### createUI

public static ComponentUI createUI(JComponent x)
Constructs the `MetalTreeUI`.

Parameters:
  `x` - a component
Returns:
  the instance of the `MetalTreeUI`

### decodeLineStyle

protected void decodeLineStyle(Object lineStyleFlag)
Converts between the string passed into the client property and the internal representation (currently and int)

Parameters:
  `lineStyleFlag` - a flag

### isLocationInExpandControl

protected boolean isLocationInExpandControl(int row, int rowLevel, int mouseX, int mouseY)
Returns `true` if a point with X coordinate `mouseX` and Y coordinate `mouseY` is in expanded control.

Parameters:
  `row` - a row
  `rowLevel` - a row level
  `mouseX` - X coordinate
  `mouseY` - Y coordinate
Returns:
  `true` if a point with X coordinate `mouseX` and Y coordinate `mouseY` is in expanded control.

### paintHorizontalSeparators

protected void paintHorizontalSeparators(Graphics g, JComponent c)
Paints the horizontal separators.

Parameters:
  `g` - an instance of `Graphics`
  `c` - a component