KickJava   Java API By Example, From Geeks To Geeks.

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


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.runtime.IPath;
7 import org.eclipse.jdt.core.IJavaElement;
8 import org.eclipse.jdt.core.IPackageFragment;
9 import org.eclipse.jdt.core.IPackageFragmentRoot;
10 import org.eclipse.jdt.core.JavaModelException;
11
12 import java.util.ArrayList JavaDoc;
13 import java.util.Arrays JavaDoc;
14 import java.util.Vector JavaDoc;
15
16 import javax.swing.SwingUtilities JavaDoc;
17 import javax.swing.tree.TreeNode JavaDoc;
18
19 /**
20  * A TreeNode that represents the root of a Java project
21  *
22  * @see JavaProjectNode
23  * @see JavaProjectModel
24  */

25
26 public class PackageFragmentRootNode extends JavaProjectNode {
27   private IPackageFragmentRoot m_packageFragmentRoot;
28   private IPackageFragment[] m_packageFragments;
29   private String JavaDoc m_name;
30   private boolean m_showFields;
31   private boolean m_showMethods;
32   private boolean m_showTypes;
33   
34   public PackageFragmentRootNode(IPackageFragmentRoot packageFragmentRoot) {
35     this(packageFragmentRoot, true, true, true);
36   }
37   
38   public PackageFragmentRootNode(
39     IPackageFragmentRoot packageFragmentRoot,
40     boolean showFields,
41     boolean showMethods,
42     boolean showTypes)
43   {
44     super(packageFragmentRoot);
45
46     m_packageFragmentRoot = packageFragmentRoot;
47     m_showFields = showFields;
48     m_showMethods = showMethods;
49     m_showTypes = showTypes;
50     
51     IPath path = m_packageFragmentRoot.getPath();
52     m_name = path.lastSegment();
53     
54     String JavaDoc ext = path.getFileExtension();
55     if(ext != null && (ext.equals("jar") || ext.equals("zip"))) {
56       m_name = path.lastSegment() + " - " + path.removeLastSegments(1).toOSString();
57     }
58   }
59   
60   public int getChildCount() {
61     return children != null ? children.size() : 1;
62   }
63
64   public TreeNode JavaDoc getChildAt(int index) {
65     if(children == null) {
66       children = new Vector JavaDoc();
67       children.setSize(ensurePackageFragments().length);
68       SwingUtilities.invokeLater(new Runnable JavaDoc() {
69         public void run() {
70           nodeStructureChanged();
71         }
72       });
73     }
74
75     if(children.elementAt(index) == null) {
76       addChild(index);
77     }
78     
79     return super.getChildAt(index);
80   }
81   
82   public void addChild(int index) {
83     IPackageFragment[] fragments = ensurePackageFragments();
84     IPackageFragment fragment = fragments[index];
85     PackageFragmentNode node;
86       
87     node = new PackageFragmentNode(fragment, m_showFields, m_showMethods, m_showTypes);
88     setChildAt(node, index);
89   }
90   
91   private IPackageFragment[] ensurePackageFragments() {
92     if(m_packageFragments == null) {
93       m_packageFragments = internalGetPackageFragments();
94     }
95     
96     return m_packageFragments;
97   }
98   
99   private IPackageFragment[] internalGetPackageFragments() {
100     try {
101       IJavaElement[] elements = m_packageFragmentRoot.getChildren();
102       ArrayList JavaDoc<IPackageFragment> list = new ArrayList JavaDoc<IPackageFragment>();
103       IJavaElement element;
104       IPackageFragment[] fragments;
105       IPackageFragment fragment;
106       
107       for(int i = 0; i < elements.length; i++) {
108         element = elements[i];
109         
110         if(element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
111           fragment = (IPackageFragment)element;
112           
113           if(fragment.containsJavaResources()) {
114             list.add(fragment);
115           }
116         }
117       }
118       
119       fragments = list.toArray(new IPackageFragment[0]);
120       return (IPackageFragment[])JavaElementComparable.sort(fragments);
121     } catch(JavaModelException jme) {
122       return new IPackageFragment[0];
123     }
124   }
125
126   public String JavaDoc getSignature() {
127     return "";
128   }
129   
130   public String JavaDoc[] getFields() {
131     ArrayList JavaDoc<String JavaDoc> list = new ArrayList JavaDoc<String JavaDoc>();
132     int childCount = getChildCount();
133     
134     for(int i = 0; i < childCount; i++) {
135       list.addAll(Arrays.asList(((JavaProjectNode)getChildAt(i)).getFields()));
136     }
137     
138     return list.toArray(new String JavaDoc[0]);
139   }
140   
141   public String JavaDoc toString() {
142     return m_name;
143   }
144 }
145
Popular Tags