## com.google.gwt.user.client.ui
Class Tree

    java.lang.Object
      com.google.gwt.user.client.ui.UIObject
          com.google.gwt.user.client.ui.Widget
              com.google.gwt.user.client.ui.Tree

All Implemented Interfaces:
  EventListener, HasFocus, HasWidgets, SourcesFocusEvents, SourcesKeyboardEvents, SourcesTreeEvents

public class Tree
extends Widget
implements HasWidgets, SourcesTreeEvents, HasFocus

A standard hierarchical tree widget. The tree contains a hierarchy of `TreeItems` that the user can open, close, and select.

### CSS Style Rules

- .gwt-Tree { the tree itself }
- .gwt-Tree .gwt-TreeItem { a tree item }
- .gwt-Tree .gwt-TreeItem-selected { a selected tree item }

### Example

>     public class TreeExample implements EntryPoint {

>       public void onModuleLoad() {
>         // Create a tree with a few items in it.
>         TreeItem root = new TreeItem("root");
>         root.addItem("item0");
>         root.addItem("item1");
>         root.addItem("item2");

>         // Add a CheckBox to the tree
>         TreeItem item = new TreeItem(new CheckBox("item3"));
>         root.addItem(item);

>         Tree t = new Tree();
>         t.addItem(root);

>         // Add it to the root panel.
>         RootPanel.get().add(t);
>       }
>     }

Constructor Summary
`Tree()` Constructs an empty tree.
`Tree(TreeImages images)` Constructs a tree that uses the specified image bundle for images.

Method Summary
`void` `add(Widget widget)` Adds the widget as a root tree item.
`void` `addFocusListener(FocusListener listener)` Adds a listener interface to receive mouse events.
`TreeItem` `addItem(java.lang.String itemText)` Adds a simple tree item containing the specified text.
`void` `addItem(TreeItem item)` Adds an item to the root level of this tree.
`TreeItem` `addItem(Widget widget)` Adds a new tree item containing the specified widget.
`void` `addKeyboardListener(KeyboardListener listener)` Adds a listener interface to receive keyboard events.
`void` `addMouseListener(MouseListener listener)`
`void` `addTreeListener(TreeListener listener)` Adds a listener interface to receive tree events.
`void` `clear()` Clears all tree items from the current tree.
`void` `ensureSelectedItemVisible()` Ensures that the currently-selected item is visible, opening its parents and scrolling the tree as necessary.
`java.lang.String` `getImageBase()` Deprecated. Use `Tree(TreeImages)` as it provides a more efficent and manageable way to supply a set of images to be used within a tree.
`TreeItem` `getItem(int index)` Gets the top-level tree item at the specified index.
`int` `getItemCount()` Gets the number of items contained at the root of this tree.
`TreeItem` `getSelectedItem()` Gets the currently selected item.
`int` `getTabIndex()` Gets the widget's position in the tab index.
`protected boolean` `isKeyboardNavigationEnabled(TreeItem currentItem)` Indicates if keyboard navigation is enabled for the Tree and for a given TreeItem.
`java.util.Iterator` `iterator()` Returns all `TreeItem.ContentPanel` elements contained within this tree.
`protected void` `onAttach()` This method is called when a widget is attached to the browser's document.
`void` `onBrowserEvent(Event event)` Fired whenever a browser event is received.
`protected void` `onDetach()` This method is called when a widget is detached from the browser's document.
`protected void` `onLoad()` This method is called immediately after a widget becomes attached to the browser's document.
`boolean` `remove(Widget w)` Removes a child widget.
`void` `removeFocusListener(FocusListener listener)` Removes a previously added listener interface.
`void` `removeItem(TreeItem item)` Removes an item from the root level of this tree.
`void` `removeItems()` Removes all items from the root level of this tree.
`void` `removeKeyboardListener(KeyboardListener listener)` Removes a previously added listener interface.
`void` `removeTreeListener(TreeListener listener)` Removes a previously added listener interface.
`void` `setAccessKey(char key)` Sets the widget's 'access key'.
`void` `setFocus(boolean focus)` Explicitly focus/unfocus this widget.
`void` `setImageBase(java.lang.String baseUrl)` Deprecated. Use `Tree(TreeImages)` as it provides a more efficent and manageable way to supply a set of images to be used within a tree.
`void` `setSelectedItem(TreeItem item)` Selects a specified item.
`void` `setSelectedItem(TreeItem item, boolean fireEvents)` Selects a specified item.
`void` `setTabIndex(int index)` Sets the widget's position in the tab index.
`java.util.Iterator` `treeItemIterator()` Iterator of tree items.

