Author: scabanovich
Date: 2011-08-15 20:32:59 -0400 (Mon, 15 Aug 2011)
New Revision: 33951
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java
Log:
JBIDE-9483
https://issues.jboss.org/browse/JBIDE-9483
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java 2011-08-16
00:26:17 UTC (rev 33950)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java 2011-08-16
00:32:59 UTC (rev 33951)
@@ -860,7 +860,50 @@
}
return folders;
}
+
+ private static class SourceFoldersCollector {
+ IProject project;
+ Set<IFolder> folders = new HashSet<IFolder>();
+ Set<IProject> processed = new HashSet<IProject>();
+ SourceFoldersCollector(IProject project) {
+ this.project = project;
+ process(project);
+ }
+
+ void process(IProject project) {
+ if(processed.contains(project)) {
+ return;
+ }
+ processed.add(project);
+ folders.addAll(getSourceFolders(project));
+ IJavaProject javaProject = getJavaProject(project);
+ if(javaProject == null) {
+ return;
+ }
+ IClasspathEntry[] es = null;
+ try {
+ es = javaProject.getResolvedClasspath(true);
+ } catch (CoreException e) {
+ ModelPlugin.getDefault().logError(e);
+ return;
+ }
+ for (int i = 0; i < es.length; i++) {
+ if(es[i].getEntryKind() == IClasspathEntry.CPE_PROJECT
+ && (project == this.project || es[i].isExported())) {
+ IProject p =
ResourcesPlugin.getWorkspace().getRoot().getProject(es[i].getPath().lastSegment());
+ if(p != null && p.isAccessible()) {
+ process(p);
+ }
+ }
+ }
+ }
+ }
+
+ public static Set<IFolder> getAllVisibleSourceFolders(IProject project) {
+ return new SourceFoldersCollector(project).folders;
+ }
+
public static void openResource(IResource resource) {
XModelObject o = getObjectByResource(resource);
if(o == null) o = createObjectForResource(resource);