Explorar el Código

Removed duplicate code for wizard creation

Andreas Muelder hace 10 años
padre
commit
a032a7de69

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

@@ -26,7 +26,8 @@ Require-Bundle: org.yakindu.sct.generator.genmodel;visibility:=reexport,
  org.eclipse.help;bundle-version="3.5.100",
  org.eclipse.help;bundle-version="3.5.100",
  org.yakindu.sct.doc.user;bundle-version="1.0.0",
  org.yakindu.sct.doc.user;bundle-version="1.0.0",
  org.yakindu.base.xtext.utils.jface;bundle-version="1.0.0",
  org.yakindu.base.xtext.utils.jface;bundle-version="1.0.0",
- org.eclipse.xtext.xbase.lib;bundle-version="2.3.0"
+ org.eclipse.xtext.xbase.lib;bundle-version="2.3.0",
+ org.yakindu.sct.ui
 Import-Package: org.apache.commons.logging,
 Import-Package: org.apache.commons.logging,
  org.apache.log4j,
  org.apache.log4j,
  org.eclipse.jdt.core
  org.eclipse.jdt.core

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

@@ -40,6 +40,7 @@ import org.yakindu.sct.builder.nature.SCTNature;
 import org.yakindu.sct.builder.nature.ToggleSCTNatureAction;
 import org.yakindu.sct.builder.nature.ToggleSCTNatureAction;
 import org.yakindu.sct.generator.core.extensions.GeneratorExtensions.GeneratorDescriptor;
 import org.yakindu.sct.generator.core.extensions.GeneratorExtensions.GeneratorDescriptor;
 import org.yakindu.sct.model.sgen.GeneratorModel;
 import org.yakindu.sct.model.sgen.GeneratorModel;
+import org.yakindu.sct.ui.wizards.ModelCreationWizardPage;
 
 
 import com.google.inject.Inject;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
 import com.google.inject.Injector;
