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

add project wizard for workspace generators

holger.willebrandt@gmail.com 14 лет назад
Родитель
Сommit
8ef8735226

+ 2 - 2
plugins/org.yakindu.sct.generator.genmodel.ui/.settings/org.eclipse.core.resources.prefs

@@ -1,4 +1,4 @@
-#Thu Nov 24 22:12:08 CET 2011
+#Fri Nov 25 17:27:24 CET 2011
 eclipse.preferences.version=1
 eclipse.preferences.version=1
+encoding//src/org/yakindu/sct/generator/genmodel/ui/wizard/GeneratorProjectTemplate.xtend=UTF-8
 encoding//src/org/yakindu/sct/generator/genmodel/ui/wizard/XpandDefaultTemplate.xpt=ISO-8859-1
 encoding//src/org/yakindu/sct/generator/genmodel/ui/wizard/XpandDefaultTemplate.xpt=ISO-8859-1
-encoding//src/org/yakindu/sct/generator/genmodel/ui/wizard/XpandProjectTemplate.xtend=UTF-8

+ 8 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/plugin.xml

@@ -223,6 +223,14 @@
             name="YAKINDU Xpand Generator Project"
             name="YAKINDU Xpand Generator Project"
             project="true">
             project="true">
       </wizard>
       </wizard>
+      <wizard
+            category="YAKINDU"
+            class="org.yakindu.sct.generator.genmodel.ui.SGenExecutableExtensionFactory:org.yakindu.sct.generator.genmodel.ui.wizard.WorkspaceGeneratorProjectWizard"
+            icon="icons/GenModel-16.png"
+            id="org.yakindu.sct.generator.genmodel.ui.WorkspaceGeneratorProjectWizard"
+            name="YAKINDU Workspace Generator Project"
+            project="true">
+      </wizard>
    </extension>
    </extension>
 
 
   <extension point="org.eclipse.compare.contentViewers">
   <extension point="org.eclipse.compare.contentViewers">

+ 89 - 19
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/XpandProjectTemplate.xtend

@@ -44,7 +44,7 @@ import java.util.Collections
  * 
  * 
  * @author holger willebrandt - Initial contribution and API
  * @author holger willebrandt - Initial contribution and API
  */
  */
