All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jnario.spec.scoping.SpecImportedNamespaceScopeProvider Maven / Gradle / Ivy

The newest version!
package org.jnario.spec.scoping;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.xtext.common.types.access.IJvmTypeProvider;
import org.eclipse.xtext.common.types.xtext.AbstractTypeScope;
import org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider;
import org.eclipse.xtext.scoping.IScope;
import org.eclipse.xtext.scoping.impl.SelectableBasedScope;
import org.jnario.scoping.JnarioImportedNamespaceScopeProvider;
import org.jnario.spec.spec.ExampleGroup;
import org.jnario.spec.spec.SpecPackage;

import com.google.inject.Inject;

public class SpecImportedNamespaceScopeProvider extends
		JnarioImportedNamespaceScopeProvider {

	@Inject
	private AbstractTypeScopeProvider typeScopeProvider;
	
	@Override
	public IScope getScope(final EObject context, final EReference reference) {
		if (reference == SpecPackage.Literals.EXAMPLE_GROUP__TARGET_TYPE) {
				Resource resource = context.eResource();
				IJvmTypeProvider typeProvider = typeScopeProvider.getTypeProvider(resource.getResourceSet());
				AbstractTypeScope typeScope = typeScopeProvider.createTypeScope(typeProvider, null);
				return SelectableBasedScope.createScope(typeScope, getAllDescriptions(resource), reference.getEReferenceType(), false);
		}else{
			return super.getScope(context, reference);
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy