[464268] Remove dependencies to ecore.editor plugin

diff --git a/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/wizard/EcoreModelerWizard.java b/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/wizard/EcoreModelerWizard.java
index b158707..cf770d6 100644
--- a/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/wizard/EcoreModelerWizard.java
+++ b/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/wizard/EcoreModelerWizard.java
@@ -83,563 +83,511 @@
  */
 public class EcoreModelerWizard extends BasicNewProjectResourceWizard {
 
-	/** The name of the Design viewpoint. */
-	private static final String DESIGN_VIEWPOINT_NAME = "Design"; //$NON-NLS-1$ 
+    /** The name of the Design viewpoint. */
+    private static final String DESIGN_VIEWPOINT_NAME = "Design"; //$NON-NLS-1$ 
 
-	private EcoreModelSpecPage modelPage;
+    private EcoreModelSpecPage modelPage;
 
-	private ViewpointsSelectionWizardPage viewpointsSelectionWizardPage;
+    private ViewpointsSelectionWizardPage viewpointsSelectionWizardPage;
 
-	private WizardNewProjectCreationPage wizardNewProjectCreationPage;
+    private WizardNewProjectCreationPage wizardNewProjectCreationPage;
 
-	protected IWorkbench workbench;
-	protected IPath genModelProjectLocation;
-	protected IPath genModelContainerPath;
-	protected String initialProjectName;
-	protected IStructuredSelection selection;
+    protected IWorkbench workbench;
 
-	private IProject createdProject;
+    protected IPath genModelProjectLocation;
 
-	/**
-	 * Constructor.
-	 */
-	public EcoreModelerWizard() {
-		super();
-	}
+    protected IPath genModelContainerPath;
 
-	@Override
-	public void init(IWorkbench workbench, IStructuredSelection selection) {
-		super.init(workbench, selection);
-		this.workbench = workbench;
-		this.selection = selection;
-		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE
-				.getImageDescriptor(GenModelEditPlugin.INSTANCE
-						.getImage("full/wizban/NewEmptyEMFProject")));
-		setWindowTitle(GenModelEditPlugin.INSTANCE
-				.getString("_UI_NewEmptyProject_title"));
-		setWindowTitle("New Ecore Modeling Project"); //$NON-NLS-1$ 
-		setDefaultPageImageDescriptor(AbstractUIPlugin
-				.imageDescriptorFromPlugin(EcoreToolsDesignPlugin.PLUGIN_ID,
-						"icons/full/wizban/EcoreModelingProject_wizban.png"));
-		setNeedsProgressMonitor(true);
-	}
+    protected String initialProjectName;
 
-	/**
-	 * {@inheritDoc}
-	 */
-	@Override
-	public void addPages() {
-		wizardNewProjectCreationPage = new WizardNewProjectCreationPage(
-				SiriusEditPlugin.getPlugin().getString(
-						"_UI_ModelingProjectWizard_label")) {
+    protected IStructuredSelection selection;
 
-			@Override
-			public void createControl(Composite parent) {
-				super.createControl(parent);
+    private IProject createdProject;
 
-				Composite control = (Composite) getControl();
-				GridLayout layout = new GridLayout();
-				control.setLayout(layout);
+    /**
+     * Constructor.
+     */
+    public EcoreModelerWizard() {
+        super();
+    }
 
-				createWorkingSetGroup(
-						control,
-						new StructuredSelection(),
-						new String[] {
-								"org.eclipse.jdt.ui.JavaWorkingSetPage", //$NON-NLS-1$
-								"org.eclipse.pde.ui.pluginWorkingSet", "org.eclipse.ui.resourceWorkingSetPage" }); //$NON-NLS-1$ //$NON-NLS-2$
+    @Override
+    public void init(IWorkbench workbench, IStructuredSelection selection) {
+        super.init(workbench, selection);
+        this.workbench = workbench;
+        this.selection = selection;
+        setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(GenModelEditPlugin.INSTANCE.getImage("full/wizban/NewEmptyEMFProject")));
+        setWindowTitle(GenModelEditPlugin.INSTANCE.getString("_UI_NewEmptyProject_title"));
+        setWindowTitle("New Ecore Modeling Project"); //$NON-NLS-1$ 
+        setDefaultPageImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(EcoreToolsDesignPlugin.PLUGIN_ID, "icons/full/wizban/EcoreModelingProject_wizban.png"));
+        setNeedsProgressMonitor(true);
+    }
 
-				Dialog.applyDialogFont(control);
-			}
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void addPages() {
+        wizardNewProjectCreationPage = new WizardNewProjectCreationPage(SiriusEditPlugin.getPlugin().getString("_UI_ModelingProjectWizard_label")) {
 
-			@Override
-			protected boolean validatePage() {
-				if (super.validatePage()) {
-					IPath locationPath = getLocationPath();
-					genModelProjectLocation = Platform.getLocation().equals(
-							locationPath) ? null : locationPath;
-					IPath projectPath = getProjectHandle().getFullPath();
-					genModelContainerPath = projectPath.append("src"); //$NON-NLS-1$ 
+            @Override
+            public void createControl(Composite parent) {
+                super.createControl(parent);
 
-					updateModelPagePackageName(getProjectName());
-					return true;
-				} else {
-					return false;
-				}
-			}
+                Composite control = (Composite) getControl();
+                GridLayout layout = new GridLayout();
+                control.setLayout(layout);
 
-			private void updateModelPagePackageName(String projectName) {
-				if (!StringUtil.isEmpty(projectName)) {
-					String packageName = getPackageName(projectName);
-					if (!StringUtil.isEmpty(packageName)) {
-						modelPage.setPackageNameSilently(packageName);
-					}
-				}
-			}
+                createWorkingSetGroup(control, new StructuredSelection(), new String[] { "org.eclipse.jdt.ui.JavaWorkingSetPage", //$NON-NLS-1$
+                        "org.eclipse.pde.ui.pluginWorkingSet", "org.eclipse.ui.resourceWorkingSetPage" }); //$NON-NLS-1$ //$NON-NLS-2$
 
-		};
+                Dialog.applyDialogFont(control);
+            }
 
-		wizardNewProjectCreationPage.setInitialProjectName(initialProjectName);
-		wizardNewProjectCreationPage
-				.setTitle("Create a new Ecore Modeling project"); //$NON-NLS-1$ 
-		wizardNewProjectCreationPage.setDescription("Enter a project name"); //$NON-NLS-1$    
+            @Override
+            protected boolean validatePage() {
+                if (super.validatePage()) {
+                    IPath locationPath = getLocationPath();
+                    genModelProjectLocation = Platform.getLocation().equals(locationPath) ? null : locationPath;
+                    IPath projectPath = getProjectHandle().getFullPath();
+                    genModelContainerPath = projectPath.append("src"); //$NON-NLS-1$ 
 
-		modelPage = new EcoreModelSpecPage("Ecore model parameters"); //$NON-NLS-1$ 
-		modelPage.setTitle("Model settings"); //$NON-NLS-1$ 
-		modelPage.setDescription("Define the model settings"); //$NON-NLS-1$ 
+                    updateModelPagePackageName(getProjectName());
+                    return true;
+                } else {
+                    return false;
+                }
+            }
 
-		viewpointsSelectionWizardPage = new ViewpointsSelectionWizardPage(null,
-				Lists.newArrayList(DESIGN_VIEWPOINT_NAME)) {
-			@Override
-			protected Collection<String> computeSemanticFileExtensions(
-					Session session) {
-				Set<String> fileExtensions = new HashSet<String>();
-				fileExtensions.add("ecore");
-				return fileExtensions;
-			}
-		};
+            private void updateModelPagePackageName(String projectName) {
+                if (!StringUtil.isEmpty(projectName)) {
+                    String packageName = getPackageName(projectName);
+                    if (!StringUtil.isEmpty(packageName)) {
+                        modelPage.setPackageNameSilently(packageName);
+                    }
+                }
+            }
 
-		// Fix for VP-3711 to avoid a NPE on 3.8
-		ReflectionHelper.setFieldValueWithoutException(this,
-				"newProjectCreationPage", wizardNewProjectCreationPage);
+        };
 
