Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page')
-rw-r--r--plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SelectEClassifierWizardPage.java188
-rw-r--r--plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SelectEPackageWizardPage.java190
-rw-r--r--plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedSelectEClassifierWizardPage.java78
-rw-r--r--plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedSelectEPackageWizardPage.java75
-rw-r--r--plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedWizardPage.java260
-rw-r--r--plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/exception/SelectedEClassifierRuntimeException.java39
-rw-r--r--plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/exception/SelectedEPackageRuntimeException.java41
7 files changed, 871 insertions, 0 deletions
diff --git a/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SelectEClassifierWizardPage.java b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SelectEClassifierWizardPage.java
new file mode 100644
index 00000000000..d0366e09b1b
--- /dev/null
+++ b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SelectEClassifierWizardPage.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2011, 2012 Mia-Software.
+ * 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:
+ * Nicolas Bros (Mia-Software) - initial API and implementation
+ * Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ *******************************************************************************/
+package org.eclipse.emf.facet.util.emf.ui.internal.exported.util.wizard.page;
+
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.ETypedElement;
+import org.eclipse.emf.facet.util.core.DebugUtils;
+import org.eclipse.emf.facet.util.emf.ui.internal.Activator;
+import org.eclipse.emf.facet.util.emf.ui.internal.Messages;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.util.composite.EClassifierSelectionControl;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.util.wizard.page.exception.SelectedEClassifierRuntimeException;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.wizard.page.ISelectEClassifierWizardPage;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.wizard.page.ISelectEPackageWizardPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.FilteredList;
+
+/**
+ * @since 0.3
+ */
+public class SelectEClassifierWizardPage<T extends EClassifier> extends
+ WizardPage implements ISelectEClassifierWizardPage<T> {
+
+ private static final boolean DEBUG = DebugUtils.getDebugStatus(Activator
+ .getDefault());
+ private EClassifierSelectionControl<T> eClassSelection;
+ private final Class<? extends T> eTypeOption;
+ private String metamodelNsUri;
+
+ public SelectEClassifierWizardPage(final Class<? extends T> eTypeOption,
+ final EPackage ePackage) {
+ super("Whatever"); //$NON-NLS-1$
+ if (eTypeOption == EClass.class) {
+ setTitle(Messages.Select_EClass);
+ } else if (eTypeOption == EDataType.class) {
+ setTitle(Messages.Select_EDataType);
+ } else if (eTypeOption == EClassifier.class) {
+ setTitle(Messages.Select_EClassifier);
+ } else if (eTypeOption == ETypedElement.class) {
+ setTitle(Messages.Select_ETypedElement);
+ }
+ if (ePackage != null) {
+ this.metamodelNsUri = ePackage.getNsURI();
+ }
+ this.eTypeOption = eTypeOption;
+ }
+
+ @Override
+ public boolean isPageComplete() {
+ return this.eClassSelection.getSelectedEClassifier() != null;
+ }
+
+ @Override
+ public void setVisible(final boolean visible) {
+ super.setVisible(visible);
+ if (getPreviousPage() instanceof SelectEPackageWizardPage) {
+ final ISelectEPackageWizardPage selectEPackage = (ISelectEPackageWizardPage) getPreviousPage();
+ this.metamodelNsUri = selectEPackage.getSelectedEPackage()
+ .getNsURI();
+ if (this.metamodelNsUri != null) {
+ setDescription(selectEPackage.getSelectedEPackage()
+ .getNsURI());
+ }
+ }
+ this.eClassSelection.updateList(this.metamodelNsUri);
+ }
+
+ public void createControl(final Composite parent) {
+ this.eClassSelection = new EClassifierSelectionControl<T>(parent,
+ this.metamodelNsUri, this.eTypeOption);
+ final FilteredList filteredList = this.eClassSelection
+ .getFilteredList();
+
+ filteredList.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(final SelectionEvent event) {
+ if (event.item != null) {
+ updateButton();
+ // setPageComplete(filteredList.getSelection().length == 1);
+ }
+ }
+
+ public void widgetDefaultSelected(final SelectionEvent event) {
+ if (getWizard().canFinish()) {
+ getWizard().performFinish();
+ }
+ if (getNextPage() != null) {
+ goToNextPage();
+ }
+ }
+ });
+
+ this.eClassSelection.getFilterText().addModifyListener(
+ new ModifyListener() {
+
+ public void modifyText(final ModifyEvent event) {
+ updateButton();
+ }
+ });
+
+ // avoid the page being "complete" when still on a previous page
+ filteredList.setSelection(new int[0]);
+ setPageComplete(false);
+
+ setControl(this.eClassSelection);
+ }
+
+ protected void goToNextPage() {
+ getContainer().showPage(getNextPage());
+ }
+
+ protected void updateButton() {
+ if ((getContainer() != null) && (getContainer().getCurrentPage() != null)) {
+ getContainer().updateButtons();
+ }
+ }
+
+ public T getSelectedEClassifier() {
+ return this.eClassSelection.getSelectedEClassifier();
+ }
+
+ /**
+ * Select the <code>eclassifierName</code> into the list.
+ *
+ * @param eclassifierName
+ * the name of the classifier to select.
+ */
+ public void selectEClassifier(final String eclassifierName) {
+ DebugUtils.debug(DEBUG);
+ boolean doItNow = true;
+ // We get all the jobs
+ for (final Job job : Job.getJobManager().find(null)) {
+ // We check if the job of 'FilteredList' is ended. If not, we
+ // recursively call this method to check again without interfering
+ // with the 'FilteredList' job (doing an asynchrony call).
+ if (job.getClass().getName()
+ .startsWith(FilteredList.class.getName())) {
+ asyncSelectionClassifier(eclassifierName);
+ DebugUtils.debug(DEBUG, "Selection defered."); //$NON-NLS-1$
+ doItNow = false;
+ break;
+ }
+ }
+
+ // If the job 'FilteredList' is done, we can do the selection.
+ if (doItNow) {
+ internalSelectEClassifier(eclassifierName);
+ }
+ }
+
+ private void asyncSelectionClassifier(final String eclassifierName) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ selectEClassifier(eclassifierName);
+ }
+ });
+ }
+
+ private void internalSelectEClassifier(final String packageName) {
+ final FilteredList filteredList = this.eClassSelection
+ .getFilteredList();
+ filteredList.setSelection(new String[] { packageName });
+ if (getSelectedEClassifier() == null) {
+ throw new SelectedEClassifierRuntimeException();
+ }
+ DebugUtils.debug(DEBUG, "Selection setting finished."); //$NON-NLS-1$
+ DebugUtils.debug(DEBUG,
+ "selectedEClassifier=" + getSelectedEClassifier()); //$NON-NLS-1$
+ }
+} \ No newline at end of file
diff --git a/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SelectEPackageWizardPage.java b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SelectEPackageWizardPage.java
new file mode 100644
index 00000000000..2027eca4699
--- /dev/null
+++ b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SelectEPackageWizardPage.java
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2011, 2012 Mia-Software.
+ * 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:
+ * Nicolas Bros (Mia-Software) - initial API and implementation
+ * Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors
+ *******************************************************************************/
+package org.eclipse.emf.facet.util.emf.ui.internal.exported.util.wizard.page;
+
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.facet.util.core.DebugUtils;
+import org.eclipse.emf.facet.util.emf.ui.internal.Activator;
+import org.eclipse.emf.facet.util.emf.ui.internal.Messages;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.util.widget.component.metaclass.MetamodelSelectionControl;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.util.wizard.page.exception.SelectedEPackageRuntimeException;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.wizard.page.ISelectEPackageWizardPage;
+import org.eclipse.emf.facet.util.emf.ui.util.EditingUtil;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.FilteredList;
+
+/**
+ * @since 0.3
+ */
+public class SelectEPackageWizardPage extends WizardPage implements
+ ISelectEPackageWizardPage {
+
+ private static final boolean DEBUG = DebugUtils.getDebugStatus(Activator
+ .getDefault());
+
+ private MetamodelSelectionControl mmSelectionCtl;
+
+ public SelectEPackageWizardPage() {
+ super("Whatever"); //$NON-NLS-1$
+ setTitle(Messages.Select_EPackage);
+ }
+
+ @Override
+ public void setVisible(final boolean visible) {
+ super.setVisible(visible);
+ if (visible) {
+ this.mmSelectionCtl.getFilterText().setFocus();
+ setPageComplete(true);
+ }
+ }
+
+ public void createControl(final Composite parent) {
+ this.mmSelectionCtl = new MetamodelSelectionControl(parent);
+ this.mmSelectionCtl.setLayoutData(new GridData(
+ GridData.FILL_BOTH));
+ final FilteredList filteredList = this.mmSelectionCtl
+ .getFilteredList();
+
+ filteredList.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(final SelectionEvent event) {
+ if (event.item != null) {
+ setPageComplete(filteredList.getSelection().length == 1);
+ }
+ }
+
+ public void widgetDefaultSelected(final SelectionEvent event) {
+ if (getWizard().canFinish()) {
+ getWizard().performFinish();
+ }
+ if (getNextPage() != null) {
+ goToNextPage();
+ }
+ }
+ });
+
+ // prevent the page from being "complete" when still on a previous page
+ filteredList.setSelection(new int[0]);
+ setPageComplete(false);
+ setControl(this.mmSelectionCtl);
+ }
+
+ protected void goToNextPage() {
+ getContainer().showPage(getNextPage());
+ }
+
+ public EPackage getSelectedEPackage() {
+ EPackage ePackage = null;
+ // Only one result
+ if (this.mmSelectionCtl.getSelectedElements() != null) {
+ final Object result = this.mmSelectionCtl
+ .getSelectedElements()[0];
+ if (EPackage.Registry.INSTANCE.containsKey(result.toString())) {
+ ePackage = EPackage.Registry.INSTANCE
+ .getEPackage(result.toString());
+ }
+ }
+ return ePackage;
+ }
+
+ public void loadSelectedMetamodel() {
+ final Object[] results = this.mmSelectionCtl
+ .getSelectedElements();
+ // if user cancel the selection of meta models, results = null
+ if (results != null) {
+ final ResourceSet resourceSet = EditingUtil.getEditingDomain()
+ .getResourceSet();
+ for (final Object result : results) {
+ final URI uri = URI.createURI(result.toString());
+ final Resource resource = resourceSet.getResource(uri, true);
+ if (!resourceSet.getResources().contains(resource)) {
+ final Registry packageRegistry = resourceSet
+ .getPackageRegistry();
+ packageRegistry.putAll(putResourceContents(resource,
+ packageRegistry));
+ resourceSet.getResources().add(resource);
+ }
+ }
+ }
+ }
+
+ private static Registry putResourceContents(final Resource resource,
+ final Registry packageRegistry) {
+ final Registry result = packageRegistry;
+ for (final EObject eObject : resource.getContents()) {
+ if (eObject instanceof EPackage) {
+ final EPackage ePackage = (EPackage) eObject;
+ result.put(ePackage.getNsURI(), ePackage);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Select the <code>packageName</code> into the list.
+ *
+ * @param packageName
+ * the name of the package to select.
+ */
+ public void selectPackage(final String packageName) {
+ DebugUtils.debug(DEBUG);
+ boolean doItNow = true;
+ // We get all the jobs
+ for (final Job job : Job.getJobManager().find(null)) {
+ // We check if the job of 'FilteredList' is ended. If not, we
+ // recursively call this method to check again without interfering
+ // with the 'FilteredList' job (with an asynchrony call).
+ if (job.getClass().getName()
+ .startsWith(FilteredList.class.getName())) {
+ asyncSelectionPackage(packageName);
+ DebugUtils.debug(DEBUG, "Selection defered."); //$NON-NLS-1$
+ doItNow = false;
+ break;
+ }
+ }
+
+ // If the job 'FilteredList' is done, we can do the selection.
+ if (doItNow) {
+ internalSelectPackage(packageName);
+ }
+ }
+
+ private void asyncSelectionPackage(final String packageName) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ selectPackage(packageName);
+ }
+ });
+ }
+
+ private void internalSelectPackage(final String packageName) {
+ final FilteredList filteredList = this.mmSelectionCtl
+ .getFilteredList();
+ filteredList.setSelection(new String[] { packageName });
+ if (getSelectedEPackage() == null) {
+ throw new SelectedEPackageRuntimeException();
+ }
+ DebugUtils.debug(DEBUG, "Selection setting finished."); //$NON-NLS-1$
+ DebugUtils.debug(DEBUG, "selectedEPackage=" + getSelectedEPackage()); //$NON-NLS-1$
+ }
+}
diff --git a/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedSelectEClassifierWizardPage.java b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedSelectEClassifierWizardPage.java
new file mode 100644
index 00000000000..c2b2ad3d2c4
--- /dev/null
+++ b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedSelectEClassifierWizardPage.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2012 Mia-Software.
+ *
+ * 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:
+ * Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.util.emf.ui.internal.exported.util.wizard.page;
+
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.facet.util.core.DebugUtils;
+import org.eclipse.emf.facet.util.emf.ui.internal.Activator;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.wizard.page.ISelectEClassifierWizardPage;
+import org.eclipse.emf.facet.util.ui.internal.exported.displaysync.AbstractExceptionFreeRunnable;
+import org.eclipse.emf.facet.util.ui.internal.exported.displaysync.AbstractVoidExceptionFreeRunnable;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Synchronized class for safe run.
+ *
+ * @since 0.3
+ *
+ */
+public class SynchronizedSelectEClassifierWizardPage extends
+ SynchronizedWizardPage<ISelectEClassifierWizardPage> implements
+ ISelectEClassifierWizardPage {
+
+ private static final boolean DEBUG = DebugUtils.getDebugStatus(Activator
+ .getDefault());
+
+ /**
+ * Constructor.
+ *
+ * @param object
+ * the to synchronized.
+ * @param display
+ * the display.
+ */
+ public SynchronizedSelectEClassifierWizardPage(
+ final ISelectEClassifierWizardPage object, final Display display) {
+ super(object, display);
+ }
+
+ public EClassifier getSelectedEClassifier() {
+ return this
+ .safeSyncExec(new AbstractExceptionFreeRunnable<EClassifier>() {
+ @Override
+ public EClassifier safeRun() {
+ return SynchronizedSelectEClassifierWizardPage.this
+ .getSynchronizedObject()
+ .getSelectedEClassifier();
+ }
+ });
+ }
+
+ public void selectEClassifier(final String selection) {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedSelectEClassifierWizardPage.this
+ .getSynchronizedObject().selectEClassifier(
+ selection);
+ }
+ });
+
+ // We keep the thread waiting until the selection is not done.
+ // If we release the thread, the selection may not be done and made some
+ // errors
+ while (this.getSelectedEClassifier() == null) {
+ DebugUtils.debug(DEBUG, "Waiting."); //$NON-NLS-1$
+ }
+ }
+
+}
diff --git a/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedSelectEPackageWizardPage.java b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedSelectEPackageWizardPage.java
new file mode 100644
index 00000000000..630d4746115
--- /dev/null
+++ b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedSelectEPackageWizardPage.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2012 Mia-Software.
+ *
+ * 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:
+ * Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.util.emf.ui.internal.exported.util.wizard.page;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.facet.util.core.DebugUtils;
+import org.eclipse.emf.facet.util.emf.ui.internal.Activator;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.wizard.page.ISelectEPackageWizardPage;
+import org.eclipse.emf.facet.util.ui.internal.exported.displaysync.AbstractExceptionFreeRunnable;
+import org.eclipse.emf.facet.util.ui.internal.exported.displaysync.AbstractVoidExceptionFreeRunnable;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Synchronized class for safe run.
+ *
+ * @author amenager_stage
+ * @since 0.3
+ *
+ */
+public class SynchronizedSelectEPackageWizardPage extends
+ SynchronizedWizardPage<ISelectEPackageWizardPage> implements
+ ISelectEPackageWizardPage {
+
+ private static final boolean DEBUG = DebugUtils.getDebugStatus(Activator
+ .getDefault());
+
+ /**
+ * Constructor.
+ *
+ * @param object
+ * the to synchronized.
+ * @param display
+ * the display.
+ */
+ public SynchronizedSelectEPackageWizardPage(
+ final ISelectEPackageWizardPage object, final Display display) {
+ super(object, display);
+ }
+
+ public EPackage getSelectedEPackage() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<EPackage>() {
+ @Override
+ public EPackage safeRun() {
+ return SynchronizedSelectEPackageWizardPage.this
+ .getSynchronizedObject().getSelectedEPackage();
+ }
+ });
+ }
+
+ public void selectPackage(final String selection) {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedSelectEPackageWizardPage.this
+ .getSynchronizedObject().selectPackage(selection);
+ }
+ });
+
+ // We keep the thread waiting until the selection is not done.
+ // If we release the thread, the selection may not be done and made some
+ // errors
+ while (this.getSelectedEPackage() == null) {
+ DebugUtils.debug(DEBUG, "Waiting."); //$NON-NLS-1$
+ }
+ }
+}
diff --git a/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedWizardPage.java b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedWizardPage.java
new file mode 100644
index 00000000000..33f4a15904e
--- /dev/null
+++ b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/SynchronizedWizardPage.java
@@ -0,0 +1,260 @@
+/**
+ * Copyright (c) 2012 Mia-Software.
+ *
+ * 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:
+ * Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.util.emf.ui.internal.exported.util.wizard.page;
+
+import org.eclipse.emf.facet.util.ui.internal.exported.displaysync.AbstractExceptionFreeRunnable;
+import org.eclipse.emf.facet.util.ui.internal.exported.displaysync.AbstractVoidExceptionFreeRunnable;
+import org.eclipse.emf.facet.util.ui.internal.exported.displaysync.SynchronizedObject;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Synchronized class for safe run.
+ *
+ * @author amenager_stage
+ * @since 0.3
+ *
+ */
+public class SynchronizedWizardPage<WP extends IWizardPage> extends
+ SynchronizedObject<WP>
+ implements IWizardPage {
+
+ /**
+ * Constructor.
+ *
+ * @param object
+ * the to synchronized.
+ * @param display
+ * the display.
+ */
+ public SynchronizedWizardPage(final WP object,
+ final Display display) {
+ super(object, display);
+ }
+
+ public void createControl(final Composite parent) {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedWizardPage.this.getSynchronizedObject()
+ .createControl(parent);
+ }
+ });
+ }
+
+ public void dispose() {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedWizardPage.this.getSynchronizedObject().dispose();
+ }
+ });
+ }
+
+ public Control getControl() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<Control>() {
+ @Override
+ public Control safeRun() {
+ return SynchronizedWizardPage.this.getSynchronizedObject()
+ .getControl();
+ }
+ });
+ }
+
+ public String getDescription() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<String>() {
+ @Override
+ public String safeRun() {
+ return SynchronizedWizardPage.this.getSynchronizedObject()
+ .getDescription();
+ }
+ });
+ }
+
+ public String getErrorMessage() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<String>() {
+ @Override
+ public String safeRun() {
+ return SynchronizedWizardPage.this.getSynchronizedObject()
+ .getErrorMessage();
+ }
+ });
+ }
+
+ public Image getImage() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<Image>() {
+ @Override
+ public Image safeRun() {
+ return SynchronizedWizardPage.this.getSynchronizedObject()
+ .getImage();
+ }
+ });
+ }
+
+ public String getMessage() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<String>() {
+ @Override
+ public String safeRun() {
+ return SynchronizedWizardPage.this.getSynchronizedObject()
+ .getMessage();
+ }
+ });
+ }
+
+ public String getTitle() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<String>() {
+ @Override
+ public String safeRun() {
+ return SynchronizedWizardPage.this.getSynchronizedObject()
+ .getTitle();
+ }
+ });
+ }
+
+ public void performHelp() {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedWizardPage.this.getSynchronizedObject()
+ .performHelp();
+ }
+ });
+ }
+
+ public void setDescription(final String description) {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedWizardPage.this.getSynchronizedObject()
+ .setDescription(description);
+ }
+ });
+ }
+
+ public void setImageDescriptor(final ImageDescriptor image) {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedWizardPage.this.getSynchronizedObject()
+ .setImageDescriptor(image);
+ }
+ });
+ }
+
+ public void setTitle(final String title) {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedWizardPage.this.getSynchronizedObject().setTitle(
+ title);
+ }
+ });
+ }
+
+ public void setVisible(final boolean visible) {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedWizardPage.this.getSynchronizedObject().setVisible(
+ visible);
+ }
+ });
+ }
+
+ public boolean canFlipToNextPage() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<Boolean>() {
+ @Override
+ public Boolean safeRun() {
+ return Boolean.valueOf(SynchronizedWizardPage.this
+ .getSynchronizedObject()
+ .canFlipToNextPage());
+ }
+ }).booleanValue();
+ }
+
+ public IWizardPage getNextPage() {
+ return this
+ .safeSyncExec(new AbstractExceptionFreeRunnable<IWizardPage>() {
+ @Override
+ public IWizardPage safeRun() {
+ return SynchronizedWizardPage.this
+ .getSynchronizedObject().getNextPage();
+ }
+ });
+ }
+
+ public IWizardPage getPreviousPage() {
+ return this
+ .safeSyncExec(new AbstractExceptionFreeRunnable<IWizardPage>() {
+ @Override
+ public IWizardPage safeRun() {
+ return SynchronizedWizardPage.this
+ .getSynchronizedObject().getPreviousPage();
+ }
+ });
+ }
+
+ public IWizard getWizard() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<IWizard>() {
+ @Override
+ public IWizard safeRun() {
+ return SynchronizedWizardPage.this.getSynchronizedObject()
+ .getWizard();
+ }
+ });
+ }
+
+ public boolean isPageComplete() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<Boolean>() {
+ @Override
+ public Boolean safeRun() {
+ return Boolean.valueOf(SynchronizedWizardPage.this
+ .getSynchronizedObject().isPageComplete());
+ }
+ }).booleanValue();
+ }
+
+ public void setPreviousPage(final IWizardPage page) {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedWizardPage.this.getSynchronizedObject()
+ .setPreviousPage(page);
+ }
+ });
+ }
+
+ public void setWizard(final IWizard newWizard) {
+ this.voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedWizardPage.this.getSynchronizedObject().setWizard(
+ newWizard);
+ }
+ });
+ }
+
+ public String getName() {
+ return this.safeSyncExec(new AbstractExceptionFreeRunnable<String>() {
+ @Override
+ public String safeRun() {
+ return SynchronizedWizardPage.this.getSynchronizedObject()
+ .getName();
+ }
+ });
+ }
+}
diff --git a/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/exception/SelectedEClassifierRuntimeException.java b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/exception/SelectedEClassifierRuntimeException.java
new file mode 100644
index 00000000000..383775db9a0
--- /dev/null
+++ b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/exception/SelectedEClassifierRuntimeException.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2012 Mia-Software.
+ *
+ * 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:
+ * Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.util.emf.ui.internal.exported.util.wizard.page.exception;
+
+/**
+ * @since 0.3
+ */
+public class SelectedEClassifierRuntimeException extends RuntimeException {
+
+
+ private static final long serialVersionUID = -1021467669726982508L;
+
+ public SelectedEClassifierRuntimeException() {
+ super(
+ "List not totally loaded. Check if the list's job is done before doing the selection."); //$NON-NLS-1$
+ }
+
+ public SelectedEClassifierRuntimeException(final String message) {
+ super(message);
+ }
+
+ public SelectedEClassifierRuntimeException(final String message,
+ final Throwable cause) {
+ super(message, cause);
+ }
+
+ public SelectedEClassifierRuntimeException(final Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/exception/SelectedEPackageRuntimeException.java b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/exception/SelectedEPackageRuntimeException.java
new file mode 100644
index 00000000000..0c8f96d705e
--- /dev/null
+++ b/plugins/facet/org.eclipse.papyrus.emf.facet.util.emf.ui/src/org/eclipse/emf/facet/util/emf/ui/internal/exported/util/wizard/page/exception/SelectedEPackageRuntimeException.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2012 Mia-Software.
+ *
+ * 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:
+ * Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.util.emf.ui.internal.exported.util.wizard.page.exception;
+
+/**
+ * Exception when the list (where the selection has to be done) is not totally
+ * loaded.
+ *
+ * @since 0.3
+ */
+public class SelectedEPackageRuntimeException extends RuntimeException {
+
+ private static final long serialVersionUID = -5317379187255054199L;
+
+ public SelectedEPackageRuntimeException() {
+ super(
+ "List not totally loaded. Check if the list's job is done before doing the selection."); //$NON-NLS-1$
+ }
+
+ public SelectedEPackageRuntimeException(final String message) {
+ super(message);
+ }
+
+ public SelectedEPackageRuntimeException(final String message,
+ final Throwable cause) {
+ super(message, cause);
+ }
+
+ public SelectedEPackageRuntimeException(final Throwable cause) {
+ super(cause);
+ }
+}

Back to the top