1 /*******************************************************************************
2 * Copyright (c) 2000, 2003 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Common Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/cpl-v10.html
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package net.sourceforge.phpdt.internal.core;
13 //import net.sourceforge.phpdt.core.IClasspathEntry;
14 import net.sourceforge.phpdt.core.IJavaProject;
15 //import net.sourceforge.phpdt.core.JavaModelException;
16 //import net.sourceforge.phpdt.internal.core.util.Util;
18 //import org.eclipse.core.resources.IContainer;
19 //import org.eclipse.core.resources.IResource;
20 //import org.eclipse.core.runtime.CoreException;
21 //import org.eclipse.core.runtime.IPath;
24 * Info for IJavaProject.
26 * Note: <code>getChildren()</code> returns all of the
27 * <code>IPackageFragmentRoots</code> specified on the classpath for the
28 * project. This can include roots external to the project. See
29 * <code>JavaProject#getAllPackageFragmentRoots()</code> and
30 * <code>JavaProject#getPackageFragmentRoots()</code>. To get only the
31 * <code>IPackageFragmentRoots</code> that are internal to the project, use
32 * <code>JavaProject#getChildren()</code>.
36 class JavaProjectElementInfo extends OpenableElementInfo {
39 * The name lookup facility to use with this project.
41 protected NameLookup fNameLookup = null;
44 * The searchable builder environment facility used with this project
45 * (doubles as the builder environment).
47 // protected SearchableEnvironment fSearchableEnvironment = null;
49 * A array with all the non-java resources contained by this PackageFragment
51 //private Object[] fNonJavaResources;
54 * Create and initialize a new instance of the receiver
56 public JavaProjectElementInfo() {
57 //fNonJavaResources = null;
61 * Compute the non-java resources contained in this java project.
63 // private Object[] computeNonJavaResources(JavaProject project) {
65 // // determine if src == project and/or if bin == project
66 // IPath projectPath = project.getProject().getFullPath();
67 // boolean srcIsProject = false;
68 // //boolean binIsProject = false;
69 // char[][] exclusionPatterns = null;
70 // IClasspathEntry[] classpath = null;
71 // IPath projectOutput = null;
73 // classpath = project
74 // .getResolvedClasspath(true/* ignore unresolved variable */);
75 // for (int i = 0; i < classpath.length; i++) {
76 // IClasspathEntry entry = classpath[i];
77 // if (projectPath.equals(entry.getPath())) {
78 // srcIsProject = true;
79 // exclusionPatterns = ((ClasspathEntry) entry)
80 // .fullExclusionPatternChars();
84 // projectOutput = project.getOutputLocation();
85 // //binIsProject = projectPath.equals(projectOutput);
86 // } catch (JavaModelException e) {
90 // Object[] nonJavaResources = new IResource[5];
91 // int nonJavaResourcesCounter = 0;
93 // IResource[] members = ((IContainer) project.getResource())
95 // for (int i = 0, max = members.length; i < max; i++) {
96 // IResource res = members[i];
97 // switch (res.getType()) {
98 // case IResource.FILE:
99 // IPath resFullPath = res.getFullPath();
100 // //String resName = res.getName();
102 // // ignore a jar file on the classpath
103 // // if (ProjectPrefUtil.isArchiveFileName(resName) &&
104 // // this.isClasspathEntryOrOutputLocation(resFullPath,
105 // // classpath, projectOutput)) {
108 // // ignore .java file if src == project
110 // // && ProjectPrefUtil.isValidCompilationUnitName(resName)
111 // && !Util.isExcluded(res, exclusionPatterns)) {
114 // // ignore .class file if bin == project
115 // // if (binIsProject &&
116 // // ProjectPrefUtil.isValidClassFileName(resName)) {
119 // // else add non java resource
120 // if (nonJavaResources.length == nonJavaResourcesCounter) {
126 // (nonJavaResources = new IResource[nonJavaResourcesCounter * 2]),
127 // 0, nonJavaResourcesCounter);
129 // nonJavaResources[nonJavaResourcesCounter++] = res;
131 // case IResource.FOLDER:
132 // resFullPath = res.getFullPath();
134 // // ignore non-excluded folders on the classpath or that
135 // // correspond to an output location
137 // && !Util.isExcluded(res, exclusionPatterns) && Util
138 // .isValidFolderNameForPackage(res.getName()))
139 // || this.isClasspathEntryOrOutputLocation(
140 // resFullPath, classpath, projectOutput)) {
143 // // else add non java resource
144 // if (nonJavaResources.length == nonJavaResourcesCounter) {
150 // (nonJavaResources = new IResource[nonJavaResourcesCounter * 2]),
151 // 0, nonJavaResourcesCounter);
153 // nonJavaResources[nonJavaResourcesCounter++] = res;
156 // if (nonJavaResources.length != nonJavaResourcesCounter) {
161 // (nonJavaResources = new IResource[nonJavaResourcesCounter]),
162 // 0, nonJavaResourcesCounter);
164 // } catch (CoreException e) {
165 // nonJavaResources = NO_NON_JAVA_RESOURCES;
166 // nonJavaResourcesCounter = 0;
168 // return nonJavaResources;
174 protected NameLookup getNameLookup() {
180 * Returns an array of non-java resources contained in the receiver.
182 // Object[] getNonJavaResources(JavaProject project) {
184 // Object[] nonJavaResources = fNonJavaResources;
185 // if (nonJavaResources == null) {
186 // nonJavaResources = computeNonJavaResources(project);
187 // fNonJavaResources = nonJavaResources;
189 // return nonJavaResources;
195 // protected SearchableEnvironment getSearchableEnvironment() {
197 // return fSearchableEnvironment;
200 * Returns whether the given path is a classpath entry or an output
203 // private boolean isClasspathEntryOrOutputLocation(IPath path,
204 // IClasspathEntry[] resolvedClasspath, IPath projectOutput) {
205 // if (projectOutput.equals(path))
207 // for (int i = 0, length = resolvedClasspath.length; i < length; i++) {
208 // IClasspathEntry entry = resolvedClasspath[i];
209 // if (entry.getPath().equals(path)) {
213 // if ((output = entry.getOutputLocation()) != null
214 // && output.equals(path)) {
221 protected void setNameLookup(NameLookup newNameLookup) {
223 fNameLookup = newNameLookup;
225 // Reinitialize the searchable name environment since it caches
227 // fSearchableEnvironment = null;
231 * Set the fNonJavaResources to res value
233 synchronized void setNonJavaResources(Object[] resources) {
235 //fNonJavaResources = resources;
238 // protected void setSearchableEnvironment(SearchableEnvironment
239 // newSearchableEnvironment) {
241 // fSearchableEnvironment = newSearchableEnvironment;