-		addPage(wizardNewProjectCreationPage);
-		addPage(modelPage);
-		addPage(viewpointsSelectionWizardPage);
-	}
+        wizardNewProjectCreationPage.setInitialProjectName(initialProjectName);
+        wizardNewProjectCreationPage.setTitle("Create a new Ecore Modeling project"); //$NON-NLS-1$ 
+        wizardNewProjectCreationPage.setDescription("Enter a project name"); //$NON-NLS-1$    
 
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * @see org.eclipse.jface.wizard.Wizard#performFinish()
-	 */
-	@Override
-	public boolean performFinish() {
-		boolean finished = true;
+        modelPage = new EcoreModelSpecPage("Ecore model parameters"); //$NON-NLS-1$ 
+        modelPage.setTitle("Model settings"); //$NON-NLS-1$ 
+        modelPage.setDescription("Define the model settings"); //$NON-NLS-1$ 
 
-		updatePerspective();
-		final EcoreModelingProjectCreationOperation ecoreModelingProjectCreationOperation = new EcoreModelingProjectCreationOperation(
-				modelPage.getEPackage(), modelPage.getEcoreFileName(),
-				modelPage.getGenModelFileName(),
-				modelPage.getRepresentationFileName(),
-				new LinkedHashSet<Viewpoint>(viewpointsSelectionWizardPage
-						.getViewpoints()), workbench, genModelContainerPath,
-				genModelProjectLocation,
-				wizardNewProjectCreationPage.getSelectedWorkingSets());
-		try {
-			getContainer().run(true, false,
-					ecoreModelingProjectCreationOperation);
-		} catch (InvocationTargetException e) {
-			IStatus status = new Status(IStatus.ERROR,
-					EcoreToolsDesignPlugin.PLUGIN_ID, IStatus.ERROR,
-					e.getMessage(), e);
-			EcoreToolsDesignPlugin.getDefault().getLog().log(status);
-			finished = false;
-		} catch (InterruptedException e) {
-			IStatus status = new Status(IStatus.ERROR,
-					EcoreToolsDesignPlugin.PLUGIN_ID, IStatus.ERROR,
-					e.getMessage(), e);
-			EcoreToolsDesignPlugin.getDefault().getLog().log(status);
-			finished = false;
-		}
-		try {
-			getContainer().run(false, false, new IRunnableWithProgress() {
+        viewpointsSelectionWizardPage = new ViewpointsSelectionWizardPage(null, Lists.newArrayList(DESIGN_VIEWPOINT_NAME)) {
+            @Override
+            protected Collection<String> computeSemanticFileExtensions(Session session) {
+                Set<String> fileExtensions = new HashSet<String>();
+                fileExtensions.add("ecore");
+                return fileExtensions;
+            }
+        };
 
-				public void run(IProgressMonitor monitor)
-						throws InvocationTargetException, InterruptedException {
-					try {
-						monitor.beginTask("Open the diagram metamodel", 2);
+        // Fix for VP-3711 to avoid a NPE on 3.8
+        ReflectionHelper.setFieldValueWithoutException(this, "newProjectCreationPage", wizardNewProjectCreationPage);
 
-						IFile ecoreModel = ecoreModelingProjectCreationOperation
-								.getEcoreModel();
-						createdProject = ecoreModelingProjectCreationOperation
-								.getNewProject();
-						if (ecoreModel != null && ecoreModel.exists()) {
-							selectAndReveal(ecoreModel);
-						} else {
-							selectAndReveal(ecoreModelingProjectCreationOperation
-									.getNewProject());
-						}
-						monitor.worked(1);
+        addPage(wizardNewProjectCreationPage);
+        addPage(modelPage);
+        addPage(viewpointsSelectionWizardPage);
+    }
 
-						// Open the entities diagram, of the root of the
-						// ecore
-						// file,
-						// that is automatically created (because the
-						// Entities
-						// diagram has
-						// the "initialization" to true).
-						// This can fail if the user deselects the "Design"
-						// viewpoint in the second page of the wizard.
-						openFirstRepresentation(
-								ecoreModelingProjectCreationOperation
-										.getNewProject(),
-								new SubProgressMonitor(monitor, 1));
-					} finally {
-						monitor.done();
-					}
-				}
-			});
-		} catch (InvocationTargetException e) {
-			IStatus status = new Status(IStatus.ERROR,
-					EcoreToolsDesignPlugin.PLUGIN_ID, IStatus.ERROR,
-					e.getMessage(), e);
-			EcoreToolsDesignPlugin.getDefault().getLog().log(status);
-			finished = false;
-		} catch (InterruptedException e) {
-			IStatus status = new Status(IStatus.ERROR,
-					EcoreToolsDesignPlugin.PLUGIN_ID, IStatus.ERROR,
-					e.getMessage(), e);
-			EcoreToolsDesignPlugin.getDefault().getLog().log(status);
-			finished = false;
-		}
-		return finished;
-	}
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.eclipse.jface.wizard.Wizard#performFinish()
+     */
+    @Override
+    public boolean performFinish() {
+        boolean finished = true;
 
-	@Override
-	public IProject getNewProject() {
-		return createdProject;
-	}
+        updatePerspective();
+        final EcoreModelingProjectCreationOperation ecoreModelingProjectCreationOperation = new EcoreModelingProjectCreationOperation(modelPage.getEPackage(), modelPage.getEcoreFileName(),
+                modelPage.getGenModelFileName(), modelPage.getRepresentationFileName(), new LinkedHashSet<Viewpoint>(viewpointsSelectionWizardPage.getViewpoints()), workbench, genModelContainerPath,
+                genModelProjectLocation, wizardNewProjectCreationPage.getSelectedWorkingSets());
+        try {
+            getContainer().run(true, false, ecoreModelingProjectCreationOperation);
+        } catch (InvocationTargetException e) {
+            IStatus status = new Status(IStatus.ERROR, EcoreToolsDesignPlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e);
+            EcoreToolsDesignPlugin.INSTANCE.log(status);
+            finished = false;
+        } catch (InterruptedException e) {
+            IStatus status = new Status(IStatus.ERROR, EcoreToolsDesignPlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e);
+            EcoreToolsDesignPlugin.INSTANCE.log(status);
+            finished = false;
+        }
+        try {
+            getContainer().run(false, false, new IRunnableWithProgress() {
 
-	/**
-	 * Selects and reveals the newly added resource in all parts of the active
-	 * workbench window's active page.
-	 * 
-	 * @see ISetSelectionTarget
-	 */
-	protected void selectAndReveal(IResource newResource) {
-		BasicNewResourceWizard.selectAndReveal(newResource,
-				workbench.getActiveWorkbenchWindow());
-		EclipseUIUtil.expand(newResource, workbench.getActiveWorkbenchWindow());
-	}
+                public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+                    try {
+                        monitor.beginTask("Open the diagram metamodel", 2);
 
-	/**
-	 * Open the first representation containing in the representation file of
-	 * this Modeling project.
-	 * 
-	 * @param project
-	 *            The modeling project containing the representations file.
-	 * @param monitor
-	 *            a {@link IProgressMonitor} to show progression of first
-	 *            {@link DRepresentation} opening
-	 */
-	private void openFirstRepresentation(IProject project,
-			IProgressMonitor monitor) {
-		Option<ModelingProject> opionalModelingProject = ModelingProject
-				.asModelingProject(project);
-		if (opionalModelingProject.some()) {
-			Session session = opionalModelingProject.get().getSession();
-			if (session != null) {
-				if (!session.getSelectedViews().isEmpty()) {
-					DView view = session.getSelectedViews().iterator().next();
-					if (!view.getOwnedRepresentations().isEmpty()) {
-						DRepresentation representationToOpen = view
-								.getOwnedRepresentations().get(0);
-						DialectUIManager.INSTANCE.openEditor(session,
-								representationToOpen, monitor);
-					}
-				}
-			}
-		}
-	}
+                        IFile ecoreModel = ecoreModelingProjectCreationOperation.getEcoreModel();
+                        createdProject = ecoreModelingProjectCreationOperation.getNewProject();
+                        if (ecoreModel != null && ecoreModel.exists()) {
+                            selectAndReveal(ecoreModel);
+                        } else {
+                            selectAndReveal(ecoreModelingProjectCreationOperation.getNewProject());
+                        }
+                        monitor.worked(1);
 
-	public void setInitialProjectName(String value) {
-		initialProjectName = value;
-	}
+                        // Open the entities diagram, of the root of the
+                        // ecore
+                        // file,
+                        // that is automatically created (because the
+                        // Entities
+                        // diagram has
+                        // the "initialization" to true).
+                        // This can fail if the user deselects the "Design"
+                        // viewpoint in the second page of the wizard.
+                        openFirstRepresentation(ecoreModelingProjectCreationOperation.getNewProject(), new SubProgressMonitor(monitor, 1));
+                    } finally {
+                        monitor.done();
+                    }
+                }
+            });
+        } catch (InvocationTargetException e) {
+            IStatus status = new Status(IStatus.ERROR, EcoreToolsDesignPlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e);
+            EcoreToolsDesignPlugin.INSTANCE.log(status);
+            finished = false;
+        } catch (InterruptedException e) {
+            IStatus status = new Status(IStatus.ERROR, EcoreToolsDesignPlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e);
+            EcoreToolsDesignPlugin.INSTANCE.log(status);
+            finished = false;
+        }
+        return finished;
+    }
 