@@ -55,7 +56,7 @@ public class SGenNewFileWizard extends Wizard implements INewWizard {
 
 
 	public static final String ID = "org.yakindu.sct.generator.genmodel.ui.SGenNewFileWizard";
 	public static final String ID = "org.yakindu.sct.generator.genmodel.ui.SGenNewFileWizard";
 
 
-	protected SGenWizardPage1 modelFilePage;
+	protected ModelCreationWizardPage modelFilePage;
 
 
 	private IStructuredSelection selection;
 	private IStructuredSelection selection;
 
 
@@ -75,7 +76,7 @@ public class SGenNewFileWizard extends Wizard implements INewWizard {
 
 
 	@Override
 	@Override
 	public void addPages() {
 	public void addPages() {
-		modelFilePage = new SGenWizardPage1("fileName", selection, "sgen");
+		modelFilePage = new ModelCreationWizardPage("fileName", selection, "sgen");
 		modelFilePage.setTitle("YAKINDU Generator Model");
 		modelFilePage.setTitle("YAKINDU Generator Model");
 		modelFilePage.setDescription("Create a new YAKINDU Generator Model");
 		modelFilePage.setDescription("Create a new YAKINDU Generator Model");
 		addPage(modelFilePage);
 		addPage(modelFilePage);

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

@@ -1,99 +0,0 @@
-/**
- * Copyright (c) 2010 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.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;
-import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
-
-public class SGenWizardPage1 extends WizardNewFileCreationPage {
-
-	private final String fileExtension;
-
-	public SGenWizardPage1(String pageName, IStructuredSelection selection,
-			String fileExtension) {
-		super(pageName, selection);
-		this.fileExtension = fileExtension;
-	}
-
-	protected String getExtension() {
-		return fileExtension;
-	}
-	
-	public URI getURI() {
-		return URI.createPlatformResourceURI(getFilePath().toString(), false);
-	}
-
-
-	public IPath getFilePath() {
-		IPath path = getContainerFullPath();
-		if (path == null) {
-			path = new Path(""); //$NON-NLS-1$
-		}
-		String fileName = getFileName();
-		if (fileName != null) {
-			path = path.append(fileName);
-		}
-		return path;
-	}
-
-	@Override
-	public void createControl(Composite parent) {
-		super.createControl(parent);
-		setFileName(getUniqueFileName(getContainerFullPath(), getFileName(),
-				getExtension()));
-		setPageComplete(validatePage());
-	}
-
-	@Override
-	protected boolean validatePage() {
-		if (!super.validatePage()) {
-			return false;
-		}
-		String extension = getExtension();
-		if (extension != null
-				&& !getFilePath().toString().endsWith("." + extension)) {
-			setErrorMessage(NLS.bind("file extension is not valid!", extension));
-			return false;
-		}
-		return true;
-	}
-
-	public static String getUniqueFileName(IPath containerFullPath,
-			String fileName, String extension) {
-		if (containerFullPath == null) {
-			containerFullPath = new Path(""); //$NON-NLS-1$
-		}
-		if (fileName == null || fileName.trim().length() == 0) {
-			fileName = "default"; //$NON-NLS-1$
-		}
-		IPath filePath = containerFullPath.append(fileName);
-		if (extension != null && !extension.equals(filePath.getFileExtension())) {
-			filePath = filePath.addFileExtension(extension);
-		}
-		extension = filePath.getFileExtension();
-		fileName = filePath.removeFileExtension().lastSegment();
-		int i = 1;
-		while (ResourcesPlugin.getWorkspace().getRoot().exists(filePath)) {
-			i++;
-			filePath = containerFullPath.append(fileName + i);
-			if (extension != null) {
-				filePath = filePath.addFileExtension(extension);
-			}
-		}
-		return filePath.lastSegment();
-	}
-}

+ 225 - 224
plugins/org.yakindu.sct.generator.genmodel.ui/src/org/yakindu/sct/generator/genmodel/ui/wizard/SGenWizardPage2.java

@@ -1,224 +1,225 @@
-/**
- * Copyright (c) 2013 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.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.emf.common.util.TreeIterator;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jface.viewers.AbstractTreeViewer;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
-import org.eclipse.jface.viewers.ComboViewer;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.yakindu.sct.generator.core.extensions.FileExtensions;
-import org.yakindu.sct.generator.core.extensions.GeneratorExtensions;
-import org.yakindu.sct.generator.core.extensions.GeneratorExtensions.GeneratorDescriptor;
-
-import com.google.common.collect.Lists;
-
-/**
- * 
- * @author holger willebrandt - Initial contribution and API
- * @author andreas muelder - extension point for contribution of file extensions
- *         added
- * @author oliver bohl - changed for more generic
- * 
- */
-public class SGenWizardPage2 extends WizardPage {
-
-	private final static Map<String, CoreGenerator> PROJECT_NATURES = new TreeMap<String, CoreGenerator>();
-	static {
-		PROJECT_NATURES.put("org.eclipse.cdt.core.cnature", CoreGenerator.C);
-		PROJECT_NATURES.put("org.eclipse.cdt.core.ccnature", CoreGenerator.Cpp);
-		PROJECT_NATURES.put(JavaCore.NATURE_ID, CoreGenerator.Java);
-	}
-
-	private ComboViewer generatorCombo;
-
-	protected CheckboxTreeViewer resourceTree;
-
-	private final SGenWizardPage1 fileSelectionPage;
-
-	@SuppressWarnings("unused")
-	private final IStructuredSelection selection;
-
-	private Label lblNewLabel;
-
-	protected SGenWizardPage2(String pageName, SGenWizardPage1 fileSelectionPage, IStructuredSelection selection) {
-		super(pageName);
-		this.fileSelectionPage = fileSelectionPage;
-		this.selection = selection;
-	}
-
-	public void createControl(Composite parent) {
-		Composite container = new Composite(parent, SWT.NULL);
-		setControl(container);
-		container.setLayout(new GridLayout(1, false));
-		createGeneratorCombo(container);
-		createObjectTree(container);
-		refreshInput();
-	}
-
-	private void createObjectTree(Composite container) {
-		lblNewLabel = new Label(container, SWT.NONE);
-		lblNewLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
-		lblNewLabel.setText("Choose: " + getSelectedGenerator().getContentType());
-
-		resourceTree = new CheckboxTreeViewer(container, SWT.BORDER);
-		resourceTree.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
-
-		resourceTree.setContentProvider(new SGenWizardPage2ContentProvider());
-		resourceTree.setLabelProvider(new SGenWizardPage2LabelProvider());
-
-		TreePropagatingCheckStateListener checkStateListener = new TreePropagatingCheckStateListener(resourceTree) {
-			@Override
-			public void checkStateChanged(CheckStateChangedEvent event) {
-				super.checkStateChanged(event);
-			}
-		};
-		resourceTree.addCheckStateListener(checkStateListener);
-		resourceTree.addDoubleClickListener(new TreeExpandingDoubleClickListener(resourceTree, checkStateListener));
-		resourceTree.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
-		resourceTree.setFilters(new ViewerFilter[] { new ViewerFilter() {
-			@Override
-			public boolean select(Viewer viewer, Object parentElement, Object element) {
-				// TODO: Filter by common navigator filter instead of supressing
-				// '.' prefixed folder
-				if (element instanceof IFolder) {
-					return !((IFolder) element).getName().startsWith(".");
-				}
-				return true;
-			}
-		} });
-	}
-
-	private void createGeneratorCombo(Composite container) {
-		Label lblGenerator = new Label(container, SWT.NONE);
-		lblGenerator.setText("Generator");
-		generatorCombo = new ComboViewer(container, SWT.READ_ONLY);
-		generatorCombo.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
-		generatorCombo.setLabelProvider(new GeneratorDescriptorLabelProvider());
-		generatorCombo.setContentProvider(new ArrayContentProvider());
-		List<GeneratorDescriptor> descriptors = Lists.newArrayList(GeneratorExtensions.getGeneratorDescriptors());
-		Collections.sort(descriptors, CoreGenerator.generatorOrder);
-		generatorCombo.setInput(descriptors);
-		generatorCombo.getCombo().select(0);
-		generatorCombo.addSelectionChangedListener(new ISelectionChangedListener() {
-			public void selectionChanged(SelectionChangedEvent event) {
-				refreshInput();
-			}
-		});
-	}
-
-	protected void refreshInput() {
-		lblNewLabel.setText("Choose: " + getSelectedGenerator().getContentType());
-		((SGenWizardPage2ContentProvider) resourceTree.getContentProvider()).setFileExtension(FileExtensions
-				.getFileExtension(getSelectedGenerator().getId()));
-		resourceTree.setInput(getSelectedProject());
-	}
-
-	protected IProject getSelectedProject() {
-		IPath containerPath = fileSelectionPage.getFilePath();
-		IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(containerPath);
-		return folder.getProject();
-	}
-
-	public List<EObject> getSelectedElements() {
-		List<EObject> selectedElements = Lists.newArrayList();
-		Object[] checkedElements = resourceTree.getCheckedElements();
-		for (Object object : checkedElements) {
-			if (object instanceof IFile) {
-				selectedElements.add(loadReferencedObject((IResource) object));
-			}
-		}
-		return selectedElements;
-	}
-
-	protected EObject loadReferencedObject(IResource resource) {
-		URI uri = URI.createPlatformResourceURI(resource.getFullPath().toString(), true);
-		ResourceSet resourceSet = new ResourceSetImpl();
-		Resource emfResource = resourceSet.getResource(uri, true);
-
-		GeneratorDescriptor desc = getSelectedGenerator();
-		String className = desc.getElementRefType();
-
-		TreeIterator<EObject> content = emfResource.getAllContents();
-		List<EObject> contentList = Lists.newArrayList(content);
-
-		for (EObject obj : contentList) {
-			if (obj.eClass().getInstanceClassName().equals(className))
-				return obj;
-		}
-
-		for (EObject obj : contentList) {
-			List<EClass> superClasses = obj.eClass().getEAllSuperTypes();
-			for (EClass superClass : superClasses) {
-				if (superClass.getInstanceClassName().equals(className)) {
-					return obj;
-				}
-			}
-		}
-		return null;
-	}
-
-	public GeneratorDescriptor getSelectedGenerator() {
-		return (GeneratorDescriptor) ((StructuredSelection) generatorCombo.getSelection()).getFirstElement();
-	}
-
-	private static class GeneratorDescriptorLabelProvider extends LabelProvider {
-
-		@Override
-		public String getText(Object element) {
-			if (element instanceof GeneratorDescriptor) {
-				return ((GeneratorDescriptor) element).getName();
-			}
-			return super.getText(element);
-		}
-
-		@Override
-		public Image getImage(Object element) {
-			if (element instanceof GeneratorDescriptor) {
-				return ((GeneratorDescriptor) element).getImage();
-			}
-			return super.getImage(element);
-		}
-	}
-}
+/**
+ * Copyright (c) 2013 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.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jface.viewers.AbstractTreeViewer;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.yakindu.sct.generator.core.extensions.FileExtensions;
+import org.yakindu.sct.generator.core.extensions.GeneratorExtensions;
+import org.yakindu.sct.generator.core.extensions.GeneratorExtensions.GeneratorDescriptor;
+import org.yakindu.sct.ui.wizards.ModelCreationWizardPage;
+
+import com.google.common.collect.Lists;
+
+/**
+ * 
+ * @author holger willebrandt - Initial contribution and API
+ * @author andreas muelder - extension point for contribution of file extensions
+ *         added
+ * @author oliver bohl - changed for more generic
+ * 
+ */
+public class SGenWizardPage2 extends WizardPage {
+
+	private final static Map<String, CoreGenerator> PROJECT_NATURES = new TreeMap<String, CoreGenerator>();
+	static {
+		PROJECT_NATURES.put("org.eclipse.cdt.core.cnature", CoreGenerator.C);
+		PROJECT_NATURES.put("org.eclipse.cdt.core.ccnature", CoreGenerator.Cpp);
+		PROJECT_NATURES.put(JavaCore.NATURE_ID, CoreGenerator.Java);
+	}
+
+	private ComboViewer generatorCombo;
+
+	protected CheckboxTreeViewer resourceTree;
+
+	private final ModelCreationWizardPage fileSelectionPage;
+
+	@SuppressWarnings("unused")
+	private final IStructuredSelection selection;
+
+	private Label lblNewLabel;
+
+	protected SGenWizardPage2(String pageName, ModelCreationWizardPage fileSelectionPage, IStructuredSelection selection) {
+		super(pageName);
+		this.fileSelectionPage = fileSelectionPage;
+		this.selection = selection;
+	}
+
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		setControl(container);
+		container.setLayout(new GridLayout(1, false));
+		createGeneratorCombo(container);
+		createObjectTree(container);
+		refreshInput();
+	}
+
+	private void createObjectTree(Composite container) {
+		lblNewLabel = new Label(container, SWT.NONE);
+		lblNewLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
+		lblNewLabel.setText("Choose: " + getSelectedGenerator().getContentType());
+
+		resourceTree = new CheckboxTreeViewer(container, SWT.BORDER);
+		resourceTree.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+
+		resourceTree.setContentProvider(new SGenWizardPage2ContentProvider());
+		resourceTree.setLabelProvider(new SGenWizardPage2LabelProvider());
+
+		TreePropagatingCheckStateListener checkStateListener = new TreePropagatingCheckStateListener(resourceTree) {
+			@Override
+			public void checkStateChanged(CheckStateChangedEvent event) {
+				super.checkStateChanged(event);
+			}
+		};
+		resourceTree.addCheckStateListener(checkStateListener);
+		resourceTree.addDoubleClickListener(new TreeExpandingDoubleClickListener(resourceTree, checkStateListener));
+		resourceTree.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
+		resourceTree.setFilters(new ViewerFilter[] { new ViewerFilter() {
+			@Override
+			public boolean select(Viewer viewer, Object parentElement, Object element) {
+				// TODO: Filter by common navigator filter instead of supressing
+				// '.' prefixed folder
+				if (element instanceof IFolder) {
+					return !((IFolder) element).getName().startsWith(".");
+				}
+				return true;
+			}
+		} });
+	}
+
+	private void createGeneratorCombo(Composite container) {
+		Label lblGenerator = new Label(container, SWT.NONE);
+		lblGenerator.setText("Generator");
+		generatorCombo = new ComboViewer(container, SWT.READ_ONLY);
+		generatorCombo.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+		generatorCombo.setLabelProvider(new GeneratorDescriptorLabelProvider());
+		generatorCombo.setContentProvider(new ArrayContentProvider());
+		List<GeneratorDescriptor> descriptors = Lists.newArrayList(GeneratorExtensions.getGeneratorDescriptors());
+		Collections.sort(descriptors, CoreGenerator.generatorOrder);
+		generatorCombo.setInput(descriptors);
+		generatorCombo.getCombo().select(0);
+		generatorCombo.addSelectionChangedListener(new ISelectionChangedListener() {
+			public void selectionChanged(SelectionChangedEvent event) {
+				refreshInput();
+			}
+		});
+	}
+
+	protected void refreshInput() {
+		lblNewLabel.setText("Choose: " + getSelectedGenerator().getContentType());
+		((SGenWizardPage2ContentProvider) resourceTree.getContentProvider()).setFileExtension(FileExtensions
+				.getFileExtension(getSelectedGenerator().getId()));
+		resourceTree.setInput(getSelectedProject());
+	}
+
+	protected IProject getSelectedProject() {
+		IPath containerPath = fileSelectionPage.getFilePath();
+		IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(containerPath);
+		return folder.getProject();
+	}
+
+	public List<EObject> getSelectedElements() {
+		List<EObject> selectedElements = Lists.newArrayList();
+		Object[] checkedElements = resourceTree.getCheckedElements();
+		for (Object object : checkedElements) {
+			if (object instanceof IFile) {
+				selectedElements.add(loadReferencedObject((IResource) object));
+			}
+		}
+		return selectedElements;
+	}
+
+	protected EObject loadReferencedObject(IResource resource) {
+		URI uri = URI.createPlatformResourceURI(resource.getFullPath().toString(), true);
+		ResourceSet resourceSet = new ResourceSetImpl();
+		Resource emfResource = resourceSet.getResource(uri, true);
+
+		GeneratorDescriptor desc = getSelectedGenerator();
+		String className = desc.getElementRefType();
+
+		TreeIterator<EObject> content = emfResource.getAllContents();
+		List<EObject> contentList = Lists.newArrayList(content);
+
+		for (EObject obj : contentList) {
+			if (obj.eClass().getInstanceClassName().equals(className))
+				return obj;
+		}
+
+		for (EObject obj : contentList) {
+			List<EClass> superClasses = obj.eClass().getEAllSuperTypes();
+			for (EClass superClass : superClasses) {
+				if (superClass.getInstanceClassName().equals(className)) {
+					return obj;
+				}
+			}
+		}
+		return null;
+	}
+
+	public GeneratorDescriptor getSelectedGenerator() {
+		return (GeneratorDescriptor) ((StructuredSelection) generatorCombo.getSelection()).getFirstElement();
+	}
+
+	private static class GeneratorDescriptorLabelProvider extends LabelProvider {
+
+		@Override
+		public String getText(Object element) {
+			if (element instanceof GeneratorDescriptor) {
+				return ((GeneratorDescriptor) element).getName();
+			}
+			return super.getText(element);
+		}
+
+		@Override
+		public Image getImage(Object element) {
+			if (element instanceof GeneratorDescriptor) {
+				return ((GeneratorDescriptor) element).getImage();
+			}
+			return super.getImage(element);
+		}
+	}
+}

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

@@ -19,7 +19,8 @@ Require-Bundle: org.eclipse.xtext;bundle-version="2.0.0";visibility:=reexport,
  org.eclipse.core.runtime;bundle-version="3.7.0",
  org.eclipse.core.runtime;bundle-version="3.7.0",
  org.yakindu.sct.generator.core;bundle-version="1.0.0";visibility:=reexport,
  org.yakindu.sct.generator.core;bundle-version="1.0.0";visibility:=reexport,
  org.yakindu.sct.model.sgen;bundle-version="1.0.0";visibility:=reexport,
  org.yakindu.sct.model.sgen;bundle-version="1.0.0";visibility:=reexport,
- org.yakindu.base.types;bundle-version="1.0.0"
+ org.yakindu.base.types;bundle-version="1.0.0",
+ org.eclipse.emf.workspace;bundle-version="1.5.1"
 Import-Package: org.apache.log4j,
 Import-Package: org.apache.log4j,
  org.apache.commons.logging,
  org.apache.commons.logging,
  org.eclipse.xtext.xbase.lib
  org.eclipse.xtext.xbase.lib

+ 1 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/wizards/CreationWizard.java

@@ -55,6 +55,7 @@ import org.yakindu.sct.ui.editor.StatechartImages;
 import org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor;
 import org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor;
 import org.yakindu.sct.ui.editor.factories.FactoryUtils;
 import org.yakindu.sct.ui.editor.factories.FactoryUtils;
 import org.yakindu.sct.ui.perspectives.PerspectiveUtil;
 import org.yakindu.sct.ui.perspectives.PerspectiveUtil;
+import org.yakindu.sct.ui.wizards.ModelCreationWizardPage;
 
 
 /**
 /**
  * 
  * 

+ 6 - 2
plugins/org.yakindu.sct.ui/META-INF/MANIFEST.MF

@@ -7,8 +7,12 @@ Bundle-Activator: org.yakindu.sct.ui.UIPluginActivator
 Bundle-Vendor: statecharts.org
 Bundle-Vendor: statecharts.org
 Require-Bundle: org.eclipse.ui,
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.core.runtime,
- org.eclipse.ui.navigator
+ org.eclipse.ui.navigator,
+ org.eclipse.core.resources,
+ org.eclipse.ui.ide,
+ org.eclipse.emf.ecore
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-ActivationPolicy: lazy
 Bundle-ActivationPolicy: lazy
 Export-Package: org.yakindu.sct.ui,
 Export-Package: org.yakindu.sct.ui,
- org.yakindu.sct.ui.perspectives
+ org.yakindu.sct.ui.perspectives,
+ org.yakindu.sct.ui.wizards

+ 99 - 98
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/wizards/ModelCreationWizardPage.java

@@ -1,98 +1,99 @@
-/**
- * Copyright (c) 2010 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.ui.editor.wizards;
-
-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;
-import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
-
-public class ModelCreationWizardPage extends WizardNewFileCreationPage {
-
-	private final String fileExtension;
-
-	public ModelCreationWizardPage(String pageName, IStructuredSelection selection,
-			String fileExtension) {
-		super(pageName, selection);
-		this.fileExtension = fileExtension;
-	}
-
-	protected String getExtension() {
-		return fileExtension;
-	}
-
-	public URI getURI() {
-		return URI.createPlatformResourceURI(getFilePath().toString(), false);
-	}
-
-	protected IPath getFilePath() {
-		IPath path = getContainerFullPath();
-		if (path == null) {
-			path = new Path(""); //$NON-NLS-1$
-		}
-		String fileName = getFileName();
-		if (fileName != null) {
-			path = path.append(fileName);
-		}
-		return path;
-	}
-
-	@Override
-	public void createControl(Composite parent) {
-		super.createControl(parent);
-		setFileName(getUniqueFileName(getContainerFullPath(), getFileName(),
-				getExtension()));
-		setPageComplete(validatePage());
-	}
-
-	@Override
-	protected boolean validatePage() {
-		if (!super.validatePage()) {
-			return false;
-		}
-		String extension = getExtension();
-		if (extension != null
-				&& !getFilePath().toString().endsWith("." + extension)) {
-			setErrorMessage(NLS.bind("file extension is not valid!", extension));
-			return false;
-		}
-		return true;
-	}
-
-	public static String getUniqueFileName(IPath containerFullPath,
-			String fileName, String extension) {
-		if (containerFullPath == null) {
-			containerFullPath = new Path(""); //$NON-NLS-1$
-		}
-		if (fileName == null || fileName.trim().length() == 0) {
-			fileName = "default"; //$NON-NLS-1$
-		}
-		IPath filePath = containerFullPath.append(fileName);
-		if (extension != null && !extension.equals(filePath.getFileExtension())) {
-			filePath = filePath.addFileExtension(extension);
-		}
-		extension = filePath.getFileExtension();
-		fileName = filePath.removeFileExtension().lastSegment();
-		int i = 1;
-		while (ResourcesPlugin.getWorkspace().getRoot().exists(filePath)) {
-			i++;
-			filePath = containerFullPath.append(fileName + i);
-			if (extension != null) {
-				filePath = filePath.addFileExtension(extension);
-			}
-		}
-		return filePath.lastSegment();
-	}
-}
+/**
+ * Copyright (c) 2016 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.ui.wizards;
+
+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;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class ModelCreationWizardPage extends WizardNewFileCreationPage {
+
+	private final String fileExtension;
+
+	public ModelCreationWizardPage(String pageName, IStructuredSelection selection, String fileExtension) {
+		super(pageName, selection);
+		this.fileExtension = fileExtension;
+	}
+
+	protected String getExtension() {
+		return fileExtension;
+	}
+
+	public URI getURI() {
+		return URI.createPlatformResourceURI(getFilePath().toString(), false);
+	}
+
+	public IPath getFilePath() {
+		IPath path = getContainerFullPath();
+		if (path == null) {
+			path = new Path(""); //$NON-NLS-1$
+		}
+		String fileName = getFileName();
+		if (fileName != null) {
+			path = path.append(fileName);
+		}
+		return path;
+	}
+
+	@Override
+	public void createControl(Composite parent) {
+		super.createControl(parent);
+		setFileName(getUniqueFileName(getContainerFullPath(), getFileName(), getExtension()));
+		setPageComplete(validatePage());
+	}
+
+	@Override
+	protected boolean validatePage() {
+		if (!super.validatePage()) {
+			return false;
+		}
+		String extension = getExtension();
+		if (extension != null && !getFilePath().toString().endsWith("." + extension)) {
+			setErrorMessage(NLS.bind("file extension is not valid!", extension));
+			return false;
+		}
+		return true;
+	}
+
+	public static String getUniqueFileName(IPath containerFullPath, String fileName, String extension) {
+		if (containerFullPath == null) {
+			containerFullPath = new Path(""); //$NON-NLS-1$
+		}
+		if (fileName == null || fileName.trim().length() == 0) {
+			fileName = "default"; //$NON-NLS-1$
+		}
+		IPath filePath = containerFullPath.append(fileName);
+		if (extension != null && !extension.equals(filePath.getFileExtension())) {
+			filePath = filePath.addFileExtension(extension);
+		}
+		extension = filePath.getFileExtension();
+		fileName = filePath.removeFileExtension().lastSegment();
+		int i = 1;
+		while (ResourcesPlugin.getWorkspace().getRoot().exists(filePath)) {
+			i++;
+			filePath = containerFullPath.append(fileName + i);
+			if (extension != null) {
+				filePath = filePath.addFileExtension(extension);
+			}
+		}
+		return filePath.lastSegment();
+	}
+}