## grendel.widgets
Interface TreeTableDataModel

public abstract interface TreeTableDataModel

The `TreeTableDataModel` interface is used to mediate between the underlying data store and the TreeTable. The interface supports two major mechanisms for retrieving tree data: as enumerations or by getting the first child/getting the next sibling of a node. The model only needs to implement one. After initially setting the data model for the `TreeTable`, the model should notify listeners of changes using the `TreeTableModelListener` interface.

See Also:
  `TreeTable`, `TreeTableModelListener`

Method Summary
`void` | `addTreeTableModelListener(TreeTableModelListener aListener)` Adds a `TreeTableModelListener`.
`java.lang.Object` | `getChild(java.lang.Object aNode)` Retrieves the first child of the given node.
`java.util.Enumeration` | `getChildren(java.lang.Object aNode)` Retrieves the children of a given node.
`java.lang.Object` | `getData(java.lang.Object aNode, java.lang.Object aID)` Retrieves the data for the given node at the column with the given id.
`javax.swing.Icon` | `getIcon(java.lang.Object aNode)` Retrieves an icon representing the given node.
`java.lang.Object` | `getNextSibling(java.lang.Object aNode)` Retrieves the next sibling of the given node.
`javax.swing.Icon` | `getOverlayIcon(java.lang.Object aNode)` Retrieves an icon representing a modified state for a given node.
`java.lang.Object` | `getRoot()` Retrieves the root node of the tree.
`boolean` | `isCollapsed(TreePath aPath)` Indicates whether the given node is collapsed.
`boolean` | `isLeaf(java.lang.Object aNode)` Indicates whether the given node is a leaf.
`void` | `removeTreeTableModelListener(TreeTableModelListener aListener)` Removes a `TreeTableModelListener`.
`void` | `setCollapsed(TreePath aPath, boolean aCollapsed)` Method to set the collapsed state of a node.
`void` | `setData(java.lang.Object aNode, java.lang.Object aID, java.lang.Object aValue)` Method for setting the data for the given node at the column with the given id.
`boolean` | `showRoot()` Indicates whether the root node is visible.

Method Detail

### showRoot

    public boolean showRoot()

  Indicates whether the root node is visible. An invisible root node should not have siblings.
  Returns:
    `true` if the root node should be displayed.

### getChildren

    public java.util.Enumeration getChildren(java.lang.Object aNode)

  Retrieves the children of a given node. If `aNode` is `null` then the enumeration returned should represent the nodes at the root level. An implementation that supports this method does not need to implement the `getRoot()`, `getChild()` or `getNextSibling()` methods (they can return `null`).
  Returns:
    An enumeration of objects representing the children of the given node.
  See Also:
    `getRoot()`, `getChild(java.lang.Object)`, `getNextSibling(java.lang.Object)`

### getRoot

    public java.lang.Object getRoot()

  Retrieves the root node of the tree. An implementation that supports this method should implement the `getChild()` and `getNextSibling()` methods and does not need to implement the `getChildren()` method (it can return `null`).
  Returns:
    An object representing the root of the data model being displayed.
  See Also:
    `getChildren(java.lang.Object)`, `getChild(java.lang.Object)`, `getNextSibling(java.lang.Object)`

### getChild

    public java.lang.Object getChild(java.lang.Object aNode)

  Retrieves the first child of the given node. Should return `null` if the node has no children. An implementation that supports this method should implement the `getRoot()` and `getNextSibling()` methods and does not need to implement the `getChildren()` method (it can return `null`).
  Returns:
    An object representing the first child of the given node.
  See Also:
    `getChildren(java.lang.Object)`, `getRoot()`, `getNextSibling(java.lang.Object)`

### getNextSibling

    public java.lang.Object getNextSibling(java.lang.Object aNode)

  Retrieves the next sibling of the given node. Should return `null` if the node has no next sibling. An implementation thatsupports this method should implement the `getChild()` and `getNextSibling()` methods and does not need to implement the `getChildren()` method (it can return `null`).
  Returns:
    An object representing the next sibing of the given node.
  See Also:
    `getChildren(java.lang.Object)`, `getRoot()`, `getChild(java.lang.Object)`

### isLeaf

    public boolean isLeaf(java.lang.Object aNode)

  Indicates whether the given node is a leaf. The values returned by `isLeaf()` and `getChild()` or `getChildren()` should be consistant.
  Returns:
    `true` if the given node is a leaf.

### isCollapsed

    public boolean isCollapsed(TreePath aPath)

  Indicates whether the given node is collapsed.
  Returns:
    `true` if the given node is collapsed.

### setCollapsed

    public void setCollapsed(TreePath aPath,
                             boolean aCollapsed)

  Method to set the collapsed state of a node.

### getData

    public java.lang.Object getData(java.lang.Object aNode,
                                    java.lang.Object aID)

  Retrieves the data for the given node at the column with the given id. The data will be passed on to the `CellRenderer` of the column for rendering.
  Returns:
    An `Object` representing the data at the given column for the given node.
  See Also:
    `CellRenderer`, `Column`

### setData

    public void setData(java.lang.Object aNode,
                        java.lang.Object aID,
                        java.lang.Object aValue)

  Method for setting the data for the given node at the column with the given id. The data is retrieved from the `CellEditor` of the column.
  See Also:
    `CellEditor`, `Column`

### getIcon

    public javax.swing.Icon getIcon(java.lang.Object aNode)

  Retrieves an icon representing the given node. The return value can be `null` if no icon is to be drawn.
  Returns:
    An `Icon` representing the given node.

### getOverlayIcon

    public javax.swing.Icon getOverlayIcon(java.lang.Object aNode)

  Retrieves an icon representing a modified state for a given node. The return value can be `null` if no overlay icon is to be drawn. The overlay icon should be transparent and the same size as the returned icon.
  Returns:
    An `Icon` representing the given node state.
  See Also:
    `getIcon(java.lang.Object)`

### addTreeTableModelListener

    public void addTreeTableModelListener(TreeTableModelListener aListener)

  Adds a `TreeTableModelListener`.

### removeTreeTableModelListener

    public void removeTreeTableModelListener(TreeTableModelListener aListener)

  Removes a `TreeTableModelListener`.