001: /*
002: * PageRoot.java - Root node of the tree
003: * Copyright (C) 2003 Alexandre THOMAS
004: * alexthomas@free.fr
005: * http://helpgui.sourceforge.net
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License
009: * as published by the Free Software Foundation; either version 2
010: * of the License, or any later version.
011: *
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
015: * GNU General Public License for more details.
016: *
017: * You should have received a copy of the GNU General Public License
018: * along with this program; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
020: */
021:
022: package salomeTMF_plug.helpgui.page;
023:
024: import javax.swing.tree.MutableTreeNode;
025: import javax.swing.tree.TreeNode;
026:
027: import java.util.Enumeration;
028:
029: /**
030: * Root node for the tree
031: *
032: * @author Alexandre THOMAS
033: */
034: public class PageRoot implements MutableTreeNode {
035:
036: //List of pages
037: protected PageList pages;
038:
039: // parent
040: protected MutableTreeNode parentNode;
041:
042: // user object
043: protected Object userObject;
044:
045: ////////////////////////////////////////////////////////////////////
046:
047: /** Constructor. */
048: public PageRoot() {
049: pages = new PageList();
050: }
051:
052: /** Adds a page to this project (in the root of the project). */
053: public void add(Page page) {
054: if ((null != page) && (pages.indexOf(page) < 0))
055: pages.add(page);
056: }
057:
058: /** Convert the Page into String. */
059: public String toString() {
060: return "Help GUI";
061: }
062:
063: /// MutableTreeNode Implementation /////////////////////////////////
064:
065: /** Adds child to the receiver at index. */
066: public void insert(MutableTreeNode child, int index) {
067: // can deal only with pages doesn't need to support index
068: if (child.getClass() == Page.class)
069: pages.add((Page) child);
070: }
071:
072: /** Removes the child at index from the receiver. */
073: public void remove(int index) {
074: pages.remove(index);
075: }
076:
077: /** Removes node from the receiver. */
078: public void remove(MutableTreeNode node) {
079: // can deal only with pages
080: if (node.getClass() == Page.class)
081: pages.remove((Page) node);
082: }
083:
084: /** Removes the receiver from its parent. */
085: public void removeFromParent() {
086: if (null != parentNode)
087: parentNode.remove(this );
088: }
089:
090: /** Sets the parent of the receiver to newParent. */
091: public void setParent(MutableTreeNode newParent) {
092: parentNode = newParent;
093: }
094:
095: /** Resets the user object of the receiver to object. */
096: public void setUserObject(Object object) {
097: userObject = object;
098: }
099:
100: /** Returns the child TreeNode at index childIndex. */
101: public TreeNode getChildAt(int iChildIndex) {
102: return pages.get(iChildIndex);
103: }
104:
105: /** Returns the number of children TreeNodes the receiver contains. */
106: public int getChildCount() {
107: return pages.size();
108: }
109:
110: /** Returns the parent TreeNode of the receiver. */
111: public TreeNode getParent() {
112: return null;
113: }
114:
115: /** Returns the index of node in the receivers children. */
116: public int getIndex(TreeNode node) {
117: // check if it's a page
118: if (node.getClass() != Page.class)
119: return -1;
120:
121: // otherwise, checks if in the list
122: return pages.getIndex((Page) node);
123: }
124:
125: /** Returns true if the receiver is a leaf. */
126: public boolean isLeaf() {
127: return false;
128: }
129:
130: /** Returns true if the receiver allows children. */
131: public boolean getAllowsChildren() {
132: return true;
133: }
134:
135: /** Returns the children of the receiver as an Enumeration. */
136: public Enumeration children() {
137: return new PageEnumeration(pages);
138: }
139:
140: public Page getFirstChild() {
141: Enumeration e = children();
142: if (e.hasMoreElements())
143: return (Page) e.nextElement();
144: return null;
145: }
146:
147: }
|