-	private String getPackageName(String projectName) {
-		String packageName = projectName.substring(0, 1).toLowerCase()
-				+ projectName.substring(1);
-		int index = packageName.lastIndexOf('.');
-		if (index != -1) {
-			packageName = packageName.substring(index + 1);
-		}
-		return packageName;
-	}
+    @Override
+    public IProject getNewProject() {
+        return createdProject;
+    }
 
-	private class EcoreModelSpecPage extends WizardPage {
+    /**
+     * Selects and reveals the newly added resource in all parts of the active
+     * workbench window's active page.
+     * 
+     * @see ISetSelectionTarget
+     */
+    protected void selectAndReveal(IResource newResource) {
+        BasicNewResourceWizard.selectAndReveal(newResource, workbench.getActiveWorkbenchWindow());
+        EclipseUIUtil.expand(newResource, workbench.getActiveWorkbenchWindow());
+    }
 
-		private static final String NAMESPACE_GROUP_LABEL = "Namespace properties";//$NON-NLS-1$ 
+    /**
+     * Open the first representation containing in the representation file of
+     * this Modeling project.
+     * 
+     * @param project
+     *            The modeling project containing the representations file.
+     * @param monitor
+     *            a {@link IProgressMonitor} to show progression of first
+     *            {@link DRepresentation} opening
+     */
+    private void openFirstRepresentation(IProject project, IProgressMonitor monitor) {
+        Option<ModelingProject> opionalModelingProject = ModelingProject.asModelingProject(project);
+        if (opionalModelingProject.some()) {
+            Session session = opionalModelingProject.get().getSession();
+            if (session != null) {
+                if (!session.getSelectedViews().isEmpty()) {
+                    DView view = session.getSelectedViews().iterator().next();
+                    if (!view.getOwnedRepresentations().isEmpty()) {
+                        DRepresentation representationToOpen = view.getOwnedRepresentations().get(0);
+                        DialectUIManager.INSTANCE.openEditor(session, representationToOpen, monitor);
+                    }
+                }
+            }
+        }
+    }
+
+    public void setInitialProjectName(String value) {
+        initialProjectName = value;
+    }
+
+    private String getPackageName(String projectName) {
+        String packageName = projectName.substring(0, 1).toLowerCase() + projectName.substring(1);
+        int index = packageName.lastIndexOf('.');
+        if (index != -1) {
+            packageName = packageName.substring(index + 1);
+        }
+        return packageName;
+    }
+
+    private class EcoreModelSpecPage extends WizardPage {
+
+        private static final String NAMESPACE_GROUP_LABEL = "Namespace properties";//$NON-NLS-1$ 
 
-		private static final String NS_PREFIX_FIELD_LABEL = "Ns Prefix"; //$NON-NLS-1$ 
+        private static final String NS_PREFIX_FIELD_LABEL = "Ns Prefix"; //$NON-NLS-1$ 
 
-		private static final String NS_URI_FIELD_LABEL = "Ns Uri"; //$NON-NLS-1$ 
+        private static final String NS_URI_FIELD_LABEL = "Ns Uri"; //$NON-NLS-1$ 
 
-		private static final String USE_DEFAULT_LABEL = "Use default namespace parameters"; //$NON-NLS-1$ 
+        private static final String USE_DEFAULT_LABEL = "Use default namespace parameters"; //$NON-NLS-1$ 
 
-		private static final String PACKAGE_FIELD_LABEL = "Main package name"; //$NON-NLS-1$ 
+        private static final String PACKAGE_FIELD_LABEL = "Main package name"; //$NON-NLS-1$ 
 
-		private static final String DEFAULT_URI_BASE = "http://www.example.org/"; //$NON-NLS-1$ 
+        private static final String DEFAULT_URI_BASE = "http://www.example.org/"; //$NON-NLS-1$ 
 
-		private static final String DEFAULT_COMMON_FILE_NAME = "model"; //$NON-NLS-1$ 
+        private static final String DEFAULT_COMMON_FILE_NAME = "model"; //$NON-NLS-1$ 
 
-		// widgets
-		private Text packageNameField;
+        // widgets
+        private Text packageNameField;
 
-		private Text nsPrefixField;
+        private Text nsPrefixField;
 
-		private Text nsUriField;
+        private Text nsUriField;
 
-		private Button useDefaultsButton;
+        private Button useDefaultsButton;
 
-		private EPackage ePackage;
+        private EPackage ePackage;
 
-		private boolean silentModificationEnabled = true;
+        private boolean silentModificationEnabled = true;
 
-		private final ModifyListener nsModifyListener = new ModifyListener() {
+        private final ModifyListener nsModifyListener = new ModifyListener() {
 
-			public void modifyText(ModifyEvent e) {
-				if (!(useDefaultsButton != null && useDefaultsButton
-						.getSelection())) {
-					setPageComplete(validatePage());
-				}
-			}
-		};
+            public void modifyText(ModifyEvent e) {
+                if (!(useDefaultsButton != null && useDefaultsButton.getSelection())) {
+                    setPageComplete(validatePage());
+                }
+            }
+        };
 
-		public EcoreModelSpecPage(String name) {
-			super(name);
-		}
+        public EcoreModelSpecPage(String name) {
+            super(name);
+        }
 
-		/**
-		 * Allow an other page to set the package name until the user manualy
-		 * modify it.
-		 * 
-		 * @param packageName
-		 *            the package name to set.
-		 */
-		public void setPackageNameSilently(String packageName) {
-			if (packageNameField != null && silentModificationEnabled) {
-				packageNameField.setText(packageName);
-			}
-		}
+        /**
+         * Allow an other page to set the package name until the user manualy
+         * modify it.
+         * 
+         * @param packageName
+         *            the package name to set.
+         */
+        public void setPackageNameSilently(String packageName) {
+            if (packageNameField != null && silentModificationEnabled) {
+                packageNameField.setText(packageName);
+            }
+        }
 
-		/**
-		 * {@inheritDoc}
-		 */
-		public void createControl(Composite parent) {
-			Composite composite = new Composite(parent, SWT.NULL);
-			composite.setLayout(new GridLayout());
-			composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+        /**
+         * {@inheritDoc}
+         */
+        public void createControl(Composite parent) {
+            Composite composite = new Composite(parent, SWT.NULL);
+            composite.setLayout(new GridLayout());
+            composite.setLayoutData(new GridData(GridData.FILL_BOTH));
 
-			createModelGroup(composite);
-			createNamespaceGroup(composite, false);
+            createModelGroup(composite);
+            createNamespaceGroup(composite, false);
 
-			setPageComplete(validatePage());
+            setPageComplete(validatePage());
 
-			setControl(composite);
-			Dialog.applyDialogFont(composite);
-		}
+            setControl(composite);
+            Dialog.applyDialogFont(composite);
+        }
 
-		private void createModelGroup(Composite parent) {
-			packageNameField = createLabelAndText(parent, PACKAGE_FIELD_LABEL,
-					getPackageName());
-			packageNameField.addModifyListener(new ModifyListener() {
+        private void createModelGroup(Composite parent) {
+            packageNameField = createLabelAndText(parent, PACKAGE_FIELD_LABEL, getPackageName());
+            packageNameField.addModifyListener(new ModifyListener() {
 
-				public void modifyText(ModifyEvent e) {
-					if (packageNameField.isVisible()) {
-						silentModificationEnabled = false;
-					}
-					updateNamespaceValues();
-					setPageComplete(validatePage());
-				}
-			});
+                public void modifyText(ModifyEvent e) {
+                    if (packageNameField.isVisible()) {
+                        silentModificationEnabled = false;
+                    }
+                    updateNamespaceValues();
+                    setPageComplete(validatePage());
+                }
+            });
 
-		}
+        }
 
-		private void createNamespaceGroup(Composite composite, boolean custom) {
-			Group nsGroup = new Group(composite, SWT.NONE);
-			nsGroup.setFont(composite.getFont());
-			nsGroup.setText(NAMESPACE_GROUP_LABEL);
-			nsGroup.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-			nsGroup.setLayout(new GridLayout(1, false));
+        private void createNamespaceGroup(Composite composite, boolean custom) {
+            Group nsGroup = new Group(composite, SWT.NONE);
+            nsGroup.setFont(composite.getFont());
+            nsGroup.setText(NAMESPACE_GROUP_LABEL);
+            nsGroup.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+            nsGroup.setLayout(new GridLayout(1, false));
 
-			useDefaultsButton = new Button(nsGroup, SWT.CHECK | SWT.RIGHT);
-			useDefaultsButton.setText(USE_DEFAULT_LABEL);
+            useDefaultsButton = new Button(nsGroup, SWT.CHECK | SWT.RIGHT);
+            useDefaultsButton.setText(USE_DEFAULT_LABEL);
 
-			GridData buttonData = new GridData();
-			buttonData.horizontalSpan = 4;
-			useDefaultsButton.setLayoutData(buttonData);
-			useDefaultsButton.setSelection(!custom);
+            GridData buttonData = new GridData();
+            buttonData.horizontalSpan = 4;
+            useDefaultsButton.setLayoutData(buttonData);
+            useDefaultsButton.setSelection(!custom);
 
-			nsUriField = createLabelAndText(nsGroup, NS_URI_FIELD_LABEL,
-					getNsUri());
-			nsPrefixField = createLabelAndText(nsGroup, NS_PREFIX_FIELD_LABEL,
-					getNsPRefix());
+            nsUriField = createLabelAndText(nsGroup, NS_URI_FIELD_LABEL, getNsUri());
+            nsPrefixField = createLabelAndText(nsGroup, NS_PREFIX_FIELD_LABEL, getNsPRefix());
 
-			nsUriField.addModifyListener(nsModifyListener);
-			nsPrefixField.addModifyListener(nsModifyListener);
-			setNameSpaceGroupActivation(custom);
+            nsUriField.addModifyListener(nsModifyListener);
+            nsPrefixField.addModifyListener(nsModifyListener);
+            setNameSpaceGroupActivation(custom);
 
-			useDefaultsButton.addSelectionListener(new SelectionAdapter() {
-				public void widgetSelected(SelectionEvent e) {
-					boolean useDefault = useDefaultsButton.getSelection();
-					if (useDefault) {
-						updateNamespaceValues();
-					}
-					setNameSpaceGroupActivation(!useDefault);
-					setPageComplete(validatePage());
-				}
-			});
-		}
+            useDefaultsButton.addSelectionListener(new SelectionAdapter() {
+                public void widgetSelected(SelectionEvent e) {
+                    boolean useDefault = useDefaultsButton.getSelection();
+                    if (useDefault) {
+                        updateNamespaceValues();
+                    }
+                    setNameSpaceGroupActivation(!useDefault);
+                    setPageComplete(validatePage());
+                }
+            });
+        }
 
-		private void setNameSpaceGroupActivation(boolean enabled) {
-			if (nsUriField != null) {
-				nsUriField.setEnabled(enabled);
-			}
+        private void setNameSpaceGroupActivation(boolean enabled) {
+            if (nsUriField != null) {
+                nsUriField.setEnabled(enabled);
+            }
 
-			if (nsPrefixField != null) {
-				nsPrefixField.setEnabled(enabled);
-			}
-		}
+            if (nsPrefixField != null) {
+                nsPrefixField.setEnabled(enabled);
+            }
+        }
 
-		private void updateNamespaceValues() {
-			if (useDefaultsButton != null && useDefaultsButton.getSelection()) {
-				String packageName = getPackageName();
-				if (nsPrefixField != null) {
-					nsPrefixField.setText(packageName);
-				}
+        private void updateNamespaceValues() {
+            if (useDefaultsButton != null && useDefaultsButton.getSelection()) {
+                String packageName = getPackageName();
+                if (nsPrefixField != null) {
+                    nsPrefixField.setText(packageName);
+                }
 
-				if (nsUriField != null) {
-					nsUriField.setText(getDefaultNsUri(packageName));
-				}
-			}
-		}
+                if (nsUriField != null) {
+                    nsUriField.setText(getDefaultNsUri(packageName));
+                }
+            }
+        }
 
-		private Text createLabelAndText(Composite parent, String label,
-				String initialValue) {
-			Composite group = new Composite(parent, SWT.NONE);
-			GridLayout layout = new GridLayout();
-			layout.numColumns = 2;
-			group.setLayout(layout);
-			group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+        private Text createLabelAndText(Composite parent, String label, String initialValue) {
+            Composite group = new Composite(parent, SWT.NONE);
+            GridLayout layout = new GridLayout();
+            layout.numColumns = 2;
+            group.setLayout(layout);
+            group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 
-			// label
-			Label labelField = new Label(group, SWT.NONE);
-			labelField.setText(label);
-			labelField.setFont(parent.getFont());
+            // label
+            Label labelField = new Label(group, SWT.NONE);
+            labelField.setText(label);
+            labelField.setFont(parent.getFont());
 
-			// text
-			Text textField = new Text(group, SWT.BORDER);
-			GridData data = new GridData(GridData.FILL_HORIZONTAL);
-			data.widthHint = 250;
-			textField.setLayoutData(data);
-			textField.setFont(parent.getFont());
-			if (initialValue != null) {
-				textField.setText(initialValue);
-			}
-			return textField;
-		}
+            // text
+            Text textField = new Text(group, SWT.BORDER);
+            GridData data = new GridData(GridData.FILL_HORIZONTAL);
+            data.widthHint = 250;
+            textField.setLayoutData(data);
+            textField.setFont(parent.getFont());
+            if (initialValue != null) {
+                textField.setText(initialValue);
+            }
+            return textField;
+        }
 
-		public EPackage getEPackage() {
-			if (ePackage == null) {
-				initEPackage();
-			}
-			return ePackage;
-		}
+        public EPackage getEPackage() {
+            if (ePackage == null) {
+                initEPackage();
+            }
+            return ePackage;
+        }
 
-		private void initEPackage() {
-			EClass eClass = (EClass) EcorePackage.eINSTANCE
-					.getEClassifier("EPackage");
-			EObject rootObject = EcoreFactory.eINSTANCE.create(eClass);
+        private void initEPackage() {
+            EClass eClass = (EClass) EcorePackage.eINSTANCE.getEClassifier("EPackage");
+            EObject rootObject = EcoreFactory.eINSTANCE.create(eClass);
 
-			if (rootObject instanceof EPackage) {
-				ePackage = (EPackage) rootObject;
-				updateEPackage(ePackage);
-			}
-		}
+            if (rootObject instanceof EPackage) {
+                ePackage = (EPackage) rootObject;
+                updateEPackage(ePackage);
+            }
+        }
 
-		private void updateEPackage(EPackage p) {
-			p.setName(getPackageName());
-			p.setNsPrefix(getNsPRefix());
-			p.setNsURI(getNsUri());
-		}
+        private void updateEPackage(EPackage p) {
+            p.setName(getPackageName());
+            p.setNsPrefix(getNsPRefix());
+            p.setNsURI(getNsUri());
+        }
 
-		/**
-		 * Returns whether this page's controls currently all contain valid
-		 * values.
-		 * 
-		 * @return <code>true</code> if all controls are valid, and
-		 *         <code>false</code> if at least one is invalid
-		 */
-		protected boolean validatePage() {
-			if (ePackage == null) {
-				initEPackage();
-			} else {
-				updateEPackage(ePackage);
-			}
+        /**
+         * Returns whether this page's controls currently all contain valid
+         * values.
+         * 
+         * @return <code>true</code> if all controls are valid, and
+         *         <code>false</code> if at least one is invalid
+         */
+        protected boolean validatePage() {
+            if (ePackage == null) {
+                initEPackage();
+            } else {
+                updateEPackage(ePackage);
+            }
 
-			EcoreValidator validator = new EcoreValidator();
-			BasicDiagnostic diagnostic = new BasicDiagnostic();
-			boolean validName = validator.validateENamedElement_WellFormedName(
-					ePackage, diagnostic, null);
-			boolean validNsUri = validator.validateEPackage_WellFormedNsURI(
-					ePackage, diagnostic, null);
-			boolean validNsPrefix = validator
-					.validateEPackage_WellFormedNsPrefix(ePackage, diagnostic,
-							null);
+            EcoreValidator validator = new EcoreValidator();
+            BasicDiagnostic diagnostic = new BasicDiagnostic();
+            boolean validName = validator.validateENamedElement_WellFormedName(ePackage, diagnostic, null);
+            boolean validNsUri = validator.validateEPackage_WellFormedNsURI(ePackage, diagnostic, null);
+            boolean validNsPrefix = validator.validateEPackage_WellFormedNsPrefix(ePackage, diagnostic, null);
 
-			boolean validEPackage = validName && validNsUri && validNsPrefix;
-			if (validEPackage) {
-				setErrorMessage(null);
-			} else {
-				StringBuilder sb = new StringBuilder();
-				buildCompoundMessage(sb, diagnostic);
-				setErrorMessage(sb.toString());
-			}
-			return validEPackage;
-		}
+            boolean validEPackage = validName && validNsUri && validNsPrefix;
+            if (validEPackage) {
+                setErrorMessage(null);
+            } else {
+                StringBuilder sb = new StringBuilder();
+                buildCompoundMessage(sb, diagnostic);
+                setErrorMessage(sb.toString());
+            }
+            return validEPackage;
+        }
 
-		private void buildCompoundMessage(StringBuilder sb,
-				Diagnostic diagnostic) {
-			if (!StringUtil.isEmpty(diagnostic.getMessage())
-					&& diagnostic.getSeverity() != Diagnostic.OK) {
-				sb.append(diagnostic.getMessage());
-				sb.append("\n");
-			}
+        private void buildCompoundMessage(StringBuilder sb, Diagnostic diagnostic) {
+            if (!StringUtil.isEmpty(diagnostic.getMessage()) && diagnostic.getSeverity() != Diagnostic.OK) {
+                sb.append(diagnostic.getMessage());
+                sb.append("\n");
+            }
 
-			for (Diagnostic child : diagnostic.getChildren()) {
-				buildCompoundMessage(sb, child);
-			}
-		}
+            for (Diagnostic child : diagnostic.getChildren()) {
+                buildCompoundMessage(sb, child);
+            }
+        }
 
-		private String getPackageName() {
-			if (packageNameField == null) {
-				return DEFAULT_COMMON_FILE_NAME;
-			}
+        private String getPackageName() {
+            if (packageNameField == null) {
+                return DEFAULT_COMMON_FILE_NAME;
+            }
 
-			return packageNameField.getText().trim();
-		}
+            return packageNameField.getText().trim();
+        }
 
-		private String getNsUri() {
-			if (nsUriField == null) {
-				return getDefaultNsUri(getPackageName());
-			}
+        private String getNsUri() {
+            if (nsUriField == null) {
+                return getDefaultNsUri(getPackageName());
+            }
 
-			return nsUriField.getText().trim();
-		}
+            return nsUriField.getText().trim();
+        }
 
-		private String getDefaultNsUri(String packageName) {
-			return DEFAULT_URI_BASE + packageName;
-		}
+        private String getDefaultNsUri(String packageName) {
+            return DEFAULT_URI_BASE + packageName;
+        }
 
-		private String getNsPRefix() {
-			if (nsPrefixField == null) {
-				return getPackageName();
-			}
+        private String getNsPRefix() {
+            if (nsPrefixField == null) {
+                return getPackageName();
+            }
 
-			return nsPrefixField.getText().trim();
-		}
+            return nsPrefixField.getText().trim();
+        }
 
-		public String getRepresentationFileName() {
-			return getPackageName()
-					+ "." + SiriusUtil.SESSION_RESOURCE_EXTENSION; //$NON-NLS-1$ 
-		}
+        public String getRepresentationFileName() {
+            return getPackageName() + "." + SiriusUtil.SESSION_RESOURCE_EXTENSION; //$NON-NLS-1$ 
+        }
 
-		public String getEcoreFileName() {
-			return getPackageName() + ".ecore"; //$NON-NLS-1$ 
-		}
+        public String getEcoreFileName() {
+            return getPackageName() + ".ecore"; //$NON-NLS-1$ 
+        }
 
-		public String getGenModelFileName() {
-			return getPackageName() + ".genmodel"; //$NON-NLS-1$ 
-		}
-	}
+        public String getGenModelFileName() {
+            return getPackageName() + ".genmodel"; //$NON-NLS-1$ 
+        }
+    }
 }
