Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org')
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/dialog/ICustomizationDialogFactory.java62
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Activator.java51
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Messages.java72
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Startup.java22
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/dialog/CustomizationDialogFactory.java83
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/messages.properties57
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/sync/SynchronizedGetOrCreateFilteredElementCommmandWidget.java142
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractCustomizationMainDialog.java59
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractGetCustomizationDialog.java33
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractGetOrCreateCustomizationDialog.java59
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/AddCaseQueryDialog.java78
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/AddCustomizationPropertyDialog.java73
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/CreateEClassCustomizationDialog.java95
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/CreateFacetCustomizationDialog.java71
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/QueryContext.java73
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/getorcreate/GetOrCreateCustomizationDialog.java80
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetCustomizedFacetDialog.java71
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetExtendedFacetDialog.java72
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetFacetOperationDialog.java79
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedAddCaseQueryDialog.java36
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedAddCustomizationPropertyDialog.java36
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedCreateEClassCustomizationDialog.java36
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedCreateFacetCustomizationDialog.java36
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCaseQueryHandler.java42
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCustomizationPropertyInEClassHandler.java42
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCustomizationPropertyInFacetHandler.java42
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/CreateEClassCustomizationHandler.java41
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/CreateFacetCustomizationHandler.java40
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/Utils.java78
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/AddCaseQueryWidget.java94
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/AddCustomizationPropertyWidget.java119
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/CreateEClassCustomizationWidget.java180
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/CreateFacetCustomizationWidget.java123
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/GetOrCreateCustomizationWidget.java101
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/AbstractGetFacetWidget.java61
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetCustomizedFacetWidget.java62
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetExtendedFacetWidget.java62
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredCustomizedFacetWidget.java121
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredExtendedFacetWidget.java120
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredOperationFacetWidget.java97
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetOperationFacetWidget.java82
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetOrCreateCustomizationWidget.java85
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/metaclass/GetExtendedMetaclassWidget.java85
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetCaseQueryNameWidget.java68
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetCaseQueryTypeWidget.java59
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetEClassCustomizationNameWidget.java59
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/CreateCustimizationWizardImpl.java268
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/page/CreateCustomizationWizardPage.java117
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/page/CustomPropertyWizardPage.java112
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/ImageCellEditor.java51
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/composite/ImageComposite.java132
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/composite/ImageCompositeFactory.java28
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/wizard/page/ICreateCustomizationWizardPage.java31
-rw-r--r--plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/wizard/page/ICustomizationPropertyWizardPage.java50
54 files changed, 4128 insertions, 0 deletions
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/dialog/ICustomizationDialogFactory.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/dialog/ICustomizationDialogFactory.java
new file mode 100644
index 00000000000..e5238c9efea
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/dialog/ICustomizationDialogFactory.java
@@ -0,0 +1,62 @@
+/**
+ * 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
+ * Gregoire Dupe (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.dialog;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.dialog.CustomizationDialogFactory;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Interface for the dialogs creation factory.
+ *
+ * @see CustomizationDialogFactorImpl
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ICustomizationDialogFactory {
+
+ ICustomizationDialogFactory DEFAULT = new CustomizationDialogFactory();
+
+ /**
+ * Create an new Dialog for the creation of a EClass Customization.
+ *
+ * @param editingDomain
+ */
+ IDialog openCreateEClassCustomizationDialog(Display display,
+ EditingDomain editingDomain);
+
+ /**
+ * Create an new Dialog for the creation of a Facet Customization.
+ *
+ * @return the dialog.
+ */
+ IDialog openCreateFacetCustomizationDialog(Display display,
+ EditingDomain editingDomain);
+
+ /**
+ * Create an new Dialog for the creation of a Customization Operation into a
+ * Customization.
+ *
+ * @return the dialog.
+ */
+ IDialog openAddCustomizationPropertyDialog(Display display,
+ EditingDomain editingDomain);
+
+ /**
+ * Create an new Dialog for the creation of a Query into a Case.
+ *
+ * @return the dialog.
+ */
+ IDialog openAddCaseQueryDialog(Display display, EditingDomain editingDomain);
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Activator.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Activator.java
new file mode 100644
index 00000000000..2bc1e3a305d
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Activator.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ * 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) - Bug 375388 - Cell editor for IImage
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ *******************************************************************************/
+package org.eclipse.emf.facet.custom.sdk.ui.internal;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+@SuppressWarnings("PMD.UseSingleton")
+// @SuppressWarnings("PMD.UseSingleton") We cannot conforms to this rule because
+// this class is an Eclipse plug-in activator which will be instantiated by the
+// Eclipse framework.
+public class Activator extends Plugin {
+
+ private static Activator plugin;
+
+ @Override
+ @SuppressWarnings("PMD.SignatureDeclareThrowsException")
+ // @SuppressWarnings("PMD.SignatureDeclareThrowsException") We have to use
+ // this signature because this is an override of an Eclipse framework's
+ // method.
+ public void start(final BundleContext bundleContext) throws Exception {
+ super.start(bundleContext);
+ Activator.plugin = this;
+ }
+
+ @Override
+ @SuppressWarnings("PMD.SignatureDeclareThrowsException")
+ // @SuppressWarnings("PMD.SignatureDeclareThrowsException") We have to use
+ // this signature because this is an override of an Eclipse framework's
+ // method.
+ public void stop(final BundleContext bundleContext) throws Exception {
+ // NOPMD: PMD say "Assigning an Object to null is a code smell."
+ // No choice to right it in another way : this is an Eclipse pattern.
+ Activator.plugin = null; // NOPMD by gdupe on 30/03/12 10:19
+ super.stop(bundleContext);
+ }
+
+ public static Plugin getDefault() {
+ return Activator.plugin;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Messages.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Messages.java
new file mode 100644
index 00000000000..c0c69168c5b
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Messages.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ * 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) - Bug 375388 - Cell editor for IImage
+ * Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors
+ *******************************************************************************/
+package org.eclipse.emf.facet.custom.sdk.ui.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.emf.facet.custom.sdk.ui.internal.messages"; //$NON-NLS-1$
+ public static String ImageComposite_fullImage;
+ public static String Create_Customization_Model;
+ public static String CreateCustomizationWizardImpl_customization;
+ public static String CreateCustomizationWizardImpl_customization_properties;
+ public static String CreateCustomizationWizardImpl_Create_new_customization;
+ public static String CreateCustomizationWizardImpl_File_extension_restriction;
+ public static String CreateCustomizationWizardPage_Not_a_Plugin_project;
+
+ public static String Enter_a_nsUri;
+ public static String Enter_a_prefix;
+ public static String Please_enter_nsUri;
+ public static String Please_enter_prefix;
+ public static String Please_select_EPackage;
+
+ public static String CreateEClassCustomizationDialog_Message;
+ public static String CreateEClassCustomizationDialog_Title;
+
+ public static String CreateFacetCustomizationDialog_Message;
+ public static String CreateFacetCustomizationDialog_Title;
+
+ public static String ExtendedMetaClass;
+ public static String Metaclass_mustSelectMetaclass;
+
+ public static String Customization;
+ public static String Customization_mustSelectCustomization;
+ public static String Customization_mustGiveCustomizationName;
+
+ public static String GetOrCreate_customization_message;
+ public static String Select_Customization;
+
+ public static String Facet_mustSelectFacet;
+ public static String ExtendedFacet;
+ public static String CustomizedFacet;
+ public static String CustomizedFacet_mustSelectCustomizedFacet;
+
+ public static String OperationFacet;
+ public static String OperationFacet_mustSelectOperationFacet;
+
+ public static String Add_Customization_title;
+ public static String Add_Customization_message;
+
+ public static String Query_case_name;
+ public static String Query_case_type;
+
+ public static String Get_customization_property_message;
+ public static String Select_Customization_property;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Startup.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Startup.java
new file mode 100644
index 00000000000..ba68f279d71
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/Startup.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * 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:
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ *******************************************************************************/
+package org.eclipse.emf.facet.custom.sdk.ui.internal;
+import org.eclipse.ui.IStartup;
+
+
+public class Startup implements IStartup {
+
+ public void earlyStartup() {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/dialog/CustomizationDialogFactory.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/dialog/CustomizationDialogFactory.java
new file mode 100644
index 00000000000..ec045f2cd45
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/dialog/CustomizationDialogFactory.java
@@ -0,0 +1,83 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.dialog;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.EClassCustomization;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementCase;
+import org.eclipse.emf.facet.custom.sdk.ui.dialog.ICustomizationDialogFactory;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.command.AddCaseQueryDialog;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.command.AddCustomizationPropertyDialog;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.command.CreateEClassCustomizationDialog;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.command.CreateFacetCustomizationDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.handler.HandlerUtils;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.dialog.SynchronizedAbstractDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Concrete implementation of {@link ICustomizationDialogFactory}.
+ *
+ * @see ICustomizationDialogFactory
+ */
+public class CustomizationDialogFactory implements ICustomizationDialogFactory {
+
+ protected static void openDialog(final IDialog<?> dialog,
+ final Display display) {
+ display.asyncExec(new Runnable() {
+ public void run() {
+ dialog.open();
+ }
+ });
+ }
+
+ public IDialog<ICommandWidget> openCreateEClassCustomizationDialog(
+ final Display display,
+ final EditingDomain editingDomain) {
+ final IDialog<ICommandWidget> dialog = new CreateEClassCustomizationDialog(
+ (Customization) HandlerUtils.getSelection(), editingDomain);
+ openDialog(dialog, display);
+ return new SynchronizedAbstractDialog<ICommandWidget>(dialog, display);
+ }
+
+ public IDialog<ICommandWidget> openCreateFacetCustomizationDialog(
+ final Display display,
+ final EditingDomain editingDomain) {
+ final IDialog<ICommandWidget> dialog = new CreateFacetCustomizationDialog(
+ (Customization) HandlerUtils.getSelection(), editingDomain);
+ openDialog(dialog, display);
+ return new SynchronizedAbstractDialog<ICommandWidget>(dialog, display);
+ }
+
+ public IDialog<ICommandWidget> openAddCustomizationPropertyDialog(
+ final Display display,
+ final EditingDomain editingDomain) {
+ final IDialog<ICommandWidget> dialog = new AddCustomizationPropertyDialog(
+ (EClassCustomization) HandlerUtils.getSelection(),
+ editingDomain);
+ openDialog(dialog, display);
+ return new SynchronizedAbstractDialog<ICommandWidget>(dialog, display);
+ }
+
+ public IDialog<ICommandWidget> openAddCaseQueryDialog(
+ final Display display,
+ final EditingDomain editingDomain) {
+ final IDialog<ICommandWidget> dialog = new AddCaseQueryDialog(
+ (ETypedElementCase) HandlerUtils.getSelection(), editingDomain);
+ openDialog(dialog, display);
+ return new SynchronizedAbstractDialog<ICommandWidget>(dialog, display);
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/messages.properties b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/messages.properties
new file mode 100644
index 00000000000..7dc535d839c
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/messages.properties
@@ -0,0 +1,57 @@
+###############################################################################
+# Copyright (c) 2012 CEA LIST.
+# 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) - Bug 375388 - Cell editor for IImage
+# Alban Ménager (Soft-Maint) - Bug 387470 - [EFacet][Custom] Editors
+# Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+###############################################################################
+ImageComposite_fullImage=Full Image
+Create_Customization_Model=Create a customization model
+CreateCustomizationWizardImpl_customization=New Customization
+CreateCustomizationWizardImpl_Create_new_customization=Create a new Customization
+CreateCustomizationWizardImpl_customization_properties=Set the Customization properties
+CreateCustomizationWizardImpl_File_extension_restriction=File extension has to be ".custom"
+CreateCustomizationWizardPage_Not_a_Plugin_project=Warning : you are creating this Customization in a non-Plugin project. It will not be available until moved to a Plugin project.
+
+Enter_a_nsUri=Enter a nsUri :
+Please_enter_nsUri=Please enter a nsUri
+Enter_a_prefix=Enter a prefix :
+Please_enter_prefix=Please enter a prefix
+Please_select_EPackage=Please, select an EPackage
+
+CreateEClassCustomizationDialog_Message=Create a new EClass Customization
+CreateEClassCustomizationDialog_Title=EClass Customization
+
+CreateFacetCustomizationDialog_Message=Create a new Facet Customization
+CreateFacetCustomizationDialog_Title=Facet Customization
+
+Metaclass_mustSelectMetaclass=You must select a MetaClass
+ExtendedMetaClass=&Extended Meta-Class:
+
+Facet_mustSelectFacet=You must select an Extended Facet
+ExtendedFacet=Extended Facet
+
+Customization=Customization
+Customization_mustSelectCustomization=You must select a Customization
+Customization_mustGiveCustomizationName=You must give a Customization Name
+
+GetOrCreate_customization_message=Select or a Customization
+Select_Customization=Select a Customization
+CustomizedFacet=Customized Facet
+CustomizedFacet_mustSelectCustomizedFacet=You must select a Customized Facet
+
+OperationFacet=Facet Operation
+OperationFacet_mustSelectOperationFacet=You must select a Facet Operation
+
+Add_Customization_title=Add a Customization Property
+Add_Customization_message=Add a new Customization Property
+
+Get_customization_property_message=Select a Customization Property
+Select_Customization_property=Customization Property
+
+Query_case_name=Customized eTypeElement
+Query_case_type=Case type \ No newline at end of file
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/sync/SynchronizedGetOrCreateFilteredElementCommmandWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/sync/SynchronizedGetOrCreateFilteredElementCommmandWidget.java
new file mode 100644
index 00000000000..0c0b4d15550
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/sync/SynchronizedGetOrCreateFilteredElementCommmandWidget.java
@@ -0,0 +1,142 @@
+/**
+ * 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:
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.sync;
+
+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.swt.widgets.Display;
+
+public class SynchronizedGetOrCreateFilteredElementCommmandWidget<T extends java.lang.Object, W extends java.lang.Object>
+ extends
+ SynchronizedObject<org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.IGetOrCreateFilteredElementCommmandWidget<T, W>>
+ implements
+ org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.IGetOrCreateFilteredElementCommmandWidget<T, W> {
+
+ public SynchronizedGetOrCreateFilteredElementCommmandWidget(
+ final org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.IGetOrCreateFilteredElementCommmandWidget<T, W> object,
+ final Display display) {
+ super(object, display);
+ }
+
+ public final void addListener(
+ final org.eclipse.emf.facet.util.ui.internal.exported.util.widget.AbstractWidget parm0) {
+ voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().addListener(parm0);
+ }
+ });
+ }
+
+ public final void createWidgetContent() {
+ voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().createWidgetContent();
+ }
+ });
+ }
+
+ public final java.lang.String getError() {
+ return safeSyncExec(new AbstractExceptionFreeRunnable<java.lang.String>() {
+ @Override
+ public java.lang.String safeRun() {
+ return SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().getError();
+ }
+ });
+ }
+
+ public final void notifyChanged() {
+ voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().notifyChanged();
+ }
+ });
+ }
+
+ public final <A> A adapt(final java.lang.Class<A> parm0) {
+ return safeSyncExec(new AbstractExceptionFreeRunnable<A>() {
+ @Override
+ public A safeRun() {
+ return SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().adapt(parm0);
+ }
+ });
+ }
+
+ public final java.lang.Object getCommand() {
+ return safeSyncExec(new AbstractExceptionFreeRunnable<java.lang.Object>() {
+ @Override
+ public java.lang.Object safeRun() {
+ return SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().getCommand();
+ }
+ });
+ }
+
+ public final void onDialogValidation() {
+ voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().onDialogValidation();
+ }
+ });
+ }
+
+ public final T getElementSelected() {
+ return safeSyncExec(new AbstractExceptionFreeRunnable<T>() {
+ @Override
+ public T safeRun() {
+ return SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().getElementSelected();
+ }
+ });
+ }
+
+ public final org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog<W> pressNewButton() {
+ return safeSyncExec(new AbstractExceptionFreeRunnable<org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog<W>>() {
+ @Override
+ public org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog<W> safeRun() {
+ return SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().pressNewButton();
+ }
+ });
+ }
+
+ public final void selectElement(final T parm0) {
+ voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().selectElement(parm0);
+ }
+ });
+ }
+
+ public final void selectElementByName(final java.lang.String parm0) {
+ voidExceptionFreeRunnable(new AbstractVoidExceptionFreeRunnable() {
+ @Override
+ public void voidSafeRun() {
+ SynchronizedGetOrCreateFilteredElementCommmandWidget.this
+ .getSynchronizedObject().selectElementByName(parm0);
+ }
+ });
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractCustomizationMainDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractCustomizationMainDialog.java
new file mode 100644
index 00000000000..553c7456f96
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractCustomizationMainDialog.java
@@ -0,0 +1,59 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.sdk.core.ICustomizationCommandFactory;
+import org.eclipse.emf.facet.custom.sdk.core.ICustomizationCommandFactoryFactory;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.dialog.AbstractMainDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+
+public abstract class AbstractCustomizationMainDialog<W extends ICommandWidget>
+ extends AbstractMainDialog<W> {
+
+ private final EditingDomain ediditingDomain;
+ private final ICustomizationCommandFactory customCmdFactory;
+
+ /**
+ * Constructor.
+ *
+ * @param selection
+ * the selection in the model (ecore file).
+ */
+ public AbstractCustomizationMainDialog(final Object selection,
+ final EditingDomain editingDomain) {
+ super(selection);
+ this.ediditingDomain = editingDomain;
+ this.customCmdFactory = ICustomizationCommandFactoryFactory.DEFAULT
+ .createICustomizationCommandFactory(editingDomain);
+ }
+
+ @Override
+ protected void execute() {
+ final Object result = getWidget().getCommand();
+ if (result instanceof Command) {
+ final Command command = (Command) result;
+ this.ediditingDomain.getCommandStack().execute(command);
+ }
+ }
+
+ protected final ICustomizationCommandFactory getCustomCmdFactory() {
+ return this.customCmdFactory;
+ }
+
+ protected final EditingDomain getEditingDomain() {
+ return this.ediditingDomain;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractGetCustomizationDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractGetCustomizationDialog.java
new file mode 100644
index 00000000000..1e21922c904
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractGetCustomizationDialog.java
@@ -0,0 +1,33 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog;
+
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.dialog.AbstractDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+
+public abstract class AbstractGetCustomizationDialog<T extends Object, W extends ICommandWidget>
+ extends AbstractDialog<IWithResultDialogCallback<T>, W> {
+
+ /**
+ * Constructor.
+ *
+ * @param properties
+ * properties that parent widget had.
+ */
+ public AbstractGetCustomizationDialog(
+ final IWithResultDialogCallback<T> callback) {
+ super(callback);
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractGetOrCreateCustomizationDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractGetOrCreateCustomizationDialog.java
new file mode 100644
index 00000000000..416620b3360
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/AbstractGetOrCreateCustomizationDialog.java
@@ -0,0 +1,59 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.sdk.core.ICustomizationCommandFactory;
+import org.eclipse.emf.facet.custom.sdk.core.ICustomizationCommandFactoryFactory;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+
+public abstract class AbstractGetOrCreateCustomizationDialog<T, W extends ICommandWidget>
+ extends AbstractGetCustomizationDialog<T, W> {
+
+ private final EditingDomain editingDomain;
+ private final ICustomizationCommandFactory customCmdFactory;
+
+ /**
+ * Constructor.
+ *
+ * @param properties
+ * properties that parent widget had.
+ */
+ public AbstractGetOrCreateCustomizationDialog(
+ final IWithResultDialogCallback<T> callback,
+ final EditingDomain editingDomain) {
+ super(callback);
+ this.editingDomain = editingDomain;
+ this.customCmdFactory = ICustomizationCommandFactoryFactory.DEFAULT
+ .createICustomizationCommandFactory(editingDomain);
+ }
+
+ protected final EditingDomain getEditingDomain() {
+ return this.editingDomain;
+ }
+
+ protected final ICustomizationCommandFactory getCustomCmdFactory() {
+ return this.customCmdFactory;
+ }
+
+ @Override
+ protected void execute() {
+ final Object result = getWidget().getCommand();
+ if (result instanceof Command) {
+ final Command command = (Command) result;
+ this.editingDomain.getCommandStack().execute(command);
+ }
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/AddCaseQueryDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/AddCaseQueryDialog.java
new file mode 100644
index 00000000000..ff94ff0d60b
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/AddCaseQueryDialog.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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.command;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementCase;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.AbstractCustomizationMainDialog;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.command.AddCaseQueryWidget;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.extensible.Query;
+import org.eclipse.emf.facet.efacet.sdk.ui.internal.exported.IQueryContext;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+
+/**
+ * Concrete dialog for the creation of a query in a case.
+ */
+public class AddCaseQueryDialog extends
+ AbstractCustomizationMainDialog<ICommandWidget> {
+
+ private AddCaseQueryWidget addCaseQueryW;
+ private final PropertyElement2<ETypedElementCase> queryCaseProp;
+ private final PropertyElement2<Query> queryValueProp;
+ private final IQueryContext queryContext;
+
+ /**
+ * Constructor.
+ *
+ * @param selection
+ * the selection in the model (custom file).
+ */
+ public AddCaseQueryDialog(final ETypedElementCase selection,
+ final EditingDomain editingDomain) {
+ super(selection, editingDomain);
+ this.queryContext = new QueryContext(selection);
+ this.queryCaseProp = new PropertyElement2<ETypedElementCase>(true);
+ this.queryValueProp = new PropertyElement2<Query>(true);
+ if (selection != null) {
+ this.queryCaseProp.setValue2(selection);
+ }
+ }
+
+ @Override
+ protected ICommandWidget createWidget() {
+ this.addCaseQueryW = new AddCaseQueryWidget(this.getDialogComposite(),
+ getCustomCmdFactory(), this.queryCaseProp, this.queryValueProp,
+ this.queryContext);
+ return this.addCaseQueryW;
+ }
+
+ @Override
+ protected String getDialogMessage() {
+ return Messages.Add_Customization_message;
+ }
+
+ @Override
+ protected String getDialogTitle() {
+ return Messages.Add_Customization_title;
+ }
+
+ /**
+ * @return the addCaseQueryWidget
+ */
+ public AddCaseQueryWidget getAddCaseQueryWidget() {
+ return this.addCaseQueryW;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/AddCustomizationPropertyDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/AddCustomizationPropertyDialog.java
new file mode 100644
index 00000000000..f4ac0ab5144
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/AddCustomizationPropertyDialog.java
@@ -0,0 +1,73 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.command;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.EClassCustomization;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.AbstractCustomizationMainDialog;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.command.AddCustomizationPropertyWidget;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+
+/**
+ * Concrete dialog for the creation of a customization property into a
+ * customization.
+ */
+public class AddCustomizationPropertyDialog extends
+ AbstractCustomizationMainDialog<ICommandWidget> {
+
+ private AddCustomizationPropertyWidget addCustomW;
+ private final EClassCustomization eClassCustom;
+ private final PropertyElement2<FacetOperation> facetOpProperty;
+
+ /**
+ * Constructor.
+ *
+ * @param selection
+ * the selection in the model (custom file).
+ */
+ public AddCustomizationPropertyDialog(final EClassCustomization selection,
+ final EditingDomain editingDomain) {
+ super(selection, editingDomain);
+ this.eClassCustom = selection;
+ this.facetOpProperty = new PropertyElement2<FacetOperation>(true);
+ }
+
+ @Override
+ protected ICommandWidget createWidget() {
+ this.addCustomW = new AddCustomizationPropertyWidget(
+ this.getDialogComposite(), this.facetOpProperty,
+ this.eClassCustom, this.getEditingDomain());
+ return this.addCustomW;
+ }
+
+ @Override
+ protected String getDialogMessage() {
+ return Messages.Add_Customization_message;
+ }
+
+ @Override
+ protected String getDialogTitle() {
+ return Messages.Add_Customization_title;
+ }
+
+ /**
+ * @return the addCustomizationWidget
+ */
+ public AddCustomizationPropertyWidget getAddCustomizationWidget() {
+ return this.addCustomW;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/CreateEClassCustomizationDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/CreateEClassCustomizationDialog.java
new file mode 100644
index 00000000000..c444cbef1e6
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/CreateEClassCustomizationDialog.java
@@ -0,0 +1,95 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.command;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.AbstractCustomizationMainDialog;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.command.CreateEClassCustomizationWidget;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+
+/**
+ * Concrete dialog for the creation of an EClass Customization.
+ */
+public class CreateEClassCustomizationDialog extends
+ AbstractCustomizationMainDialog<ICommandWidget> {
+
+ private CreateEClassCustomizationWidget eClassCustomW;
+ private final PropertyElement2<Customization> customProperty;
+ private final PropertyElement2<EClass> mClassProperty;
+ private final PropertyElement2<Facet> extFacetProperty;
+
+ /**
+ * Constructor.
+ *
+ * @param selection
+ * the selection in the model (custom file).
+ */
+ public CreateEClassCustomizationDialog(final Customization selection,
+ final EditingDomain editingDomain) {
+ super(selection, editingDomain);
+ this.customProperty = new PropertyElement2<Customization>(true);
+ this.mClassProperty = new PropertyElement2<EClass>(true);
+ this.extFacetProperty = new PropertyElement2<Facet>(true);
+ if (selection != null) {
+ this.customProperty.setValue2(selection);
+ }
+ }
+
+ @Override
+ protected ICommandWidget createWidget() {
+ this.eClassCustomW = new CreateEClassCustomizationWidget(
+ this.getDialogComposite(), this.getCustomCmdFactory(),
+ getEditingDomain(), this.customProperty, this.mClassProperty,
+ this.extFacetProperty);
+ return this.eClassCustomW;
+ }
+
+ @Override
+ protected String getDialogMessage() {
+ return Messages.CreateEClassCustomizationDialog_Message;
+ }
+
+ @Override
+ protected String getDialogTitle() {
+ return Messages.CreateEClassCustomizationDialog_Title;
+ }
+
+ /**
+ * @return the createEClassCustomizationWidget
+ */
+ public CreateEClassCustomizationWidget getCreateEClassCustomizationWidget() {
+ return this.eClassCustomW;
+ }
+
+ protected final CreateEClassCustomizationWidget geteClassCustomW() {
+ return this.eClassCustomW;
+ }
+
+ protected final PropertyElement2<Customization> getCustomProperty() {
+ return this.customProperty;
+ }
+
+ protected final PropertyElement2<EClass> getmClassProperty() {
+ return this.mClassProperty;
+ }
+
+ protected final PropertyElement2<Facet> getExtFacetProperty() {
+ return this.extFacetProperty;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/CreateFacetCustomizationDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/CreateFacetCustomizationDialog.java
new file mode 100644
index 00000000000..84fa5cd1f14
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/CreateFacetCustomizationDialog.java
@@ -0,0 +1,71 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.command;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.command.CreateFacetCustomizationWidget;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+
+/**
+ * Concrete dialog for the creation of a Facet Customization.
+ */
+public class CreateFacetCustomizationDialog extends
+ CreateEClassCustomizationDialog {
+
+ private CreateFacetCustomizationWidget facetCustomW;
+ private PropertyElement2<Facet> facetCustomProp;
+
+ /**
+ * Constructor.
+ *
+ * @param selection
+ * the selection in the model (custom file).
+ */
+ public CreateFacetCustomizationDialog(final Customization selection,
+ final EditingDomain editingDomain) {
+ super(selection, editingDomain);
+ this.facetCustomProp = new PropertyElement2<Facet>(true);
+ }
+
+ @Override
+ protected ICommandWidget createWidget() {
+ this.facetCustomW = new CreateFacetCustomizationWidget(
+ this.getDialogComposite(), getCustomCmdFactory(),
+ getEditingDomain(), getmClassProperty(), getCustomProperty(),
+ getExtFacetProperty(), this.facetCustomProp);
+ return this.facetCustomW;
+ }
+
+ @Override
+ protected String getDialogMessage() {
+ return Messages.CreateFacetCustomizationDialog_Message;
+ }
+
+ @Override
+ protected String getDialogTitle() {
+ return Messages.CreateFacetCustomizationDialog_Title;
+ }
+
+ /**
+ * @return the createFacetCustomizationWidget
+ */
+ public CreateFacetCustomizationWidget getCreateFacetCustomizationWidget() {
+ return this.facetCustomW;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/QueryContext.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/QueryContext.java
new file mode 100644
index 00000000000..5fe973b3ef2
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/command/QueryContext.java
@@ -0,0 +1,73 @@
+/**
+ * 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:
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.command;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementCase;
+import org.eclipse.emf.facet.efacet.core.FacetUtils;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.DerivedTypedElement;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.extensible.Query;
+import org.eclipse.emf.facet.efacet.sdk.ui.internal.exported.IQueryContext;
+import org.eclipse.emf.facet.util.emf.core.ModelUtils;
+
+public class QueryContext implements IQueryContext {
+
+ private final DerivedTypedElement dte;
+ private final ETypedElementCase selection;
+
+ public QueryContext(final ETypedElementCase selection) {
+ this.selection = selection;
+ this.dte = FacetUtils
+ .getContainingDerivedTypedElement(selection);
+ }
+
+ public int getUpperBound() {
+ return this.dte.getUpperBound();
+ }
+
+ public EClassifier getReturnType() {
+ return this.dte.getEType();
+ }
+
+ public Resource getResource() {
+ return this.selection.eResource();
+ }
+
+ public Query getQuery() {
+ return this.selection.getValue();
+ }
+
+ public IProject getProject() {
+ return ModelUtils.getProject(this.selection);
+ }
+
+ public EObject getIntermediateEObject() {
+ return this.selection;
+ }
+
+ public Facet getFacet() {
+ return (Facet) this.dte.eContainer();
+ }
+
+ public EClassifier getExtendedEClass() {
+ return FacetUtils.getExtendedMetaclass((Facet) this.dte.eContainer());
+ }
+
+ public String getDerivedTypedElementName() {
+ return this.dte.getName();
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/getorcreate/GetOrCreateCustomizationDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/getorcreate/GetOrCreateCustomizationDialog.java
new file mode 100644
index 00000000000..843703a54ae
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/getorcreate/GetOrCreateCustomizationDialog.java
@@ -0,0 +1,80 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.getorcreate;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.sync.SynchronizedGetOrCreateFilteredElementCommmandWidget;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.AbstractGetOrCreateCustomizationDialog;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.command.GetOrCreateCustomizationWidget;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.IGetOrCreateFilteredElementCommmandWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+
+/**
+ * Provide a dialog where the user can select a {@link Customization} in the
+ * list. This class use the specific widget
+ * {@link GetOrCreateCustomizationWidget} and return the selected element with
+ * the method {@link #getCustomizationSelected()}.</p>
+ *
+ * When the "ok" button is pressed, the parent property is set with the selected
+ * element.
+ *
+ * @see GetOrCreateCustomizationWidget
+ */
+public class GetOrCreateCustomizationDialog
+ extends
+ AbstractGetOrCreateCustomizationDialog<Customization, IGetOrCreateFilteredElementCommmandWidget<Customization, ICommandWidget>> {
+
+ private final PropertyElement2<Customization> customProperty;
+
+ /**
+ * Constructor.
+ *
+ * @param properties
+ * properties that parent widget had.
+ */
+ public GetOrCreateCustomizationDialog(
+ final IWithResultDialogCallback<Customization> callback,
+ final EditingDomain editingDomain, final Customization custom) {
+ super(callback, editingDomain);
+ this.customProperty = new PropertyElement2<Customization>(true, custom);
+ }
+
+ @Override
+ protected IGetOrCreateFilteredElementCommmandWidget<Customization, ICommandWidget> createWidget() {
+ final GetOrCreateCustomizationWidget widget = new GetOrCreateCustomizationWidget(this.getDialogComposite(),
+ getEditingDomain(), this.customProperty);
+ return new SynchronizedGetOrCreateFilteredElementCommmandWidget<Customization, ICommandWidget>(
+ widget, widget.getDisplay());
+ }
+
+ @Override
+ protected String getDialogMessage() {
+ return Messages.GetOrCreate_customization_message;
+ }
+
+ @Override
+ protected String getDialogTitle() {
+ return Messages.Select_Customization;
+ }
+
+ @Override
+ protected void okPressed() {
+ this.getCallback().commited(this.customProperty.getValue2());
+ super.okPressed();
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetCustomizedFacetDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetCustomizedFacetDialog.java
new file mode 100644
index 00000000000..c7916a8fa9d
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetCustomizedFacetDialog.java
@@ -0,0 +1,71 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.selection;
+
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.AbstractGetCustomizationDialog;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate.GetCustomizedFacetWidget;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate.GetFiltredCustomizedFacetWidget;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
+
+/**
+ * Concrete dialog for the selection of the customized facet.
+ *
+ * @see GetCustomizedFacetWidget
+ */
+public class GetCustomizedFacetDialog extends
+ AbstractGetCustomizationDialog<Facet, GetFiltredCustomizedFacetWidget> {
+ private GetFiltredCustomizedFacetWidget customFacetW;
+
+ /**
+ * Constructor.
+ *
+ * @param properties
+ * properties that parent widget had.
+ */
+ public GetCustomizedFacetDialog(
+ final IWithResultDialogCallback<Facet> callback) {
+ super(callback);
+ }
+
+ @Override
+ protected GetFiltredCustomizedFacetWidget createWidget() {
+ this.customFacetW = new GetFiltredCustomizedFacetWidget(
+ this.getDialogComposite());
+ return this.customFacetW;
+ }
+
+ @Override
+ protected String getDialogMessage() {
+ return Messages.GetOrCreate_customization_message;
+ }
+
+ @Override
+ protected String getDialogTitle() {
+ return Messages.Select_Customization;
+ }
+
+ @Override
+ protected void okPressed() {
+ // TODO Use of in instance of PropertyElement ?
+ this.getCallback().commited(this.customFacetW.getElementSelected());
+ super.okPressed();
+ }
+
+ @Override
+ protected void execute() {
+ getCallback().commited(this.customFacetW.getFacetSelected());
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetExtendedFacetDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetExtendedFacetDialog.java
new file mode 100644
index 00000000000..ba52524eefc
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetExtendedFacetDialog.java
@@ -0,0 +1,72 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.selection;
+
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.AbstractGetCustomizationDialog;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate.GetExtendedFacetWidget;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate.GetFiltredExtendedFacetWidget;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
+
+/**
+ * Concrete dialog for the selection of the extended facet.
+ *
+ * @see GetExtendedFacetWidget
+ */
+public class GetExtendedFacetDialog extends
+ AbstractGetCustomizationDialog<Facet, GetFiltredExtendedFacetWidget> {
+
+ private GetFiltredExtendedFacetWidget extendedFacetW;
+
+ /**
+ * Constructor.
+ *
+ * @param properties
+ * properties that parent widget had.
+ */
+ public GetExtendedFacetDialog(
+ final IWithResultDialogCallback<Facet> callback) {
+ super(callback);
+ }
+
+ @Override
+ protected GetFiltredExtendedFacetWidget createWidget() {
+ this.extendedFacetW = new GetFiltredExtendedFacetWidget(
+ this.getDialogComposite());
+ return this.extendedFacetW;
+ }
+
+ @Override
+ protected String getDialogMessage() {
+ return Messages.GetOrCreate_customization_message;
+ }
+
+ @Override
+ protected String getDialogTitle() {
+ return Messages.Select_Customization;
+ }
+
+ @Override
+ protected void okPressed() {
+ if (this.extendedFacetW.getFacetSelected() != null) {
+ getCallback().commited(this.extendedFacetW.getElementSelected());
+ }
+ super.okPressed();
+ }
+
+ @Override
+ protected void execute() {
+ getCallback().commited(this.extendedFacetW.getFacetSelected());
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetFacetOperationDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetFacetOperationDialog.java
new file mode 100644
index 00000000000..a555c0cb1b0
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/selection/GetFacetOperationDialog.java
@@ -0,0 +1,79 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.selection;
+
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.AbstractGetCustomizationDialog;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate.GetFiltredOperationFacetWidget;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
+
+/**
+ * Concrete dialog for the selection of a Customization. The Customization is an
+ * operation into a particular facet.
+ *
+ * @see GetFiltredOperationFacetWidget
+ */
+public class GetFacetOperationDialog extends
+ AbstractGetCustomizationDialog<FacetOperation, GetFiltredOperationFacetWidget> {
+
+ private GetFiltredOperationFacetWidget operationFacetW;
+ private final Facet facet;
+
+ /**
+ * Constructor.
+ *
+ * @param properties
+ * properties that parent widget had.
+ */
+ public GetFacetOperationDialog(
+ final IWithResultDialogCallback<FacetOperation> callback,
+ final Facet facet) {
+ super(callback);
+ this.facet = facet;
+ }
+
+ @Override
+ protected GetFiltredOperationFacetWidget createWidget() {
+ this.operationFacetW = new GetFiltredOperationFacetWidget(
+ this.getDialogComposite(), this.facet);
+ return this.operationFacetW;
+ }
+
+ @Override
+ protected String getDialogMessage() {
+ return Messages.Get_customization_property_message;
+ }
+
+ @Override
+ protected String getDialogTitle() {
+ return Messages.Select_Customization_property;
+ }
+
+ @Override
+ protected void okPressed() {
+ if (this.operationFacetW.getFacetOperationSelected() != null) {
+ this.getCallback().commited(
+ this.operationFacetW.getFacetOperationSelected());
+ }
+ super.okPressed();
+ }
+
+ @Override
+ protected void execute() {
+ getCallback()
+ .commited(this.operationFacetW.getFacetOperationSelected());
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedAddCaseQueryDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedAddCaseQueryDialog.java
new file mode 100644
index 00000000000..cff43749e2f
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedAddCaseQueryDialog.java
@@ -0,0 +1,36 @@
+/**
+ * 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.custom.sdk.ui.internal.util.dialog.sync;
+
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.dialog.SynchronizedAbstractDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Synchronized class for safe run.
+ */
+public class SynchronizedAddCaseQueryDialog extends
+ SynchronizedAbstractDialog<IDialog> {
+
+ /**
+ * Constructor.
+ *
+ * @param object
+ * the to synchronized.
+ * @param display
+ * the display.
+ */
+ public SynchronizedAddCaseQueryDialog(final IDialog object,
+ final Display display) {
+ super(object, display);
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedAddCustomizationPropertyDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedAddCustomizationPropertyDialog.java
new file mode 100644
index 00000000000..a74ee8f0055
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedAddCustomizationPropertyDialog.java
@@ -0,0 +1,36 @@
+/**
+ * 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.custom.sdk.ui.internal.util.dialog.sync;
+
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.dialog.SynchronizedAbstractDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Synchronized class for safe run.
+ */
+public class SynchronizedAddCustomizationPropertyDialog extends
+ SynchronizedAbstractDialog<IDialog> {
+
+ /**
+ * Constructor.
+ *
+ * @param object
+ * the to synchronized.
+ * @param display
+ * the display.
+ */
+ public SynchronizedAddCustomizationPropertyDialog(
+ final IDialog object, final Display display) {
+ super(object, display);
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedCreateEClassCustomizationDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedCreateEClassCustomizationDialog.java
new file mode 100644
index 00000000000..0f2045248e0
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedCreateEClassCustomizationDialog.java
@@ -0,0 +1,36 @@
+/**
+ * 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.custom.sdk.ui.internal.util.dialog.sync;
+
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.dialog.SynchronizedAbstractDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Synchronized class for safe run.
+ */
+public class SynchronizedCreateEClassCustomizationDialog extends
+ SynchronizedAbstractDialog<IDialog> {
+
+ /**
+ * Constructor.
+ *
+ * @param object
+ * the to synchronized.
+ * @param display
+ * the display.
+ */
+ public SynchronizedCreateEClassCustomizationDialog(
+ final IDialog object, final Display display) {
+ super(object, display);
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedCreateFacetCustomizationDialog.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedCreateFacetCustomizationDialog.java
new file mode 100644
index 00000000000..78d00ef2212
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/dialog/sync/SynchronizedCreateFacetCustomizationDialog.java
@@ -0,0 +1,36 @@
+/**
+ * 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.custom.sdk.ui.internal.util.dialog.sync;
+
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.dialog.SynchronizedAbstractDialog;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Synchronized class for safe run.
+ */
+public class SynchronizedCreateFacetCustomizationDialog extends
+ SynchronizedAbstractDialog<IDialog> {
+
+ /**
+ * Constructor.
+ *
+ * @param object
+ * the to synchronized.
+ * @param display
+ * the display.
+ */
+ public SynchronizedCreateFacetCustomizationDialog(
+ final IDialog object, final Display display) {
+ super(object, display);
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCaseQueryHandler.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCaseQueryHandler.java
new file mode 100644
index 00000000000..2d13a725f19
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCaseQueryHandler.java
@@ -0,0 +1,42 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementCase;
+import org.eclipse.emf.facet.custom.sdk.ui.dialog.ICustomizationDialogFactory;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.handler.AbstractSelectionExpectedTypeHandler;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Handler for the creation of a case query into an {@link ETypedElementCase}.
+ *
+ * @see ETypedElementCase
+ */
+public class AddCaseQueryHandler extends AbstractSelectionExpectedTypeHandler {
+
+ @Override
+ protected Class<?> getSelectionExpectedType() {
+ return ETypedElementCase.class;
+ }
+
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+ final EditingDomain editingDomain = Utils.getEditingDomain(event);
+ final Display display = Utils.getDisplay(event);
+ return ICustomizationDialogFactory.DEFAULT.openAddCaseQueryDialog(
+ display, editingDomain);
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCustomizationPropertyInEClassHandler.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCustomizationPropertyInEClassHandler.java
new file mode 100644
index 00000000000..f97b89bdfc6
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCustomizationPropertyInEClassHandler.java
@@ -0,0 +1,42 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.EClassCustomization;
+import org.eclipse.emf.facet.custom.sdk.ui.dialog.ICustomizationDialogFactory;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.handler.AbstractSelectionExpectedTypeHandler;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Handler for the creation of an Customization Property into an EClass
+ * Customization.
+ */
+public class AddCustomizationPropertyInEClassHandler extends
+ AbstractSelectionExpectedTypeHandler {
+
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+ final EditingDomain editingDomain = Utils.getEditingDomain(event);
+ final Display display = Utils.getDisplay(event);
+ return ICustomizationDialogFactory.DEFAULT
+ .openAddCustomizationPropertyDialog(display, editingDomain);
+ }
+
+ @Override
+ protected Class<?> getSelectionExpectedType() {
+ return EClassCustomization.class;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCustomizationPropertyInFacetHandler.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCustomizationPropertyInFacetHandler.java
new file mode 100644
index 00000000000..7c43859457d
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/AddCustomizationPropertyInFacetHandler.java
@@ -0,0 +1,42 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.FacetCustomization;
+import org.eclipse.emf.facet.custom.sdk.ui.dialog.ICustomizationDialogFactory;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.handler.AbstractSelectionExpectedTypeHandler;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Handler for the creation of an Customization Property into a Facet
+ * Customization.
+ */
+public class AddCustomizationPropertyInFacetHandler extends
+ AbstractSelectionExpectedTypeHandler {
+
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+ final EditingDomain editingDomain = Utils.getEditingDomain(event);
+ final Display display = Utils.getDisplay(event);
+ return ICustomizationDialogFactory.DEFAULT
+ .openAddCustomizationPropertyDialog(display, editingDomain);
+ }
+
+ @Override
+ protected Class<?> getSelectionExpectedType() {
+ return FacetCustomization.class;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/CreateEClassCustomizationHandler.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/CreateEClassCustomizationHandler.java
new file mode 100644
index 00000000000..36f435cb8b4
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/CreateEClassCustomizationHandler.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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.sdk.ui.dialog.ICustomizationDialogFactory;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.handler.AbstractSelectionExpectedTypeHandler;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Handler for the creation of an EClass Customization.
+ */
+public class CreateEClassCustomizationHandler extends
+ AbstractSelectionExpectedTypeHandler {
+
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+ final EditingDomain editingDomain = Utils.getEditingDomain(event);
+ final Display display = Utils.getDisplay(event);
+ return ICustomizationDialogFactory.DEFAULT
+ .openCreateEClassCustomizationDialog(display, editingDomain);
+ }
+
+ @Override
+ protected Class<?> getSelectionExpectedType() {
+ return Customization.class;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/CreateFacetCustomizationHandler.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/CreateFacetCustomizationHandler.java
new file mode 100644
index 00000000000..a87a1fed4d8
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/CreateFacetCustomizationHandler.java
@@ -0,0 +1,40 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.sdk.ui.dialog.ICustomizationDialogFactory;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.handler.AbstractSelectionExpectedTypeHandler;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Handler for the creation of an Facet Customization.
+ */
+public class CreateFacetCustomizationHandler extends AbstractSelectionExpectedTypeHandler {
+
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+ final EditingDomain editingDomain = Utils.getEditingDomain(event);
+ final Display display = Utils.getDisplay(event);
+ return ICustomizationDialogFactory.DEFAULT
+ .openCreateFacetCustomizationDialog(display, editingDomain);
+ }
+
+ @Override
+ protected Class<?> getSelectionExpectedType() {
+ return Customization.class;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/Utils.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/Utils.java
new file mode 100644
index 00000000000..b9ff5caaaae
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/handler/Utils.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:
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+
+public final class Utils {
+
+ private Utils() {
+ // Must not be used
+ }
+
+ public static EditingDomain getEditingDomain(final ExecutionEvent event) {
+ final IWorkbenchPart part = getPart(event);
+ IEditingDomainProvider edProvider = null;
+ if (part instanceof IEditingDomainProvider) {
+ edProvider = (IEditingDomainProvider) part;
+ } else {
+ edProvider = (IEditingDomainProvider) part
+ .getAdapter(IEditingDomainProvider.class);
+ }
+ EditingDomain editingDomain = null;
+ if (edProvider != null) {
+ editingDomain = edProvider.getEditingDomain();
+ }
+ return editingDomain;
+ }
+
+ private static IWorkbenchPart getPart(final ExecutionEvent event) {
+ IWorkbenchPart part = null;
+ if (event.getApplicationContext() instanceof IEvaluationContext) {
+ final IEvaluationContext evalContext = (IEvaluationContext) event
+ .getApplicationContext();
+ part = (IWorkbenchPart) evalContext.getVariable("activePart"); //$NON-NLS-1$
+ } else {
+ final IWorkbench workbench = PlatformUI.getWorkbench();
+ final IWorkbenchWindow window = workbench
+ .getActiveWorkbenchWindow();
+ if (window != null) {
+ final IWorkbenchPage page = window.getActivePage();
+ if (page != null) {
+ part = page.getActivePart();
+ }
+ }
+ }
+ return part;
+ }
+
+ public static Display getDisplay(final ExecutionEvent execEvent) {
+ Display display = null;
+ if (execEvent.getTrigger() instanceof Event) {
+ final Event event = (Event) execEvent.getTrigger();
+ display = event.display;
+ } else {
+ display = PlatformUI.getWorkbench().getDisplay();
+ }
+ return display;
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/AddCaseQueryWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/AddCaseQueryWidget.java
new file mode 100644
index 00000000000..cdf492f7b93
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/AddCaseQueryWidget.java
@@ -0,0 +1,94 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.command;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementCase;
+import org.eclipse.emf.facet.custom.sdk.core.ICustomizationCommandFactory;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.property.name.GetCaseQueryNameWidget;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.property.name.GetCaseQueryTypeWidget;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.extensible.Query;
+import org.eclipse.emf.facet.efacet.sdk.ui.internal.exported.IQueryContext;
+import org.eclipse.emf.facet.efacet.sdk.ui.internal.query.SelectQueryTypeWidget;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.AbstractCommandWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Widget for the creation of a case query. This Widget return a command (
+ * {@link #getCommand()} for the creation of the element into the model.
+ *
+ * </p> This widget uses 3 others widgets:
+ *
+ * <li> {@link GetCaseQueryNameWidget} to display the name of the query.</li> <li>
+ * {@link GetCaseQueryTypeWidget} to display the type of the query.</li> <li>
+ * {@link SelectQueryTypeWidget} to select the query and open the query editor.</li>
+ */
+public class AddCaseQueryWidget extends AbstractCommandWidget {
+
+ private final PropertyElement2<ETypedElementCase> queryCaseProp;
+ private final PropertyElement2<Query> queryProperty;
+ private final ICustomizationCommandFactory customCmdFactory;
+ private final IQueryContext queryContext;
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param properties
+ * the properties.
+ * @param customCmdFactory
+ * @param queryCaseProp
+ * @param queryNameProp
+ * @param queryTypeProp
+ * @param queryProperty
+ */
+ public AddCaseQueryWidget(final Composite parent,
+ final ICustomizationCommandFactory customCmdFactory,
+ final PropertyElement2<ETypedElementCase> queryCaseProperty,
+ final PropertyElement2<Query> queryProperty,
+ final IQueryContext queryContext) {
+ super(parent);
+ this.customCmdFactory = customCmdFactory;
+ this.queryCaseProp = queryCaseProperty;
+ this.queryProperty = queryProperty;
+ this.queryContext = queryContext;
+ }
+
+ @Override
+ public Command getCommand() {
+ final ETypedElementCase elementCase = this.queryCaseProp.getValue2();
+ final Query query = this.queryProperty.getValue2();
+ return this.customCmdFactory.addValueInCase(
+ elementCase, query);
+ }
+
+ @Override
+ protected void addSubWidgets() {
+ addSubWidget(new GetCaseQueryNameWidget(this, this.queryCaseProp));
+ final SelectQueryTypeWidget queryTypeWidget = new SelectQueryTypeWidget(
+ this, this.queryProperty, true, this.queryContext);
+ addSubWidget(queryTypeWidget);
+ }
+
+ @Override
+ public void notifyChanged() {
+ // Nothing to do.
+ }
+
+ @Override
+ public void onDialogValidation() {
+ // Nothing to do.
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/AddCustomizationPropertyWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/AddCustomizationPropertyWidget.java
new file mode 100644
index 00000000000..c4c56104d0c
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/AddCustomizationPropertyWidget.java
@@ -0,0 +1,119 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.command;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.CustomFactory;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.EClassCustomization;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementCase;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementSwitchQuery;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate.GetOperationFacetWidget;
+import org.eclipse.emf.facet.efacet.core.IFacetCommandFactoryFactory;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.AbstractCommandWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Widget for the selection of a customization property. This Widget return a
+ * command ( {@link #getCommand()} for the creation of the element into the
+ * model.</p>
+ *
+ * This widget uses the {@link GetOperationFacetWidget} widget to display a
+ * dialog where the user select the operation he wants.</p>
+ *
+ * When the operation is selected, a copy of this operation is made and this one
+ * will be added to the model.</p>
+ *
+ * Cases are created to be added to the operation:</p>
+ *
+ * <li>a <code>null</code> case</li> <li>a case for each
+ * {@link EStructuralFeature} of the extended meta-class</li>
+ */
+public class AddCustomizationPropertyWidget extends
+ AbstractCommandWidget {
+
+ private final EClassCustomization eClassCustom;
+ private final PropertyElement2<FacetOperation> facetOpProperty;
+ private final EditingDomain editingDomain;
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param properties
+ * the properties.
+ */
+ public AddCustomizationPropertyWidget(final Composite parent,
+ final PropertyElement2<FacetOperation> facetOpProperty,
+ final EClassCustomization eClassCustomProp,
+ final EditingDomain editingDomain) {
+ super(parent);
+ this.facetOpProperty = facetOpProperty;
+ this.eClassCustom = eClassCustomProp;
+ this.editingDomain = editingDomain;
+ }
+
+ @Override
+ public Command getCommand() {
+ final FacetOperation customOperation = (FacetOperation) this.facetOpProperty
+ .getValue();
+ // Copy of the selected operation.
+ final FacetOperation facetOperation = EcoreUtil
+ .copy(customOperation);
+ // Set the selected operation has the override operation of the new one.
+ facetOperation.setOverride(customOperation);
+ // Creation of the Query
+ final ETypedElementSwitchQuery eTypedElementSQ = CustomFactory.eINSTANCE
+ .createETypedElementSwitchQuery();
+ ETypedElementCase elementCase;
+ // Adding a null case
+ elementCase = CustomFactory.eINSTANCE.createETypedElementCase();
+ elementCase.setCase(null);
+ eTypedElementSQ.getCases().add(elementCase);
+ // Adding a Case for each Structural Feature.
+ for (final EStructuralFeature feature : this.eClassCustom
+ .getExtendedMetaclass().getEAllStructuralFeatures()) {
+ elementCase = CustomFactory.eINSTANCE.createETypedElementCase();
+ elementCase.setCase(feature);
+ eTypedElementSQ.getCases().add(elementCase);
+ }
+ // Set the query created to the custom operation.
+ facetOperation.setQuery(eTypedElementSQ);
+ return IFacetCommandFactoryFactory.DEFAULT.createCommandFactory(
+ this.editingDomain).createAddOperationInFacetCommand(
+ this.eClassCustom, facetOperation);
+ }
+
+ @Override
+ public void onDialogValidation() {
+ // Nothing to do.
+ }
+
+ @Override
+ protected void addSubWidgets() {
+ final GetOperationFacetWidget widget = new GetOperationFacetWidget(
+ this, this.facetOpProperty, this.eClassCustom);
+ addSubWidget(widget);
+ }
+
+ @Override
+ public void notifyChanged() {
+ // Nothing to do.
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/CreateEClassCustomizationWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/CreateEClassCustomizationWidget.java
new file mode 100644
index 00000000000..50be1908a1a
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/CreateEClassCustomizationWidget.java
@@ -0,0 +1,180 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.command;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.CustomFactory;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.EClassCustomization;
+import org.eclipse.emf.facet.custom.sdk.core.ICustomizationCommandFactory;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate.GetExtendedFacetWidget;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate.GetOrCreateCustomizationWidget;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.metaclass.GetExtendedMetaclassWidget;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.AbstractCommandWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Widget for the creation of an {@link EClassCustomization}. This Widget return
+ * a command ( {@link #getCommand()} for the creation of the element into the
+ * model.
+ * <p/>
+ *
+ * This widget uses 3 others:
+ * <p/>
+ * <li> {@link GetOrCreateCustomizationWidget} for the selection of the parent.</li>
+ * <p/>
+ * <li> {@link GetExtendedMetaclassWidget} for the selection of the extended
+ * meta-class</li>
+ * <p/>
+ * <li> {@link GetExtendedFacetWidget} for the selection of the extended
+ * {@link Facet}</li>
+ */
+public class CreateEClassCustomizationWidget extends AbstractCommandWidget {
+
+ private final PropertyElement2<Customization> customProperty;
+ private final PropertyElement2<EClass> mClassProperty;
+ private final PropertyElement2<Facet> extFacetProperty;
+
+ private GetOrCreateCustomizationWidget customWidget;
+ private GetExtendedMetaclassWidget extendedMCWidget;
+ private GetExtendedFacetWidget extendedFacetW;
+ private final ICustomizationCommandFactory customCmdFactory;
+ private final EditingDomain editingDomain;
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param properties
+ * the properties.
+ */
+ public CreateEClassCustomizationWidget(final Composite parent,
+ final ICustomizationCommandFactory customCmdFactory,
+ final EditingDomain editingDomain,
+ final PropertyElement2<Customization> customProperty,
+ final PropertyElement2<EClass> mClassProperty,
+ final PropertyElement2<Facet> extFacetProperty) {
+ super(parent);
+ this.customCmdFactory = customCmdFactory;
+ this.editingDomain = editingDomain;
+ this.customProperty = customProperty;
+ this.mClassProperty = mClassProperty;
+ this.extFacetProperty = extFacetProperty;
+ }
+
+ @Override
+ public Command getCommand() {
+ final Customization customization = (Customization) this
+ .getCustomizationProperty().getValue();
+ final EClassCustomization eClassCustom = createEClassCustomization();
+ return this.customCmdFactory.createEClassCustomization(customization,
+ eClassCustom);
+ }
+
+ public EClassCustomization createEClassCustomization() {
+ final EClass extendedMetaclass = (EClass) this.getMetaClassProperty()
+ .getValue();
+ final Facet extendedFacet = (Facet) this.getExtendedFacetProperty()
+ .getValue();
+ final String name = extendedMetaclass.getName() + " " //$NON-NLS-1$
+ + extendedFacet.getDocumentation();
+ final EClassCustomization eClassCustom = getEClassCustomization();
+ eClassCustom.setName(name);
+ eClassCustom.setExtendedMetaclass(extendedMetaclass);
+ eClassCustom.getExtendedFacets().add(extendedFacet);
+ return eClassCustom;
+ }
+
+ @SuppressWarnings("static-method")
+ // @SuppressWarnings("static-method") This method is overrode by
+ // EditEClassCustomizationWidget.
+ public EClassCustomization getEClassCustomization() {
+ return CustomFactory.eINSTANCE.createEClassCustomization();
+ }
+
+ @Override
+ public void onDialogValidation() {
+ // Nothing.
+ }
+
+ @Override
+ protected void addSubWidgets() {
+ this.customWidget = new GetOrCreateCustomizationWidget(this,
+ this.customProperty, this.editingDomain);
+ addSubWidget(this.customWidget);
+ this.extendedMCWidget = new GetExtendedMetaclassWidget(this,
+ this.mClassProperty, this.customProperty);
+ addSubWidget(this.extendedMCWidget);
+ this.extendedFacetW = new GetExtendedFacetWidget(this,
+ this.extFacetProperty);
+ addSubWidget(this.extendedFacetW);
+ }
+
+ @Override
+ public void notifyChanged() {
+ // Nothing.
+ }
+
+ /**
+ * @return the customizationProperty
+ */
+ public PropertyElement getCustomizationProperty() {
+ return this.customProperty;
+ }
+
+ /**
+ * @return the metaClassProperty
+ */
+ public PropertyElement getMetaClassProperty() {
+ return this.mClassProperty;
+ }
+
+ /**
+ * @return the extendedFacetProperty
+ */
+ public PropertyElement getExtendedFacetProperty() {
+ return this.extFacetProperty;
+ }
+
+ /**
+ * @return the getOrCreateCustomizationWidget
+ */
+ public GetOrCreateCustomizationWidget getGetOrCreateCustomizationWidget() {
+ return this.customWidget;
+ }
+
+ /**
+ * @return the getExtendedMetaclassWidget
+ */
+ public GetExtendedMetaclassWidget getGetExtendedMetaclassWidget() {
+ return this.extendedMCWidget;
+ }
+
+ /**
+ * @return the getExtendedFacetWidget
+ */
+ public GetExtendedFacetWidget getGetExtendedFacetWidget() {
+ return this.extendedFacetW;
+ }
+
+ protected final ICustomizationCommandFactory getCustomCmdFactory() {
+ return this.customCmdFactory;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/CreateFacetCustomizationWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/CreateFacetCustomizationWidget.java
new file mode 100644
index 00000000000..abafe7d52c3
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/CreateFacetCustomizationWidget.java
@@ -0,0 +1,123 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.command;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.CustomFactory;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.FacetCustomization;
+import org.eclipse.emf.facet.custom.sdk.core.ICustomizationCommandFactory;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate.GetCustomizedFacetWidget;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Widget for the creation of an {@link FacetCustomization}. This Widget return
+ * a command ( {@link #getCommand()} for the creation of the element into the
+ * model and extends {@link CreateEClassCustomizationWidget}.
+ * <p/>
+ *
+ * This widget add a other widget to the 3 of
+ * {@link CreateEClassCustomizationWidget}:
+ * <p/>
+ * <li> {@link GetCustomizedFacetWidget} for the selection of a {@link Facet}</li>
+ */
+public class CreateFacetCustomizationWidget extends
+ CreateEClassCustomizationWidget {
+
+ private final PropertyElement2<Facet> facetCustomProp;
+ private GetCustomizedFacetWidget getCustomFacetW;
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param properties
+ * the properties.
+ * @param mClassProperty
+ * @param customProperty
+ * @param extFacetProperty
+ * @param facetCustomProp
+ * @param facetCustomProp
+ */
+ public CreateFacetCustomizationWidget(final Composite parent,
+ final ICustomizationCommandFactory customCmdFactory,
+ final EditingDomain editingDomain,
+ final PropertyElement2<EClass> mClassProperty,
+ final PropertyElement2<Customization> customProperty,
+ final PropertyElement2<Facet> extFacetProperty,
+ final PropertyElement2<Facet> facetCustomProp) {
+ super(parent, customCmdFactory, editingDomain,
+ customProperty, mClassProperty, extFacetProperty);
+ this.facetCustomProp = facetCustomProp;
+ }
+
+ @Override
+ public Command getCommand() {
+ final Customization customization = (Customization) this
+ .getCustomizationProperty().getValue();
+ final FacetCustomization facetCustom = createFacetCustomization();
+ return getCustomCmdFactory().createFacetCustomization(customization,
+ facetCustom);
+ }
+
+ public FacetCustomization createFacetCustomization() {
+ final EClass extendedMetaclass = (EClass) this.getMetaClassProperty()
+ .getValue();
+ final Facet extendedFacet = (Facet) this.getExtendedFacetProperty()
+ .getValue();
+ final String name = extendedMetaclass.getName() + " " //$NON-NLS-1$
+ + extendedFacet.getDocumentation();
+ final Facet customizedFacet = (Facet) this.facetCustomProp.getValue();
+ final FacetCustomization facetCustom = getFacetCustomization();
+ facetCustom.setName(name);
+ facetCustom.setExtendedMetaclass(extendedMetaclass);
+ facetCustom.getExtendedFacets().add(extendedFacet);
+ facetCustom.setCustomizedFacet(customizedFacet);
+ return facetCustom;
+ }
+
+ @SuppressWarnings("static-method")
+ //@SuppressWarnings("static-method") This method is overrode by EditFacetCustomizationWidget.
+ public FacetCustomization getFacetCustomization() {
+ return CustomFactory.eINSTANCE.createFacetCustomization();
+ }
+
+ @Override
+ protected void addSubWidgets() {
+ super.addSubWidgets();
+ this.getCustomFacetW = new GetCustomizedFacetWidget(this,
+ this.facetCustomProp);
+ addSubWidget(this.getCustomFacetW);
+ }
+
+ /**
+ * @return the facetCustomizedProperty
+ */
+ public PropertyElement getFacetCustomizedProperty() {
+ return this.facetCustomProp;
+ }
+
+ /**
+ * @return the getCustomizedFacetWidget
+ */
+ public GetCustomizedFacetWidget getGetCustomizedFacetWidget() {
+ return this.getCustomFacetW;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/GetOrCreateCustomizationWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/GetOrCreateCustomizationWidget.java
new file mode 100644
index 00000000000..a3c71be2488
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/command/GetOrCreateCustomizationWidget.java
@@ -0,0 +1,101 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.command;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.command.CreateEClassCustomizationDialog;
+import org.eclipse.emf.facet.efacet.core.FacetUtils;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetSet;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.AbstractGetOrCreateFilteredElementCommandWidget;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This widget allow the user to select a Customization.
+ *
+ * @see AbstractGetOrCreateFilteredElementCommandWidget
+ */
+public class GetOrCreateCustomizationWidget extends
+ AbstractGetOrCreateFilteredElementCommandWidget<Customization, ICommandWidget> {
+
+ private final EditingDomain editingDomain;
+ private final PropertyElement2<Customization> customProperty;
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param properties
+ * the properties.
+ * @param customProperty
+ */
+ public GetOrCreateCustomizationWidget(final Composite parent,
+ final EditingDomain editingDomain,
+ final PropertyElement2<Customization> customProperty) {
+ super(parent);
+ this.editingDomain = editingDomain;
+ this.customProperty = customProperty;
+ }
+
+ @Override
+ protected Map<String, Customization> getElements() {
+ final Map<String, Customization> result = new HashMap<String, Customization>();
+ final Customization initialSelection = this.customProperty.getValue2();
+ final FacetSet parent = FacetUtils
+ .getContainingFacetSet(initialSelection);
+ final Map<String, FacetSet> allFacetSets = FacetUtils
+ .getAllFacetSetsByName(parent);
+ for (String key : allFacetSets.keySet()) {
+ final FacetSet value = allFacetSets.get(key);
+ if (value instanceof Customization) {
+ final Customization custom = (Customization) value;
+ result.put(key, custom);
+ }
+ }
+ final Object name = initialSelection.getName();
+ result.remove(name);
+ return result;
+ }
+
+ @Override
+ protected IDialog<ICommandWidget> createDialog() {
+ return new CreateEClassCustomizationDialog(
+ this.customProperty.getValue2(), this.editingDomain);
+ }
+
+ @Override
+ public Command getCommand() {
+ // Here, this widget only return a selected element so, no command is
+ // returned.
+ return null;
+ }
+
+ @Override
+ public void notifyChanged() {
+ // No action has to be done if a change appends.
+ }
+
+ @Override
+ public void onDialogValidation() {
+ // Nothing.
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/AbstractGetFacetWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/AbstractGetFacetWidget.java
new file mode 100644
index 00000000000..9cb70248708
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/AbstractGetFacetWidget.java
@@ -0,0 +1,61 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate;
+
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.component.getorcreate.AbstractGetOrCreateElementWithButtonWidget;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.component.getorcreate.AbstractGetOrCreateElementWithDialogButtonWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This class extends {@link AbstractGetOrCreateElementWithButtonWidget} and
+ * display to the user a label with a textfield and a button to select the
+ * customized facet.
+ */
+public abstract class AbstractGetFacetWidget<W extends Object> extends
+ AbstractGetOrCreateElementWithDialogButtonWidget<Facet, W> {
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param propertyElement
+ * the property element that be edited with this composite.
+ * @param properties
+ * the map of properties of the parent.
+ */
+ public AbstractGetFacetWidget(final Composite parent,
+ final PropertyElement2<Facet> propertyElement) {
+ super(parent, propertyElement);
+ }
+
+ @Override
+ protected String getTextFieldInitialText() {
+ return this.getPropertyElement().getValue2().getName();
+ }
+
+ @Override
+ public void notifyChanged() { // NOPMD by gdupe on 24/09/12 16:59
+ // NOPMD This methods will be empty in all the sub classes of this class
+ // No action has to be done if a change appends.
+ }
+
+ @Override
+ protected void onCanceled() { // NOPMD by gdupe on 24/09/12 16:59
+ // NOPMD This methods will be empty in all the sub classes of this class
+ // Nothing to do.
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetCustomizedFacetWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetCustomizedFacetWidget.java
new file mode 100644
index 00000000000..fc24dca02fd
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetCustomizedFacetWidget.java
@@ -0,0 +1,62 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate;
+
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.selection.GetCustomizedFacetDialog;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.component.getorcreate.AbstractGetOrCreateElementWithButtonWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This class extends {@link AbstractGetOrCreateElementWithButtonWidget} and
+ * display to the user a label with a textfield and a button to select the
+ * customized facet.
+ */
+public class GetCustomizedFacetWidget extends
+ AbstractGetFacetWidget<GetFiltredCustomizedFacetWidget> {
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param propertyElement
+ * the property element that be edited with this composite.
+ * @param properties
+ * the map of properties of the parent.
+ */
+ public GetCustomizedFacetWidget(final Composite parent,
+ final PropertyElement2<Facet> propertyElement) {
+ super(parent, propertyElement);
+ }
+
+ @Override
+ protected String getLabel() {
+ return Messages.CustomizedFacet;
+ }
+
+ @Override
+ protected String getErrorMessage() {
+ return Messages.CustomizedFacet_mustSelectCustomizedFacet;
+ }
+
+ @Override
+ protected GetCustomizedFacetDialog getCreationDialog(
+ final IWithResultDialogCallback<Facet> callback) {
+ return new GetCustomizedFacetDialog(callback);
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetExtendedFacetWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetExtendedFacetWidget.java
new file mode 100644
index 00000000000..7f6e6df2627
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetExtendedFacetWidget.java
@@ -0,0 +1,62 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate;
+
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.selection.GetExtendedFacetDialog;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.component.getorcreate.AbstractGetOrCreateElementWithButtonWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This class extends {@link AbstractGetOrCreateElementWithButtonWidget}. The
+ * widget open the {@link GetExtendedFacetDialog} dialog when the button [...]
+ * is pressed {@link #createDialog()}.
+ */
+public class GetExtendedFacetWidget extends
+ AbstractGetFacetWidget<GetFiltredExtendedFacetWidget> {
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param propertyElement
+ * the property element that be edited with this composite.
+ * @param properties
+ * the map of properties of the parent.
+ */
+ public GetExtendedFacetWidget(final Composite parent,
+ final PropertyElement2<Facet> propertyElement) {
+ super(parent, propertyElement);
+ }
+
+ @Override
+ protected String getLabel() {
+ return Messages.ExtendedFacet;
+ }
+
+ @Override
+ protected String getErrorMessage() {
+ return Messages.Facet_mustSelectFacet;
+ }
+
+ @Override
+ protected GetExtendedFacetDialog getCreationDialog(
+ final IWithResultDialogCallback<Facet> callback) {
+ return new GetExtendedFacetDialog(callback);
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredCustomizedFacetWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredCustomizedFacetWidget.java
new file mode 100644
index 00000000000..695550d8c44
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredCustomizedFacetWidget.java
@@ -0,0 +1,121 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Activator;
+import org.eclipse.emf.facet.efacet.core.IFacetSetCatalogManager;
+import org.eclipse.emf.facet.efacet.core.IFacetSetCatalogManagerFactory;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetSet;
+import org.eclipse.emf.facet.util.emf.ui.util.EditingUtil;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.AbstractGetOrCreateFilteredElementCommandWidget;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This widget extends {@link AbstractGetOrCreateFilteredElementCommandWidget} and allow
+ * the selection of a {@link Facet} that the Customization will customize. It
+ * displays a selection window with a textfield to filter the element in the
+ * selection window. Extending {@link AbstractGetOrCreateFilteredElementCommandWidget},
+ * a [New...] button can be displayed. Here, no button is displayed because we
+ * only select the extended facet into the existing facet.
+ * <p/>
+ *
+ * The selection window will be full up with the customization properties
+ * returned by {@link IFacetSetCatalogManager}.
+ */
+public class GetFiltredCustomizedFacetWidget extends
+ AbstractGetOrCreateFilteredElementCommandWidget<Facet, Object> {
+
+ protected static final String TMP_NAME = Activator.getDefault()
+ .getBundle().getSymbolicName()
+ + ".tmp"; //$NON-NLS-1$
+ public static final File DEFAULT_FILE = new File(Platform
+ .getStateLocation(Activator.getDefault().getBundle()).toOSString(),
+ GetFiltredCustomizedFacetWidget.TMP_NAME);
+
+ private final IFacetSetCatalogManager facetSetCatMan;
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param properties
+ * the map of properties of the parent.
+ */
+ public GetFiltredCustomizedFacetWidget(final Composite parent) {
+ super(parent);
+ this.facetSetCatMan = IFacetSetCatalogManagerFactory.DEFAULT
+ .getOrCreateFacetSetCatalogManager(EditingUtil
+ .createDefaultResource(
+ GetFiltredCustomizedFacetWidget.DEFAULT_FILE)
+ .getResourceSet());
+ }
+
+ @Override
+ protected Map<String, Facet> getElements() {
+ final Map<String, Facet> allFacets = new HashMap<String, Facet>();
+ final Collection<FacetSet> facetSets = this.facetSetCatMan
+ .getRegisteredFacetSets();
+ for (final FacetSet facetSet : facetSets) {
+ for (final EClassifier eClassifier : facetSet.getEClassifiers()) {
+ if ((eClassifier instanceof Facet)
+ && (eClassifier.getName() != null)) {
+ allFacets.put(eClassifier.getName(), (Facet) eClassifier);
+ }
+ }
+ }
+ return allFacets;
+ }
+
+ @Override
+ public void notifyChanged() {
+ // No action has to be done if a change appends.
+ }
+
+ @Override
+ public Command getCommand() {
+ // Here, this widget only return a selected element so, no command is
+ // returned.
+ return null;
+ }
+
+ @Override
+ protected IDialog<Object> createDialog() {
+ // No "New..." button.
+ return null;
+ }
+
+
+ @Override
+ public void onDialogValidation() {
+ // Nothing.
+ }
+
+ /**
+ * @return
+ */
+ public Facet getFacetSelected() {
+ return getElementSelected();
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredExtendedFacetWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredExtendedFacetWidget.java
new file mode 100644
index 00000000000..8437e1bcf30
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredExtendedFacetWidget.java
@@ -0,0 +1,120 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.facet.custom.core.ICustomizationPropertiesCatalogManager;
+import org.eclipse.emf.facet.custom.core.ICustomizationPropertiesCatalogManagerFactory;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Activator;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetSet;
+import org.eclipse.emf.facet.util.emf.ui.util.EditingUtil;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.AbstractGetOrCreateFilteredElementCommandWidget;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This widget extends {@link AbstractGetOrCreateFilteredElementCommandWidget} and allow
+ * the selection of a {@link Facet} that the Customization will extend. It
+ * displays a selection window with a textfield to filter the element in the
+ * selection window. Extending {@link AbstractGetOrCreateFilteredElementCommandWidget},
+ * a [New...] button can be displayed. Here, no button is displayed because we
+ * only select the extended facet into the existing facet.
+ * <p/>
+ *
+ * The selection window will be full up with the customization properties
+ * returned by {@link ICustomizationPropertiesCatalogManager}.
+ */
+public class GetFiltredExtendedFacetWidget extends
+ AbstractGetOrCreateFilteredElementCommandWidget<Facet, Object> {
+
+ protected static final String TMP_NAME = Activator.getDefault()
+ .getBundle().getSymbolicName()
+ + ".tmp"; //$NON-NLS-1$
+ public static final File DEFAULT_FILE = new File(Platform
+ .getStateLocation(Activator.getDefault().getBundle()).toOSString(),
+ GetFiltredExtendedFacetWidget.TMP_NAME);
+
+ private final ICustomizationPropertiesCatalogManager customPropCatMan;
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param properties
+ * the map of properties of the parent.
+ */
+ public GetFiltredExtendedFacetWidget(final Composite parent) {
+ super(parent);
+ this.customPropCatMan = ICustomizationPropertiesCatalogManagerFactory.INSTANCE
+ .getOrCreateCustomizationPropertiesCatalogManager(EditingUtil
+ .createDefaultResource(
+ GetFiltredExtendedFacetWidget.DEFAULT_FILE)
+ .getResourceSet());
+ }
+
+ @Override
+ protected Map<String, Facet> getElements() {
+ final Map<String, Facet> allFacets = new HashMap<String, Facet>();
+ final List<FacetSet> facetSets = this.customPropCatMan
+ .getAllRegisteredCustomizationPropertySet();
+ for (final FacetSet facetSet : facetSets) {
+ for (final EClassifier eClassifier : facetSet.getEClassifiers()) {
+ if ((eClassifier instanceof Facet)
+ && (eClassifier.getName() != null)) {
+ allFacets.put(eClassifier.getName(), (Facet) eClassifier);
+ }
+ }
+ }
+ return allFacets;
+ }
+
+ @Override
+ protected IDialog<Object> createDialog() {
+ // No "New..." button.
+ return null;
+ }
+
+ @Override
+ public Command getCommand() {
+ // Here, this widget only return a selected element so, no command is
+ // returned.
+ return null;
+ }
+
+ @Override
+ public void notifyChanged() {
+ // No action has to be done if a change appends.
+ }
+
+ @Override
+ public void onDialogValidation() {
+ // Nothing.
+ }
+
+ /**
+ * @return
+ */
+ public Facet getFacetSelected() {
+ return getElementSelected();
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredOperationFacetWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredOperationFacetWidget.java
new file mode 100644
index 00000000000..4f53aa92a12
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetFiltredOperationFacetWidget.java
@@ -0,0 +1,97 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.AbstractGetOrCreateFilteredElementCommandWidget;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This widget provide the selection of a {@link FacetOperation} available of
+ * the selected {@link Facet}. The {@link Facet} is passed in the constructor
+ * parameter.
+ * <p/>
+ *
+ * This widget extends {@link AbstractGetOrCreateFilteredElementCommandWidget}.
+ *
+ * @see AbstractGetOrCreateFilteredElementCommandWidget
+ */
+public class GetFiltredOperationFacetWidget extends
+ AbstractGetOrCreateFilteredElementCommandWidget<FacetOperation, Object> {
+
+ private final Facet selectedFacet;
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param facetOpProperty
+ * @param properties
+ * the map of properties of the parent.
+ * @param facetOpProperty
+ */
+ public GetFiltredOperationFacetWidget(final Composite parent,
+ final Facet selectedFacet) {
+ super(parent);
+ this.selectedFacet = selectedFacet;
+ }
+
+ @Override
+ protected Map<String, FacetOperation> getElements() {
+ final Map<String, FacetOperation> allFacetOpes = new HashMap<String, FacetOperation>();
+ for (final Facet facet : this.selectedFacet.getExtendedFacets()) {
+ for (final FacetOperation operation : facet.getFacetOperations()) {
+ allFacetOpes.put(operation.getName(), operation);
+ }
+ }
+ return allFacetOpes;
+ }
+
+ @Override
+ protected IDialog<Object> createDialog() {
+ // No "New..." button.
+ return null;
+ }
+
+ @Override
+ public Command getCommand() {
+ // Here, this widget only return a selected element so, no command is
+ // returned.
+ return null;
+ }
+
+ @Override
+ public void notifyChanged() {
+ // No action has to be done if a change appends.
+ }
+
+ @Override
+ public void onDialogValidation() {
+ // Nothing.
+ }
+
+ /**
+ * @return
+ */
+ public FacetOperation getFacetOperationSelected() {
+ return getElementSelected();
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetOperationFacetWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetOperationFacetWidget.java
new file mode 100644
index 00000000000..21281202f3d
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetOperationFacetWidget.java
@@ -0,0 +1,82 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate;
+
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.selection.GetFacetOperationDialog;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.component.getorcreate.AbstractGetOrCreateElementWithButtonWidget;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.component.getorcreate.AbstractGetOrCreateElementWithDialogButtonWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This widget extends {@link AbstractGetOrCreateElementWithButtonWidget}.
+ */
+public class GetOperationFacetWidget
+ extends
+ AbstractGetOrCreateElementWithDialogButtonWidget<FacetOperation, GetFiltredOperationFacetWidget> {
+
+ private final Facet facet;
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param propertyElement
+ * the property element that be edited with this composite.
+ * @param properties
+ * the map of properties of the parent.
+ */
+ public GetOperationFacetWidget(final Composite parent,
+ final PropertyElement2<FacetOperation> propertyElement,
+ final Facet facet) {
+ super(parent, propertyElement);
+ this.facet = facet;
+ }
+
+ @Override
+ protected String getLabel() {
+ return Messages.OperationFacet;
+ }
+
+ @Override
+ protected String getErrorMessage() {
+ return Messages.OperationFacet_mustSelectOperationFacet;
+ }
+
+ @Override
+ protected String getTextFieldInitialText() {
+ return this.getPropertyElement().getValue2().getName();
+ }
+
+ @Override
+ public void notifyChanged() {
+ // No action has to be done if a change appends.
+ }
+
+ @Override
+ protected void onCanceled() {
+ // Nothing to do.
+ }
+
+ @Override
+ protected GetFacetOperationDialog getCreationDialog(
+ final IWithResultDialogCallback<FacetOperation> callback) {
+ return new GetFacetOperationDialog(callback, this.facet);
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetOrCreateCustomizationWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetOrCreateCustomizationWidget.java
new file mode 100644
index 00000000000..fd35bfbae67
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/getorcreate/GetOrCreateCustomizationWidget.java
@@ -0,0 +1,85 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.getorcreate;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.dialog.getorcreate.GetOrCreateCustomizationDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IDialog;
+import org.eclipse.emf.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.ICommandWidget;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.command.IGetOrCreateFilteredElementCommmandWidget;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.component.getorcreate.AbstractGetOrCreateElementWithDialogButtonWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This widget allow the creation of a Customization element.
+ */
+public class GetOrCreateCustomizationWidget
+ extends
+ AbstractGetOrCreateElementWithDialogButtonWidget<Customization, IGetOrCreateFilteredElementCommmandWidget<Customization, ICommandWidget>> {
+
+ private final EditingDomain editingDomain;
+
+ /**
+ * Constructor.*
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param propertyElement
+ * the property element that be edited with this composite.
+ * @param properties
+ * the map of properties of the parent.
+ */
+ public GetOrCreateCustomizationWidget(final Composite parent,
+ final PropertyElement2<Customization> propertyElement,
+ final EditingDomain editingDomain) {
+ super(parent, propertyElement);
+ this.editingDomain = editingDomain;
+ }
+
+ @Override
+ protected String getLabel() {
+ return Messages.Customization;
+ }
+
+ @Override
+ protected String getErrorMessage() {
+ return Messages.Customization_mustSelectCustomization;
+ }
+
+ @Override
+ protected String getTextFieldInitialText() {
+ return this.getPropertyElement().getValue2().getName();
+ }
+
+ @Override
+ public void notifyChanged() {
+ // No action has to be done if a change appends.
+ }
+
+ @Override
+ protected void onCanceled() {
+ // Nothing to do.
+ }
+
+ @Override
+ protected IDialog<IGetOrCreateFilteredElementCommmandWidget<Customization, ICommandWidget>> getCreationDialog(
+ final IWithResultDialogCallback<Customization> callback) {
+ return new GetOrCreateCustomizationDialog(callback, this.editingDomain,
+ this.getPropertyElement().getValue2());
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/metaclass/GetExtendedMetaclassWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/metaclass/GetExtendedMetaclassWidget.java
new file mode 100644
index 00000000000..394b7c96a01
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/metaclass/GetExtendedMetaclassWidget.java
@@ -0,0 +1,85 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.metaclass;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetSet;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.util.widget.component.metaclass.AbstractGetMetaclassWidget;
+import org.eclipse.emf.facet.util.emf.ui.internal.exported.wizard.ISelectETypeWizard;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Concrete implementation of {@link AbstractGetMetaclassWidget} abstract
+ * class.</p>
+ *
+ * Create a simple Label {@link #getLabel()}TextField and a button.</p> This
+ * class provide the selection the extended metaclass. The type used is
+ * {@link ETypeSelectionOptions#ECLASS}
+ *
+ * @since 0.3
+ */
+public class GetExtendedMetaclassWidget extends
+ AbstractGetMetaclassWidget<EClass> {
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param propertyElement
+ * the property element that will be edited by this composite.
+ * @param facetSetProp
+ * the property element to get the super, main, facetSet of the
+ * model.
+ */
+ public GetExtendedMetaclassWidget(final Composite parent,
+ final PropertyElement2<EClass> propertyElement,
+ final PropertyElement2<? extends FacetSet> facetSetProp) {
+ super(parent, propertyElement, facetSetProp, EClass.class);
+ }
+
+ @Override
+ protected String getLabel() {
+ return Messages.ExtendedMetaClass;
+ }
+
+ @Override
+ protected String getErrorMessage() {
+ return Messages.Metaclass_mustSelectMetaclass;
+ }
+
+ @Override
+ public void notifyChanged() {
+ // No action has to be done if a change appends.
+ }
+
+ @Override
+ protected String getTextFieldInitialText() {
+ return getPropertyElement().getValue2().getName();
+ }
+
+ @Override
+ protected EPackage getEPackage() {
+ return this.getEPackageProperty().getValue2();
+ }
+
+ @Override
+ protected ISelectETypeWizard<EClass> createSynchronizedWizard(
+ final ISelectETypeWizard<EClass> wizard) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetCaseQueryNameWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetCaseQueryNameWidget.java
new file mode 100644
index 00000000000..b8d14635b71
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetCaseQueryNameWidget.java
@@ -0,0 +1,68 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.property.name;
+
+import org.eclipse.emf.ecore.ETypedElement;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementCase;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.component.properties.name.AbstractPrintElementWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Display a textfield with the query name on it.
+ */
+public class GetCaseQueryNameWidget extends
+ AbstractPrintElementWidget<ETypedElementCase> {
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param propertyElement
+ * the property element that be edited with this composite.
+ */
+ public GetCaseQueryNameWidget(final Composite parent,
+ final PropertyElement2<ETypedElementCase> propertyElement) {
+ super(parent, propertyElement);
+ }
+
+ @Override
+ protected String getLabel() {
+ return Messages.Query_case_name;
+ }
+
+ @Override
+ protected String getErrorMessage() {
+ return null;
+ }
+
+ @Override
+ protected String getTextFieldInitialText() {
+ String result = "The object node cusomization"; //$NON-NLS-1$
+ final ETypedElementCase eTECase = this.getPropertyElement().getValue2();
+ final ETypedElement eTypedElement = eTECase.getCase();
+ if (eTypedElement != null) {
+ result = eTypedElement.getName();
+ }
+ return result;
+ }
+
+ @Override
+ public void notifyChanged() {
+ // Nothing.
+ }
+
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetCaseQueryTypeWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetCaseQueryTypeWidget.java
new file mode 100644
index 00000000000..cb986c391f1
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetCaseQueryTypeWidget.java
@@ -0,0 +1,59 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.property.name;
+
+import org.eclipse.emf.ecore.ETypedElement;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.component.properties.name.AbstractPrintElementWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Display a textfield with the query type on it.
+ */
+public class GetCaseQueryTypeWidget extends
+ AbstractPrintElementWidget<ETypedElement> {
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param propertyElement
+ * the property element that be edited with this composite.
+ */
+ public GetCaseQueryTypeWidget(final Composite parent,
+ final PropertyElement2<ETypedElement> propertyElement) {
+ super(parent, propertyElement);
+ }
+
+ @Override
+ protected String getLabel() {
+ return Messages.Query_case_type;
+ }
+
+ @Override
+ protected String getErrorMessage() {
+ return null;
+ }
+
+ @Override
+ protected String getTextFieldInitialText() {
+ return this.getPropertyElement().getValue2().getName();
+ }
+
+ @Override
+ public void notifyChanged() {
+ // Nothing.
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetEClassCustomizationNameWidget.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetEClassCustomizationNameWidget.java
new file mode 100644
index 00000000000..2f3e18797f0
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/widget/property/name/GetEClassCustomizationNameWidget.java
@@ -0,0 +1,59 @@
+/**
+ * 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
+ * Grégoire Dupé (Mia-Software) - Bug 387470 - [EFacet][Custom] Editors
+ */
+package org.eclipse.emf.facet.custom.sdk.ui.internal.util.widget.property.name;
+
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.util.ui.internal.exported.util.widget.component.properties.name.AbstractGetElementNameWidget;
+import org.eclipse.emf.facet.util.ui.utils.PropertyElement2;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Display a textfield with the customization name on it.
+ */
+public class GetEClassCustomizationNameWidget extends
+ AbstractGetElementNameWidget {
+
+ /**
+ * Constructor.
+ *
+ * @param parent
+ * the parent of this composite.
+ * @param propertyElement
+ * the property element that be edited with this composite.
+ */
+ public GetEClassCustomizationNameWidget(final Composite parent,
+ final PropertyElement2<String> propertyElement) {
+ super(parent, propertyElement);
+ }
+
+ @Override
+ protected String getLabel() {
+ return Messages.Customization;
+ }
+
+ @Override
+ protected String getErrorMessage() {
+ return Messages.Customization_mustGiveCustomizationName;
+ }
+
+ @Override
+ protected String getTextFieldInitialText() {
+ return (String) this.getPropertyElement().getValue();
+ }
+
+ @Override
+ public void notifyChanged() {
+ // No action has to be done if a change appends.
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/CreateCustimizationWizardImpl.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/CreateCustimizationWizardImpl.java
new file mode 100644
index 00000000000..0ba18a5643a
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/CreateCustimizationWizardImpl.java
@@ -0,0 +1,268 @@
+/**
+ * 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.custom.sdk.ui.internal.util.wizard;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.CustomPackage;
+import org.eclipse.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.emf.facet.custom.sdk.core.ICustomizationActions;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Activator;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.wizard.page.CreateCustomizationWizardPage;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.wizard.page.CustomPropertyWizardPage;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.wizard.page.ICreateCustomizationWizardPage;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.wizard.page.ICustomizationPropertyWizardPage;
+import org.eclipse.emf.facet.util.core.Logger;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorDescriptor;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorRegistry;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+/**
+ * Wizard for the creation of the "custom" file for customization.
+ */
+public class CreateCustimizationWizardImpl extends Wizard implements INewWizard {
+
+ private WizardDialog dialog;
+
+ private IStructuredSelection selection;
+ private IWorkbench workbench;
+ private final ICreateCustomizationWizardPage customWizardPage;
+ private final ICustomizationPropertyWizardPage propertyWP;
+
+ private boolean openCustom = true;
+
+ public CreateCustimizationWizardImpl() {
+ this(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getSelectionService().getSelection());
+ }
+
+ public CreateCustimizationWizardImpl(final ISelection selection,
+ final boolean openCustom) {
+ this(selection);
+ this.openCustom = openCustom;
+ }
+
+ public CreateCustimizationWizardImpl(final ISelection selection) {
+ super();
+ if (selection instanceof IStructuredSelection) {
+ this.selection = (IStructuredSelection) selection;
+ }
+ setWindowTitle(Messages.Create_Customization_Model);
+ this.customWizardPage = new CreateCustomizationWizardPage("Whatever", //$NON-NLS-1$
+ this.selection);
+ this.propertyWP = new CustomPropertyWizardPage("Whatever"); //$NON-NLS-1$
+ }
+
+ @Override
+ public void addPages() {
+ addPage(this.customWizardPage);
+ addPage(this.propertyWP);
+ }
+
+ public int open() {
+ this.dialog = new WizardDialog(Display.getDefault().getShells()[0],
+ this);
+ int result = Window.CANCEL;
+
+ if (this.dialog != null) {
+ result = this.dialog.open();
+ }
+ return result;
+ }
+
+ @Override
+ public boolean performFinish() {
+ return finish();
+ }
+
+ protected IWorkbenchWindow selectWorkbenchWindow() {
+ if (this.workbench == null) {
+ this.workbench = PlatformUI.getWorkbench();
+ }
+ final IWorkbenchWindow workbenchWindow = this.workbench
+ .getActiveWorkbenchWindow();
+ return workbenchWindow;
+ }
+
+ protected WorkspaceModifyOperation createOperation(final IFile modelFile) {
+ final WorkspaceModifyOperation operation = new WorkspaceModifyOperation() {
+ @Override
+ protected void execute(final IProgressMonitor progressMonitor) {
+ try {
+ final Customization customization = createInitialCustomization();
+ ICustomizationActions.INSTANCE.saveCustomization(
+ customization, modelFile);
+ } catch (final Exception exception) {
+ Logger.logError(exception, Activator.getDefault());
+ } finally {
+ progressMonitor.done();
+ }
+ }
+ };
+ return operation;
+ }
+
+ protected void openNewFile(final IFile modelFile,
+ final IWorkbenchWindow workbenchWindow, final IWorkbenchPage page) {
+ // Open an editor on the new file.
+ try {
+ final String fileName = modelFile.getName();
+ final IEditorRegistry editorRegistry = this.workbench
+ .getEditorRegistry();
+ final IEditorDescriptor defaultEditor = editorRegistry
+ .getDefaultEditor(fileName);
+ final String editorId = defaultEditor.getId();
+ final FileEditorInput editorInput = new FileEditorInput(modelFile);
+ page.openEditor(editorInput, editorId);
+ } catch (final PartInitException exception) {
+ MessageDialog.openError(workbenchWindow.getShell(),
+ "Open Editor", exception.getMessage()); //$NON-NLS-1$
+ }
+ }
+
+ protected IWorkbenchPage selectNewFile(final IFile modelFile,
+ final IWorkbenchWindow workbenchWindow) {
+ final IWorkbenchPage page = workbenchWindow.getActivePage();
+ final IWorkbenchPart activePart = page.getActivePart();
+ if (activePart instanceof ISetSelectionTarget) {
+ final ISelection targetSelection = new StructuredSelection(
+ modelFile);
+ getShell().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ ((ISetSelectionTarget) activePart)
+ .selectReveal(targetSelection);
+ }
+ });
+ }
+ return page;
+ }
+
+ @Override
+ public boolean canFinish() {
+ return this.propertyWP.isPageComplete();
+ }
+
+ public void init(final IWorkbench newWorkbench,
+ final IStructuredSelection newSelection) {
+ this.workbench = newWorkbench;
+ this.selection = newSelection;
+ }
+
+ protected Customization createInitialCustomization() {
+ final Customization customization = CustomPackage.eINSTANCE
+ .getCustomFactory().createCustomization();
+ final String projectName = getProjectName();
+ final String modelCustomName = getModelFile().getName().replaceAll(
+ ".custom", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ customization.setName(projectName + "." + modelCustomName); //$NON-NLS-1$
+ customization.setNsURI(this.propertyWP.getNsUri());
+ customization.setNsPrefix(this.propertyWP.getPrefix());
+ return customization;
+ }
+
+ /**
+ * @return
+ */
+ private static String getProjectName() {
+ String activeProjectName = null;
+ final IEditorPart editorPart = PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow()
+ .getActivePage().getActiveEditor();
+
+ if (editorPart != null) {
+ final FileEditorInput input = (FileEditorInput) editorPart
+ .getEditorInput();
+ final IFile file = input.getFile();
+ final IProject activeProject = file.getProject();
+ activeProjectName = activeProject.getName();
+ }
+ return activeProjectName;
+ }
+
+ public IFile getModelFile() {
+ return this.customWizardPage.getModelFile();
+ }
+
+ public IWizardPage next() {
+ final IWizardPage nextPage = getNextPage(this.getCurrentPage());
+ this.dialog.showPage(nextPage);
+ return nextPage;
+
+ }
+
+ public IWizardPage previous() {
+ final IWizardPage previousPage = getPreviousPage(this.getCurrentPage());
+ this.dialog.showPage(previousPage);
+ return previousPage;
+ }
+
+ public boolean finish() {
+ boolean result = false;
+
+ if (canFinish()) {
+ try {
+ // Remember the file.
+ final IFile modelFile = getModelFile();
+
+ // Do the work within an operation.
+ final WorkspaceModifyOperation operation = createOperation(modelFile);
+
+ getContainer().run(false, false, operation);
+
+ if (this.openCustom) {
+ // Select the new file resource in the current view.
+ final IWorkbenchWindow workbenchWindow = selectWorkbenchWindow();
+ final IWorkbenchPage page = selectNewFile(modelFile,
+ workbenchWindow);
+
+ openNewFile(modelFile, workbenchWindow, page);
+ }
+
+ result = true;
+ } catch (final Exception exception) {
+ Logger.logError(exception, Activator.getDefault());
+ }
+ }
+
+ return result;
+ }
+
+ public WizardDialog getDialog() {
+ return this.dialog;
+ }
+
+ public IWizardPage getCurrentPage() {
+ return this.getContainer().getCurrentPage();
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/page/CreateCustomizationWizardPage.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/page/CreateCustomizationWizardPage.java
new file mode 100644
index 00000000000..16ab5c56684
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/page/CreateCustomizationWizardPage.java
@@ -0,0 +1,117 @@
+/**
+ * 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.custom.sdk.ui.internal.util.wizard.page;
+
+import org.eclipse.core.resources.IContainer;
+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.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Activator;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.wizard.page.ICreateCustomizationWizardPage;
+import org.eclipse.emf.facet.util.core.Logger;
+//import org.eclipse.emf.facet.util.core.internal.exported.PluginUtils;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+
+/**
+ * Wizard page for the creation of a custom model file.
+ */
+public class CreateCustomizationWizardPage extends WizardNewFileCreationPage
+ implements ICreateCustomizationWizardPage {
+
+ private static final String FILE_EXTENSION = "custom"; //$NON-NLS-1$
+ private static final String MODEL_BASE = "My"; //$NON-NLS-1$
+
+ /**
+ * @param pageName
+ * @param selection
+ */
+ public CreateCustomizationWizardPage(final String pageName,
+ final IStructuredSelection selection) {
+ super(pageName, selection);
+ setTitle(Messages.CreateCustomizationWizardImpl_customization);
+ setDescription(Messages.CreateCustomizationWizardImpl_Create_new_customization);
+ setFileName(MODEL_BASE + "." + FILE_EXTENSION); //$NON-NLS-1$
+
+ // Try and get the resource selection to determine a current directory
+ // for the file dialog.
+ if ((selection != null) && !selection.isEmpty()) {
+ // Get the resource...
+ final Object selectedElement = selection.iterator().next();
+ if (selectedElement instanceof IResource) {
+ // Get the resource parent, if its a file.
+ getResourceParent(selectedElement);
+ }
+ }
+ }
+
+ private void getResourceParent(final Object selectedElement) {
+ IResource selectedResource = (IResource) selectedElement;
+ if (selectedResource.getType() == IResource.FILE) {
+ selectedResource = selectedResource.getParent();
+ }
+
+ // This gives us a directory...
+ if ((selectedResource instanceof IFolder)
+ || (selectedResource instanceof IProject)) {
+ // Set this for the container.
+ setContainerFullPath(selectedResource.getFullPath());
+
+ // Make up a unique new name here.
+ final String modelFileExt = FILE_EXTENSION;
+ String modelFilename = MODEL_BASE + "." + modelFileExt; //$NON-NLS-1$
+ for (int i = 1; ((IContainer) selectedResource)
+ .findMember(modelFilename) != null; ++i) {
+ modelFilename = MODEL_BASE + i + "." + modelFileExt; //$NON-NLS-1$
+ }
+ setFileName(modelFilename);
+ }
+ }
+
+ @Override
+ protected boolean validatePage() {
+ boolean valid = super.validatePage();
+
+ if (valid) {
+ final String extension = new Path(getFileName()).getFileExtension();
+ if ((extension == null)
+ || !FILE_EXTENSION.equalsIgnoreCase(extension)) {
+ setErrorMessage(Messages.CreateCustomizationWizardImpl_File_extension_restriction);
+ valid = false;
+ }
+ final IPath containerFullPath = getContainerFullPath();
+// try {
+// if (!PluginUtils.isInPluginProject(containerFullPath)) {
+// setMessage(
+// Messages.CreateCustomizationWizardPage_Not_a_Plugin_project,
+// IMessageProvider.WARNING);
+// }
+// } catch (final CoreException e) {
+// Logger.logError(e, Activator.getDefault());
+// }
+ }
+
+ return valid;
+ }
+
+ public IFile getModelFile() {
+ return ResourcesPlugin.getWorkspace().getRoot()
+ .getFile(getContainerFullPath().append(getFileName()));
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/page/CustomPropertyWizardPage.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/page/CustomPropertyWizardPage.java
new file mode 100644
index 00000000000..15cdbca2d03
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/util/wizard/page/CustomPropertyWizardPage.java
@@ -0,0 +1,112 @@
+/**
+ * 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.custom.sdk.ui.internal.util.wizard.page;
+
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.wizard.page.ICustomizationPropertyWizardPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Wizard page to enter a NsURI, a prefix and an extended EPackage to a facetSet
+ */
+public class CustomPropertyWizardPage extends WizardPage implements
+ ICustomizationPropertyWizardPage {
+
+ private Text nsUriTextField;
+ private Text prefixTextField;
+
+ /**
+ * @param pageName
+ */
+ public CustomPropertyWizardPage(final String pageName) {
+ super(pageName);
+
+ setTitle(Messages.CreateCustomizationWizardImpl_customization_properties);
+ }
+
+ public void createControl(final Composite parent) {
+ final Composite nsURiContainer = new Composite(parent, SWT.NONE);
+ nsURiContainer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ nsURiContainer.setLayout(new GridLayout(2, false));
+ // NsURI
+ final Label nsUriLabel = new Label(nsURiContainer, SWT.NONE);
+ nsUriLabel.setText(Messages.Enter_a_nsUri);
+ this.nsUriTextField = new Text(nsURiContainer, SWT.BORDER | SWT.SINGLE);
+ this.nsUriTextField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ this.nsUriTextField.addListener(SWT.Modify, new Listener() {
+ public void handleEvent(final Event event) {
+ updateButtons();
+ }
+ });
+ // PREFIX
+ final Label prefixLabel = new Label(nsURiContainer, SWT.NONE);
+ prefixLabel.setText(Messages.Enter_a_prefix);
+ this.prefixTextField = new Text(nsURiContainer, SWT.BORDER | SWT.SINGLE);
+ this.prefixTextField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ this.prefixTextField.addListener(SWT.Modify, new Listener() {
+ public void handleEvent(final Event event) {
+ updateButtons();
+ }
+ });
+ setControl(nsURiContainer);
+ }
+
+ @Override
+ public boolean isPageComplete() {
+ boolean result = false;
+ if (this.nsUriTextField.getText().length() == 0) {
+ setErrorMessage(Messages.Please_enter_nsUri);
+ }
+ if (this.prefixTextField.getText().length() == 0) {
+ setErrorMessage(Messages.Please_enter_prefix);
+ }
+ if (super.isPageComplete()) {
+ setErrorMessage(null);
+ result = true;
+ } else {
+ setErrorMessage(Messages.Please_select_EPackage);
+ }
+ return result;
+ }
+
+ public String getNsUri() {
+ return this.nsUriTextField.getText();
+ }
+
+ public String getPrefix() {
+ return this.prefixTextField.getText();
+ }
+
+ protected void updateButtons() {
+ getContainer().updateButtons();
+ }
+
+ public void setNsUri(final String nsUri) {
+ this.nsUriTextField.setText(nsUri);
+ }
+
+ public void setPrefix(final String prefix) {
+ this.prefixTextField.setText(prefix);
+ }
+
+ public void setIsPageComplete(final boolean complete) {
+ this.setPageComplete(complete);
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/ImageCellEditor.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/ImageCellEditor.java
new file mode 100644
index 00000000000..9fcb9afb558
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/ImageCellEditor.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ * 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) - Bug 375388 - Cell editor for IImage
+ *******************************************************************************/
+package org.eclipse.emf.facet.custom.sdk.ui.internal.widgets.celleditors;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.facet.custom.metamodel.custompt.IImage;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.widgets.celleditors.composite.ImageComposite;
+import org.eclipse.emf.facet.custom.ui.ImageUtils;
+import org.eclipse.emf.facet.widgets.celleditors.IModelCellEditHandler;
+import org.eclipse.emf.facet.widgets.celleditors.IModelCellEditor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+/** A cell editor for displaying an {@link IImage} (read-only for now) */
+public class ImageCellEditor implements IModelCellEditor {
+
+ private IImage iimage;
+ private ImageComposite imageComposite;
+
+ protected Image getImage() {
+ return ImageUtils.unwrap(this.iimage);
+ }
+
+ public Control activateCell(final Composite parent, final Object originalValue,
+ final IModelCellEditHandler editHandler, final EStructuralFeature feature,
+ final EObject source) {
+
+ this.imageComposite = new ImageComposite(parent);
+
+ if (originalValue instanceof IImage) {
+ this.imageComposite.setValue((IImage) originalValue);
+ this.iimage = (IImage) originalValue;
+ }
+
+ return this.imageComposite;
+ }
+
+ public Object getValue() {
+ return this.iimage;
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/composite/ImageComposite.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/composite/ImageComposite.java
new file mode 100644
index 00000000000..2fe468708c0
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/composite/ImageComposite.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ * 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) - Bug 375388 - Cell editor for IImage
+ *******************************************************************************/
+package org.eclipse.emf.facet.custom.sdk.ui.internal.widgets.celleditors.composite;
+
+import org.eclipse.emf.facet.custom.metamodel.custompt.IImage;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.Messages;
+import org.eclipse.emf.facet.custom.ui.ImageUtils;
+import org.eclipse.emf.facet.widgets.celleditors.AbstractCellEditorComposite;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+
+/** A composite for displaying an {@link IImage} (read-only for now) */
+public class ImageComposite extends AbstractCellEditorComposite<IImage> {
+
+ private final Button compositeButton;
+ private final Canvas compositeCanvas;
+ private IImage valueImage;
+
+ protected Button getButton() {
+ return this.compositeButton;
+ }
+
+ public Canvas getCanvas() {
+ return this.compositeCanvas;
+ }
+
+ public ImageComposite(final Composite parent) {
+ super(parent);
+
+ final GridLayout layout = new GridLayout(2, false);
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ layout.horizontalSpacing = 0;
+ setLayout(layout);
+
+ this.compositeCanvas = createCanvas(this);
+ this.compositeButton = createButton(this);
+
+ // disposes the composite when the user clicks
+ final Listener disposeListener = new Listener() {
+ public void handleEvent(final Event event) {
+ if (event.widget instanceof Control) {
+ final Control control = (Control) event.widget;
+ if (control.getShell() == getParent().getShell() && event.widget != getButton() && event.widget != getCanvas()) {
+ ImageComposite.this.dispose();
+ Display.getDefault().removeFilter(SWT.MouseDown, this);
+ }
+ }
+ }
+ };
+ Display.getDefault().addFilter(SWT.MouseDown, disposeListener);
+ }
+
+ protected Canvas createCanvas(final Composite parent) {
+ final Canvas canvas = new Canvas(parent, SWT.NONE);
+ canvas.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ canvas.addPaintListener(new PaintListener() {
+ public void paintControl(final PaintEvent e) {
+ final Image img = getImage();
+ if (img != null && !img.isDisposed()) {
+ e.gc.drawImage(img, 0, 0);
+ }
+ }
+ });
+ return canvas;
+ }
+
+ protected Button createButton(final Composite parent) {
+ final Button button = new Button(parent, SWT.PUSH);
+ button.setText("+"); //$NON-NLS-1$
+ final GridData data = new GridData(SWT.FILL, SWT.FILL, false, true);
+ button.setLayoutData(data);
+
+ button.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ openShell();
+ }
+ });
+ return button;
+ }
+
+ protected void openShell() {
+ final Shell shell = new Shell();
+ shell.setText(Messages.ImageComposite_fullImage);
+ shell.setLayout(new GridLayout());
+ final Canvas shellCanvas = createCanvas(shell);
+ final GridData canvasData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ final Image img = getImage();
+ if (img != null && !img.isDisposed()) {
+ canvasData.widthHint = img.getBounds().width;
+ canvasData.heightHint = img.getBounds().height;
+ }
+ shellCanvas.setLayoutData(canvasData);
+ shell.pack();
+ shell.open();
+ }
+
+ protected Image getImage() {
+ return ImageUtils.unwrap(this.valueImage);
+ }
+
+ public IImage getValue() {
+ return this.valueImage;
+ }
+
+ public void setValue(final IImage value) {
+ this.valueImage = value;
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/composite/ImageCompositeFactory.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/composite/ImageCompositeFactory.java
new file mode 100644
index 00000000000..e4035c6e05d
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/widgets/celleditors/composite/ImageCompositeFactory.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ * 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) - Bug 375388 - Cell editor for IImage
+ *******************************************************************************/
+package org.eclipse.emf.facet.custom.sdk.ui.internal.widgets.celleditors.composite;
+
+import org.eclipse.emf.facet.custom.metamodel.custompt.IImage;
+import org.eclipse.emf.facet.widgets.celleditors.AbstractCellEditorComposite;
+import org.eclipse.emf.facet.widgets.celleditors.ICompositeEditorFactory;
+import org.eclipse.swt.widgets.Composite;
+
+/** Factory for {@link ImageComposite} */
+public class ImageCompositeFactory implements ICompositeEditorFactory<IImage> {
+
+ public AbstractCellEditorComposite<IImage> createCompositeEditor(final Composite parent, final int style) {
+ return new ImageComposite(parent);
+ }
+
+ public Class<IImage> getHandledType() {
+ return IImage.class;
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/wizard/page/ICreateCustomizationWizardPage.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/wizard/page/ICreateCustomizationWizardPage.java
new file mode 100644
index 00000000000..7e5fc03bd2a
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/wizard/page/ICreateCustomizationWizardPage.java
@@ -0,0 +1,31 @@
+/**
+ * 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.custom.sdk.ui.internal.wizard.page;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.facet.custom.sdk.ui.internal.util.wizard.page.CreateCustomizationWizardPage;
+import org.eclipse.jface.wizard.IWizardPage;
+
+/**
+ * Interface to expose the services of {@link CreateCustomizationWizardPage}.
+ *
+ * @see CreateCustomizationWizardPage
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ICreateCustomizationWizardPage extends IWizardPage {
+
+ /**
+ * @return the file where the model is created.
+ */
+ IFile getModelFile();
+}
diff --git a/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/wizard/page/ICustomizationPropertyWizardPage.java b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/wizard/page/ICustomizationPropertyWizardPage.java
new file mode 100644
index 00000000000..e06ba2dbe00
--- /dev/null
+++ b/plugins/facet/editor/org.eclipse.emf.facet.custom.sdk.ui/src/org/eclipse/emf/facet/custom/sdk/ui/internal/wizard/page/ICustomizationPropertyWizardPage.java
@@ -0,0 +1,50 @@
+/**
+ * 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.custom.sdk.ui.internal.wizard.page;
+
+import org.eclipse.jface.wizard.IWizardPage;
+
+/**
+ * Interface to expose the services of {@link CustomizationPropertyWizardPage}.
+ *
+ * @see CustomizationPropertyWizardPage
+ * @noextend This interface is not intended to be extended by clients.
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ICustomizationPropertyWizardPage extends IWizardPage {
+
+ /**
+ * @return the nsURI of the model.
+ */
+ String getNsUri();
+
+ /**
+ * Set the nsURI of the model.
+ *
+ * @param nsUri
+ * the new nsURI.
+ */
+ void setNsUri(String nsUri);
+
+ /**
+ * @return the prefix of the model.
+ */
+ String getPrefix();
+
+ /**
+ * Set the prefix of the model.
+ *
+ * @param prefix
+ * the new prefix.
+ */
+ void setPrefix(String prefix);
+}

Back to the top