KickJava   Java API By Example, From Geeks To Geeks.

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


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.IFile;
7 import org.eclipse.core.resources.IFolder;
8 import org.eclipse.core.resources.IProject;
9 import org.eclipse.core.resources.IResource;
10 import org.eclipse.core.runtime.CoreException;
11
12 import com.tc.admin.common.XRootNode;
13
14 import java.util.ArrayList JavaDoc;
15 import java.util.Vector JavaDoc;
16
17 import javax.swing.tree.TreeNode JavaDoc;
18
19 /**
20  * A TreeNode that represents the root of a project fileset
21  *
22  * @see JavaProjectNode
23  * @see JavaProjectModel
24  */

25
26 public class ProjectFileRoot extends XRootNode implements IResourceNode {
27   private IProject m_project;
28   private String JavaDoc m_extension;
29   private IResource[] m_members;
30   
31   public ProjectFileRoot(IProject project) {
32     this(project, null);
33     init();
34   }
35   
36   public ProjectFileRoot(IProject project, String JavaDoc extension) {
37     super(project);
38     
39     m_project = project;
40     m_extension = extension;
41     
42     init();
43   }
44
45   private void init() {
46     int count = ensureMembers().length;
47
48     if(children == null) {
49       children = new Vector JavaDoc();
50     }
51     children.setSize(count);
52   }
53
54   public TreeNode JavaDoc getChildAt(int index) {
55     if(children != null && children.elementAt(index) == null) {
56       addChildren();
57     }
58     
59     return super.getChildAt(index);
60   }
61
62   private void addChildren() {
63     IResource[] members = ensureMembers();
64     IResource member;
65     ProjectNode child;
66     
67     for(int i = 0; i < members.length; i++) {
68       member = members[i];
69       
70       switch(member.getType()) {
71         case IResource.FOLDER: {
72           child = new ProjectFolderNode((IFolder)member, m_extension);
73           children.setElementAt(child, i);
74           child.setParent(this);
75           break;
76         }
77         case IResource.FILE: {
78           child = new ProjectFileNode((IFile)member);
79           children.setElementAt(child, i);
80           child.setParent(this);
81           break;
82         }
83       }
84     }
85   }
86   
87   public String JavaDoc toString() {
88     return m_project.getName();
89   }
90   
91   public IResource getResource() {
92     return getProject();
93   }
94   
95   public IProject getProject() {
96     return m_project;
97   }
98   
99   public String JavaDoc getExtension() {
100     return m_extension;
101   }
102
103   private IResource[] ensureMembers() {
104     if(m_members == null) {
105       m_members = internalGetMembers();
106     }
107     return m_members;
108   }
109   
110   private IResource[] internalGetMembers() {
111     try {
112       IResource[] members = m_project.members();
113       IResource member;
114       
115       if(m_extension != null) {
116         ArrayList JavaDoc<IResource> list = new ArrayList JavaDoc<IResource>();
117         
118         for(int i = 0; i < members.length; i++) {
119           member = members[i];
120           
121           if(member.getType() == IResource.FOLDER ||
122              m_extension.equals(member.getFileExtension())) {
123             list.add(member);
124           }
125         }
126         members = list.toArray(new IResource[0]);
127       }
128       
129       return members;
130     } catch(CoreException ce) {
131       return new IResource[0];
132     }
133   }
134 }
135
Popular Tags