diff --git a/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/wizard/EcoreModelingProjectCreationOperation.java b/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/wizard/EcoreModelingProjectCreationOperation.java
index 4a4e49b..5cbaa28 100644
--- a/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/wizard/EcoreModelingProjectCreationOperation.java
+++ b/org.eclipse.emf.ecoretools.design.ui/src/org/eclipse/emf/ecoretools/design/ui/wizard/EcoreModelingProjectCreationOperation.java
@@ -149,7 +149,7 @@
 		final IStatus status = new Status(IStatus.ERROR,
 				EcoreToolsDesignPlugin.PLUGIN_ID, IStatus.ERROR,
 				e.getMessage(), e);
-		EcoreToolsDesignPlugin.getDefault().getLog().log(status);
+		EcoreToolsDesignPlugin.INSTANCE.log(status);
 	}
 
 	public void modifyWorkspace(IProgressMonitor progressMonitor)
@@ -323,7 +323,7 @@
 					EcoreToolsDesignPlugin.PLUGIN_ID,
 					IStatus.ERROR,
 					"Error occurs during generating the genmodel file.", exception);//$NON-NLS-1$
-			EcoreToolsDesignPlugin.getDefault().getLog().log(status);
+			EcoreToolsDesignPlugin.INSTANCE.log(status);
 		} finally {
 			monitor.done();
 		}
