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.io.Serializable;
018    import java.util.Iterator;
019    
020    import javax.swing.tree.TreePath;
021    
022    import org.apache.tapestry.contrib.tree.model.ITreeDataModel;
023    import org.apache.tapestry.contrib.tree.model.ITreeNode;
024    
025    /**
026     * @author ceco
027     */
028    public class SimpleTreeDataModel implements ITreeDataModel, Serializable
029    {
030            private static final long serialVersionUID = 9215832847660213349L;
031            
032            protected ITreeNode m_objRootNode;
033            /**
034             * Constructor for SimpleTreeDataModel.
035             */
036            public SimpleTreeDataModel(ITreeNode objRootNode) {
037                    super();
038                    m_objRootNode = objRootNode;
039            }
040    
041            /**
042             * @see org.apache.tapestry.contrib.tree.model.ITreeDataModel#getRoot()
043             */
044            public Object getRoot() {
045                    return m_objRootNode;
046            }
047    
048            /**
049             * @see org.apache.tapestry.contrib.tree.model.ITreeDataModel#getChildCount(Object)
050             */
051            public int getChildCount(Object objParent) {
052                    ITreeNode objParentNode = (ITreeNode)objParent;
053                    
054                    return objParentNode.getChildCount();
055            }
056    
057            /**
058             * @see org.apache.tapestry.contrib.tree.model.ITreeDataModel#getChildren(Object)
059             */
060            public Iterator getChildren(Object objParent) {
061                    ITreeNode objParentNode = (ITreeNode)objParent;
062                    return objParentNode.getChildren().iterator();
063            }
064    
065            /**
066             * @see org.apache.tapestry.contrib.tree.model.ITreeDataModel#getObject(Object)
067             */
068            public Object getObject(Object objUniqueKey) {
069                    if(objUniqueKey != null) {
070                            TreePath objPath = (TreePath)objUniqueKey;
071                            return objPath.getLastPathComponent();
072                    }
073                    return null;
074            }
075    
076            /**
077             * @see org.apache.tapestry.contrib.tree.model.ITreeDataModel#getUniqueKey(Object, Object)
078             */
079            public Object getUniqueKey(Object objTarget, Object objParentUniqueKey) {
080                    TreePath objPath = (TreePath)objParentUniqueKey;
081                    Object objTargetUID = null;
082                    if(objPath != null){
083                            objTargetUID = objPath.pathByAddingChild(objTarget);
084                    }else{
085                            objTargetUID = new TreePath(objTarget);
086                    }
087                    return objTargetUID;
088            }
089    
090            /**
091             * @see org.apache.tapestry.contrib.tree.model.ITreeDataModel#isAncestorOf(Object, Object)
092             */
093            public boolean isAncestorOf(Object objTargetUniqueKey, Object objParentUniqueKey) {
094                    TreePath objParentPath = (TreePath)objParentUniqueKey;
095                    TreePath objTargetPath = (TreePath)objTargetUniqueKey;
096                    boolean bResult = objParentPath.isDescendant(objTargetPath);
097                    return bResult;
098            }
099    
100            /**
101             * @see org.apache.tapestry.contrib.tree.model.ITreeDataModel#getParentUniqueKey
102             */
103            public Object getParentUniqueKey(Object objChildUniqueKey) {
104                    TreePath objChildPath = (TreePath)objChildUniqueKey;
105                    TreePath objParentPath = objChildPath.getParentPath();
106                    if(objParentPath == null)
107                            return null;
108                    return objParentPath.getLastPathComponent();
109            }
110    
111    }