001    // Copyright 2004, 2005 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package org.apache.tapestry.contrib.tree.simple;
016    
017    import java.util.Collection;
018    import java.util.HashSet;
019    import java.util.Iterator;
020    import java.util.Set;
021    
022    import org.apache.tapestry.contrib.tree.model.IMutableTreeNode;
023    import org.apache.tapestry.contrib.tree.model.ITreeNode;
024    
025    /**
026     * @author ceco
027     */
028    public class TreeNode implements IMutableTreeNode
029    {
030            private static final long serialVersionUID = 677919478017303186L;
031            
032            protected Set m_setChildren;
033            protected IMutableTreeNode m_objParentNode;
034            
035            /**
036             * Constructor for TreeNode.
037             */
038            public TreeNode() {
039                    this(null);
040            }
041            public TreeNode(IMutableTreeNode parentNode) {
042                    super();
043                    m_objParentNode = parentNode;
044                    m_setChildren = new HashSet();
045            }
046    
047    
048            public int getChildCount() {
049                    return m_setChildren.size();
050            }
051    
052            public ITreeNode getParent() {
053                    return m_objParentNode;
054            }
055    
056            public boolean getAllowsChildren() {
057                    return true;
058            }
059    
060            public boolean isLeaf() {
061                    return m_setChildren.size() == 0 ? true:false;
062            }
063    
064            public Collection children() {
065                    return m_setChildren;
066            }
067    
068    
069            public void insert(IMutableTreeNode child) {
070                    child.setParent(this);
071                    m_setChildren.add(child);
072            }
073    
074            public void remove(IMutableTreeNode node) {
075                    m_setChildren.remove(node);
076            }
077    
078            public void removeFromParent() {
079                    m_objParentNode.remove(this);
080                    m_objParentNode = null;
081            }
082    
083            public void setParent(IMutableTreeNode newParent) {
084                    m_objParentNode = newParent;
085            }
086    
087            public void insert(Collection colChildren){
088                    for (Iterator iter = colChildren.iterator(); iter.hasNext();) {
089                            IMutableTreeNode element = (IMutableTreeNode) iter.next();
090                            element.setParent(this);
091                            m_setChildren.add(element);
092                    }
093            }
094    
095            /**
096             * @see org.apache.tapestry.contrib.tree.model.ITreeNode#containsChild(ITreeNode)
097             */
098            public boolean containsChild(ITreeNode node) {
099                    return m_setChildren.contains(node);
100            }
101    
102            /**
103             * @see org.apache.tapestry.contrib.tree.model.ITreeNode#getChildren()
104             */
105            public Collection getChildren() {
106                    return m_setChildren;
107            }
108    
109    }