Methods inherited from class com.google.gwt.user.client.ui.Widget
`getParent, isAttached, onUnload, removeFromParent, setElement`

Methods inherited from class com.google.gwt.user.client.ui.UIObject
`addStyleName, getAbsoluteLeft, getAbsoluteTop, getElement, getOffsetHeight, getOffsetWidth, getStyleElement, getStyleName, getTitle, isVisible, isVisible, removeStyleName, resetStyleName, setHeight, setPixelSize, setSize, setStyleName, setStyleName, setTitle, setVisible, setVisible, setWidth, sinkEvents, toString, unsinkEvents`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### Tree

    public Tree()

  Constructs an empty tree.

### Tree

    public Tree(TreeImages images)

  Constructs a tree that uses the specified image bundle for images.

Parameters:
  `images` - a bundle that provides tree specific images

Method Detail

### add

    public void add(Widget widget)

  Adds the widget as a root tree item.

  Specified by:
    `add` in interface `HasWidgets`
  Parameters:
    `widget` - widget to add.
  See Also:
    `HasWidgets.add(com.google.gwt.user.client.ui.Widget)`

### addFocusListener

    public void addFocusListener(FocusListener listener)

  Description copied from interface: `SourcesFocusEvents`
  Adds a listener interface to receive mouse events.

  Specified by:
    `addFocusListener` in interface `SourcesFocusEvents`
  Parameters:
    `listener` - the listener interface to add

### addItem

    public TreeItem addItem(java.lang.String itemText)

  Adds a simple tree item containing the specified text.

  Parameters:
    `itemText` - the text of the item to be added
  Returns:
    the item that was added

### addItem

    public void addItem(TreeItem item)

  Adds an item to the root level of this tree.

  Parameters:
    `item` - the item to be added

### addItem

    public TreeItem addItem(Widget widget)

  Adds a new tree item containing the specified widget.

  Parameters:
    `widget` - the widget to be added

### addKeyboardListener

    public void addKeyboardListener(KeyboardListener listener)

  Description copied from interface: `SourcesKeyboardEvents`
  Adds a listener interface to receive keyboard events.

  Specified by:
    `addKeyboardListener` in interface `SourcesKeyboardEvents`
  Parameters:
    `listener` - the listener interface to add

### addMouseListener

    public void addMouseListener(MouseListener listener)

### addTreeListener

    public void addTreeListener(TreeListener listener)

  Description copied from interface: `SourcesTreeEvents`
  Adds a listener interface to receive tree events.

  Specified by:
    `addTreeListener` in interface `SourcesTreeEvents`
  Parameters:
    `listener` - the listener interface to add

### clear

    public void clear()

  Clears all tree items from the current tree.

  Specified by:
    `clear` in interface `HasWidgets`

### ensureSelectedItemVisible

    public void ensureSelectedItemVisible()

  Ensures that the currently-selected item is visible, opening its parents and scrolling the tree as necessary.

### getImageBase

    public java.lang.String getImageBase()

  Deprecated. Use `Tree(TreeImages)` as it provides a more efficent and manageable way to supply a set of images to be used within a tree.

  Gets this tree's default image package.

  Returns:
    the tree's image package
  See Also:
    `setImageBase(java.lang.String)`

### getItem

    public TreeItem getItem(int index)

  Gets the top-level tree item at the specified index.

  Parameters:
    `index` - the index to be retrieved
  Returns:
    the item at that index

### getItemCount

    public int getItemCount()

  Gets the number of items contained at the root of this tree.

  Returns:
    this tree's item count

### getSelectedItem

    public TreeItem getSelectedItem()

  Gets the currently selected item.

  Returns:
    the selected item

### getTabIndex

    public int getTabIndex()

  Description copied from interface: `HasFocus`
  Gets the widget's position in the tab index.

  Specified by:
    `getTabIndex` in interface `HasFocus`
  Returns:
    the widget's tab index

### iterator

    public java.util.Iterator iterator()

  Returns all `TreeItem.ContentPanel` elements contained within this tree. The existence of the `TreeItem.ContentPanel` class is an implementation detail that may or may not be preserved in future versions of Tree.

  Specified by:
    `iterator` in interface `HasWidgets`

### onBrowserEvent

    public void onBrowserEvent(Event event)

  Description copied from interface: `EventListener`
  Fired whenever a browser event is received.

  Specified by:
    `onBrowserEvent` in interface `EventListener`
  Overrides:
    `onBrowserEvent` in class `Widget`

### remove

    public boolean remove(Widget w)

  Description copied from interface: `HasWidgets`
  Removes a child widget.

  Specified by:
    `remove` in interface `HasWidgets`
  Parameters:
    `w` - the widget to be removed
  Returns:
    `true` if the widget was present

