Просмотр исходного кода

Bugfix: Sgen Wizard failes for multi statechart selection. If the Java nature is added, statecharts are only visible on the build path

Andreas Mülder 13 лет назад
Родитель
Сommit
559dd25c01

+ 1 - 5
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/SGenUiModule.java

@@ -60,11 +60,7 @@ public class SGenUiModule extends
 	}
 
 	public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
-		if (Access.getJdtHelper().get().isJavaCoreAvailable()) {
-			return Access.getJavaProjectsState();
-		} else {
-			return Access.getWorkspaceProjectsState();
-		}
+		return Access.getWorkspaceProjectsState();
 	}
 
 	@Override

+ 1 - 11
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/SGenWizardPage2.java

@@ -10,7 +10,6 @@
  */
 package org.yakindu.sct.generator.genmodel.ui.wizard;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -236,16 +235,7 @@ public class SGenWizardPage2 extends WizardPage {
 		URI uri = URI.createPlatformResourceURI(iResource.getFullPath()
 				.toString(), true);
 		ResourceSet resourceSet = new ResourceSetImpl();
-		Resource resource = Resource.Factory.Registry.INSTANCE.getFactory(uri)
-				.createResource(uri);
-		resourceSet.getResources().add(resource);
-		try {
-			resource.load(Collections.emptyMap());
-		} catch (IOException e) {
-			e.printStackTrace();
-			return null;
-		}
-		return resource;
+		return resourceSet.getResource(uri, true);
 	}
 
 	public String getGeneratorId() {

+ 5 - 12
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/SGenRuntimeModule.java

@@ -10,31 +10,24 @@
  */
 package org.yakindu.sct.generator.genmodel;
 
-import org.eclipse.xtext.linking.ILinker;
-import org.eclipse.xtext.linking.impl.Linker;
 import org.eclipse.xtext.naming.IQualifiedNameProvider;
 import org.eclipse.xtext.naming.SimpleNameProvider;
+import org.eclipse.xtext.serializer.tokens.ICrossReferenceSerializer;
+import org.yakindu.sct.generator.genmodel.serializer.SGenCrossReferenceSerializer;
 
 /**
  * Use this class to register components to be used at runtime / without the
  * Equinox extension registry.
  */
+@SuppressWarnings("restriction")
 public class SGenRuntimeModule extends
 		org.yakindu.sct.generator.genmodel.AbstractSGenRuntimeModule {
-
 	@Override
 	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
 		return SimpleNameProvider.class;
 	}
 
-	@Override
-	public Class<? extends ILinker> bindILinker() {
-		return Linker.class;
+	public Class<? extends ICrossReferenceSerializer> bindICrossReferenceSerializer() {
+		return SGenCrossReferenceSerializer.class;
 	}
-	
-//	@Override
-//	public Class<? extends IValueConverterService> bindIValueConverterService() {
-//		return SGenValueConverter.class;
-//	}
-
 }

+ 39 - 0
plugins/org.yakindu.sct.generator.genmodel/src/org/yakindu/sct/generator/genmodel/serializer/SGenCrossReferenceSerializer.java

@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     committers of YAKINDU - initial API and implementation
+ */
+package org.yakindu.sct.generator.genmodel.serializer;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.CrossReference;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
+import org.eclipse.xtext.serializer.tokens.CrossReferenceSerializer;
+import org.yakindu.sct.model.sgraph.Statechart;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+@SuppressWarnings("restriction")
+public class SGenCrossReferenceSerializer extends CrossReferenceSerializer {
+
+	@Override
+	public String serializeCrossRef(EObject semanticObject,
+			CrossReference crossref, EObject target, INode node, Acceptor errors) {
+		// for statechart crossreferences, we do not want to check the scope
+		if (target instanceof Statechart) {
+			return ((Statechart) target).getName();
+		}
+		return super.serializeCrossRef(semanticObject, crossref, target, node,
+				errors);
+	}
+
+}