diff --git a/org.eclipse.emf.ecoretools.design/META-INF/MANIFEST.MF b/org.eclipse.emf.ecoretools.design/META-INF/MANIFEST.MF
index cd2d4d1..0933996 100644
--- a/org.eclipse.emf.ecoretools.design/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.ecoretools.design/META-INF/MANIFEST.MF
@@ -10,7 +10,6 @@
  org.eclipse.sirius.diagram,
  org.eclipse.core.runtime,
  org.eclipse.core.resources,
- org.eclipse.emf.ecore.editor,
  org.eclipse.emf.ecore.xmi,
  org.eclipse.emf.importer,
  org.eclipse.emf.importer.ecore,
@@ -23,7 +22,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Vendor: %providerName
 Eclipse-LazyStart: true
-Bundle-Activator: org.eclipse.emf.ecoretools.design.service.EcoreToolsDesignPlugin
+Bundle-Activator: org.eclipse.emf.ecoretools.design.service.EcoreToolsDesignPlugin$Implementation
 Export-Package: org.eclipse.emf.ecoretools.design,
  org.eclipse.emf.ecoretools.design.service
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/internal/EcoreToolsSessionListener.java b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/internal/EcoreToolsSessionListener.java
index 9faec6e..1ae2c49 100644
--- a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/internal/EcoreToolsSessionListener.java
+++ b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/internal/EcoreToolsSessionListener.java
@@ -60,7 +60,7 @@
             set.getURIConverter().getURIMap().putAll(result);
         } else {
             IStatus status = new Status(IStatus.WARNING, EcoreToolsDesignPlugin.PLUGIN_ID, "The EMF API EcorePlugin.computePlatformURIMap has probably changed and is not supported yet by EcoreTools.");
-            EcoreToolsDesignPlugin.getDefault().getLog().log(status);
+            EcoreToolsDesignPlugin.INSTANCE.log(status);
 
         }
 
