浏览代码

Ensure fake resource is removed from resource set when populating.

Alexander Nyßen 14 年之前
父节点
当前提交
59e38f4291

+ 10 - 1
de.itemis.xtext.utils/plugins/de.itemis.xtext.utils.jface/src/de/itemis/xtext/utils/jface/viewers/context/XtextFakeResourceContext.java

@@ -18,7 +18,8 @@ import com.google.inject.name.Named;
 import de.itemis.xtext.utils.jface.viewers.util.ActiveEditorTracker;
 
 /**
- * Context used by {@link XtextStyledTextAdapter} to handle the required underlying (fake) resources.
+ * Context used by {@link XtextStyledTextAdapter} to handle the required
+ * underlying (fake) resources.
  * 
  * @author alexander.nyssen@itemis.de
  * 
@@ -89,7 +90,9 @@ public class XtextFakeResourceContext {
 
 	public void updateFakeResourceContext(
 			IXtextContextFakeResourcesProvider contextProvider) {
+		
 		// remove any other resources that may have been created earlier
+		// unloading them (to remove all adapters)
 		List<Resource> staleResources = new ArrayList<Resource>();
 		for (Resource r : getFakeResourceSet().getResources()) {
 			if (r != getFakeResource()) {
@@ -98,7 +101,13 @@ public class XtextFakeResourceContext {
 			}
 		}
 		getFakeResourceSet().getResources().removeAll(staleResources);
+
+		// when populating the fake resource set, the non-existing fake resource
+		// contained in the resource set may be problematic, so we temporarily
+		// remove it
+		getFakeResourceSet().getResources().remove(getFakeResource());
 		contextProvider.populateFakeResourceContextResourceSet(fakeResourceSet);
+		getFakeResourceSet().getResources().add(getFakeResource());
 	}
 
 }