[Xtext] [GrammarEditor] ContentAssist for grammar inheritance see https://bugs.eclipse.org/bugs/show_bug.cgi?id=459866

Change-Id: Ic9956ee742ee7c65c0ed84c239120bdf24f0af9f
This commit is contained in:
Holger Schill 2015-02-13 12:17:04 +01:00
parent 196296613d
commit 785a39d785

View file

@ -35,6 +35,7 @@ import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.resource.EObjectDescription;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.resource.IResourceDescription;
import org.eclipse.xtext.scoping.IGlobalScopeProvider;
import org.eclipse.xtext.scoping.IScope;
import org.eclipse.xtext.scoping.impl.AbstractScopeProvider;
import org.eclipse.xtext.scoping.impl.GlobalResourceDescriptionProvider;
@ -54,8 +55,11 @@ public class XtextScopeProvider extends AbstractScopeProvider {
@Inject
private GlobalResourceDescriptionProvider resourceDecriptionProvider;
@Inject
private IGlobalScopeProvider globalScopeProvider;
@Override
public IScope getScope(EObject context, EReference reference) {
public IScope getScope(final EObject context, EReference reference) {
if (reference == XtextPackage.eINSTANCE.getTypeRef_Classifier()) {
if (context instanceof TypeRef) {
final TypeRef typeRef = (TypeRef) context;
@ -80,6 +84,14 @@ public class XtextScopeProvider extends AbstractScopeProvider {
return IScope.NULLSCOPE;
}
if(reference == XtextPackage.eINSTANCE.getGrammar_UsedGrammars()){
return globalScopeProvider.getScope(context.eResource(), reference, new Predicate<IEObjectDescription>(){
@Override
public boolean apply(IEObjectDescription input) {
return input.getEObjectOrProxy() != context;
}
});
}
return createScope(context.eResource(), reference.getEReferenceType());
}