blob: c7eedabe7de2c1186ae944e8347cfdd671d48d30 [file] [log] [blame]
/*
* 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);
}