diff --git a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java
index 5bfe67e..500ab14 100644
--- a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java
+++ b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java
@@ -11,7 +11,6 @@
 
 package org.eclipse.emf.ecoretools.design.service;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -38,7 +37,6 @@
 import org.eclipse.emf.ecore.ETypeParameter;
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
-import org.eclipse.emf.ecore.presentation.EcoreEditorPlugin;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.util.Diagnostician;
 import org.eclipse.emf.ecore.util.EcoreUtil;
@@ -68,9 +66,6 @@
 import org.eclipse.sirius.viewpoint.DRepresentation;
 import org.eclipse.sirius.viewpoint.DSemanticDecorator;
 import org.eclipse.sirius.viewpoint.ViewpointPackage;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
 
 import com.google.common.base.Ascii;
 import com.google.common.base.CharMatcher;
@@ -579,20 +574,6 @@
         return true;
     }
 
-    /**
-     * Shows the Properties View. (See Double Click Action in Design ViewPoint)
-     * 
-     * @param object
-     *            Any EObject
-     */
-    public void showPropertiesViewAction(EObject object) {
-        try {
-            PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("org.eclipse.ui.views.PropertySheet");
-        } catch (PartInitException exception) {
-            EcoreEditorPlugin.INSTANCE.log(exception);
-        }
-    }
-
     public EEnumLiteral arrowsFillDiamond(EObject any) {
         return DiagramPackage.eINSTANCE.getEdgeArrows().getEEnumLiteral("FillDiamond");
     }
