* some fixes for custom model element support
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/BuildpathChange.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/BuildpathChange.java
index 8a7309a..c2f8a03 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/BuildpathChange.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/BuildpathChange.java
@@ -277,11 +277,11 @@
rootIDs, null, // inside original project
false, // don't retrieve exported roots
false, null); /* no reverse map */
- pkgFragmentRoots = new ProjectFragment[accumulatedRoots
+ pkgFragmentRoots = new IProjectFragment[accumulatedRoots
.size()];
accumulatedRoots.copyInto(pkgFragmentRoots);
} catch (ModelException e) {
- pkgFragmentRoots = new ProjectFragment[] {};
+ pkgFragmentRoots = new IProjectFragment[] {};
}
}
addBuildpathDeltas(delta, pkgFragmentRoots,
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NameLookup.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NameLookup.java
index 3ad3855..0fec100 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NameLookup.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/NameLookup.java
@@ -220,7 +220,7 @@
// are actual packages
ProjectElementInfo.addNames(pkgName, this.isPackageCache);
} else {
- if (existing instanceof ProjectFragment) {
+ if (existing instanceof IProjectFragment) {
if (!existing.equals(root))
this.scriptFolders
.put(pkgName, new IProjectFragment[] {
@@ -332,7 +332,7 @@
}
Object value = this.scriptFolders.get(pkgName);
if (value != null) {
- if (value instanceof ProjectFragment) {
+ if (value instanceof IProjectFragment) {
return findSourceModule(pkgName, cuName,
(IProjectFragment) value);
} else {
@@ -448,7 +448,7 @@
if (defaultPkgRoot == null) {
return null;
}
- if (defaultPkgRoot instanceof ProjectFragment
+ if (defaultPkgRoot instanceof IProjectFragment
&& defaultPkgRoot.equals(root))
return ((IProjectFragment) root)
.getScriptFolder(Path.EMPTY);
@@ -495,7 +495,7 @@
if (pkgName != null
&& Util.startsWithIgnoreCase(pkgName, splittedName)) {
Object value = this.scriptFolders.valueTable[i];
- if (value instanceof ProjectFragment) {
+ if (value instanceof IProjectFragment) {
IScriptFolder pkg = ((IProjectFragment) value)
.getScriptFolder(toPath(pkgName));
if (oneFragment == null) {
@@ -537,7 +537,7 @@
Object value = this.scriptFolders.get(splittedName);
if (value == null)
return null;
- if (value instanceof ProjectFragment) {
+ if (value instanceof IProjectFragment) {
return new IScriptFolder[] { ((IProjectFragment) value)
.getScriptFolder(toPath(splittedName)) };
} else {
@@ -861,7 +861,7 @@
if (pkgName != null
&& Util.startsWithIgnoreCase(pkgName, splittedName)) {
Object value = this.scriptFolders.valueTable[i];
- if (value instanceof ProjectFragment) {
+ if (value instanceof IProjectFragment) {
IProjectFragment root = (IProjectFragment) value;
requestor.acceptScriptFolder(root
.getScriptFolder(toPath(pkgName)));
@@ -880,7 +880,7 @@
} else {
String[] splittedName = Util.splitOn('.', name, 0, name.length());
Object value = this.scriptFolders.get(splittedName);
- if (value instanceof ProjectFragment) {
+ if (value instanceof IProjectFragment) {
requestor.acceptScriptFolder(((IProjectFragment) value)
.getScriptFolder(toPath(splittedName)));
} else {
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectElementInfo.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectElementInfo.java
index 207f830..02987c6 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectElementInfo.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ProjectElementInfo.java
@@ -276,7 +276,7 @@
// are actual packages
addNames(pkgName, isPackageCache);
} else {
- if (existing instanceof ProjectFragment) {
+ if (existing instanceof IProjectFragment) {
fragmentsCache.put(pkgName, new IProjectFragment[] {
(IProjectFragment) existing, root });
} else {
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptFolder.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptFolder.java
index 95cf8dc..9263e0a 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptFolder.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptFolder.java
@@ -322,7 +322,7 @@
if (this.isRootFolder()) {
return ModelElementInfo.NO_NON_SCRIPT_RESOURCES;
} else {
- if (getProjectFragment() instanceof ProjectFragment) {
+ if (getProjectFragment() instanceof IProjectFragment) {
return ((ScriptFolderInfo) getElementInfo())
.getForeignResources(getResource(),
(IProjectFragment) getProjectFragment());
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptProject.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptProject.java
index 9cd80ea..8ca1d1e 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptProject.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/ScriptProject.java
@@ -2707,6 +2707,22 @@
break;
}
}
+ // Check for all fragments for custom elements
+ try {
+ IProjectFragment[] allProjectFragments = getAllProjectFragments();
+ for (IProjectFragment fragment : allProjectFragments) {
+ if (fragment.isExternal()) {
+ IPath path = fragment.getPath();
+ if (path.isPrefixOf(elementPath)) {
+ return true;
+ }
+ }
+ }
+ } catch (ModelException e) {
+ if (DLTKCore.DEBUG) {
+ e.printStackTrace();
+ }
+ }
return false;
}