-class XpandProjectTemplate {
+class GeneratorProjectTemplate {
 	
 	
 	IProgressMonitor monitor
 	IProgressMonitor monitor
 	
 	
@@ -59,18 +59,21 @@ class XpandProjectTemplate {
 		project.open(monitor.sub)
 		project.open(monitor.sub)
 		monitor.worked(1)
 		monitor.worked(1)
 		project.createFolder('src')
 		project.createFolder('src')
+		if (data.generatorType == GeneratorType::Xtend){
+			project.createFolder('xtend-gen')
+		}
 		project.getFile('.settings/org.eclipse.core.resources.prefs')
 		project.getFile('.settings/org.eclipse.core.resources.prefs')
 			.write(data.projectSettings(ResourcesPlugin::encoding))
 			.write(data.projectSettings(ResourcesPlugin::encoding))
-		project.getFile('.settings/org.eclipse.xtend.shared.ui.prefs')
-			.write(data.xpandSettings)
+		if (data.generatorType != GeneratorType::Java) {
+			project.getFile('.settings/org.eclipse.xtend.shared.ui.prefs')
+				.write(data.xpandSettings)
+		}
 		project.getFile('build.properties').write(data.buildProperties)
 		project.getFile('build.properties').write(data.buildProperties)
 		project.getFile('META-INF/MANIFEST.MF').write(data.manifest)
 		project.getFile('META-INF/MANIFEST.MF').write(data.manifest)
-		project.getFile('src/'+data.targetPackage.asFolder+'/'+data.templateName+'.xpt').
-			write(resource('XpandDefaultTemplate.xpt'.fromMyFolder,'iso-8859-1'))
 		if (data.pluginExport) {
 		if (data.pluginExport) {
 			project.getFile('plugin.xml').write(data.plugin)
 			project.getFile('plugin.xml').write(data.plugin)
 			project.getFile('src/'+data.generatorClass.javaFilename)
 			project.getFile('src/'+data.generatorClass.javaFilename)
-				.write(data.generator)
+				.write(data.xpandGenerator)
 			if (data.typeLibrary) {
 			if (data.typeLibrary) {
 				project.createFolder('library')
 				project.createFolder('library')
 				project.getFile('library/FeatureTypeLibrary.xmi')
 				project.getFile('library/FeatureTypeLibrary.xmi')
@@ -83,6 +86,17 @@ class XpandProjectTemplate {
 		}
 		}
 		project.getFile('.classpath').write(data.classpath);
 		project.getFile('.classpath').write(data.classpath);
 		project.getFile('.project').write(data.projectFile);
 		project.getFile('.project').write(data.projectFile);
+		switch data.generatorType {
+			case GeneratorType::Xpand :
+				project.getFile('src/'+data.targetPackage.asFolder+'/'+data.templateName+'.xpt').
+					write(resource('XpandDefaultTemplate.xpt'.fromMyFolder,'iso-8859-1'))
+			case GeneratorType::Xtend :
+				project.getFile('src/'+data.generatorClass.xtendFilename).
+					write(data.xtendGenerator)
+			case GeneratorType::Java :
+				project.getFile('src/'+data.generatorClass.javaFilename).
+					write(data.javaGenerator)
+		}
 	}
 	}
 	
 	
 	def fromMyFolder(String s) {
 	def fromMyFolder(String s) {
@@ -94,7 +108,7 @@ class XpandProjectTemplate {
 	}
 	}
 	
 	
 	def templateName(ProjectData data) {
 	def templateName(ProjectData data) {
-		if (data.pluginExport)
+		if (data.pluginExport || data.generatorType != GeneratorType::Xpand)
 			data.generatorClass.simpleName
 			data.generatorClass.simpleName
 		else
 		else
 			'Main'
 			'Main'
@@ -134,6 +148,9 @@ class XpandProjectTemplate {
 	def javaFilename(String s) {
 	def javaFilename(String s) {
 		s.replaceAll('\\.','/')+'.java'
 		s.replaceAll('\\.','/')+'.java'
 	}
 	}
+	def xtendFilename(String s) {
+		s.replaceAll('\\.','/')+'.xtend'
+	}
 	
 	
 	def featureLibrary(ProjectData data) {
 	def featureLibrary(ProjectData data) {
 		val factory = SGenFactory::eINSTANCE
 		val factory = SGenFactory::eINSTANCE
@@ -224,11 +241,13 @@ class XpandProjectTemplate {
 			<projects>
 			<projects>
 			</projects>
 			</projects>
 			<buildSpec>
 			<buildSpec>
-				<buildCommand>
-					<name>org.eclipse.xtend.shared.ui.xtendBuilder</name>
-					<arguments>
-					</arguments>
-				</buildCommand>
+				«IF data.generatorType != GeneratorType::Java»
+					<buildCommand>
+						<name>org.eclipse.xtend.shared.ui.xtendBuilder</name>
+						<arguments>
+						</arguments>
+					</buildCommand>
+				«ENDIF»
 				<buildCommand>
 				<buildCommand>
 					<name>org.eclipse.pde.ManifestBuilder</name>
 					<name>org.eclipse.pde.ManifestBuilder</name>
 					<arguments>
 					<arguments>
@@ -244,11 +263,23 @@ class XpandProjectTemplate {
 					<arguments>
 					<arguments>
 					</arguments>
 					</arguments>
 				</buildCommand>
 				</buildCommand>
+				«IF data.generatorType == GeneratorType::Xtend»
+					<buildCommand>
+						<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+						<arguments>
+						</arguments>
+					</buildCommand>				
+				«ENDIF»
 			</buildSpec>
 			</buildSpec>
 			<natures>
 			<natures>
 				<nature>org.eclipse.jdt.core.javanature</nature>
 				<nature>org.eclipse.jdt.core.javanature</nature>
 				<nature>org.eclipse.pde.PluginNature</nature>
 				<nature>org.eclipse.pde.PluginNature</nature>
-				<nature>org.eclipse.xtend.shared.ui.xtendXPandNature</nature>
+				«IF data.generatorType != GeneratorType::Java»
+					<nature>org.eclipse.xtend.shared.ui.xtendXPandNature</nature>
+				«ENDIF»
+				«IF data.generatorType == GeneratorType::Xtend»
+					<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+				«ENDIF»
 			</natures>
 			</natures>
 		</projectDescription>
 		</projectDescription>
 	'''
 	'''
@@ -256,6 +287,9 @@ class XpandProjectTemplate {
 	def classpath(ProjectData data) '''
 	def classpath(ProjectData data) '''
 		<?xml version="1.0" encoding="UTF-8"?>
 		<?xml version="1.0" encoding="UTF-8"?>
 		<classpath>
 		<classpath>
+			«IF data.generatorType == GeneratorType::Xtend»
+				<classpathentry kind="src" path="xtend-gen"/>
+			«ENDIF»
 			<classpathentry kind="src" path="src"/>
 			<classpathentry kind="src" path="src"/>
 			<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 			<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 			<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 			<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
@@ -270,7 +304,6 @@ class XpandProjectTemplate {
 		Bundle-SymbolicName: «data.projectName»; singleton:=true
 		Bundle-SymbolicName: «data.projectName»; singleton:=true
 		Bundle-Version: 1.0.0
 		Bundle-Version: 1.0.0
 		Require-Bundle: org.eclipse.jdt.core;bundle-version="3.5.0",
 		Require-Bundle: org.eclipse.jdt.core;bundle-version="3.5.0",
-		 org.eclipse.xtend.profiler;resolution:=optional,
 		 org.apache.commons.logging,
 		 org.apache.commons.logging,
 		 org.apache.log4j;resolution:=optional,
 		 org.apache.log4j;resolution:=optional,
 		 com.ibm.icu;bundle-version="4.0.1",
 		 com.ibm.icu;bundle-version="4.0.1",
@@ -279,10 +312,17 @@ class XpandProjectTemplate {
 		 org.eclipse.emf.mwe.utils;bundle-version="0.7.0",
 		 org.eclipse.emf.mwe.utils;bundle-version="0.7.0",
 		 org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
 		 org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
 		 org.eclipse.jface.text;bundle-version="3.5.0",
 		 org.eclipse.jface.text;bundle-version="3.5.0",
-		 org.eclipse.xpand;bundle-version="0.7.0",
-		 org.eclipse.xtend;bundle-version="0.7.0",
-		 org.eclipse.xtend.typesystem.emf;bundle-version="0.7.0",
-		«IF data.pluginExport»
+		«IF data.generatorType == GeneratorType::Xpand || data.generatorType == GeneratorType::Xtend»
+			«' '»org.eclipse.xpand;bundle-version="0.7.0",
+			«' '»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;bundle-version="2.0.1",
+			«' '»org.eclipse.xtext.xtend2.lib;bundle-version="2.0.1",
+		«ENDIF»
+		«IF data.pluginExport || data.generatorType != GeneratorType::Xpand»
 			«' '»org.yakindu.sct.generator.core;bundle-version="1.0.0",
 			«' '»org.yakindu.sct.generator.core;bundle-version="1.0.0",
 		«ENDIF»
 		«ENDIF»
 		 org.yakindu.sct.model.sgen;bundle-version="1.0.0",
 		 org.yakindu.sct.model.sgen;bundle-version="1.0.0",
@@ -316,7 +356,7 @@ class XpandProjectTemplate {
 		</plugin>
 		</plugin>
 	'''
 	'''
 	
 	
-	def generator(ProjectData data) '''
+	def xpandGenerator(ProjectData data) '''
 		package «data.generatorClass.packageName»;
 		package «data.generatorClass.packageName»;
 		
 		
 		import org.yakindu.sct.generator.core.impl.AbstractXpandBasedCodeGenerator;
 		import org.yakindu.sct.generator.core.impl.AbstractXpandBasedCodeGenerator;
@@ -333,6 +373,36 @@ class XpandProjectTemplate {
 		}
 		}
 	'''
 	'''
 	
 	
+	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.sgen.GeneratorEntry;
+		
+		public class «data.generatorClass.simpleName» extends AbstractWorkspaceGenerator {
+			@Override
+			public void generate(ExecutionFlow flow, GeneratorEntry entry) {
+				writeToConsole("Output shall go into project "+getTargetProjectPath(entry));
+			}
+		}
+	'''
+	def xtendGenerator(ProjectData data) '''
+		package «data.generatorClass.packageName»
+
+		import org.yakindu.sct.model.sexec.ExecutionFlow
+		import org.yakindu.sct.model.sgen.GeneratorEntry
+		import org.yakindu.sct.generator.core.AbstractWorkspaceGenerator
+		
+		class «data.generatorClass.simpleName» extends AbstractWorkspaceGenerator {
+		
+			override generate(ExecutionFlow flow, GeneratorEntry entry) {
+				writeToConsole('output will go into project '+entry.targetProjectPath)
+			}
+		}
+	'''
+	
+	
 	def defaultProvider(ProjectData data) '''
 	def defaultProvider(ProjectData data) '''
 		package «data.providerClass.packageName»;
 		package «data.providerClass.packageName»;
 		
 		

+ 5 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/GeneratorType.java

@@ -0,0 +1,5 @@
+package org.yakindu.sct.generator.genmodel.ui.wizard;
+
+public enum GeneratorType {
+	Java, Xpand, Xtend
+}

+ 12 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/IProjectWzardPage.java

@@ -0,0 +1,12 @@
+package org.yakindu.sct.generator.genmodel.ui.wizard;
+
+import org.eclipse.jface.wizard.WizardPage;
+
+public abstract class IProjectWzardPage extends WizardPage {
+
+	protected IProjectWzardPage(String pageName) {
+		super(pageName);
+	}
+
+	protected abstract ProjectData getProjectData();
+}

+ 5 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/ProjectData.java

@@ -22,6 +22,7 @@ public class ProjectData {
 	String generatorDescription;
 	String generatorDescription;
 	String generatorName;
 	String generatorName;
 	String generatorClass;
 	String generatorClass;
+	GeneratorType generatorType;
 
 
 	public boolean isPluginExport() {
 	public boolean isPluginExport() {
 		return pluginExport;
 		return pluginExport;
@@ -51,4 +52,8 @@ public class ProjectData {
 		return generatorClass;
 		return generatorClass;
 	}
 	}
 
 
+	public GeneratorType getGeneratorType() {
+		return generatorType;
+	}
+
 }
 }

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

@@ -0,0 +1,38 @@
+/**
+ * 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 org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ * 
+ * @author holger willebrandt - Initial contribution and API
+ */
+public class WorkspaceGeneratorProjectWizard extends
+		XpandGeneratorProjectWizard {
+
+	@Override
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		setWindowTitle("New YAKINDU Workspace Generator Project");
+		setNeedsProgressMonitor(true);
+	}
+
+	@Override
+	public IProjectWzardPage getProjectPage() {
+		WorkspaceGeneratorWizardPage1 projectPage = new WorkspaceGeneratorWizardPage1(
+				"project"); //$NON-NLS-1$
+		projectPage.setTitle("New YAKINDU Workspace Generator Project");
+		projectPage.setDescription("Configure the Generator Project");
+		return projectPage;
+	}
+
+}

+ 145 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/WorkspaceGeneratorWizardPage1.java

@@ -0,0 +1,145 @@
+package org.yakindu.sct.generator.genmodel.ui.wizard;
+
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class WorkspaceGeneratorWizardPage1 extends IProjectWzardPage {
+	private static final String GENERATOR_CLASS_REGEX = "([a-zA-Z_][a-zA-Z0-9_]*\\.)+[a-zA-Z_][a-zA-Z0-9_]*"; //$NON-NLS-1$
+	// project will be an OSGI bundle, so there are some name restrictions
+	private static final String PROJECT_REGEX = "[A-Za-z0-9\\._]+"; //$NON-NLS-1$
+	private Text txtProjectName;
+	private Text txtGeneratorClass;
+	private Button cbXtend;
+	private final KeyListenerAdapter textBoxListener = new KeyListenerAdapter() {
+
+		@Override
+		public void keyReleased(KeyEvent e) {
+			validate();
+		}
+	};
+
+	protected WorkspaceGeneratorWizardPage1(String pageName) {
+		super(pageName);
+	}
+
+	public void createControl(Composite container) {
+		Composite parent = new Composite(container, SWT.NULL);
+		setControl(parent);
+		parent.setLayout(new GridLayout(1, false));
+
+		Composite projectNameGroup = new Composite(parent, SWT.NULL);
+		projectNameGroup.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true,
+				false, 1, 1));
+		projectNameGroup.setLayout(new GridLayout(2, false));
+
+		Label lblProjectName = new Label(projectNameGroup, SWT.WRAP);
+		lblProjectName.setText("Project name:");
+		txtProjectName = new Text(projectNameGroup, SWT.SINGLE | SWT.BORDER);
+		txtProjectName.addKeyListener(textBoxListener);
+		GridDataFactory.fillDefaults().grab(true, false)
+				.applyTo(txtProjectName);
+
+		Label lblGeneratorClass = new Label(projectNameGroup, SWT.WRAP);
+		lblGeneratorClass.setText("Generator class:");
+
+		txtGeneratorClass = new Text(projectNameGroup, SWT.SINGLE | SWT.BORDER);
+		txtGeneratorClass.addKeyListener(textBoxListener);
+		GridDataFactory.fillDefaults().grab(true, false)
+				.applyTo(txtGeneratorClass);
+
+		Composite generatorCheckboxGroup = new Composite(parent, SWT.NULL);
+		generatorCheckboxGroup.setLayoutData(new GridData(SWT.FILL, SWT.TOP,
+				true, false, 1, 1));
+		generatorCheckboxGroup.setLayout(new GridLayout(2, false));
+
+		Label lblXtend = new Label(generatorCheckboxGroup, SWT.WRAP);
+		lblXtend.setText("Use Xtend");
+
+		cbXtend = new Button(generatorCheckboxGroup, SWT.CHECK);
+
+
+		setPageComplete(false);
+	}
+
+	protected final void validate() {
+		setPageComplete(checkPageComplete());
+	}
+
+	protected boolean checkPageComplete() {
+		boolean complete = checkProjectName() && checkGeneratorOptions();
+		if (complete) {
+			setErrorMessage(null);
+		}
+		return complete;
+	}
+
+	private boolean checkProjectName() {
+		if (txtProjectName.getText().isEmpty()) {
+			setErrorMessage("Project name must be set");
+			return false;
+		}
+		if (!txtProjectName.getText().matches(PROJECT_REGEX)) {
+			setErrorMessage("Invalid Project name");
+			return false;
+		}
+		if (ResourcesPlugin.getWorkspace().getRoot()
+				.getProject(txtProjectName.getText()).exists()) {
+			setErrorMessage("Project already exists");
+			return false;
+		}
+		return true;
+	}
+
+	private boolean checkGeneratorOptions() {
+		if (txtGeneratorClass.getText().isEmpty()) {
+			setErrorMessage("Generator class must be set");
+			return false;
+		}
+		if (!txtGeneratorClass.getText().matches(GENERATOR_CLASS_REGEX)) {
+			setErrorMessage("Generator class must be a full qualified java identifier");
+			return false;
+		}
+		return true;
+	}
+
+	@Override
+	public ProjectData getProjectData() {
+		ProjectData data = new ProjectData();
+		data.projectName = txtProjectName.getText().trim();
+		data.generatorClass = txtGeneratorClass.getText().trim();
+		data.generatorType = cbXtend.getSelection() ? GeneratorType.Xtend
+				: GeneratorType.Java;
+		return data;
+	}
+
+	static abstract class SelectionListenerAdapter implements SelectionListener {
+
+		public void widgetDefaultSelected(SelectionEvent e) {
+			widgetSelected(e);
+		}
+	}
+
+	static abstract class KeyListenerAdapter implements KeyListener {
+
+		public void keyPressed(KeyEvent e) {
+			// empty
+		}
+
+		public void keyReleased(KeyEvent e) {
+			// empty
+		}
+
+	}
+
+}

+ 10 - 4
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/XpandGeneratorProjectWizard.java

@@ -27,7 +27,7 @@ import org.eclipse.ui.IWorkbenchWizard;
 public class XpandGeneratorProjectWizard extends Wizard implements
 public class XpandGeneratorProjectWizard extends Wizard implements
 		IWorkbenchWizard {
 		IWorkbenchWizard {
 
 
-	private XpandGeneratorWizardPage1 projectPage;
+	private IProjectWzardPage projectPage;
 
 
 	public void init(IWorkbench workbench, IStructuredSelection selection) {
 	public void init(IWorkbench workbench, IStructuredSelection selection) {
 		setWindowTitle("New YAKINDU Xpand Generator Project");
 		setWindowTitle("New YAKINDU Xpand Generator Project");
@@ -36,10 +36,16 @@ public class XpandGeneratorProjectWizard extends Wizard implements
 
 
 	@Override
 	@Override
 	public void addPages() {
 	public void addPages() {
-		projectPage = new XpandGeneratorWizardPage1("project"); //$NON-NLS-1$
+		projectPage = getProjectPage();
+		addPage(projectPage);
+	}
+
+	protected IProjectWzardPage getProjectPage() {
+		XpandGeneratorWizardPage1 projectPage = new XpandGeneratorWizardPage1(
+				"project"); //$NON-NLS-1$
 		projectPage.setTitle("New YAKINDU Xpand Generator Project");
 		projectPage.setTitle("New YAKINDU Xpand Generator Project");
 		projectPage.setDescription("Configure the Generator Project");
 		projectPage.setDescription("Configure the Generator Project");
-		addPage(projectPage);
+		return projectPage;
 	}
 	}
 
 
 	@Override
 	@Override
@@ -51,7 +57,7 @@ public class XpandGeneratorProjectWizard extends Wizard implements
 			public void run(final IProgressMonitor monitor)
 			public void run(final IProgressMonitor monitor)
 					throws InvocationTargetException {
 					throws InvocationTargetException {
 				try {
 				try {
-					XpandProjectTemplate template = new XpandProjectTemplate();
+					GeneratorProjectTemplate template = new GeneratorProjectTemplate();
 					template.setMonitor(monitor);
 					template.setMonitor(monitor);
 					template.generate(projectData);
 					template.generate(projectData);
 				} catch (Exception e) {
 				} catch (Exception e) {

+ 3 - 2
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/XpandGeneratorWizardPage1.java

@@ -2,7 +2,6 @@ package org.yakindu.sct.generator.genmodel.ui.wizard;
 
 
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.events.KeyListener;
@@ -16,7 +15,7 @@ import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.swt.widgets.Text;
 
 
-public class XpandGeneratorWizardPage1 extends WizardPage {
+public class XpandGeneratorWizardPage1 extends IProjectWzardPage {
 	// (ID::)+ID
 	// (ID::)+ID
 	private static final String GENERATOR_ID_REGEX = "([a-zA-Z_][a-zA-Z0-9_]*::)+[a-zA-Z_][a-zA-Z0-9_]*"; //$NON-NLS-1$
 	private static final String GENERATOR_ID_REGEX = "([a-zA-Z_][a-zA-Z0-9_]*::)+[a-zA-Z_][a-zA-Z0-9_]*"; //$NON-NLS-1$
 	private static final String GENERATOR_CLASS_REGEX = "([a-zA-Z_][a-zA-Z0-9_]*\\.)+[a-zA-Z_][a-zA-Z0-9_]*"; //$NON-NLS-1$
 	private static final String GENERATOR_CLASS_REGEX = "([a-zA-Z_][a-zA-Z0-9_]*\\.)+[a-zA-Z_][a-zA-Z0-9_]*"; //$NON-NLS-1$
@@ -186,8 +185,10 @@ public class XpandGeneratorWizardPage1 extends WizardPage {
 		cbLibrary.setEnabled(enabled);
 		cbLibrary.setEnabled(enabled);
 	}
 	}
 
 
+	@Override
 	public ProjectData getProjectData() {
 	public ProjectData getProjectData() {
 		ProjectData data = new ProjectData();
 		ProjectData data = new ProjectData();
+		data.generatorType = GeneratorType.Xpand;
 		data.projectName = txtProjectName.getText().trim();
 		data.projectName = txtProjectName.getText().trim();
 		data.generatorClass = txtGeneratorClass.getText().trim();
 		data.generatorClass = txtGeneratorClass.getText().trim();
 		data.generatorDescription = txtGeneratorDesc.getText().trim();
 		data.generatorDescription = txtGeneratorDesc.getText().trim();

+ 0 - 0
plugins/org.yakindu.sct.generator.genmodel.ui/xtend-gen/org/yakindu/sct/generator/genmodel/ui/wizard/GeneratorProjectTemplate.java