Browse Source

GenModel Wizard creates genModel resource

Andreas Mülder 14 years ago
parent
commit
58b10fadc2

+ 1 - 9
plugins/org.yakindu.sct.generator.genmodel.ui/plugin.xml

@@ -6,6 +6,7 @@
     <extension
             point="org.eclipse.ui.editors">
         <editor
+        	icon="icons/GenModel-16.png"
             class="org.yakindu.sct.generator.genmodel.ui.SGenExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
             contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
             default="true"
@@ -137,15 +138,6 @@
         </resourceServiceProvider>
     </extension>
 
-
-
-   <extension
-         point="org.eclipse.xtext.builder.participant">
-      <participant
-            class="org.yakindu.sct.generator.genmodel.ui.SGenExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
-      </participant>
-   </extension>
-
 	<!-- Quick Outline -->
 	<extension
 		point="org.eclipse.ui.handlers">

+ 6 - 3
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/ModelCreator.java

@@ -49,8 +49,11 @@ public class ModelCreator {
 		entry.setStatechart(statechart);
 		List<FeatureType> featureTypes = getFeatureTypes();
 		for (FeatureType featureType : featureTypes) {
-			entry.getFeatures().add(
-					createFeatureConfiguration(statechart, featureType));
+			FeatureConfiguration config = createFeatureConfiguration(
+					statechart, featureType);
+			if (config != null) {
+				entry.getFeatures().add(config);
+			}
 		}
 		return entry;
 	}
@@ -67,7 +70,7 @@ public class ModelCreator {
 				return defaultProvider.createDefaultFeatureConfiguration(
 						featureType, statechart);
 		}
-		return factory.createFeatureConfiguration();
+		return null;
 	}
 
 	public List<FeatureType> getFeatureTypes() {

+ 15 - 23
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/SGenNewFileWizard.java

@@ -10,27 +10,25 @@
  */
 package org.yakindu.sct.generator.genmodel.ui.wizard;
 
-import java.io.File;
-import java.io.FileWriter;
 import java.io.IOException;
+import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.ui.INewWizard;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
-import org.eclipse.xtext.serializer.ISerializer;
-import org.yakindu.sct.generator.genmodel.ui.internal.SGenActivator;
 import org.yakindu.sct.model.sgen.GeneratorModel;
 import org.yakindu.sct.model.sgraph.Statechart;
 
-import com.google.inject.Injector;
+import com.google.inject.Inject;
 
 /**
  * 
@@ -46,6 +44,9 @@ public class SGenNewFileWizard extends Wizard implements INewWizard {
 	private IStructuredSelection selection;
 
 	protected SGenWizardPage2 generatorConfigPage;
+	
+	@Inject
+	private ResourceSet resourceSet;
 
 	public void init(IWorkbench workbench, IStructuredSelection selection) {
 		this.selection = selection;
@@ -75,14 +76,7 @@ public class SGenNewFileWizard extends Wizard implements INewWizard {
 			@Override
 			protected void execute(IProgressMonitor monitor)
 					throws CoreException, InterruptedException {
-				// TODO: Does not work for linked projects
-				IPath containerFullPath = modelFilePage.getContainerFullPath();
-				IPath location = ResourcesPlugin.getWorkspace().getRoot()
-						.getLocation();
-				location = location.append(containerFullPath);
-				location = location.append(modelFilePage.getFileName());
-				String osString = location.toOSString();
-				createDefaultModel(osString);
+				createDefaultModel(modelFilePage.getURI());
 			}
 		};
 		try {
@@ -94,19 +88,17 @@ public class SGenNewFileWizard extends Wizard implements INewWizard {
 		return true;
 	}
 
-	private void createDefaultModel(String target) {
+	private void createDefaultModel(URI uri) {
 		List<Statechart> statecharts = generatorConfigPage.getStatecharts();
 		String generatorId = generatorConfigPage.getGeneratorId();
+		
 		ModelCreator creator = new ModelCreator(generatorId, statecharts);
 		GeneratorModel model = creator.create();
-		Injector injector = SGenActivator.getInstance().getInjector(
-				"org.yakindu.sct.generator.genmodel.SGen");
-		ISerializer serializer = injector.getInstance(ISerializer.class);
+		
+		Resource resource = resourceSet.createResource(uri);
+		resource.getContents().add(model);
 		try {
-
-			File file = new File(target);
-			System.out.println(file.getAbsolutePath());
-			serializer.serialize(model, new FileWriter(file), null);
+			resource.save(Collections.EMPTY_MAP);
 		} catch (IOException e) {
 			e.printStackTrace();
 		}

+ 6 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/SGenWizardPage1.java

@@ -13,6 +13,7 @@ package org.yakindu.sct.generator.genmodel.ui.wizard;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.widgets.Composite;
@@ -31,6 +32,11 @@ public class SGenWizardPage1 extends WizardNewFileCreationPage {
 	protected String getExtension() {
 		return fileExtension;
 	}
+	
+	public URI getURI() {
+		return URI.createPlatformResourceURI(getFilePath().toString(), false);
+	}
+
 
 	public IPath getFilePath() {
 		IPath path = getContainerFullPath();