Selaa lähdekoodia

allow fqn names for type cast expressions, added context to scope providers

Andreas Mülder 10 vuotta sitten
vanhempi
commit
46d92aea63

+ 3 - 2
plugins/org.yakindu.sct.generator.genmodel.ui/META-INF/MANIFEST.MF

@@ -34,9 +34,10 @@ Import-Package: org.apache.commons.logging,
  org.eclipse.jdt.core
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Export-Package: org.yakindu.sct.generator.genmodel.ui,
+ org.yakindu.sct.generator.genmodel.ui.contentassist,
  org.yakindu.sct.generator.genmodel.ui.contentassist.antlr,
  org.yakindu.sct.generator.genmodel.ui.help,
  org.yakindu.sct.generator.genmodel.ui.internal,
- org.yakindu.sct.generator.genmodel.ui.contentassist,
- org.yakindu.sct.generator.genmodel.ui.quickfix
+ org.yakindu.sct.generator.genmodel.ui.quickfix,
+ org.yakindu.sct.generator.genmodel.ui.wizard
 Bundle-Activator: org.yakindu.sct.generator.genmodel.ui.internal.SGenActivator

+ 4 - 5
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/scoping/STextGlobalScopeProvider.java

@@ -21,7 +21,6 @@ import org.eclipse.xtext.scoping.IScope;
 import org.eclipse.xtext.scoping.impl.DefaultGlobalScopeProvider;
 import org.eclipse.xtext.scoping.impl.FilteringScope;
 import org.yakindu.base.types.ITypeSystemRegistry;
-import org.yakindu.base.types.typesystem.ITypeSystem;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Statechart;
 
@@ -50,13 +49,13 @@ public class STextGlobalScopeProvider extends DefaultGlobalScopeProvider {
 		IScope parentScope = super.getScope(context, reference, filter);
 		parentScope = filterExternalDeclarations(context, parentScope);
 		parentScope = new TypeSystemAwareScope(parentScope, typeSystem, qualifiedNameProvider,
-				reference.getEReferenceType(),getStatechart(context).getDomainID());
+				reference.getEReferenceType(), getStatechart(context).getDomainID(), getStatechart(context));
 		return parentScope;
 	}
-	
+
 	private Statechart getStatechart(Resource context) {
-		final ContextElementAdapter provider = (ContextElementAdapter) EcoreUtil.getExistingAdapter(
-				context, ContextElementAdapter.class);
+		final ContextElementAdapter provider = (ContextElementAdapter) EcoreUtil.getExistingAdapter(context,
+				ContextElementAdapter.class);
 
 		if (provider == null) {
 			return (Statechart) EcoreUtil2.getObjectByType(context.getContents(), SGraphPackage.Literals.STATECHART);

+ 9 - 4
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/scoping/TypeSystemAwareScope.java

@@ -23,6 +23,7 @@ import org.eclipse.xtext.scoping.impl.AbstractScope;
 import org.yakindu.base.types.ITypeSystemRegistry;
 import org.yakindu.base.types.typesystem.ITypeSystem;
 import org.yakindu.sct.domain.extension.DefaultDomain;
+import org.yakindu.sct.model.sgraph.Statechart;
 
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
@@ -37,12 +38,15 @@ public class TypeSystemAwareScope extends AbstractScope {
 
 	private String domainID;
 
+	private Statechart context;
+
 	public TypeSystemAwareScope(IScope parent, ITypeSystemRegistry typeSystemAccess,
-			IQualifiedNameProvider qualifiedNameProvider, EClass eClass, String domainID) {
+			IQualifiedNameProvider qualifiedNameProvider, EClass eClass, String domainID, Statechart context) {
 		super(parent, false);
 		this.typeSystemAccess = typeSystemAccess;
 		this.qualifiedNameProvider = qualifiedNameProvider;
 		this.eClass = eClass;
+		this.context = context;
 		this.domainID = domainID != null ? domainID : DefaultDomain.DOMAIN_ID;
 	}
 
@@ -51,10 +55,11 @@ public class TypeSystemAwareScope extends AbstractScope {
 		List<IEObjectDescription> result = Lists.newArrayList();
 		Iterable<ITypeSystem> allTypeSystems = typeSystemAccess.getTypeSystems(domainID);
 		for (ITypeSystem iTypeSystem : allTypeSystems) {
-			Iterable<IEObjectDescription> iterable = Scopes.scopedElementsFor(
-					EcoreUtil2.<EObject> getObjectsByType(iTypeSystem.getTypes(), eClass), qualifiedNameProvider);
+			Iterable<IEObjectDescription> iterable = Scopes
+					.scopedElementsFor(EcoreUtil2.<EObject> getObjectsByType(iTypeSystem.getTypes(context), eClass),
+							qualifiedNameProvider);
 			Iterables.addAll(result, iterable);
 		}
 		return result;
 	}
-} 
+}