@@ -601,30 +582,6 @@
         return ViewpointPackage.eINSTANCE.getFontFormat().getEEnumLiteral("bold");
     }
 
-    public void openClassDiagramContextHelp(EObject any) {
-        // try {
-        // openContextHelp(any,
-        // "org.eclipse.emf.ecoretools.design.ClassDiagram");
-        // } catch (IOException e) {
-        // EcoreEditorPlugin.INSTANCE.log(e);
-        // }
-    }
-
-    public void openContextHelp(EObject any, final String contextID) throws IOException {
-        if (Display.getDefault() != null)
-            Display.getDefault().asyncExec(new Runnable() {
-
-                public void run() {
-                    if (PlatformUI.getWorkbench() != null && PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null && PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell() != null) {
-                        PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-                        PlatformUI.getWorkbench().getHelpSystem().setHelp(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), contextID);
-                        PlatformUI.getWorkbench().getHelpSystem().displayDynamicHelp();
-
-                    }
-                }
-            });
-    }
-
     public void reconnectEReference(EObject element, DEdge edgeAfterReconnect) {
         if (edgeAfterReconnect.getSourceNode() instanceof DSemanticDecorator && edgeAfterReconnect.getTargetNode() instanceof DSemanticDecorator) {
 
@@ -700,9 +657,9 @@
                         // Execute the create view task
                         new CreateViewTask(context, session.getModelAccessor(), createViewOp, session.getInterpreter()).execute();
                     } catch (MetaClassNotFoundException e) {
-                        EcoreEditorPlugin.INSTANCE.log(e);
+                        EcoreToolsDesignPlugin.INSTANCE.log(e);
                     } catch (FeatureNotFoundException e) {
-                        EcoreEditorPlugin.INSTANCE.log(e);
+                        EcoreToolsDesignPlugin.INSTANCE.log(e);
                     }
                 }
             });