### removeFocusListener

    public void removeFocusListener(FocusListener listener)

  Description copied from interface: `SourcesFocusEvents`
  Removes a previously added listener interface.

  Specified by:
    `removeFocusListener` in interface `SourcesFocusEvents`
  Parameters:
    `listener` - the listener interface to remove

### removeItem

    public void removeItem(TreeItem item)

  Removes an item from the root level of this tree.

  Parameters:
    `item` - the item to be removed

### removeItems

    public void removeItems()

  Removes all items from the root level of this tree.

### removeKeyboardListener

    public void removeKeyboardListener(KeyboardListener listener)

  Description copied from interface: `SourcesKeyboardEvents`
  Removes a previously added listener interface.

  Specified by:
    `removeKeyboardListener` in interface `SourcesKeyboardEvents`
  Parameters:
    `listener` - the listener interface to remove

### removeTreeListener

    public void removeTreeListener(TreeListener listener)

  Description copied from interface: `SourcesTreeEvents`
  Removes a previously added listener interface.

  Specified by:
    `removeTreeListener` in interface `SourcesTreeEvents`
  Parameters:
    `listener` - the listener interface to remove

### setAccessKey

    public void setAccessKey(char key)

  Description copied from interface: `HasFocus`
  Sets the widget's 'access key'. This key is used (in conjunction with a browser-specific modifier key) to automatically focus the widget.

  Specified by:
    `setAccessKey` in interface `HasFocus`
  Parameters:
    `key` - the widget's access key

### setFocus

    public void setFocus(boolean focus)

  Description copied from interface: `HasFocus`
  Explicitly focus/unfocus this widget. Only one widget can have focus at a time, and the widget that does will receive all keyboard events.

  Specified by:
    `setFocus` in interface `HasFocus`
  Parameters:
    `focus` - whether this widget should take focus or release it

### setImageBase

    public void setImageBase(java.lang.String baseUrl)

  Deprecated. Use `Tree(TreeImages)` as it provides a more efficent and manageable way to supply a set of images to be used within a tree.

  Sets the base URL under which this tree will find its default images. These images must be named "tree_white.gif", "tree_open.gif", and "tree_closed.gif".

  Parameters:
    `baseUrl` -

### setSelectedItem

    public void setSelectedItem(TreeItem item)

  Selects a specified item.

  Parameters:
    `item` - the item to be selected, or `null` to deselect all items

### setSelectedItem

    public void setSelectedItem(TreeItem item,
                                boolean fireEvents)

  Selects a specified item.

  Parameters:
    `item` - the item to be selected, or `null` to deselect all items
    `fireEvents` - `true` to allow selection events to be fired

### setTabIndex

    public void setTabIndex(int index)

  Description copied from interface: `HasFocus`
  Sets the widget's position in the tab index. If more than one widget has the same tab index, each such widget will receive focus in an arbitrary order. Setting the tab index to `-1` will cause this widget to be removed from the tab order.

  Specified by:
    `setTabIndex` in interface `HasFocus`
  Parameters:
    `index` - the widget's tab index

### treeItemIterator

    public java.util.Iterator treeItemIterator()

  Iterator of tree items.

### isKeyboardNavigationEnabled

    protected boolean isKeyboardNavigationEnabled(TreeItem currentItem)

  Indicates if keyboard navigation is enabled for the Tree and for a given TreeItem. Subclasses of Tree can override this function to selectively enable or disable keyboard navigation.

  Parameters:
    `currentItem` - the currently selected TreeItem
  Returns:
    `true` if the Tree will response to arrow keys by changing the currently selected item

### onAttach

    protected void onAttach()

  Description copied from class: `Widget`
  This method is called when a widget is attached to the browser's document. To receive notification after a Widget has been added from the document, override the `Widget.onLoad()` method.

  Subclasses that override this method must call `super.onAttach()` to ensure that the Widget has been attached to the underlying Element.

  Overrides:
    `onAttach` in class `Widget`

### onDetach

    protected void onDetach()

  Description copied from class: `Widget`
  This method is called when a widget is detached from the browser's document. To receive notification before a Widget is removed from the document, override the `Widget.onUnload()` method.

  Subclasses that override this method must call `super.onDetach()` to ensure that the Widget has been detached from the underlying Element. Failure to do so will result in application memeroy leaks due to circular references between DOM Elements and JavaScript objects.

  Overrides:
    `onDetach` in class `Widget`

### onLoad

    protected void onLoad()

  Description copied from class: `Widget`
  This method is called immediately after a widget becomes attached to the browser's document.

  Overrides:
    `onLoad` in class `Widget`