KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > terracotta > dso > editors > tree > ProjectFolderRoot


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package org.terracotta.dso.editors.tree;
5
6 import org.eclipse.core.resources.IFolder;
7 import org.eclipse.core.resources.IProject;
8 import org.eclipse.core.resources.IResource;
9 import org.eclipse.core.runtime.CoreException;
10
11 import com.tc.admin.common.XRootNode;
12
13 import java.util.ArrayList JavaDoc;
14 import java.util.Vector JavaDoc;
15
16 import javax.swing.tree.TreeNode JavaDoc;
17
18 /**
19  * A TreeNode that represents a project root.
20  *
21  * @see ProjectNode
22  * @see ProjectModel
23  * @see IResourceNode
24  */

25
26 public class ProjectFolderRoot extends XRootNode implements IResourceNode {
27   private IProject m_project;
28   private IFolder[] m_folders;
29   
30   public ProjectFolderRoot(IProject project) {
31     super(project);
32     m_project = project;
33     init();
34   }
35
36   private void init() {
37     int count = ensureFolders().length;
38
39     if(children == null) {
40       children = new Vector JavaDoc();
41     }
42     children.setSize(count);
43   }
44   
45   public TreeNode JavaDoc getChildAt(int index) {
46     if(children != null && children.elementAt(index) == null) {
47       addChildren();
48     }
49     
50     return super.getChildAt(index);
51   }
52   
53   private void addChildren() {
54     IFolder[] folders = ensureFolders();
55     FolderNode child;
56     
57     for(int i = 0; i < folders.length; i++) {
58       child = new FolderNode(folders[i]);
59       children.setElementAt(child, i);
60       child.setParent(this);
61     }
62   }
63   
64   class FolderNode extends ProjectFolderNode {
65     FolderNode(IFolder folder) {
66       super(folder);
67     }
68     
69     FolderNode(IFolder folder, String JavaDoc extension) {
70       super(folder, extension);
71     }
72
73     protected ProjectFolderNode createFolderNode(IFolder folder, String JavaDoc ext) {
74       return new FolderNode(folder, ext);
75     }
76     
77     public boolean addResource(IResource resource) {
78       return resource instanceof IFolder;
79     }
80   }
81   
82   public String JavaDoc toString() {
83     return m_project.getName();
84   }
85   
86   public IResource getResource() {
87     return getProject();
88   }
89   
90   public IProject getProject() {
91     return m_project;
92   }
93   
94   private IFolder[] ensureFolders() {
95     if(m_folders == null) {
96       m_folders = internalGetFolders();
97     }
98     return m_folders;
99   }
100   
101   private IFolder[] internalGetFolders() {
102     try {
103       ArrayList JavaDoc<IFolder> list = new ArrayList JavaDoc<IFolder>();
104       IResource[] members = m_project.members();
105           
106       for(int i = 0; i < members.length; i++) {
107         if(members[i].getType() == IResource.FOLDER) {
108           list.add((IFolder)members[i]);
109         }
110       }
111
112       return list.toArray(new IFolder[0]);
113     } catch(CoreException ce) {
114       return new IFolder[0];
115     }
116   }
117 }
118
Popular Tags