| /* |
| * Copyright 2010 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.user.cellview.client; |
| |
| /** |
| * A representation of a node in a tree. |
| */ |
| public interface TreeNode { |
| |
| /** |
| * Get the number of children of the node. |
| * |
| * @return the child count |
| */ |
| int getChildCount(); |
| |
| /** |
| * Get the value associated with a child node. |
| * |
| * @return the value |
| */ |
| Object getChildValue(int index); |
| |
| /** |
| * Get the index of the current node relative to its parent. |
| * |
| * @return the index of the current node |
| */ |
| int getIndex(); |
| |
| /** |
| * Get the parent node of this node. |
| * |
| * @return the parent node, or null if this node is the root node |
| */ |
| TreeNode getParent(); |
| |
| /** |
| * Get the value associated with this node. This method can be called on |
| * destroyed nodes. |
| * |
| * @return the value |
| */ |
| Object getValue(); |
| |
| /** |
| * Check whether or not a child node is a leaf node. |
| * |
| * @param index the index of the child |
| * @return true if a leaf node, false if not |
| */ |
| boolean isChildLeaf(int index); |
| |
| /** |
| * Check whether or not a child node is open. |
| * |
| * @param index the index of the child |
| * @return true if open, false if closed |
| */ |
| boolean isChildOpen(int index); |
| |
| /** |
| * Check whether or not the current node is destroyed. The node is destroyed |
| * when it is closed, even if it still appears in the tree as an unopened |
| * non-leaf node. Once a node is destroyed, calling most methods on the node |
| * results in an {@link IllegalStateException}. |
| * |
| * @return true if destroyed, false if active |
| */ |
| boolean isDestroyed(); |
| |
| /** |
| * Open or close a child node and fire an event. If <code>open</code> is true |
| * and the {@link TreeNode} successfully opens, returns the child |
| * {@link TreeNode}. Delegates to {@link #setChildOpen(int,boolean, boolean)}. |
| * |
| * @param index the index of the child |
| * @param open true to open, false to close |
| * @return the {@link TreeNode} that was opened, or null if the node was |
| * closed or could not be opened |
| */ |
| TreeNode setChildOpen(int index, boolean open); |
| |
| /** |
| * Open or close the node, optionally firing an event. If <code>open</code> is |
| * true and the {@link TreeNode} successfully opens, returns the child |
| * {@link TreeNode}. |
| * |
| * @param index the index of the child |
| * @param open true to open, false to flose |
| * @param fireEvents true to fire an event, false not to |
| * @return the {@link TreeNode} that was opened, or null if the node was |
| * closed or could not be opened |
| */ |
| TreeNode setChildOpen(int index, boolean open, boolean fireEvents); |
| } |