Browse Source

Fixed templates for custom code generators. Revived workspace generator wizard.

Thomas Kutz 9 years ago
parent
commit
e165504ec9

+ 11 - 18
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/GeneratorProjectTemplate.xtend

@@ -300,26 +300,21 @@ class GeneratorProjectTemplate {
 		 org.apache.log4j;resolution:=optional,
 		 com.ibm.icu,
 		 org.antlr.runtime,
-		 org.eclipse.core.runtime",
-		 org.eclipse.emf.mwe.utils",
-		 org.eclipse.emf.ecore.xmi",
-		 org.eclipse.jface.text",
+		 org.eclipse.core.runtime,
+		 org.eclipse.emf.mwe.utils,
+		 org.eclipse.emf.ecore.xmi,
+		 org.eclipse.jface.text,
 		«IF data.generatorType == GeneratorType::Xtend»
 			«' '»org.eclipse.xtend;bundle-version="0.7.0",
 			«' '»org.eclipse.xtend.typesystem.emf;bundle-version="0.7.0",
-			«' '»org.eclipse.xtend.profiler;resolution:=optional,
-		«ENDIF»
-		«IF data.generatorType == GeneratorType::Xtend»
 			«' '»org.eclipse.xtext.xbase.lib,
 			«' '»org.eclipse.xtend.lib,
 		«ENDIF»
-		«IF data.pluginExport»
-			«' '»org.yakindu.sct.generator.core",
-		«ENDIF»
-		 org.yakindu.sct.model.sgen",
-		 org.yakindu.sct.model.sexec",
-		 org.yakindu.sct.model.stext",
-		 org.yakindu.sct.model.sgraph"
+		 org.yakindu.sct.generator.core,
+		 org.yakindu.sct.model.sgen,
+		 org.yakindu.sct.model.sexec,
+		 org.yakindu.sct.model.stext,
+		 org.yakindu.sct.model.sgraph
 		Bundle-RequiredExecutionEnvironment: J2SE-1.7
 	'''
 	
@@ -364,11 +359,10 @@ class GeneratorProjectTemplate {
 	def javaGenerator(ProjectData data) '''
 		package «data.generatorClass.packageName»;
 
-		import org.yakindu.sct.generator.core.AbstractWorkspaceGenerator;
 		import org.yakindu.sct.model.sexec.ExecutionFlow;
 		import org.yakindu.sct.model.sexec.ExecutionState;
 		import org.yakindu.sct.model.sgen.GeneratorEntry;
-		import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator;
+		import org.yakindu.sct.generator.core.IExecutionFlowGenerator;
 		import org.eclipse.xtext.generator.IFileSystemAccess;
 		
 		public class «data.generatorClass.simpleName» implements IExecutionFlowGenerator{
@@ -396,8 +390,7 @@ class GeneratorProjectTemplate {
 		import org.yakindu.sct.model.sgen.GeneratorEntry
 		import org.yakindu.sct.model.sexec.ExecutionFlow
 		import org.yakindu.sct.model.sexec.ExecutionState
-		import org.yakindu.sct.generator.core.AbstractWorkspaceGenerator
-		import org.yakindu.sct.generator.core.impl.IExecutionFlowGenerator
+		import org.yakindu.sct.generator.core.IExecutionFlowGenerator
 		import org.eclipse.xtext.generator.IFileSystemAccess
 		
 		class «data.generatorClass.simpleName» implements IExecutionFlowGenerator {

+ 0 - 1
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/SGenWizardPage2ContentProvider.java

@@ -16,7 +16,6 @@ import java.util.Set;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceVisitor;
 import org.eclipse.core.runtime.CoreException;

+ 85 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/WorkspaceGeneratorProjectWizard.java

@@ -0,0 +1,85 @@
+/**
+ * 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.ui.wizard;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWizard;
+
+import com.google.inject.Inject;
+
+/**
+ * 
+ * @author holger willebrandt - Initial contribution and API
+ */
+public class WorkspaceGeneratorProjectWizard extends Wizard implements IWorkbenchWizard {
+
+	private IProjectWizardPage projectPage;
+	
+	@Inject
+	private GeneratorProjectTemplate template;
+
+	@Override
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		setWindowTitle("New YAKINDU Workspace Generator Project");
+		setNeedsProgressMonitor(true);
+	}
+
+	public IProjectWizardPage getProjectPage() {
+		WorkspaceGeneratorWizardPage1 projectPage = new WorkspaceGeneratorWizardPage1("project"); //$NON-NLS-1$
+		projectPage.setTitle("New YAKINDU Workspace Generator Project");
+		projectPage.setDescription("Configure the Generator Project");
+		return projectPage;
+	}
+
+	@Override
+	public void addPages() {
+		projectPage = getProjectPage();
+		addPage(projectPage);
+	}
+
+	@Override
+	public boolean performFinish() {
+
+		final ProjectData projectData = projectPage.getProjectData();
+
+		final IRunnableWithProgress op = new IRunnableWithProgress() {
+
+			public void run(final IProgressMonitor monitor) throws InvocationTargetException {
+				try {
+					template.setMonitor(monitor);
+					template.generate(projectData);
+				} catch (Exception e) {
+					throw new InvocationTargetException(e);
+				} finally {
+					monitor.done();
+				}
+			}
+		};
+		try {
+			getContainer().run(true, false, op);
+		} catch (final InterruptedException e) {
+			return false;
+		} catch (final InvocationTargetException e) {
+			final Throwable realException = e.getTargetException();
+			realException.printStackTrace();
+			MessageDialog.openError(getShell(), "Failed to create project", realException.getMessage());
+			return false;
+		}
+		return true;
+	}
+}