diff --git a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/EcoreToolsDesignPlugin.java b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/EcoreToolsDesignPlugin.java
index b5671fe..d494239 100644
--- a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/EcoreToolsDesignPlugin.java
+++ b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/EcoreToolsDesignPlugin.java
@@ -13,11 +13,13 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.eclipse.core.runtime.Plugin;
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
 import org.eclipse.sirius.business.api.componentization.ViewpointRegistry;
 import org.eclipse.sirius.business.api.session.SessionManager;
 import org.eclipse.sirius.business.api.session.SessionManagerListener;
 import org.eclipse.sirius.viewpoint.description.Viewpoint;
+import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 
 /**
@@ -26,64 +28,122 @@
  * @author Laurent Goubet <a
  *         href="mailto:laurent.goubet@obeo.fr">laurent.goubet@obeo.fr</a>
  */
-public class EcoreToolsDesignPlugin extends Plugin {
+public class EcoreToolsDesignPlugin extends EMFPlugin {
+
+    public static final EcoreToolsDesignPlugin INSTANCE = new EcoreToolsDesignPlugin();
+
+    /**
+     * Keep track of the singleton. <!-- begin-user-doc --> <!-- end-user-doc
+     * -->
+     * 
+     * @generated
+     */
+    private static Implementation plugin;
+
     /** The plug-in ID. */
     public static final String PLUGIN_ID = "org.eclipse.emf.ecoretools.design"; //$NON-NLS-1$
 
-    /** This plug-in's shared instance. */
-    private static EcoreToolsDesignPlugin plugin;
-
     private static Set<Viewpoint> viewpoints;
 
-    private SessionManagerListener notifWhenSessionAreCreated;
-
     /**
      * Default constructor for the plugin.
      */
     public EcoreToolsDesignPlugin() {
-        plugin = this;
+        super(new ResourceLocator[] {});
     }
 
     /**
-     * Returns the shared instance.
+     * Returns the singleton instance of the Eclipse plugin. <!-- begin-user-doc
+     * --> <!-- end-user-doc -->
      * 
-     * @return the shared instance
+     * @return the singleton instance.
+     * @generated
      */
-    public static EcoreToolsDesignPlugin getDefault() {
+    @Override
+    public ResourceLocator getPluginResourceLocator() {
         return plugin;
     }
 
     /**
-     * {@inheritDoc}
+     * Returns the singleton instance of the Eclipse plugin. <!-- begin-user-doc
+     * --> <!-- end-user-doc -->
      * 
-     * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+     * @return the singleton instance.
+     * @generated
      */
-    @Override
-    public void start(final BundleContext context) throws Exception {
-        super.start(context);
-        viewpoints = new HashSet<Viewpoint>();
-        viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN_ID + "/description/ecore.odesign"));
+    public static Implementation getPlugin() {
+        return plugin;
     }
 
     /**
-     * {@inheritDoc}
+     * The actual implementation of the Eclipse <b>Plugin</b>. <!--
+     * begin-user-doc --> <!-- end-user-doc -->
      * 
-     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+     * @generated
      */
-    @Override
-    public void stop(final BundleContext context) throws Exception {
-        plugin = null;
-        if (viewpoints != null) {
-            for (final Viewpoint viewpoint : viewpoints) {
-                ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint);
-            }
-            viewpoints.clear();
-            viewpoints = null;
-        }
-        if (notifWhenSessionAreCreated != null) {
-            SessionManager.INSTANCE.removeSessionsListener(notifWhenSessionAreCreated);
+    public static class Implementation extends EclipsePlugin {
+
+        private SessionManagerListener notifWhenSessionAreCreated;
+
+        /**
+         * Creates an instance. <!-- begin-user-doc --> <!-- end-user-doc -->
+         * 
+         * @generated
+         */
+        public Implementation() {
+            super();
+
+            // Remember the static instance.
+            //
+            plugin = this;
         }
 
-        super.stop(context);
+        /**
+         * The actual implementation of the purely OSGi-compatible <b>Bundle
+         * Activator</b>. <!-- begin-user-doc --> <!-- end-user-doc -->
+         * 
+         * @generated
+         */
+        public static final class Activator extends EMFPlugin.OSGiDelegatingBundleActivator {
+            @Override
+            protected BundleActivator createBundle() {
+                return new Implementation();
+            }
+        }
+
+        /**
+         * {@inheritDoc}
+         * 
+         * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+         */
+        @Override
+        public void start(final BundleContext context) throws Exception {
+            super.start(context);
+            viewpoints = new HashSet<Viewpoint>();
+            viewpoints.addAll(ViewpointRegistry.getInstance().registerFromPlugin(PLUGIN_ID + "/description/ecore.odesign"));
+        }
+
+        /**
+         * {@inheritDoc}
+         * 
+         * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+         */
+        @Override
+        public void stop(final BundleContext context) throws Exception {
+            plugin = null;
+            if (viewpoints != null) {
+                for (final Viewpoint viewpoint : viewpoints) {
+                    ViewpointRegistry.getInstance().disposeFromPlugin(viewpoint);
+                }
+                viewpoints.clear();
+                viewpoints = null;
+            }
+            if (notifWhenSessionAreCreated != null) {
+                SessionManager.INSTANCE.removeSessionsListener(notifWhenSessionAreCreated);
+            }
+
+            super.stop(context);
+        }
     }
+
 }