Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf')
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/Activator.java104
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/ColorProvider.java132
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomActionBarContributor.java898
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomEditor.java4118
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomEditorPlugin.java218
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomModelWizard.java1286
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomViewer.java870
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/EMFUtil.java466
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/FormStyleSashForm.java284
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/ImageProvider.java1540
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/Messages.java244
-rw-r--r--plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/messages.properties194
12 files changed, 5177 insertions, 5177 deletions
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/Activator.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/Activator.java
index 587a2858988..230ec3cb7b1 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/Activator.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/Activator.java
@@ -1,53 +1,53 @@
-/*******************************************************************************
- * Copyright (c) 2010 Mia-Software.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nicolas Bros (Mia-Software) - initial API and implementation
- *******************************************************************************/
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/** The activator class controls the plug-in life cycle */
-public class Activator extends AbstractUIPlugin {
-
- /** The plug-in ID */
- public static final String PLUGIN_ID = "org.eclipse.papyrus.emf.facet.custom.metamodel.editor"; //$NON-NLS-1$
-
- /** The shared instance */
- private static Activator plugin;
-
- /**
- * The constructor
- */
- public Activator() {
- // nothing
- }
-
- @Override
- public void start(final BundleContext context) throws Exception {
- super.start(context);
- Activator.plugin = this;
- }
-
- @Override
- public void stop(final BundleContext context) throws Exception {
- Activator.plugin = null;
- super.stop(context);
- }
-
- /**
- * Returns the shared instance
- *
- * @return the shared instance
- */
- public static Activator getDefault() {
- return Activator.plugin;
- }
-
+/*******************************************************************************
+ * Copyright (c) 2010 Mia-Software.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nicolas Bros (Mia-Software) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/** The activator class controls the plug-in life cycle */
+public class Activator extends AbstractUIPlugin {
+
+ /** The plug-in ID */
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.emf.facet.custom.metamodel.editor"; //$NON-NLS-1$
+
+ /** The shared instance */
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ // nothing
+ }
+
+ @Override
+ public void start(final BundleContext context) throws Exception {
+ super.start(context);
+ Activator.plugin = this;
+ }
+
+ @Override
+ public void stop(final BundleContext context) throws Exception {
+ Activator.plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return Activator.plugin;
+ }
+
} \ No newline at end of file
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/ColorProvider.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/ColorProvider.java
index 11636c7a787..18d2af23ef4 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/ColorProvider.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/ColorProvider.java
@@ -1,66 +1,66 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 Mia-Software.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nicolas Bros (Mia-Software) - initial API and implementation
- *
- *******************************************************************************/
-
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-import org.eclipse.jface.resource.JFaceColors;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
-
-public final class ColorProvider {
-
- private static ColorProvider instance;
-
- public static ColorProvider getInstance() {
- if (ColorProvider.instance == null) {
- ColorProvider.instance = new ColorProvider();
- }
- return ColorProvider.instance;
- }
-
- /** The color used for elements that are empty or not used */
- private final Color gray;
- /** The color used for elements that are not part of the first resource */
- private final Color externalResourceColor;
- /** The color used for elements that are not in any resource */
- private final Color nullResourceColor;
-
- private ColorProvider() {
- final Display display = Display.getCurrent();
-
- final RGB rgbGray = new RGB(128, 128, 128);
- this.gray = new Color(display, rgbGray);
-
- final RGB rgbBlue = new RGB(0, 0, 255);
- this.externalResourceColor = new Color(display, rgbBlue);
-
- final RGB rgbDarkRed = new RGB(192, 0, 0);
- this.nullResourceColor = new Color(display, rgbDarkRed);
- }
-
- public Color getGray() {
- return this.gray;
- }
-
- public Color getExternalResourceColor() {
- return this.externalResourceColor;
- }
-
- public Color getNullResourceColor() {
- return this.nullResourceColor;
- }
-
- public Color getUnresolvedProxyColor() {
- return JFaceColors.getErrorText(Display.getCurrent());
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2009, 2010 Mia-Software.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nicolas Bros (Mia-Software) - initial API and implementation
+ *
+ *******************************************************************************/
+
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+import org.eclipse.jface.resource.JFaceColors;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Display;
+
+public final class ColorProvider {
+
+ private static ColorProvider instance;
+
+ public static ColorProvider getInstance() {
+ if (ColorProvider.instance == null) {
+ ColorProvider.instance = new ColorProvider();
+ }
+ return ColorProvider.instance;
+ }
+
+ /** The color used for elements that are empty or not used */
+ private final Color gray;
+ /** The color used for elements that are not part of the first resource */
+ private final Color externalResourceColor;
+ /** The color used for elements that are not in any resource */
+ private final Color nullResourceColor;
+
+ private ColorProvider() {
+ final Display display = Display.getCurrent();
+
+ final RGB rgbGray = new RGB(128, 128, 128);
+ this.gray = new Color(display, rgbGray);
+
+ final RGB rgbBlue = new RGB(0, 0, 255);
+ this.externalResourceColor = new Color(display, rgbBlue);
+
+ final RGB rgbDarkRed = new RGB(192, 0, 0);
+ this.nullResourceColor = new Color(display, rgbDarkRed);
+ }
+
+ public Color getGray() {
+ return this.gray;
+ }
+
+ public Color getExternalResourceColor() {
+ return this.externalResourceColor;
+ }
+
+ public Color getNullResourceColor() {
+ return this.nullResourceColor;
+ }
+
+ public Color getUnresolvedProxyColor() {
+ return JFaceColors.getErrorText(Display.getCurrent());
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomActionBarContributor.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomActionBarContributor.java
index 67096d088aa..1a5244b4c98 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomActionBarContributor.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomActionBarContributor.java
@@ -1,450 +1,450 @@
-/**
- * Copyright (c) 2011 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:
- * Gregoire Dupe (Mia-Software) - Bug 361794 - [Restructuring] New customization meta-model
- * Gregoire Dupe (Mia-Software) - Bug 369987 - [Restructuring][Table] Switch to the new customization and facet framework
- * Gregoire Dupe (Mia-Software) - Bug 373078 - API Cleaning
- */
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.emf.common.ui.viewer.IViewerProvider;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
-import org.eclipse.emf.edit.ui.action.ControlAction;
-import org.eclipse.emf.edit.ui.action.CreateChildAction;
-import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
-import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
-import org.eclipse.emf.edit.ui.action.LoadResourceAction;
-import org.eclipse.emf.edit.ui.action.ValidateAction;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.action.SubContributionItem;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PartInitException;
-
-/**
- * This is the action bar contributor for the Custom model editor.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
-public class CustomActionBarContributor
- extends EditingDomainActionBarContributor
- implements ISelectionChangedListener {
- /**
- * This keeps track of the active editor.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected IEditorPart activeEditorPart;
-
- /**
- * This keeps track of the current selection provider.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected ISelectionProvider selectionProvider;
-
- /**
- * This action opens the Properties view.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected IAction showPropertiesViewAction =
- new Action(CustomEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
- @Override
- public void run() {
- try {
- getPage().showView("org.eclipse.ui.views.PropertySheet");
- }
- catch (PartInitException exception) {
- CustomEditorPlugin.INSTANCE.log(exception);
- }
- }
- };
-
- /**
- * This action refreshes the viewer of the current editor if the editor
- * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected IAction refreshViewerAction =
- new Action(CustomEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
- @Override
- public boolean isEnabled() {
- return activeEditorPart instanceof IViewerProvider;
- }
-
- @Override
- public void run() {
- if (activeEditorPart instanceof IViewerProvider) {
- Viewer viewer = ((IViewerProvider) activeEditorPart).getViewer();
- if (viewer != null) {
- viewer.refresh();
- }
- }
- }
- };
-
- /**
- * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
- * generated for the current selection by the item provider.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Collection<IAction> createChildActions;
-
- /**
- * This is the menu manager into which menu contribution items should be added for CreateChild actions.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected IMenuManager createChildMenuManager;
-
- /**
- * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
- * generated for the current selection by the item provider.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Collection<IAction> createSiblingActions;
-
- /**
- * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected IMenuManager createSiblingMenuManager;
-
- /**
- * This creates an instance of the contributor.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public CustomActionBarContributor() {
- super(ADDITIONS_LAST_STYLE);
- loadResourceAction = new LoadResourceAction();
- validateAction = new ValidateAction();
- controlAction = new ControlAction();
- }
-
- /**
- * This adds Separators for editor additions to the tool bar.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- public void contributeToToolBar(IToolBarManager toolBarManager) {
- toolBarManager.add(new Separator("custom-settings"));
- toolBarManager.add(new Separator("custom-additions"));
- }
-
- /**
- * This adds to the menu bar a menu and some separators for editor additions,
- * as well as the sub-menus for object creation items.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- public void contributeToMenu(IMenuManager menuManager) {
- super.contributeToMenu(menuManager);
-
- IMenuManager submenuManager = new MenuManager(CustomEditorPlugin.INSTANCE.getString("_UI_CustomEditor_menu"), "org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.customMenuID");
- menuManager.insertAfter("additions", submenuManager);
- submenuManager.add(new Separator("settings"));
- submenuManager.add(new Separator("actions"));
- submenuManager.add(new Separator("additions"));
- submenuManager.add(new Separator("additions-end"));
-
- // Prepare for CreateChild item addition or removal.
- //
- createChildMenuManager = new MenuManager(CustomEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
- submenuManager.insertBefore("additions", createChildMenuManager);
-
- // Prepare for CreateSibling item addition or removal.
- //
- createSiblingMenuManager = new MenuManager(CustomEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
- submenuManager.insertBefore("additions", createSiblingMenuManager);
-
- // Force an update because Eclipse hides empty menus now.
- //
- submenuManager.addMenuListener
- (new IMenuListener() {
- public void menuAboutToShow(IMenuManager menuManager) {
- menuManager.updateAll(true);
- }
- });
-
- addGlobalActions(submenuManager);
- }
-
- /**
- * When the active editor changes, this remembers the change and registers with it as a selection provider.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- // @Override
- // public void setActiveEditor(IEditorPart part) {
- // super.setActiveEditor(part);
- // activeEditorPart = part;
- //
- // // Switch to the new selection provider.
- // //
- // if (selectionProvider != null) {
- // selectionProvider.removeSelectionChangedListener(this);
- // }
- // if (part == null) {
- // selectionProvider = null;
- // }
- // else {
- // selectionProvider = part.getSite().getSelectionProvider();
- // selectionProvider.addSelectionChangedListener(this);
- //
- // // Fake a selection changed event to update the menus.
- // //
- // if (selectionProvider.getSelection() != null) {
- // selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
- // }
- // }
- // }
-
- /**
- * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
- * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
- * that can be added to the selected object and updating the menus accordingly.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void selectionChanged(SelectionChangedEvent event) {
- // Remove any menu items for old selection.
- //
- if (createChildMenuManager != null) {
- depopulateManager(createChildMenuManager, createChildActions);
- }
- if (createSiblingMenuManager != null) {
- depopulateManager(createSiblingMenuManager, createSiblingActions);
- }
-
- // Query the new selection for appropriate new child/sibling descriptors
- //
- Collection<?> newChildDescriptors = null;
- Collection<?> newSiblingDescriptors = null;
-
- ISelection selection = event.getSelection();
- if (selection instanceof IStructuredSelection && ((IStructuredSelection) selection).size() == 1) {
- Object object = ((IStructuredSelection) selection).getFirstElement();
-
- EditingDomain domain = ((IEditingDomainProvider) activeEditorPart).getEditingDomain();
-
- newChildDescriptors = domain.getNewChildDescriptors(object, null);
- newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
- }
-
- // Generate actions for selection; populate and redraw the menus.
- //
- createChildActions = generateCreateChildActions(newChildDescriptors, selection);
- createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
-
- if (createChildMenuManager != null) {
- populateManager(createChildMenuManager, createChildActions, null);
- createChildMenuManager.update(true);
- }
- if (createSiblingMenuManager != null) {
- populateManager(createSiblingMenuManager, createSiblingActions, null);
- createSiblingMenuManager.update(true);
- }
- }
-
- /**
- * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
- * and returns the collection of these actions.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
- Collection<IAction> actions = new ArrayList<IAction>();
- if (descriptors != null) {
- for (Object descriptor : descriptors) {
- actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
- }
- }
- return actions;
- }
-
- /**
- * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
- * and returns the collection of these actions.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
- Collection<IAction> actions = new ArrayList<IAction>();
- if (descriptors != null) {
- for (Object descriptor : descriptors) {
- actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
- }
- }
- return actions;
- }
-
- /**
- * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
- * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
- * by inserting them before the specified contribution item <code>contributionID</code>.
- * If <code>contributionID</code> is <code>null</code>, they are simply added.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
- if (actions != null) {
- for (IAction action : actions) {
- if (contributionID != null) {
- manager.insertBefore(contributionID, action);
- }
- else {
- manager.add(action);
- }
- }
- }
- }
-
- /**
- * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
- * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
- if (actions != null) {
- IContributionItem[] items = manager.getItems();
- for (int i = 0; i < items.length; i++) {
- // Look into SubContributionItems
- //
- IContributionItem contributionItem = items[i];
- while (contributionItem instanceof SubContributionItem) {
- contributionItem = ((SubContributionItem) contributionItem).getInnerItem();
- }
-
- // Delete the ActionContributionItems with matching action.
- //
- if (contributionItem instanceof ActionContributionItem) {
- IAction action = ((ActionContributionItem) contributionItem).getAction();
- if (actions.contains(action)) {
- manager.remove(contributionItem);
- }
- }
- }
- }
- }
-
- /**
- * This populates the pop-up menu before it appears.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- public void menuAboutToShow(IMenuManager menuManager) {
- super.menuAboutToShow(menuManager);
- MenuManager submenuManager = null;
-
- submenuManager = new MenuManager(CustomEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
- populateManager(submenuManager, createChildActions, null);
- menuManager.insertBefore("edit", submenuManager);
-
- submenuManager = new MenuManager(CustomEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
- populateManager(submenuManager, createSiblingActions, null);
- menuManager.insertBefore("edit", submenuManager);
- }
-
- /**
- * This inserts global actions before the "additions-end" separator.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- protected void addGlobalActions(IMenuManager menuManager) {
- menuManager.insertAfter("additions-end", new Separator("ui-actions"));
- menuManager.insertAfter("ui-actions", showPropertiesViewAction);
-
- refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
- menuManager.insertAfter("ui-actions", refreshViewerAction);
-
- super.addGlobalActions(menuManager);
- }
-
- /**
- * This ensures that a delete action will clean up all references to deleted objects.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- protected boolean removeAllReferencesOnDelete() {
- return true;
- }
-
+/**
+ * Copyright (c) 2011 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:
+ * Gregoire Dupe (Mia-Software) - Bug 361794 - [Restructuring] New customization meta-model
+ * Gregoire Dupe (Mia-Software) - Bug 369987 - [Restructuring][Table] Switch to the new customization and facet framework
+ * Gregoire Dupe (Mia-Software) - Bug 373078 - API Cleaning
+ */
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Custom model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CustomActionBarContributor
+ extends EditingDomainActionBarContributor
+ implements ISelectionChangedListener {
+ /**
+ * This keeps track of the active editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IEditorPart activeEditorPart;
+
+ /**
+ * This keeps track of the current selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ISelectionProvider selectionProvider;
+
+ /**
+ * This action opens the Properties view.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IAction showPropertiesViewAction =
+ new Action(CustomEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+ @Override
+ public void run() {
+ try {
+ getPage().showView("org.eclipse.ui.views.PropertySheet");
+ }
+ catch (PartInitException exception) {
+ CustomEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ /**
+ * This action refreshes the viewer of the current editor if the editor
+ * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IAction refreshViewerAction =
+ new Action(CustomEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+ @Override
+ public boolean isEnabled() {
+ return activeEditorPart instanceof IViewerProvider;
+ }
+
+ @Override
+ public void run() {
+ if (activeEditorPart instanceof IViewerProvider) {
+ Viewer viewer = ((IViewerProvider) activeEditorPart).getViewer();
+ if (viewer != null) {
+ viewer.refresh();
+ }
+ }
+ }
+ };
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<IAction> createChildActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IMenuManager createChildMenuManager;
+
+ /**
+ * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+ * generated for the current selection by the item provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<IAction> createSiblingActions;
+
+ /**
+ * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IMenuManager createSiblingMenuManager;
+
+ /**
+ * This creates an instance of the contributor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public CustomActionBarContributor() {
+ super(ADDITIONS_LAST_STYLE);
+ loadResourceAction = new LoadResourceAction();
+ validateAction = new ValidateAction();
+ controlAction = new ControlAction();
+ }
+
+ /**
+ * This adds Separators for editor additions to the tool bar.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void contributeToToolBar(IToolBarManager toolBarManager) {
+ toolBarManager.add(new Separator("custom-settings"));
+ toolBarManager.add(new Separator("custom-additions"));
+ }
+
+ /**
+ * This adds to the menu bar a menu and some separators for editor additions,
+ * as well as the sub-menus for object creation items.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void contributeToMenu(IMenuManager menuManager) {
+ super.contributeToMenu(menuManager);
+
+ IMenuManager submenuManager = new MenuManager(CustomEditorPlugin.INSTANCE.getString("_UI_CustomEditor_menu"), "org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.customMenuID");
+ menuManager.insertAfter("additions", submenuManager);
+ submenuManager.add(new Separator("settings"));
+ submenuManager.add(new Separator("actions"));
+ submenuManager.add(new Separator("additions"));
+ submenuManager.add(new Separator("additions-end"));
+
+ // Prepare for CreateChild item addition or removal.
+ //
+ createChildMenuManager = new MenuManager(CustomEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ submenuManager.insertBefore("additions", createChildMenuManager);
+
+ // Prepare for CreateSibling item addition or removal.
+ //
+ createSiblingMenuManager = new MenuManager(CustomEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+ // Force an update because Eclipse hides empty menus now.
+ //
+ submenuManager.addMenuListener
+ (new IMenuListener() {
+ public void menuAboutToShow(IMenuManager menuManager) {
+ menuManager.updateAll(true);
+ }
+ });
+
+ addGlobalActions(submenuManager);
+ }
+
+ /**
+ * When the active editor changes, this remembers the change and registers with it as a selection provider.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ // @Override
+ // public void setActiveEditor(IEditorPart part) {
+ // super.setActiveEditor(part);
+ // activeEditorPart = part;
+ //
+ // // Switch to the new selection provider.
+ // //
+ // if (selectionProvider != null) {
+ // selectionProvider.removeSelectionChangedListener(this);
+ // }
+ // if (part == null) {
+ // selectionProvider = null;
+ // }
+ // else {
+ // selectionProvider = part.getSite().getSelectionProvider();
+ // selectionProvider.addSelectionChangedListener(this);
+ //
+ // // Fake a selection changed event to update the menus.
+ // //
+ // if (selectionProvider.getSelection() != null) {
+ // selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+ // }
+ // }
+ // }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+ * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+ * that can be added to the selected object and updating the menus accordingly.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void selectionChanged(SelectionChangedEvent event) {
+ // Remove any menu items for old selection.
+ //
+ if (createChildMenuManager != null) {
+ depopulateManager(createChildMenuManager, createChildActions);
+ }
+ if (createSiblingMenuManager != null) {
+ depopulateManager(createSiblingMenuManager, createSiblingActions);
+ }
+
+ // Query the new selection for appropriate new child/sibling descriptors
+ //
+ Collection<?> newChildDescriptors = null;
+ Collection<?> newSiblingDescriptors = null;
+
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection && ((IStructuredSelection) selection).size() == 1) {
+ Object object = ((IStructuredSelection) selection).getFirstElement();
+
+ EditingDomain domain = ((IEditingDomainProvider) activeEditorPart).getEditingDomain();
+
+ newChildDescriptors = domain.getNewChildDescriptors(object, null);
+ newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+ }
+
+ // Generate actions for selection; populate and redraw the menus.
+ //
+ createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+ createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+ if (createChildMenuManager != null) {
+ populateManager(createChildMenuManager, createChildActions, null);
+ createChildMenuManager.update(true);
+ }
+ if (createSiblingMenuManager != null) {
+ populateManager(createSiblingMenuManager, createSiblingActions, null);
+ createSiblingMenuManager.update(true);
+ }
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+ * and returns the collection of these actions.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+ Collection<IAction> actions = new ArrayList<IAction>();
+ if (descriptors != null) {
+ for (Object descriptor : descriptors) {
+ actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+ }
+ }
+ return actions;
+ }
+
+ /**
+ * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+ * by inserting them before the specified contribution item <code>contributionID</code>.
+ * If <code>contributionID</code> is <code>null</code>, they are simply added.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+ if (actions != null) {
+ for (IAction action : actions) {
+ if (contributionID != null) {
+ manager.insertBefore(contributionID, action);
+ }
+ else {
+ manager.add(action);
+ }
+ }
+ }
+ }
+
+ /**
+ * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+ * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+ if (actions != null) {
+ IContributionItem[] items = manager.getItems();
+ for (int i = 0; i < items.length; i++) {
+ // Look into SubContributionItems
+ //
+ IContributionItem contributionItem = items[i];
+ while (contributionItem instanceof SubContributionItem) {
+ contributionItem = ((SubContributionItem) contributionItem).getInnerItem();
+ }
+
+ // Delete the ActionContributionItems with matching action.
+ //
+ if (contributionItem instanceof ActionContributionItem) {
+ IAction action = ((ActionContributionItem) contributionItem).getAction();
+ if (actions.contains(action)) {
+ manager.remove(contributionItem);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This populates the pop-up menu before it appears.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void menuAboutToShow(IMenuManager menuManager) {
+ super.menuAboutToShow(menuManager);
+ MenuManager submenuManager = null;
+
+ submenuManager = new MenuManager(CustomEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+ populateManager(submenuManager, createChildActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+
+ submenuManager = new MenuManager(CustomEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+ populateManager(submenuManager, createSiblingActions, null);
+ menuManager.insertBefore("edit", submenuManager);
+ }
+
+ /**
+ * This inserts global actions before the "additions-end" separator.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected void addGlobalActions(IMenuManager menuManager) {
+ menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+ menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+ refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+ menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+ super.addGlobalActions(menuManager);
+ }
+
+ /**
+ * This ensures that a delete action will clean up all references to deleted objects.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected boolean removeAllReferencesOnDelete() {
+ return true;
+ }
+
} \ No newline at end of file
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomEditor.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomEditor.java
index 4453eb5a6ad..51dc381d8a9 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomEditor.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomEditor.java
@@ -1,2059 +1,2059 @@
-/**
- * Copyright (c) 2011 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:
- * Gregoire Dupe (Mia-Software) - Bug 361794 - [Restructuring] New customization meta-model
- * Gregoire Dupe (Mia-Software) - Bug 369987 - [Restructuring][Table] Switch to the new customization and facet framework
- * Gregoire Dupe (Mia-Software) - Bug 373078 - API Cleaning
- */
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EventObject;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.emf.common.command.BasicCommandStack;
-import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.common.command.CommandStack;
-import org.eclipse.emf.common.command.CommandStackListener;
-import org.eclipse.emf.common.ui.MarkerHelper;
-import org.eclipse.emf.common.ui.URIEditorInput;
-import org.eclipse.emf.common.ui.ViewerPane;
-import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
-import org.eclipse.emf.common.ui.viewer.IViewerProvider;
-import org.eclipse.emf.common.util.BasicDiagnostic;
-import org.eclipse.emf.common.util.Diagnostic;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EParameter;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EValidator;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.ecore.xmi.XMIResource;
-import org.eclipse.emf.ecore.xmi.impl.URIHandlerImpl;
-import org.eclipse.emf.edit.command.MoveCommand;
-import org.eclipse.emf.edit.command.RemoveCommand;
-import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
-import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
-import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
-import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
-import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
-import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
-import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
-import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
-import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
-import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
-import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
-import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.TreeSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
-import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.EClassCustomization;
-import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.FacetCustomization;
-import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.provider.CustomItemProviderAdapterFactory;
-import org.eclipse.papyrus.emf.facet.custom.sdk.ui.dialog.ICustomizationDialogFactory;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.DerivedTypedElement;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.EFacetPackage;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetAttribute;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetElement;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetReference;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.extensible.provider.ExtensibleItemProviderAdapterFactory;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.provider.EFacetItemProviderAdapterFactory;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.provider.QueryItemProviderAdapterFactory;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.runtime.provider.RuntimeItemProviderAdapterFactory;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.serialization.provider.SerializationItemProviderAdapterFactory;
-import org.eclipse.papyrus.emf.facet.efacet.sdk.ui.dialog.IFacetDialogFactory;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-import org.eclipse.ui.dialogs.SaveAsDialog;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import org.eclipse.ui.forms.widgets.Form;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.ide.IGotoMarker;
-import org.eclipse.ui.part.EditorPart;
-import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.views.contentoutline.ContentOutline;
-import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
-import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
-import org.eclipse.ui.views.properties.IPropertySheetPage;
-import org.eclipse.ui.views.properties.PropertySheet;
-import org.eclipse.ui.views.properties.PropertySheetPage;
-
-
-/**
- * This is an example of a Custom model editor.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
-public class CustomEditor
- extends EditorPart
- implements IGotoMarker, ISelectionProvider, IMenuListener, IEditingDomainProvider, IViewerProvider {
-
- protected Customization mainCustomization;
-
- protected ComposedAdapterFactory adapterFactory;
-
- protected CustomViewer customizationViewer;
-
- /**
- * Resources that have been changed since last activation.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Collection<Resource> changedResources = new ArrayList<Resource>();
-
- /**
- * Resources that have been saved.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Collection<Resource> savedResources = new ArrayList<Resource>();
-
- /**
- * Resources that have been removed since last activation.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Collection<Resource> removedResources = new ArrayList<Resource>();
-
- /**
- * This keeps track of the selection of the editor as a whole.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected ISelection editorSelection = StructuredSelection.EMPTY;
-
- /**
- * This listens to which ever viewer is active.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected ISelectionChangedListener selectionChangedListener;
-
- /**
- * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
-
- /**
- * Controls whether the problem indication should be updated.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected boolean updateProblemIndication = true;
-
- /**
- * This is the content outline page's viewer.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected TreeViewer contentOutlineViewer;
-
- /**
- * This is a kludge...
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected IStatusLineManager contentOutlineStatusLineManager;
-
- /**
- * Map to store the diagnostic associated with a resource.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
-
- /**
- * The MarkerHelper is responsible for creating workspace resource markers presented
- * in Eclipse's Problems View.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected MarkerHelper markerHelper = new EditUIMarkerHelper();
-
- /**
- * This is the property sheet page.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected PropertySheetPage propertySheetPage;
-
- /**
- * This is the content outline page.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected IContentOutlinePage contentOutlinePage;
-
- protected Composite buttonsPaneComposite;
-
- private static final int VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS = 30;
- private static final int VERTICAL_SPACE_BEFORE_FIRST_BUTTON = 10;
- public static final String ID = "org.eclipse.papyrus.emf.facet.infra.browser.custom.editor"; //$NON-NLS-1$
- private static final int MAIN_FORM_MARGIN_WIDTH = 4;
- private static final int MAIN_FORM_MARGIN_HEIGHT = 6;
- private static final int LEFT_PANE_SASH_WEIGHT = 400;
- private static final int RIGHT_PANE_SASH_WEIGHT = 600;
-
- private TreeViewer selectionViewer;
- private Button btnEdit;
- private Button btnRemove;
- private Button btnUp;
- private Button btnDown;
- private Button cbAppliesToSubinstances;
- private FormToolkit toolkit;
- private boolean readOnly;
-
- protected int listenerCounter = 0;
-
- private Form fForm;
- private AdapterFactoryEditingDomain editingDomain;
-
- public CustomEditor() {
- super();
- initializeEditingDomain();
- }
-
- /**
- * This sets up the editing domain for the model editor.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected void initializeEditingDomain() {
- // Create an adapter factory that yields item providers.
- //
- adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
-
- adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
- adapterFactory.addAdapterFactory(new CustomItemProviderAdapterFactory());
- adapterFactory.addAdapterFactory(new EFacetItemProviderAdapterFactory());
- adapterFactory.addAdapterFactory(new SerializationItemProviderAdapterFactory());
- adapterFactory.addAdapterFactory(new ExtensibleItemProviderAdapterFactory());
- adapterFactory.addAdapterFactory(new QueryItemProviderAdapterFactory());
- adapterFactory.addAdapterFactory(new RuntimeItemProviderAdapterFactory());
- adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
-
- // Create the command stack that will notify this editor as commands are executed.
- //
- BasicCommandStack commandStack = new BasicCommandStack();
-
- // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
- //
- commandStack.addCommandStackListener
- (new CommandStackListener() {
- public void commandStackChanged(final EventObject event) {
- getSite().getShell().getDisplay().asyncExec
- (new Runnable() {
- public void run() {
- firePropertyChange(IEditorPart.PROP_DIRTY);
- // setDirty(commandStack.isSaveNeeded());
- // Try to select the affected objects.
- //
- Command mostRecentCommand = ((CommandStack) event.getSource()).getMostRecentCommand();
- if (mostRecentCommand != null) {
- setSelectionToViewer(mostRecentCommand.getAffectedObjects());
- }
- if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
- propertySheetPage.refresh();
- }
- }
- });
- }
- });
-
- // Create the editing domain with a special command stack.
- //
- editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
- }
-
- @Override
- public void init(final IEditorSite site, final IEditorInput input) throws PartInitException {
- setSite(site);
- setInputWithNotify(input);
- setPartName(input.getName());
- site.setSelectionProvider(this);
- site.getPage().addPartListener(partListener);
- ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
- }
-
- /**
- * This sets the selection into whichever viewer is active.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void setSelectionToViewer(Collection<?> collection) {
- final Collection<?> theSelection = collection;
- // Make sure it's okay.
- //
- if (theSelection != null && !theSelection.isEmpty()) {
- Runnable runnable =
- new Runnable() {
- public void run() {
- // Try to select the items in the current content viewer of the editor.
- //
- if (selectionViewer != null) {
- selectionViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
- }
- }
- };
- getSite().getShell().getDisplay().asyncExec(runnable);
- }
- }
-
- @Override
- public void createPartControl(final Composite parent) {
- java.net.URI locationURI;
- String fileName = ""; //$NON-NLS-1$
- final IEditorInput editorInput = getEditorInput();
- if (editorInput instanceof IFileEditorInput) {
- final IFileEditorInput fileEditorInput = (IFileEditorInput) editorInput;
- try {
- if (fileEditorInput.getFile().exists()) {
- locationURI = new java.net.URI(URI.createPlatformResourceURI(
- fileEditorInput.getFile().getFullPath().toString(), true).toString());
- } else {
- locationURI = fileEditorInput.getFile().getLocationURI();
- }
- } catch (URISyntaxException e) {
- locationURI = fileEditorInput.getFile().getLocationURI();
- }
- fileName = fileEditorInput.getFile().getName();
- } else if (editorInput instanceof URIEditorInput) {
- final URIEditorInput uriEditorInput = (URIEditorInput) editorInput;
- try {
- locationURI = new java.net.URI(uriEditorInput.getURI().toString());
- } catch (final URISyntaxException e) {
- throw new IllegalArgumentException(e);
- }
- fileName = new Path(locationURI.getPath()).lastSegment();
- } else {
- throw new IllegalStateException("wrong kind of input: " //$NON-NLS-1$
- + editorInput.getClass().getName());
- }
-
- loadResource(org.eclipse.emf.common.util.URI.createURI(locationURI.toString()));
- setPartName(fileName);
-
- createContents(parent);
-
- this.selectionViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(final SelectionChangedEvent event) {
- if (listenerCounter == 0) {
- ISelection eventSelection = event.getSelection();
- setSelection(eventSelection);
- final ITreeSelection selection = (ITreeSelection) CustomEditor.this.selectionViewer
- .getSelection();
- listenerCounter++;
- CustomEditor.this.handleSelectionViewerSelectionChanged(selection.getFirstElement());
- listenerCounter = 0;
- CustomEditor.this.customizationViewer.getViewer().getControl()
- .setRedraw(false);
- CustomEditor.this.customizationViewer.getViewer().expandAll();
- CustomEditor.this.customizationViewer.getViewer().getControl()
- .setRedraw(true);
- } else {
- listenerCounter = 0;
- }
- }
- });
-
- setSelection(selectionViewer == null ? StructuredSelection.EMPTY : selectionViewer.getSelection());
- }
-
- public void loadResource(URI resourceURI) {
- Exception exception = null;
- Resource resource = null;
- try {
- // Load the resource through the editing domain.
- //
- resource = editingDomain.getResourceSet().getResource(resourceURI, true);
- } catch (Exception e) {
- exception = e;
- resource = editingDomain.getResourceSet().getResource(resourceURI, false);
- }
- if (resource instanceof XMIResource) {
- ((XMIResource)resource).getDefaultSaveOptions().put(XMIResource.OPTION_URI_HANDLER, new URIHandlerImpl.PlatformSchemeAware());
- }
- this.mainCustomization = (Customization) resource.getContents().get(0);
- }
-
- private void createContents(final Composite parent) {
- this.toolkit = new FormToolkit(parent.getDisplay());
- this.fForm = this.toolkit.createForm(parent);
- this.toolkit.decorateFormHeading(this.fForm);
-
- final FillLayout fillLayout = new FillLayout();
- fillLayout.marginWidth = CustomEditor.MAIN_FORM_MARGIN_WIDTH;
- fillLayout.marginHeight = CustomEditor.MAIN_FORM_MARGIN_HEIGHT;
- this.fForm.getBody().setLayout(fillLayout);
- createBottomPane(this.fForm.getBody());
- }
-
- protected IResourceChangeListener resourceChangeListener =
- new IResourceChangeListener() {
-
- public void resourceChanged(IResourceChangeEvent event) {
- IResourceDelta delta = event.getDelta();
- try {
- class ResourceDeltaVisitor implements IResourceDeltaVisitor {
- protected ResourceSet resourceSet = editingDomain.getResourceSet();
- protected Collection<Resource> changedResources = new ArrayList<Resource>();
- protected Collection<Resource> removedResources = new ArrayList<Resource>();
-
- public boolean visit(IResourceDelta delta) {
- if (delta.getResource().getType() == IResource.FILE) {
- if (delta.getKind() == IResourceDelta.REMOVED ||
- delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
- Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
- if (resource != null) {
- if (delta.getKind() == IResourceDelta.REMOVED) {
- removedResources.add(resource);
- }
- else if (!savedResources.remove(resource)) {
- changedResources.add(resource);
- }
- }
- }
- }
-
- return true;
- }
-
- public Collection<Resource> getChangedResources() {
- return changedResources;
- }
-
- public Collection<Resource> getRemovedResources() {
- return removedResources;
- }
- }
-
- final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
- delta.accept(visitor);
-
- if (!visitor.getRemovedResources().isEmpty()) {
- getSite().getShell().getDisplay().asyncExec
- (new Runnable() {
- public void run() {
- removedResources.addAll(visitor.getRemovedResources());
- if (!isDirty()) {
- getSite().getPage().closeEditor(CustomEditor.this, false);
- }
- }
- });
- }
-
- if (!visitor.getChangedResources().isEmpty()) {
- getSite().getShell().getDisplay().asyncExec
- (new Runnable() {
- public void run() {
- changedResources.addAll(visitor.getChangedResources());
- if (getSite().getPage().getActiveEditor() == CustomEditor.this) {
- handleActivate();
- }
- }
- });
- }
- }
- catch (CoreException exception) {
- CustomEditorPlugin.INSTANCE.log(exception);
- }
- }
- };
-
- private Composite rightPaneComposite;
-
- private Composite createBottomPane(final Composite parent) {
- final SashForm sashForm = new FormStyleSashForm(parent, SWT.HORIZONTAL, this.toolkit) {
- @Override
- protected void createContents() {
- createLeftPane(this);
- createRightPane(this);
- }
- };
-
- sashForm.setWeights(new int[] { CustomEditor.LEFT_PANE_SASH_WEIGHT,
- CustomEditor.RIGHT_PANE_SASH_WEIGHT
- });
- sashForm.setSashWidth(5);
-
- return sashForm;
- }
-
- private void createLeftPane(final Composite parent) {
-
- ViewerPane viewerPane =
- new ViewerPane(getSite().getPage(), CustomEditor.this) {
- @Override
- public Viewer createViewer(Composite composite) {
- Tree tree = new Tree(composite, SWT.MULTI);
- TreeViewer newTreeViewer = new TreeViewer(tree);
- return newTreeViewer;
- }
- };
- viewerPane.createControl(parent);
-
- selectionViewer = (TreeViewer) viewerPane.getViewer();
- selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
-
- selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
- selectionViewer.setInput(editingDomain.getResourceSet());
- selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
- viewerPane.setTitle(editingDomain.getResourceSet());
-
- new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
-
- createContextMenuFor(selectionViewer);
- }
-
- /** Right pane : treeviewer + fixed buttons pane */
-
- private Composite createRightPane(final Composite parent) {
- final Section section = this.toolkit.createSection(parent, ExpandableComposite.TITLE_BAR
- | ExpandableComposite.EXPANDED);
-
- this.rightPaneComposite = this.toolkit.createComposite(section, SWT.NONE);
- section.setClient(rightPaneComposite);
-
- final GridLayout gridLayout = new GridLayout(2, false);
- gridLayout.marginHeight = 0;
- gridLayout.marginWidth = 0;
- rightPaneComposite.setLayout(gridLayout);
-
- // tree + bottom options
- final Composite middle = new Composite(rightPaneComposite, SWT.NONE);
- final GridLayout middleLayout = new GridLayout();
- middleLayout.marginHeight = 0;
- middleLayout.marginWidth = 0;
- middle.setLayout(middleLayout);
- middle.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- this.customizationViewer = new CustomViewer(middle);
- this.customizationViewer.getViewer().getControl()
- .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- final Composite optionsPane = this.toolkit.createComposite(middle);
- optionsPane.setLayout(new GridLayout());
- optionsPane.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- this.customizationViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(final SelectionChangedEvent event) {
- if (listenerCounter == 0) {
- ISelection eventSelection = event.getSelection();
- setSelection(eventSelection);
- final ITreeSelection selection = (ITreeSelection) CustomEditor.this.customizationViewer
- .getSelection();
- CustomEditor.this.handleCustomzizationViewerSelectionChanged(selection.getFirstElement());
- listenerCounter++;
- } else {
- listenerCounter = 0;
- }
- }
- });
-
- if (this.readOnly) {
- this.cbAppliesToSubinstances.setEnabled(false);
- }
-
- final GridData customizationViewerGridData = new GridData();
- customizationViewerGridData.grabExcessHorizontalSpace = true;
- customizationViewerGridData.grabExcessVerticalSpace = true;
- customizationViewerGridData.horizontalAlignment = SWT.FILL;
- customizationViewerGridData.verticalAlignment = SWT.FILL;
- this.customizationViewer.getViewer().getControl()
- .setLayoutData(customizationViewerGridData);
-
- if (!this.readOnly) {
- createButtonsPane(rightPaneComposite);
- }
-
-
- return rightPaneComposite;
- }
-
- private void setInputInCustomizationTreeviewer(Facet facet) {
- List<DerivedTypedElement> inputs = new ArrayList<DerivedTypedElement>();
- inputs.addAll(facet.getFacetOperations());
- EList<EStructuralFeature> facetElements = facet.getFacetElements();
- for (EStructuralFeature eStructuralFeature : facetElements) {
- if (eStructuralFeature instanceof DerivedTypedElement) {
- inputs.add((DerivedTypedElement) eStructuralFeature);
- }
- }
- this.customizationViewer.setInput(inputs);
- }
-
- private void handleSelectionViewerSelectionChanged(final Object selectedElement) {
- if (selectedElement instanceof EClassCustomization || selectedElement instanceof FacetCustomization) {
- final Facet facet = (Facet) selectedElement;
-
-
- setInputInCustomizationTreeviewer(facet);
- buttonsPaneComposite.dispose();
- createButtonsPaneWhenFacetIsSelected(rightPaneComposite);
- rightPaneComposite.layout();
- } else if (selectedElement instanceof Customization) {
- buttonsPaneComposite.dispose();
- createButtonsPaneWhenCustomizationIsSelected(rightPaneComposite);
- rightPaneComposite.layout();
- }
- else if (selectedElement instanceof DerivedTypedElement) {
- buttonsPaneComposite.dispose();
- createButtonsPaneWhenDerivedIsSelected(rightPaneComposite);
- rightPaneComposite.layout();
-
-
- // Update customViewer input
- DerivedTypedElement derivedTypeElement = (DerivedTypedElement) selectedElement;
- Facet facet = (Facet) derivedTypeElement.eContainer();
- List<DerivedTypedElement> inputs = new ArrayList<DerivedTypedElement>();
- inputs.addAll(facet.getFacetOperations());
- EList<EStructuralFeature> facetElements = facet.getFacetElements();
- for (EStructuralFeature eStructuralFeature : facetElements) {
- if (eStructuralFeature instanceof DerivedTypedElement) {
- inputs.add((DerivedTypedElement) eStructuralFeature);
- }
- }
- this.customizationViewer.setInput(inputs);
- this.customizationViewer.getViewer().setSelection(getSelection(), true);
-
-
- }
- }
-
- private void handleCustomzizationViewerSelectionChanged(final Object selectedElement) {
- setSelection(this.customizationViewer.getViewer().getSelection());
-
- if (selectedElement instanceof FacetOperation || selectedElement instanceof FacetElement) {
- buttonsPaneComposite.dispose();
- createButtonsPaneWhenDerivedIsSelected(rightPaneComposite);
- rightPaneComposite.layout();
- }
- }
-
- private void btnEditClicked() {
- if (this.readOnly) {
- return;
- }
- final Object selectedElement = getSelection();
- if (selectedElement instanceof TreeSelection) {
- final Object selectedObject = ((TreeSelection) selectedElement).getFirstElement();
- if (selectedObject != null) {
- if (selectedObject instanceof Facet) {
- IFacetDialogFactory.INSTANCE.openEditFacetDialog();
- } else if (selectedObject instanceof FacetAttribute) {
- IFacetDialogFactory.INSTANCE.openEditFacetAttributeDialog();
- } else if (selectedObject instanceof FacetOperation) {
- IFacetDialogFactory.INSTANCE.openEditFacetOperationDialog();
- } else if (selectedObject instanceof FacetReference) {
- IFacetDialogFactory.INSTANCE.openEditFacetReferenceDialog();
- } else if (selectedObject instanceof DerivedTypedElement) {
- IFacetDialogFactory.INSTANCE.openEditFacetOperationParameterDialog();
- } else if (selectedObject instanceof Customization) {
- ICustomizationDialogFactory.DEFAULT.openAddCustomizationPropertyDialog(getSite().getShell().getDisplay(), editingDomain);
- }
- }
- }
- }
-
- @Override
- public void doSave(final IProgressMonitor monitor) {
- // Save only resources that have actually changed.
- //
- final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
- saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
-
- // Do the work within an operation because this is a long running activity that modifies the workbench.
- //
- WorkspaceModifyOperation operation =
- new WorkspaceModifyOperation() {
- // This is the method that gets invoked when the operation runs.
- //
- @Override
- public void execute(IProgressMonitor monitor) {
- // Save the resources to the file system.
- //
- boolean first = true;
- for (Resource resource : editingDomain.getResourceSet().getResources()) {
- if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
- try {
- long timeStamp = resource.getTimeStamp();
- resource.save(saveOptions);
- if (resource.getTimeStamp() != timeStamp) {
- savedResources.add(resource);
- }
- }
- catch (Exception exception) {
- resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
- }
- first = false;
- }
- }
- }
- };
-
- updateProblemIndication = false;
- try {
- // This runs the options, and shows progress.
- //
- new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
-
- // Refresh the necessary state.
- //
- ((BasicCommandStack) editingDomain.getCommandStack()).saveIsDone();
- firePropertyChange(IEditorPart.PROP_DIRTY);
- } catch (Exception exception) {
- // Something went wrong that shouldn't.
- //
- CustomEditorPlugin.INSTANCE.log(exception);
- }
- updateProblemIndication = true;
- updateProblemIndication();
- }
-
- /**
- * This returns whether something has been persisted to the URI of the specified resource.
- * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected boolean isPersisted(Resource resource) {
- boolean result = false;
- try {
- InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
- if (stream != null) {
- result = true;
- stream.close();
- }
- } catch (IOException e) {
- // Ignore
- }
- return result;
- }
-
- /**
- * This accesses a cached version of the content outliner.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public IContentOutlinePage getContentOutlinePage() {
- if (contentOutlinePage == null) {
- // The content outline is just a tree.
- //
- class MyContentOutlinePage extends ContentOutlinePage {
- @Override
- public void createControl(Composite parent) {
- super.createControl(parent);
- contentOutlineViewer = getTreeViewer();
- contentOutlineViewer.addSelectionChangedListener(this);
-
- // Set up the tree viewer.
- //
- contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
- contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
- contentOutlineViewer.setInput(editingDomain.getResourceSet());
-
- // Make sure our popups work.
- //
- createContextMenuFor(contentOutlineViewer);
-
- if (!editingDomain.getResourceSet().getResources().isEmpty()) {
- // Select the root object in the view.
- //
- contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
- }
- }
-
- @Override
- public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
- super.makeContributions(menuManager, toolBarManager, statusLineManager);
- contentOutlineStatusLineManager = statusLineManager;
- }
-
- @Override
- public void setActionBars(IActionBars actionBars) {
- super.setActionBars(actionBars);
- getActionBarContributor().shareGlobalActions(this, actionBars);
- }
- }
-
- contentOutlinePage = new MyContentOutlinePage();
-
- // Listen to selection so that we can handle it is a special way.
- //
- contentOutlinePage.addSelectionChangedListener
- (new ISelectionChangedListener() {
- // This ensures that we handle selections correctly.
- //
- public void selectionChanged(SelectionChangedEvent event) {
- handleContentOutlineSelection(event.getSelection());
- }
- });
- }
-
- return contentOutlinePage;
- }
-
- /**
- * This accesses a cached version of the property sheet.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public IPropertySheetPage getPropertySheetPage() {
- if (propertySheetPage == null) {
- propertySheetPage =
- new ExtendedPropertySheetPage(editingDomain) {
- @Override
- public void setSelectionToViewer(List<?> selection) {
- CustomEditor.this.setSelectionToViewer(selection);
- CustomEditor.this.setFocus();
- }
-
- @Override
- public void setActionBars(IActionBars actionBars) {
- super.setActionBars(actionBars);
- getActionBarContributor().shareGlobalActions(this, actionBars);
- }
- };
- propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
- }
-
- return propertySheetPage;
- }
-
- /**
- * This is how the framework determines which interfaces we implement.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @SuppressWarnings("rawtypes")
- @Override
- public Object getAdapter(Class key) {
- if (key.equals(IContentOutlinePage.class)) {
- return showOutlineView() ? getContentOutlinePage() : null;
- }
- else if (key.equals(IPropertySheetPage.class)) {
- return getPropertySheetPage();
- }
- else if (key.equals(IGotoMarker.class)) {
- return this;
- }
- else {
- return super.getAdapter(key);
- }
- }
-
- /**
- * Returns whether the outline view should be presented to the user.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected boolean showOutlineView() {
- return true;
- }
-
- /**
- * This deals with how we want selection in the outliner to affect the other views.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void handleContentOutlineSelection(ISelection selection) {
- if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
- Iterator<?> selectedElements = ((IStructuredSelection) selection).iterator();
- if (selectedElements.hasNext()) {
- // Get the first selected element.
- //
- Object selectedElement = selectedElements.next();
-
- // If it's the selection viewer, then we want it to select the same selection as this selection.
- //
- ArrayList<Object> selectionList = new ArrayList<Object>();
- selectionList.add(selectedElement);
- while (selectedElements.hasNext()) {
- selectionList.add(selectedElements.next());
- }
-
- // Set the selection to the widget.
- //
- selectionViewer.setSelection(new StructuredSelection(selectionList));
-
- }
- }
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected void doSaveAs(URI uri, IEditorInput editorInput) {
- (editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
- setInputWithNotify(editorInput);
- setPartName(editorInput.getName());
- IProgressMonitor progressMonitor =
- getActionBars().getStatusLineManager() != null ?
- getActionBars().getStatusLineManager().getProgressMonitor() :
- new NullProgressMonitor();
- doSave(progressMonitor);
- }
-
- //
- /**
- * This is for implementing {@link IEditorPart} and simply tests the command stack.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- public boolean isDirty() {
- return ((BasicCommandStack) editingDomain.getCommandStack()).isSaveNeeded();
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- //
- @Override
- public void setFocus() {
- // nothing
- }
-
- @Override
- public void dispose() {
- updateProblemIndication = false;
-
- ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
-
- getSite().getPage().removePartListener(partListener);
-
- adapterFactory.dispose();
-
- if (getActionBarContributor().getActiveEditor() == this) {
- getActionBarContributor().setActiveEditor(null);
- }
-
- if (propertySheetPage != null) {
- propertySheetPage.dispose();
- }
-
- if (contentOutlinePage != null) {
- contentOutlinePage.dispose();
- }
-
- super.dispose();
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void gotoMarker(IMarker marker) {
- try {
- if (marker.getType().equals(EValidator.MARKER)) {
- String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
- if (uriAttribute != null) {
- URI uri = URI.createURI(uriAttribute);
- EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
- if (eObject != null) {
- setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
- }
- }
- }
- } catch (CoreException exception) {
- CustomEditorPlugin.INSTANCE.log(exception);
- }
- }
-
- //
- private final IPartListener partListener =
- new IPartListener() {
- public void partActivated(IWorkbenchPart p) {
- if (p instanceof ContentOutline) {
- if (((ContentOutline) p).getCurrentPage() == contentOutlinePage) {
- getActionBarContributor().setActiveEditor(CustomEditor.this);
-
- if (selectionChangedListener == null) {
- // Create the listener on demand.
- //
- selectionChangedListener =
- new ISelectionChangedListener() {
- // This just notifies those things that are affected by the section.
- //
- public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
- setSelection(selectionChangedEvent.getSelection());
- }
- };
- }
- setSelection(selectionViewer == null ? StructuredSelection.EMPTY : selectionViewer.getSelection());
- }
- }
- else if (p instanceof PropertySheet) {
- if (((PropertySheet) p).getCurrentPage() == propertySheetPage) {
- getActionBarContributor().setActiveEditor(CustomEditor.this);
- handleActivate();
- }
- }
- else if (p == CustomEditor.this) {
- handleActivate();
- if (selectionChangedListener == null) {
- // Create the listener on demand.
- //
- selectionChangedListener =
- new ISelectionChangedListener() {
- // This just notifies those things that are affected by the section.
- //
- public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
- setSelection(selectionChangedEvent.getSelection());
- }
- };
- }
- selectionViewer.addSelectionChangedListener(selectionChangedListener);
- setSelection(selectionViewer.getSelection());
- }
- }
-
- public void partBroughtToTop(IWorkbenchPart p) {
- // Ignore.
- }
-
- public void partClosed(IWorkbenchPart p) {
- // Ignore.
- }
-
- public void partDeactivated(IWorkbenchPart p) {
- // Ignore.
- }
-
- public void partOpened(IWorkbenchPart p) {
- // Ignore.
- }
- };
-
- private Button btnAddFacetSet;
-
- private Button btnAddFacet;
-
- private Button btnAddEClassCustom;
-
- private Button btnAddFacetCustom;
-
- private Button btnAddFacetAttr;
-
- private Button btnAddFacetRef;
-
- private Button btnAddFacetOp;
-
- private Button btnAddFacetParam;
-
- /**
- * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public ISelection getSelection() {
- return editorSelection;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public EditingDomainActionBarContributor getActionBarContributor() {
- return (EditingDomainActionBarContributor) getEditorSite().getActionBarContributor();
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public IActionBars getActionBars() {
- return getActionBarContributor().getActionBars();
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void setStatusLineManager(ISelection selection) {
- IStatusLineManager statusLineManager = selectionViewer != null && selectionViewer == contentOutlineViewer ?
- contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
-
- if (statusLineManager != null) {
- if (selection instanceof IStructuredSelection) {
- Collection<?> collection = ((IStructuredSelection) selection).toList();
- switch (collection.size()) {
- case 0: {
- statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
- break;
- }
- case 1: {
- String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
- statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
- break;
- }
- default: {
- statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
- break;
- }
- }
- }
- else {
- statusLineManager.setMessage("");
- }
- }
- }
-
- /**
- * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
- * Calling this result will notify the listeners.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void setSelection(ISelection selection) {
- editorSelection = selection;
-
- for (ISelectionChangedListener listener : selectionChangedListeners) {
- listener.selectionChanged(new SelectionChangedEvent(this, selection));
- }
- setStatusLineManager(selection);
- }
-
- /**
- * Returns a diagnostic describing the errors and warnings listed in the resource
- * and the specified exception (if any).
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
- if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
- BasicDiagnostic basicDiagnostic =
- new BasicDiagnostic
- (Diagnostic.ERROR,
- "org.eclipse.papyrus.emf.facet.custom.metamodel.editor",
- 0,
- getString("_UI_CreateModelError_message", resource.getURI()),
- new Object[] { exception == null ? (Object) resource : exception });
- basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
- return basicDiagnostic;
- }
- else if (exception != null) {
- return new BasicDiagnostic(Diagnostic.ERROR,
- "org.eclipse.papyrus.emf.facet.custom.metamodel.editor",
- 0,
- getString("_UI_CreateModelError_message", resource.getURI()),
- new Object[] { exception });
- }
- else {
- return Diagnostic.OK_INSTANCE;
- }
- }
-
- /**
- * Handles activation of the editor or it's associated views.
- */
- protected void handleActivate() {
- // Recompute the read only state.
- //
- if (editingDomain.getResourceToReadOnlyMap() != null) {
- editingDomain.getResourceToReadOnlyMap().clear();
-
- // Refresh any actions that may become enabled or disabled.
- //
- setSelection(getSelection());
- }
-
- if (!removedResources.isEmpty()) {
- if (handleDirtyConflict()) {
- getSite().getPage().closeEditor(CustomEditor.this, false);
- }
- else {
- removedResources.clear();
- changedResources.clear();
- savedResources.clear();
- }
- }
- else if (!changedResources.isEmpty()) {
- changedResources.removeAll(savedResources);
- handleChangedResources();
- changedResources.clear();
- savedResources.clear();
- }
- }
-
- /** Shows a dialog that asks if conflicting changes should be discarded. */
- protected boolean handleDirtyConflict() {
- return MessageDialog.openQuestion(getSite().getShell(),
- "CustomEditor_fileConflict",
- "CustomEditor_conflictingUnsavedChanges");
- }
-
- /**
- * Updates the problems indication with the information described in the specified diagnostic.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected void updateProblemIndication() {
- if (updateProblemIndication) {
- BasicDiagnostic diagnostic =
- new BasicDiagnostic
- (Diagnostic.OK,
- "org.eclipse.papyrus.emf.facet.custom.metamodel.editor",
- 0,
- null,
- new Object[] { editingDomain.getResourceSet() });
- for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
- if (childDiagnostic.getSeverity() != Diagnostic.OK) {
- diagnostic.add(childDiagnostic);
- }
- }
-
- if (diagnostic.getSeverity() != Diagnostic.OK) {
- ProblemEditorPart problemEditorPart = new ProblemEditorPart();
- problemEditorPart.setDiagnostic(diagnostic);
- problemEditorPart.setMarkerHelper(markerHelper);
- }
-
- if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
- markerHelper.deleteMarkers(editingDomain.getResourceSet());
- if (diagnostic.getSeverity() != Diagnostic.OK) {
- try {
- markerHelper.createMarkers(diagnostic);
- } catch (CoreException exception) {
- CustomEditorPlugin.INSTANCE.log(exception);
- }
- }
- }
- }
- }
-
- /** Handles what to do with changed resources on activation. */
- protected void handleChangedResources() {
- if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
- if (isDirty()) {
- changedResources.addAll(editingDomain.getResourceSet().getResources());
- }
- editingDomain.getCommandStack().flush();
-
- updateProblemIndication = false;
- for (Resource resource : changedResources) {
- if (resource.isLoaded()) {
- resource.unload();
- try {
- resource.load(Collections.EMPTY_MAP);
- } catch (IOException exception) {
- if (!resourceToDiagnosticMap.containsKey(resource)) {
- resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
- }
- }
- }
- }
-
- if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
- setSelection(StructuredSelection.EMPTY);
- }
-
- updateProblemIndication = true;
- updateProblemIndication();
- }
- }
-
- /**
- * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void addSelectionChangedListener(ISelectionChangedListener listener) {
- selectionChangedListeners.add(listener);
- }
-
- /**
- * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void removeSelectionChangedListener(ISelectionChangedListener listener) {
- selectionChangedListeners.remove(listener);
- }
-
- /**
- * This looks up a string in the plugin's plugin.properties file.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- private static String getString(String key) {
- return CustomEditorPlugin.INSTANCE.getString(key);
- }
-
- /**
- * This looks up a string in plugin.properties, making a substitution.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- private static String getString(String key, Object s1) {
- return CustomEditorPlugin.INSTANCE.getString(key, new Object[] { s1 });
- }
-
- /**
- * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected void createContextMenuFor(StructuredViewer viewer) {
- MenuManager contextMenu = new MenuManager("#PopUp");
- contextMenu.add(new Separator("additions"));
- contextMenu.setRemoveAllWhenShown(true);
- contextMenu.addMenuListener(this);
- Menu menu = contextMenu.createContextMenu(viewer.getControl());
- viewer.getControl().setMenu(menu);
- getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
-
- int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
- Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
- viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
- viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
- }
-
- /**
- * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void menuAboutToShow(IMenuManager menuManager) {
- ((IMenuListener) getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
- }
-
- private Object buttonsGridData() {
- final GridData buttonsGridData = new GridData();
- buttonsGridData.grabExcessHorizontalSpace = true;
- buttonsGridData.grabExcessVerticalSpace = false;
- buttonsGridData.horizontalAlignment = SWT.FILL;
- buttonsGridData.verticalAlignment = SWT.FILL;
- return buttonsGridData;
- }
-
- private Composite createButtonsPane(final Composite parent) {
- return createButtonsPaneWhenCustomizationIsSelected(parent);
- }
-
- private Composite createButtonsPaneWhenCustomizationIsSelected(final Composite parent) {
- this.buttonsPaneComposite = new Composite(parent, SWT.NONE);
- final GridData buttonsPaneGridData = new GridData();
- buttonsPaneGridData.grabExcessHorizontalSpace = false;
- buttonsPaneGridData.grabExcessVerticalSpace = true;
- buttonsPaneGridData.horizontalAlignment = SWT.FILL;
- buttonsPaneGridData.verticalAlignment = SWT.FILL;
- buttonsPaneComposite.setLayoutData(buttonsPaneGridData);
-
- buttonsPaneComposite.setLayout(new GridLayout());
-
- final Composite spacer1 = new Composite(buttonsPaneComposite, SWT.NONE);
- final GridData spacer1GridData = new GridData();
- spacer1GridData.heightHint = CustomEditor.VERTICAL_SPACE_BEFORE_FIRST_BUTTON;
- spacer1.setLayoutData(spacer1GridData);
-
- final Composite spacer2 = new Composite(buttonsPaneComposite, SWT.NONE);
- final GridData spacer2GridData = new GridData();
- spacer2GridData.heightHint = CustomEditor.VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS;
- spacer2.setLayoutData(spacer2GridData);
-
- final Label lblConditions = new Label(buttonsPaneComposite, SWT.NONE);
- lblConditions.setText("add");
-
- this.btnAddFacetSet = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnAddFacetSet.setText("FacetSet");
- this.btnAddFacetSet.setLayoutData(buttonsGridData());
- this.btnAddFacetSet.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnAddFacetSetClicked();
- }
- });
-
- this.btnAddFacet = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnAddFacet.setText("Facet");
- this.btnAddFacet.setLayoutData(buttonsGridData());
- this.btnAddFacet.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnAddFacetClicked();
- }
- });
-
- this.btnAddEClassCustom = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnAddEClassCustom.setText("EClassCustom");
- this.btnAddEClassCustom.setLayoutData(buttonsGridData());
- this.btnAddEClassCustom.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnAddECLassCustomClicked();
- }
- });
-
- this.btnAddFacetCustom = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnAddFacetCustom.setText("FacetCustom");
- this.btnAddFacetCustom.setLayoutData(buttonsGridData());
- this.btnAddFacetCustom.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnAddFacetCustomClicked();
- }
- });
-
- return buttonsPaneComposite;
- }
-
- protected void btnRemoveClicked() {
- if (this.readOnly) {
- return;
- }
- final TreeSelection selectedElement = (TreeSelection) getSelection();
- final Object selectedObject = selectedElement.getFirstElement();
- if (selectedObject instanceof EObject) {
- final EObject eObject = (EObject) selectedObject;
- final EObject eContainer = eObject.eContainer();
-
- if (eContainer instanceof Customization) {
-
- Command command = RemoveCommand.create(this.editingDomain,
- eContainer,
- EcorePackage.eINSTANCE.getEPackage_EClassifiers(),
- eObject);
- this.editingDomain.getCommandStack().execute(command);
- // refresh();
- } else if (eContainer instanceof Facet) {
- if (selectedObject instanceof FacetOperation) {
- Command command = RemoveCommand.create(this.editingDomain,
- eContainer,
- EFacetPackage.eINSTANCE.getFacet_FacetOperations(),
- eObject);
- this.editingDomain.getCommandStack().execute(command);
-
- setInputInCustomizationTreeviewer((Facet) eContainer);
- this.customizationViewer.getViewer().refresh();
-
- } else if (selectedObject instanceof FacetAttribute || selectedObject instanceof FacetReference) {
- Command command = RemoveCommand.create(this.editingDomain,
- eContainer,
- EFacetPackage.eINSTANCE.getFacet_FacetElements(),
- eObject);
- this.editingDomain.getCommandStack().execute(command);
-
- setInputInCustomizationTreeviewer((Facet) eContainer);
- this.customizationViewer.getViewer().refresh();
- }
- } else if (eContainer instanceof FacetOperation) {
- Command command = RemoveCommand.create(this.editingDomain,
- eContainer,
- EcorePackage.eINSTANCE.getEOperation_EParameters(),
- eObject);
- this.editingDomain.getCommandStack().execute(command);
-
- setInputInCustomizationTreeviewer((Facet) eContainer);
- this.customizationViewer.getViewer().refresh();
-
- }
-
- }
- }
-
- protected void btnDownClicked() {
- if (this.readOnly) {
- return;
- }
- final TreeSelection selectedElement = (TreeSelection) getSelection();
- final Object selectedObject = selectedElement.getFirstElement();
- if (selectedObject instanceof EObject) {
- final EObject eObject = (EObject) selectedObject;
- final EObject eContainer = eObject.eContainer();
-
- if (eContainer instanceof Customization) {
- EList<EClassifier> list = ((Customization) eContainer).getEClassifiers();
- final int index = list.indexOf(eObject);
- if (index + 1 < list.size()) {
- Command command = MoveCommand.create(this.editingDomain,
- eContainer,
- EcorePackage.eINSTANCE.getEPackage_EClassifiers(),
- list.get(index), index + 1);
- this.editingDomain.getCommandStack().execute(command);
- }
- // refresh();
- } else if (eContainer instanceof Facet) {
- if (selectedObject instanceof FacetOperation) {
- EList<FacetOperation> list = ((Facet) eContainer).getFacetOperations();
- final int index = list.indexOf(eObject);
- if (index + 1 < list.size()) {
- Command command = MoveCommand.create(this.editingDomain,
- eContainer,
- EFacetPackage.eINSTANCE.getFacet_FacetOperations(),
- list.get(index), index + 1);
- this.editingDomain.getCommandStack().execute(command);
-
- setInputInCustomizationTreeviewer((Facet) eContainer);
- this.customizationViewer.getViewer().refresh();
- }
- } else if (selectedObject instanceof FacetAttribute || selectedObject instanceof FacetReference) {
- EList<EStructuralFeature> list = ((Facet) eContainer).getFacetElements();
- final int index = list.indexOf(eObject);
- if (index + 1 < list.size()) {
- Command command = MoveCommand.create(this.editingDomain,
- eContainer,
- EFacetPackage.eINSTANCE.getFacet_FacetElements(),
- list.get(index), index + 1);
- this.editingDomain.getCommandStack().execute(command);
-
- setInputInCustomizationTreeviewer((Facet) eContainer);
- this.customizationViewer.getViewer().refresh();
- }
- }
- } else if (eContainer instanceof FacetOperation) {
- EList<EParameter> list = ((FacetOperation) eContainer).getEParameters();
- final int index = list.indexOf(eObject);
- if (index + 1 < list.size()) {
- Command command = MoveCommand.create(this.editingDomain,
- eContainer,
- EcorePackage.eINSTANCE.getEOperation_EParameters(),
- list.get(index), index + 1);
- this.editingDomain.getCommandStack().execute(command);
-
- setInputInCustomizationTreeviewer((Facet) eContainer);
- this.customizationViewer.getViewer().refresh();
- }
- }
-
- }
- }
-
- protected void btnUpClicked() {
- if (this.readOnly) {
- return;
- }
- final TreeSelection selectedElement = (TreeSelection) getSelection();
- final Object selectedObject = selectedElement.getFirstElement();
- if (selectedObject instanceof EObject) {
- final EObject eObject = (EObject) selectedObject;
- final EObject eContainer = eObject.eContainer();
-
- if (eContainer instanceof Customization) {
- EList<EClassifier> list = ((Customization) eContainer).getEClassifiers();
- final int index = list.indexOf(eObject);
- if (index - 1 >= 0) {
- Command command = MoveCommand.create(this.editingDomain,
- eContainer,
- EcorePackage.eINSTANCE.getEPackage_EClassifiers(),
- list.get(index), index - 1);
- this.editingDomain.getCommandStack().execute(command);
- }
- // refresh();
- } else if (eContainer instanceof Facet) {
- if (selectedObject instanceof FacetOperation) {
- EList<FacetOperation> list = ((Facet) eContainer).getFacetOperations();
- final int index = list.indexOf(eObject);
- if (index - 1 >= 0) {
- Command command = MoveCommand.create(this.editingDomain,
- eContainer,
- EFacetPackage.eINSTANCE.getFacet_FacetOperations(),
- list.get(index), index - 1);
- this.editingDomain.getCommandStack().execute(command);
-
- setInputInCustomizationTreeviewer((Facet) eContainer);
- this.customizationViewer.getViewer().refresh();
- }
- } else if (selectedObject instanceof FacetAttribute || selectedObject instanceof FacetReference) {
- EList<EStructuralFeature> list = ((Facet) eContainer).getFacetElements();
- final int index = list.indexOf(eObject);
- if (index - 1 >= 0) {
- Command command = MoveCommand.create(this.editingDomain,
- eContainer,
- EFacetPackage.eINSTANCE.getFacet_FacetElements(),
- list.get(index), index - 1);
- this.editingDomain.getCommandStack().execute(command);
-
- setInputInCustomizationTreeviewer((Facet) eContainer);
- this.customizationViewer.getViewer().refresh();
- }
- }
- } else if (eContainer instanceof FacetOperation) {
- EList<EParameter> list = ((FacetOperation) eContainer).getEParameters();
- final int index = list.indexOf(eObject);
- if (index - 1 >= 0) {
- Command command = MoveCommand.create(this.editingDomain,
- eContainer,
- EcorePackage.eINSTANCE.getEOperation_EParameters(),
- list.get(index), index - 1);
- this.editingDomain.getCommandStack().execute(command);
-
- setInputInCustomizationTreeviewer((Facet) eContainer);
- this.customizationViewer.getViewer().refresh();
- }
- }
-
- }
-
- }
-
- protected void btnAddFacetCustomClicked() {
- if (this.readOnly) {
- return;
- }
- final Object selectedElement = getSelection();
- if (((TreeSelection) selectedElement).getFirstElement() instanceof Customization) {
- ICustomizationDialogFactory.DEFAULT.openCreateFacetCustomizationDialog(getSite().getShell().getDisplay(), editingDomain);
- }
-
- }
-
- protected void btnAddECLassCustomClicked() {
- if (this.readOnly) {
- return;
- }
- final Object selectedElement = getSelection();
- if (((TreeSelection) selectedElement).getFirstElement() instanceof Customization) {
- ICustomizationDialogFactory.DEFAULT.openCreateEClassCustomizationDialog(getSite().getShell().getDisplay(), editingDomain);
- }
-
- }
-
- protected void btnAddFacetClicked() {
- if (this.readOnly) {
- return;
- }
- final Object selectedElement = getSelection();
- if (((TreeSelection) selectedElement).getFirstElement() instanceof Customization) {
- IFacetDialogFactory.INSTANCE.openCreateFacetInFacetSetDialog();
- }
- }
-
- protected void btnAddFacetSetClicked() {
- if (this.readOnly) {
- return;
- }
- final Object selectedElement = getSelection();
- if (((TreeSelection) selectedElement).getFirstElement() instanceof Customization) {
- IFacetDialogFactory.INSTANCE.openCreateFacetSetInFacetSetDialog();
- }
- }
-
- private Composite createButtonsPaneWhenFacetIsSelected(final Composite parent) {
- this.buttonsPaneComposite = new Composite(parent, SWT.NONE);
- final GridData buttonsPaneGridData = new GridData();
- buttonsPaneGridData.grabExcessHorizontalSpace = false;
- buttonsPaneGridData.grabExcessVerticalSpace = true;
- buttonsPaneGridData.horizontalAlignment = SWT.FILL;
- buttonsPaneGridData.verticalAlignment = SWT.FILL;
- buttonsPaneComposite.setLayoutData(buttonsPaneGridData);
-
- buttonsPaneComposite.setLayout(new GridLayout());
-
- final Composite spacer1 = new Composite(buttonsPaneComposite, SWT.NONE);
- final GridData spacer1GridData = new GridData();
- spacer1GridData.heightHint = CustomEditor.VERTICAL_SPACE_BEFORE_FIRST_BUTTON;
- spacer1.setLayoutData(spacer1GridData);
-
- final Composite spacer2 = new Composite(buttonsPaneComposite, SWT.NONE);
- final GridData spacer2GridData = new GridData();
- spacer2GridData.heightHint = CustomEditor.VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS;
- spacer2.setLayoutData(spacer2GridData);
-
- final Label lblConditions = new Label(buttonsPaneComposite, SWT.NONE);
- lblConditions.setText("add");
-
- this.btnAddFacetAttr = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnAddFacetAttr.setText("Facet Attribute");
- this.btnAddFacetAttr.setLayoutData(buttonsGridData());
- this.btnAddFacetAttr.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnAddFacetAttributeClicked();
- }
- });
-
- this.btnAddFacetRef = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnAddFacetRef.setText("Facet Reference");
- this.btnAddFacetRef.setLayoutData(buttonsGridData());
- this.btnAddFacetRef.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnAddFacetReferenceClicked();
- }
- });
-
- this.btnAddFacetOp = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnAddFacetOp.setText("Facet Operation");
- this.btnAddFacetOp.setLayoutData(buttonsGridData());
- this.btnAddFacetOp.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnAddFacetOperationClicked();
- }
- });
-
- final Composite spacer3 = new Composite(buttonsPaneComposite, SWT.NONE);
- final GridData spacer3GridData = new GridData();
- spacer3GridData.heightHint = CustomEditor.VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS;
- spacer3.setLayoutData(spacer2GridData);
-
- final Label lblEditions = new Label(buttonsPaneComposite, SWT.NONE);
- lblEditions.setText("edit");
-
- this.btnEdit = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnEdit.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_edit"));
- this.btnEdit.setLayoutData(buttonsGridData());
- this.btnEdit.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnEditClicked();
- }
- });
-
- this.btnRemove = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnRemove.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_remove"));
- this.btnRemove.setLayoutData(buttonsGridData());
- this.btnRemove.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnRemoveClicked();
- }
- });
-
- this.btnUp = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnUp.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_up"));
- this.btnUp.setLayoutData(buttonsGridData());
- this.btnUp.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnUpClicked();
- }
- });
-
- this.btnDown = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnDown.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_down"));
- this.btnDown.setLayoutData(buttonsGridData());
- this.btnDown.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnDownClicked();
- }
- });
-
- return buttonsPaneComposite;
- }
-
- protected void btnAddFacetOperationClicked() {
- if (this.readOnly) {
- return;
- }
- final Object selectedElement = getSelection();
- if (((TreeSelection) selectedElement).getFirstElement() instanceof Facet) {
- IFacetDialogFactory.INSTANCE.openAddOperationInFacetDialog();
- }
-
- }
-
- protected void btnAddFacetReferenceClicked() {
- if (this.readOnly) {
- return;
- }
- final Object selectedElement = getSelection();
- if (((TreeSelection) selectedElement).getFirstElement() instanceof Facet) {
- IFacetDialogFactory.INSTANCE.openAddReferenceInFacetDialog();
- }
- }
-
- protected void btnAddFacetAttributeClicked() {
- if (this.readOnly) {
- return;
- }
- final Object selectedElement = getSelection();
- if (((TreeSelection) selectedElement).getFirstElement() instanceof Facet) {
- IFacetDialogFactory.INSTANCE.openAddAttributeInFacetDialog();
- }
- }
-
- private Composite createButtonsPaneWhenDerivedIsSelected(final Composite parent) {
- this.buttonsPaneComposite = new Composite(parent, SWT.NONE);
- final GridData buttonsPaneGridData = new GridData();
- buttonsPaneGridData.grabExcessHorizontalSpace = false;
- buttonsPaneGridData.grabExcessVerticalSpace = true;
- buttonsPaneGridData.horizontalAlignment = SWT.FILL;
- buttonsPaneGridData.verticalAlignment = SWT.FILL;
- buttonsPaneComposite.setLayoutData(buttonsPaneGridData);
-
- buttonsPaneComposite.setLayout(new GridLayout());
-
- final Composite spacer1 = new Composite(buttonsPaneComposite, SWT.NONE);
- final GridData spacer1GridData = new GridData();
- spacer1GridData.heightHint = CustomEditor.VERTICAL_SPACE_BEFORE_FIRST_BUTTON;
- spacer1.setLayoutData(spacer1GridData);
-
- final Composite spacer2 = new Composite(buttonsPaneComposite, SWT.NONE);
- final GridData spacer2GridData = new GridData();
- spacer2GridData.heightHint = CustomEditor.VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS;
- spacer2.setLayoutData(spacer2GridData);
-
- final Label lblConditions = new Label(buttonsPaneComposite, SWT.NONE);
- lblConditions.setText("add");
-
- this.btnAddFacetParam = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnAddFacetParam.setText("Parameter");
- this.btnAddFacetParam.setLayoutData(buttonsGridData());
- this.btnAddFacetParam.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnAddParameterClicked();
- }
- });
-
- if (!(((TreeSelection) getSelection()).getFirstElement() instanceof FacetOperation)) {
- this.btnAddFacetParam.setEnabled(false);
- } else {
- this.btnAddFacetParam.setEnabled(true);
- }
-
- final Composite spacer3 = new Composite(buttonsPaneComposite, SWT.NONE);
- final GridData spacer3GridData = new GridData();
- spacer3GridData.heightHint = CustomEditor.VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS;
- spacer3.setLayoutData(spacer2GridData);
-
- final Label lblEditions = new Label(buttonsPaneComposite, SWT.NONE);
- lblEditions.setText("edit");
-
- this.btnEdit = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnEdit.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_edit"));
- this.btnEdit.setLayoutData(buttonsGridData());
- this.btnEdit.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnEditClicked();
- }
- });
-
- this.btnRemove = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnRemove.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_remove"));
- this.btnRemove.setLayoutData(buttonsGridData());
- this.btnRemove.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnRemoveClicked();
- }
- });
-
- this.btnUp = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnUp.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_up"));
- this.btnUp.setLayoutData(buttonsGridData());
- this.btnUp.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnUpClicked();
- }
- });
-
- this.btnDown = new Button(buttonsPaneComposite, SWT.PUSH);
- this.btnDown.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_down"));
- this.btnDown.setLayoutData(buttonsGridData());
- this.btnDown.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(final SelectionEvent e) {
- btnDownClicked();
- }
- });
-
- return buttonsPaneComposite;
- }
-
- protected void btnAddParameterClicked() {
- if (this.readOnly) {
- return;
- }
- final Object selectedElement = getSelection();
- if (selectedElement instanceof TreeSelection) {
- final Object selectedObject = ((TreeSelection) selectedElement).getFirstElement();
- if (selectedObject instanceof FacetOperation) {
- IFacetDialogFactory.INSTANCE.openAddParameterInOperationDialog();
- }
- }
- }
-
- public EditingDomain getEditingDomain() {
- return editingDomain;
- }
-
- public Viewer getViewer() {
- return selectionViewer;
- }
-
- /**
- * This also changes the editor's input.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- public void doSaveAs() {
- SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
- saveAsDialog.open();
- IPath path = saveAsDialog.getResult();
- if (path != null) {
- IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
- if (file != null) {
- doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
- }
- }
- }
-
-}
+/**
+ * Copyright (c) 2011 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:
+ * Gregoire Dupe (Mia-Software) - Bug 361794 - [Restructuring] New customization meta-model
+ * Gregoire Dupe (Mia-Software) - Bug 369987 - [Restructuring][Table] Switch to the new customization and facet framework
+ * Gregoire Dupe (Mia-Software) - Bug 373078 - API Cleaning
+ */
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.URIEditorInput;
+import org.eclipse.emf.common.ui.ViewerPane;
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EParameter;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.emf.ecore.xmi.impl.URIHandlerImpl;
+import org.eclipse.emf.edit.command.MoveCommand;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.Customization;
+import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.EClassCustomization;
+import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.FacetCustomization;
+import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.provider.CustomItemProviderAdapterFactory;
+import org.eclipse.papyrus.emf.facet.custom.sdk.ui.dialog.ICustomizationDialogFactory;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.DerivedTypedElement;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.EFacetPackage;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.Facet;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetAttribute;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetElement;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetReference;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.extensible.provider.ExtensibleItemProviderAdapterFactory;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.provider.EFacetItemProviderAdapterFactory;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.provider.QueryItemProviderAdapterFactory;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.runtime.provider.RuntimeItemProviderAdapterFactory;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.serialization.provider.SerializationItemProviderAdapterFactory;
+import org.eclipse.papyrus.emf.facet.efacet.sdk.ui.dialog.IFacetDialogFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.Form;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.part.EditorPart;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+
+/**
+ * This is an example of a Custom model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CustomEditor
+ extends EditorPart
+ implements IGotoMarker, ISelectionProvider, IMenuListener, IEditingDomainProvider, IViewerProvider {
+
+ protected Customization mainCustomization;
+
+ protected ComposedAdapterFactory adapterFactory;
+
+ protected CustomViewer customizationViewer;
+
+ /**
+ * Resources that have been changed since last activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+ /**
+ * Resources that have been saved.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+ /**
+ * Resources that have been removed since last activation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+ /**
+ * This keeps track of the selection of the editor as a whole.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+ /**
+ * This listens to which ever viewer is active.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ISelectionChangedListener selectionChangedListener;
+
+ /**
+ * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+ /**
+ * Controls whether the problem indication should be updated.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected boolean updateProblemIndication = true;
+
+ /**
+ * This is the content outline page's viewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected TreeViewer contentOutlineViewer;
+
+ /**
+ * This is a kludge...
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IStatusLineManager contentOutlineStatusLineManager;
+
+ /**
+ * Map to store the diagnostic associated with a resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+ /**
+ * The MarkerHelper is responsible for creating workspace resource markers presented
+ * in Eclipse's Problems View.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+ /**
+ * This is the property sheet page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected PropertySheetPage propertySheetPage;
+
+ /**
+ * This is the content outline page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IContentOutlinePage contentOutlinePage;
+
+ protected Composite buttonsPaneComposite;
+
+ private static final int VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS = 30;
+ private static final int VERTICAL_SPACE_BEFORE_FIRST_BUTTON = 10;
+ public static final String ID = "org.eclipse.papyrus.emf.facet.infra.browser.custom.editor"; //$NON-NLS-1$
+ private static final int MAIN_FORM_MARGIN_WIDTH = 4;
+ private static final int MAIN_FORM_MARGIN_HEIGHT = 6;
+ private static final int LEFT_PANE_SASH_WEIGHT = 400;
+ private static final int RIGHT_PANE_SASH_WEIGHT = 600;
+
+ private TreeViewer selectionViewer;
+ private Button btnEdit;
+ private Button btnRemove;
+ private Button btnUp;
+ private Button btnDown;
+ private Button cbAppliesToSubinstances;
+ private FormToolkit toolkit;
+ private boolean readOnly;
+
+ protected int listenerCounter = 0;
+
+ private Form fForm;
+ private AdapterFactoryEditingDomain editingDomain;
+
+ public CustomEditor() {
+ super();
+ initializeEditingDomain();
+ }
+
+ /**
+ * This sets up the editing domain for the model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void initializeEditingDomain() {
+ // Create an adapter factory that yields item providers.
+ //
+ adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new CustomItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new EFacetItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new SerializationItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new ExtensibleItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new QueryItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new RuntimeItemProviderAdapterFactory());
+ adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+ // Create the command stack that will notify this editor as commands are executed.
+ //
+ BasicCommandStack commandStack = new BasicCommandStack();
+
+ // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+ //
+ commandStack.addCommandStackListener
+ (new CommandStackListener() {
+ public void commandStackChanged(final EventObject event) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+ // setDirty(commandStack.isSaveNeeded());
+ // Try to select the affected objects.
+ //
+ Command mostRecentCommand = ((CommandStack) event.getSource()).getMostRecentCommand();
+ if (mostRecentCommand != null) {
+ setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+ }
+ if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
+ propertySheetPage.refresh();
+ }
+ }
+ });
+ }
+ });
+
+ // Create the editing domain with a special command stack.
+ //
+ editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+ }
+
+ @Override
+ public void init(final IEditorSite site, final IEditorInput input) throws PartInitException {
+ setSite(site);
+ setInputWithNotify(input);
+ setPartName(input.getName());
+ site.setSelectionProvider(this);
+ site.getPage().addPartListener(partListener);
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+ }
+
+ /**
+ * This sets the selection into whichever viewer is active.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setSelectionToViewer(Collection<?> collection) {
+ final Collection<?> theSelection = collection;
+ // Make sure it's okay.
+ //
+ if (theSelection != null && !theSelection.isEmpty()) {
+ Runnable runnable =
+ new Runnable() {
+ public void run() {
+ // Try to select the items in the current content viewer of the editor.
+ //
+ if (selectionViewer != null) {
+ selectionViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+ }
+ }
+ };
+ getSite().getShell().getDisplay().asyncExec(runnable);
+ }
+ }
+
+ @Override
+ public void createPartControl(final Composite parent) {
+ java.net.URI locationURI;
+ String fileName = ""; //$NON-NLS-1$
+ final IEditorInput editorInput = getEditorInput();
+ if (editorInput instanceof IFileEditorInput) {
+ final IFileEditorInput fileEditorInput = (IFileEditorInput) editorInput;
+ try {
+ if (fileEditorInput.getFile().exists()) {
+ locationURI = new java.net.URI(URI.createPlatformResourceURI(
+ fileEditorInput.getFile().getFullPath().toString(), true).toString());
+ } else {
+ locationURI = fileEditorInput.getFile().getLocationURI();
+ }
+ } catch (URISyntaxException e) {
+ locationURI = fileEditorInput.getFile().getLocationURI();
+ }
+ fileName = fileEditorInput.getFile().getName();
+ } else if (editorInput instanceof URIEditorInput) {
+ final URIEditorInput uriEditorInput = (URIEditorInput) editorInput;
+ try {
+ locationURI = new java.net.URI(uriEditorInput.getURI().toString());
+ } catch (final URISyntaxException e) {
+ throw new IllegalArgumentException(e);
+ }
+ fileName = new Path(locationURI.getPath()).lastSegment();
+ } else {
+ throw new IllegalStateException("wrong kind of input: " //$NON-NLS-1$
+ + editorInput.getClass().getName());
+ }
+
+ loadResource(org.eclipse.emf.common.util.URI.createURI(locationURI.toString()));
+ setPartName(fileName);
+
+ createContents(parent);
+
+ this.selectionViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(final SelectionChangedEvent event) {
+ if (listenerCounter == 0) {
+ ISelection eventSelection = event.getSelection();
+ setSelection(eventSelection);
+ final ITreeSelection selection = (ITreeSelection) CustomEditor.this.selectionViewer
+ .getSelection();
+ listenerCounter++;
+ CustomEditor.this.handleSelectionViewerSelectionChanged(selection.getFirstElement());
+ listenerCounter = 0;
+ CustomEditor.this.customizationViewer.getViewer().getControl()
+ .setRedraw(false);
+ CustomEditor.this.customizationViewer.getViewer().expandAll();
+ CustomEditor.this.customizationViewer.getViewer().getControl()
+ .setRedraw(true);
+ } else {
+ listenerCounter = 0;
+ }
+ }
+ });
+
+ setSelection(selectionViewer == null ? StructuredSelection.EMPTY : selectionViewer.getSelection());
+ }
+
+ public void loadResource(URI resourceURI) {
+ Exception exception = null;
+ Resource resource = null;
+ try {
+ // Load the resource through the editing domain.
+ //
+ resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+ } catch (Exception e) {
+ exception = e;
+ resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+ }
+ if (resource instanceof XMIResource) {
+ ((XMIResource)resource).getDefaultSaveOptions().put(XMIResource.OPTION_URI_HANDLER, new URIHandlerImpl.PlatformSchemeAware());
+ }
+ this.mainCustomization = (Customization) resource.getContents().get(0);
+ }
+
+ private void createContents(final Composite parent) {
+ this.toolkit = new FormToolkit(parent.getDisplay());
+ this.fForm = this.toolkit.createForm(parent);
+ this.toolkit.decorateFormHeading(this.fForm);
+
+ final FillLayout fillLayout = new FillLayout();
+ fillLayout.marginWidth = CustomEditor.MAIN_FORM_MARGIN_WIDTH;
+ fillLayout.marginHeight = CustomEditor.MAIN_FORM_MARGIN_HEIGHT;
+ this.fForm.getBody().setLayout(fillLayout);
+ createBottomPane(this.fForm.getBody());
+ }
+
+ protected IResourceChangeListener resourceChangeListener =
+ new IResourceChangeListener() {
+
+ public void resourceChanged(IResourceChangeEvent event) {
+ IResourceDelta delta = event.getDelta();
+ try {
+ class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+ protected ResourceSet resourceSet = editingDomain.getResourceSet();
+ protected Collection<Resource> changedResources = new ArrayList<Resource>();
+ protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+ public boolean visit(IResourceDelta delta) {
+ if (delta.getResource().getType() == IResource.FILE) {
+ if (delta.getKind() == IResourceDelta.REMOVED ||
+ delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+ Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+ if (resource != null) {
+ if (delta.getKind() == IResourceDelta.REMOVED) {
+ removedResources.add(resource);
+ }
+ else if (!savedResources.remove(resource)) {
+ changedResources.add(resource);
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+
+ public Collection<Resource> getChangedResources() {
+ return changedResources;
+ }
+
+ public Collection<Resource> getRemovedResources() {
+ return removedResources;
+ }
+ }
+
+ final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+ delta.accept(visitor);
+
+ if (!visitor.getRemovedResources().isEmpty()) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ removedResources.addAll(visitor.getRemovedResources());
+ if (!isDirty()) {
+ getSite().getPage().closeEditor(CustomEditor.this, false);
+ }
+ }
+ });
+ }
+
+ if (!visitor.getChangedResources().isEmpty()) {
+ getSite().getShell().getDisplay().asyncExec
+ (new Runnable() {
+ public void run() {
+ changedResources.addAll(visitor.getChangedResources());
+ if (getSite().getPage().getActiveEditor() == CustomEditor.this) {
+ handleActivate();
+ }
+ }
+ });
+ }
+ }
+ catch (CoreException exception) {
+ CustomEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ };
+
+ private Composite rightPaneComposite;
+
+ private Composite createBottomPane(final Composite parent) {
+ final SashForm sashForm = new FormStyleSashForm(parent, SWT.HORIZONTAL, this.toolkit) {
+ @Override
+ protected void createContents() {
+ createLeftPane(this);
+ createRightPane(this);
+ }
+ };
+
+ sashForm.setWeights(new int[] { CustomEditor.LEFT_PANE_SASH_WEIGHT,
+ CustomEditor.RIGHT_PANE_SASH_WEIGHT
+ });
+ sashForm.setSashWidth(5);
+
+ return sashForm;
+ }
+
+ private void createLeftPane(final Composite parent) {
+
+ ViewerPane viewerPane =
+ new ViewerPane(getSite().getPage(), CustomEditor.this) {
+ @Override
+ public Viewer createViewer(Composite composite) {
+ Tree tree = new Tree(composite, SWT.MULTI);
+ TreeViewer newTreeViewer = new TreeViewer(tree);
+ return newTreeViewer;
+ }
+ };
+ viewerPane.createControl(parent);
+
+ selectionViewer = (TreeViewer) viewerPane.getViewer();
+ selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+ selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+ selectionViewer.setInput(editingDomain.getResourceSet());
+ selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+ viewerPane.setTitle(editingDomain.getResourceSet());
+
+ new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+ createContextMenuFor(selectionViewer);
+ }
+
+ /** Right pane : treeviewer + fixed buttons pane */
+
+ private Composite createRightPane(final Composite parent) {
+ final Section section = this.toolkit.createSection(parent, ExpandableComposite.TITLE_BAR
+ | ExpandableComposite.EXPANDED);
+
+ this.rightPaneComposite = this.toolkit.createComposite(section, SWT.NONE);
+ section.setClient(rightPaneComposite);
+
+ final GridLayout gridLayout = new GridLayout(2, false);
+ gridLayout.marginHeight = 0;
+ gridLayout.marginWidth = 0;
+ rightPaneComposite.setLayout(gridLayout);
+
+ // tree + bottom options
+ final Composite middle = new Composite(rightPaneComposite, SWT.NONE);
+ final GridLayout middleLayout = new GridLayout();
+ middleLayout.marginHeight = 0;
+ middleLayout.marginWidth = 0;
+ middle.setLayout(middleLayout);
+ middle.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ this.customizationViewer = new CustomViewer(middle);
+ this.customizationViewer.getViewer().getControl()
+ .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ final Composite optionsPane = this.toolkit.createComposite(middle);
+ optionsPane.setLayout(new GridLayout());
+ optionsPane.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ this.customizationViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(final SelectionChangedEvent event) {
+ if (listenerCounter == 0) {
+ ISelection eventSelection = event.getSelection();
+ setSelection(eventSelection);
+ final ITreeSelection selection = (ITreeSelection) CustomEditor.this.customizationViewer
+ .getSelection();
+ CustomEditor.this.handleCustomzizationViewerSelectionChanged(selection.getFirstElement());
+ listenerCounter++;
+ } else {
+ listenerCounter = 0;
+ }
+ }
+ });
+
+ if (this.readOnly) {
+ this.cbAppliesToSubinstances.setEnabled(false);
+ }
+
+ final GridData customizationViewerGridData = new GridData();
+ customizationViewerGridData.grabExcessHorizontalSpace = true;
+ customizationViewerGridData.grabExcessVerticalSpace = true;
+ customizationViewerGridData.horizontalAlignment = SWT.FILL;
+ customizationViewerGridData.verticalAlignment = SWT.FILL;
+ this.customizationViewer.getViewer().getControl()
+ .setLayoutData(customizationViewerGridData);
+
+ if (!this.readOnly) {
+ createButtonsPane(rightPaneComposite);
+ }
+
+
+ return rightPaneComposite;
+ }
+
+ private void setInputInCustomizationTreeviewer(Facet facet) {
+ List<DerivedTypedElement> inputs = new ArrayList<DerivedTypedElement>();
+ inputs.addAll(facet.getFacetOperations());
+ EList<EStructuralFeature> facetElements = facet.getFacetElements();
+ for (EStructuralFeature eStructuralFeature : facetElements) {
+ if (eStructuralFeature instanceof DerivedTypedElement) {
+ inputs.add((DerivedTypedElement) eStructuralFeature);
+ }
+ }
+ this.customizationViewer.setInput(inputs);
+ }
+
+ private void handleSelectionViewerSelectionChanged(final Object selectedElement) {
+ if (selectedElement instanceof EClassCustomization || selectedElement instanceof FacetCustomization) {
+ final Facet facet = (Facet) selectedElement;
+
+
+ setInputInCustomizationTreeviewer(facet);
+ buttonsPaneComposite.dispose();
+ createButtonsPaneWhenFacetIsSelected(rightPaneComposite);
+ rightPaneComposite.layout();
+ } else if (selectedElement instanceof Customization) {
+ buttonsPaneComposite.dispose();
+ createButtonsPaneWhenCustomizationIsSelected(rightPaneComposite);
+ rightPaneComposite.layout();
+ }
+ else if (selectedElement instanceof DerivedTypedElement) {
+ buttonsPaneComposite.dispose();
+ createButtonsPaneWhenDerivedIsSelected(rightPaneComposite);
+ rightPaneComposite.layout();
+
+
+ // Update customViewer input
+ DerivedTypedElement derivedTypeElement = (DerivedTypedElement) selectedElement;
+ Facet facet = (Facet) derivedTypeElement.eContainer();
+ List<DerivedTypedElement> inputs = new ArrayList<DerivedTypedElement>();
+ inputs.addAll(facet.getFacetOperations());
+ EList<EStructuralFeature> facetElements = facet.getFacetElements();
+ for (EStructuralFeature eStructuralFeature : facetElements) {
+ if (eStructuralFeature instanceof DerivedTypedElement) {
+ inputs.add((DerivedTypedElement) eStructuralFeature);
+ }
+ }
+ this.customizationViewer.setInput(inputs);
+ this.customizationViewer.getViewer().setSelection(getSelection(), true);
+
+
+ }
+ }
+
+ private void handleCustomzizationViewerSelectionChanged(final Object selectedElement) {
+ setSelection(this.customizationViewer.getViewer().getSelection());
+
+ if (selectedElement instanceof FacetOperation || selectedElement instanceof FacetElement) {
+ buttonsPaneComposite.dispose();
+ createButtonsPaneWhenDerivedIsSelected(rightPaneComposite);
+ rightPaneComposite.layout();
+ }
+ }
+
+ private void btnEditClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final Object selectedElement = getSelection();
+ if (selectedElement instanceof TreeSelection) {
+ final Object selectedObject = ((TreeSelection) selectedElement).getFirstElement();
+ if (selectedObject != null) {
+ if (selectedObject instanceof Facet) {
+ IFacetDialogFactory.INSTANCE.openEditFacetDialog();
+ } else if (selectedObject instanceof FacetAttribute) {
+ IFacetDialogFactory.INSTANCE.openEditFacetAttributeDialog();
+ } else if (selectedObject instanceof FacetOperation) {
+ IFacetDialogFactory.INSTANCE.openEditFacetOperationDialog();
+ } else if (selectedObject instanceof FacetReference) {
+ IFacetDialogFactory.INSTANCE.openEditFacetReferenceDialog();
+ } else if (selectedObject instanceof DerivedTypedElement) {
+ IFacetDialogFactory.INSTANCE.openEditFacetOperationParameterDialog();
+ } else if (selectedObject instanceof Customization) {
+ ICustomizationDialogFactory.DEFAULT.openAddCustomizationPropertyDialog(getSite().getShell().getDisplay(), editingDomain);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void doSave(final IProgressMonitor monitor) {
+ // Save only resources that have actually changed.
+ //
+ final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+ saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+
+ // Do the work within an operation because this is a long running activity that modifies the workbench.
+ //
+ WorkspaceModifyOperation operation =
+ new WorkspaceModifyOperation() {
+ // This is the method that gets invoked when the operation runs.
+ //
+ @Override
+ public void execute(IProgressMonitor monitor) {
+ // Save the resources to the file system.
+ //
+ boolean first = true;
+ for (Resource resource : editingDomain.getResourceSet().getResources()) {
+ if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+ try {
+ long timeStamp = resource.getTimeStamp();
+ resource.save(saveOptions);
+ if (resource.getTimeStamp() != timeStamp) {
+ savedResources.add(resource);
+ }
+ }
+ catch (Exception exception) {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ first = false;
+ }
+ }
+ }
+ };
+
+ updateProblemIndication = false;
+ try {
+ // This runs the options, and shows progress.
+ //
+ new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+ // Refresh the necessary state.
+ //
+ ((BasicCommandStack) editingDomain.getCommandStack()).saveIsDone();
+ firePropertyChange(IEditorPart.PROP_DIRTY);
+ } catch (Exception exception) {
+ // Something went wrong that shouldn't.
+ //
+ CustomEditorPlugin.INSTANCE.log(exception);
+ }
+ updateProblemIndication = true;
+ updateProblemIndication();
+ }
+
+ /**
+ * This returns whether something has been persisted to the URI of the specified resource.
+ * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected boolean isPersisted(Resource resource) {
+ boolean result = false;
+ try {
+ InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+ if (stream != null) {
+ result = true;
+ stream.close();
+ }
+ } catch (IOException e) {
+ // Ignore
+ }
+ return result;
+ }
+
+ /**
+ * This accesses a cached version of the content outliner.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public IContentOutlinePage getContentOutlinePage() {
+ if (contentOutlinePage == null) {
+ // The content outline is just a tree.
+ //
+ class MyContentOutlinePage extends ContentOutlinePage {
+ @Override
+ public void createControl(Composite parent) {
+ super.createControl(parent);
+ contentOutlineViewer = getTreeViewer();
+ contentOutlineViewer.addSelectionChangedListener(this);
+
+ // Set up the tree viewer.
+ //
+ contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+ contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+ contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+ // Make sure our popups work.
+ //
+ createContextMenuFor(contentOutlineViewer);
+
+ if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+ // Select the root object in the view.
+ //
+ contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+ }
+ }
+
+ @Override
+ public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+ super.makeContributions(menuManager, toolBarManager, statusLineManager);
+ contentOutlineStatusLineManager = statusLineManager;
+ }
+
+ @Override
+ public void setActionBars(IActionBars actionBars) {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ }
+
+ contentOutlinePage = new MyContentOutlinePage();
+
+ // Listen to selection so that we can handle it is a special way.
+ //
+ contentOutlinePage.addSelectionChangedListener
+ (new ISelectionChangedListener() {
+ // This ensures that we handle selections correctly.
+ //
+ public void selectionChanged(SelectionChangedEvent event) {
+ handleContentOutlineSelection(event.getSelection());
+ }
+ });
+ }
+
+ return contentOutlinePage;
+ }
+
+ /**
+ * This accesses a cached version of the property sheet.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public IPropertySheetPage getPropertySheetPage() {
+ if (propertySheetPage == null) {
+ propertySheetPage =
+ new ExtendedPropertySheetPage(editingDomain) {
+ @Override
+ public void setSelectionToViewer(List<?> selection) {
+ CustomEditor.this.setSelectionToViewer(selection);
+ CustomEditor.this.setFocus();
+ }
+
+ @Override
+ public void setActionBars(IActionBars actionBars) {
+ super.setActionBars(actionBars);
+ getActionBarContributor().shareGlobalActions(this, actionBars);
+ }
+ };
+ propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+ }
+
+ return propertySheetPage;
+ }
+
+ /**
+ * This is how the framework determines which interfaces we implement.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Object getAdapter(Class key) {
+ if (key.equals(IContentOutlinePage.class)) {
+ return showOutlineView() ? getContentOutlinePage() : null;
+ }
+ else if (key.equals(IPropertySheetPage.class)) {
+ return getPropertySheetPage();
+ }
+ else if (key.equals(IGotoMarker.class)) {
+ return this;
+ }
+ else {
+ return super.getAdapter(key);
+ }
+ }
+
+ /**
+ * Returns whether the outline view should be presented to the user.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected boolean showOutlineView() {
+ return true;
+ }
+
+ /**
+ * This deals with how we want selection in the outliner to affect the other views.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void handleContentOutlineSelection(ISelection selection) {
+ if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
+ Iterator<?> selectedElements = ((IStructuredSelection) selection).iterator();
+ if (selectedElements.hasNext()) {
+ // Get the first selected element.
+ //
+ Object selectedElement = selectedElements.next();
+
+ // If it's the selection viewer, then we want it to select the same selection as this selection.
+ //
+ ArrayList<Object> selectionList = new ArrayList<Object>();
+ selectionList.add(selectedElement);
+ while (selectedElements.hasNext()) {
+ selectionList.add(selectedElements.next());
+ }
+
+ // Set the selection to the widget.
+ //
+ selectionViewer.setSelection(new StructuredSelection(selectionList));
+
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void doSaveAs(URI uri, IEditorInput editorInput) {
+ (editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+ setInputWithNotify(editorInput);
+ setPartName(editorInput.getName());
+ IProgressMonitor progressMonitor =
+ getActionBars().getStatusLineManager() != null ?
+ getActionBars().getStatusLineManager().getProgressMonitor() :
+ new NullProgressMonitor();
+ doSave(progressMonitor);
+ }
+
+ //
+ /**
+ * This is for implementing {@link IEditorPart} and simply tests the command stack.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean isDirty() {
+ return ((BasicCommandStack) editingDomain.getCommandStack()).isSaveNeeded();
+ }
+
+ @Override
+ public boolean isSaveAsAllowed() {
+ return false;
+ }
+
+ //
+ @Override
+ public void setFocus() {
+ // nothing
+ }
+
+ @Override
+ public void dispose() {
+ updateProblemIndication = false;
+
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+ getSite().getPage().removePartListener(partListener);
+
+ adapterFactory.dispose();
+
+ if (getActionBarContributor().getActiveEditor() == this) {
+ getActionBarContributor().setActiveEditor(null);
+ }
+
+ if (propertySheetPage != null) {
+ propertySheetPage.dispose();
+ }
+
+ if (contentOutlinePage != null) {
+ contentOutlinePage.dispose();
+ }
+
+ super.dispose();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void gotoMarker(IMarker marker) {
+ try {
+ if (marker.getType().equals(EValidator.MARKER)) {
+ String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
+ if (uriAttribute != null) {
+ URI uri = URI.createURI(uriAttribute);
+ EObject eObject = editingDomain.getResourceSet().getEObject(uri, true);
+ if (eObject != null) {
+ setSelectionToViewer(Collections.singleton(editingDomain.getWrapper(eObject)));
+ }
+ }
+ }
+ } catch (CoreException exception) {
+ CustomEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+
+ //
+ private final IPartListener partListener =
+ new IPartListener() {
+ public void partActivated(IWorkbenchPart p) {
+ if (p instanceof ContentOutline) {
+ if (((ContentOutline) p).getCurrentPage() == contentOutlinePage) {
+ getActionBarContributor().setActiveEditor(CustomEditor.this);
+
+ if (selectionChangedListener == null) {
+ // Create the listener on demand.
+ //
+ selectionChangedListener =
+ new ISelectionChangedListener() {
+ // This just notifies those things that are affected by the section.
+ //
+ public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+ setSelection(selectionChangedEvent.getSelection());
+ }
+ };
+ }
+ setSelection(selectionViewer == null ? StructuredSelection.EMPTY : selectionViewer.getSelection());
+ }
+ }
+ else if (p instanceof PropertySheet) {
+ if (((PropertySheet) p).getCurrentPage() == propertySheetPage) {
+ getActionBarContributor().setActiveEditor(CustomEditor.this);
+ handleActivate();
+ }
+ }
+ else if (p == CustomEditor.this) {
+ handleActivate();
+ if (selectionChangedListener == null) {
+ // Create the listener on demand.
+ //
+ selectionChangedListener =
+ new ISelectionChangedListener() {
+ // This just notifies those things that are affected by the section.
+ //
+ public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+ setSelection(selectionChangedEvent.getSelection());
+ }
+ };
+ }
+ selectionViewer.addSelectionChangedListener(selectionChangedListener);
+ setSelection(selectionViewer.getSelection());
+ }
+ }
+
+ public void partBroughtToTop(IWorkbenchPart p) {
+ // Ignore.
+ }
+
+ public void partClosed(IWorkbenchPart p) {
+ // Ignore.
+ }
+
+ public void partDeactivated(IWorkbenchPart p) {
+ // Ignore.
+ }
+
+ public void partOpened(IWorkbenchPart p) {
+ // Ignore.
+ }
+ };
+
+ private Button btnAddFacetSet;
+
+ private Button btnAddFacet;
+
+ private Button btnAddEClassCustom;
+
+ private Button btnAddFacetCustom;
+
+ private Button btnAddFacetAttr;
+
+ private Button btnAddFacetRef;
+
+ private Button btnAddFacetOp;
+
+ private Button btnAddFacetParam;
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ISelection getSelection() {
+ return editorSelection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public EditingDomainActionBarContributor getActionBarContributor() {
+ return (EditingDomainActionBarContributor) getEditorSite().getActionBarContributor();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public IActionBars getActionBars() {
+ return getActionBarContributor().getActionBars();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setStatusLineManager(ISelection selection) {
+ IStatusLineManager statusLineManager = selectionViewer != null && selectionViewer == contentOutlineViewer ?
+ contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+ if (statusLineManager != null) {
+ if (selection instanceof IStructuredSelection) {
+ Collection<?> collection = ((IStructuredSelection) selection).toList();
+ switch (collection.size()) {
+ case 0: {
+ statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+ break;
+ }
+ case 1: {
+ String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+ statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+ break;
+ }
+ default: {
+ statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+ break;
+ }
+ }
+ }
+ else {
+ statusLineManager.setMessage("");
+ }
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+ * Calling this result will notify the listeners.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void setSelection(ISelection selection) {
+ editorSelection = selection;
+
+ for (ISelectionChangedListener listener : selectionChangedListeners) {
+ listener.selectionChanged(new SelectionChangedEvent(this, selection));
+ }
+ setStatusLineManager(selection);
+ }
+
+ /**
+ * Returns a diagnostic describing the errors and warnings listed in the resource
+ * and the specified exception (if any).
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+ if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+ BasicDiagnostic basicDiagnostic =
+ new BasicDiagnostic
+ (Diagnostic.ERROR,
+ "org.eclipse.papyrus.emf.facet.custom.metamodel.editor",
+ 0,
+ getString("_UI_CreateModelError_message", resource.getURI()),
+ new Object[] { exception == null ? (Object) resource : exception });
+ basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+ return basicDiagnostic;
+ }
+ else if (exception != null) {
+ return new BasicDiagnostic(Diagnostic.ERROR,
+ "org.eclipse.papyrus.emf.facet.custom.metamodel.editor",
+ 0,
+ getString("_UI_CreateModelError_message", resource.getURI()),
+ new Object[] { exception });
+ }
+ else {
+ return Diagnostic.OK_INSTANCE;
+ }
+ }
+
+ /**
+ * Handles activation of the editor or it's associated views.
+ */
+ protected void handleActivate() {
+ // Recompute the read only state.
+ //
+ if (editingDomain.getResourceToReadOnlyMap() != null) {
+ editingDomain.getResourceToReadOnlyMap().clear();
+
+ // Refresh any actions that may become enabled or disabled.
+ //
+ setSelection(getSelection());
+ }
+
+ if (!removedResources.isEmpty()) {
+ if (handleDirtyConflict()) {
+ getSite().getPage().closeEditor(CustomEditor.this, false);
+ }
+ else {
+ removedResources.clear();
+ changedResources.clear();
+ savedResources.clear();
+ }
+ }
+ else if (!changedResources.isEmpty()) {
+ changedResources.removeAll(savedResources);
+ handleChangedResources();
+ changedResources.clear();
+ savedResources.clear();
+ }
+ }
+
+ /** Shows a dialog that asks if conflicting changes should be discarded. */
+ protected boolean handleDirtyConflict() {
+ return MessageDialog.openQuestion(getSite().getShell(),
+ "CustomEditor_fileConflict",
+ "CustomEditor_conflictingUnsavedChanges");
+ }
+
+ /**
+ * Updates the problems indication with the information described in the specified diagnostic.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void updateProblemIndication() {
+ if (updateProblemIndication) {
+ BasicDiagnostic diagnostic =
+ new BasicDiagnostic
+ (Diagnostic.OK,
+ "org.eclipse.papyrus.emf.facet.custom.metamodel.editor",
+ 0,
+ null,
+ new Object[] { editingDomain.getResourceSet() });
+ for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+ if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+ diagnostic.add(childDiagnostic);
+ }
+ }
+
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+ problemEditorPart.setDiagnostic(diagnostic);
+ problemEditorPart.setMarkerHelper(markerHelper);
+ }
+
+ if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+ markerHelper.deleteMarkers(editingDomain.getResourceSet());
+ if (diagnostic.getSeverity() != Diagnostic.OK) {
+ try {
+ markerHelper.createMarkers(diagnostic);
+ } catch (CoreException exception) {
+ CustomEditorPlugin.INSTANCE.log(exception);
+ }
+ }
+ }
+ }
+ }
+
+ /** Handles what to do with changed resources on activation. */
+ protected void handleChangedResources() {
+ if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+ if (isDirty()) {
+ changedResources.addAll(editingDomain.getResourceSet().getResources());
+ }
+ editingDomain.getCommandStack().flush();
+
+ updateProblemIndication = false;
+ for (Resource resource : changedResources) {
+ if (resource.isLoaded()) {
+ resource.unload();
+ try {
+ resource.load(Collections.EMPTY_MAP);
+ } catch (IOException exception) {
+ if (!resourceToDiagnosticMap.containsKey(resource)) {
+ resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+ }
+ }
+ }
+ }
+
+ if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+ setSelection(StructuredSelection.EMPTY);
+ }
+
+ updateProblemIndication = true;
+ updateProblemIndication();
+ }
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void addSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionChangedListeners.add(listener);
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+ selectionChangedListeners.remove(listener);
+ }
+
+ /**
+ * This looks up a string in the plugin's plugin.properties file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private static String getString(String key) {
+ return CustomEditorPlugin.INSTANCE.getString(key);
+ }
+
+ /**
+ * This looks up a string in plugin.properties, making a substitution.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private static String getString(String key, Object s1) {
+ return CustomEditorPlugin.INSTANCE.getString(key, new Object[] { s1 });
+ }
+
+ /**
+ * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void createContextMenuFor(StructuredViewer viewer) {
+ MenuManager contextMenu = new MenuManager("#PopUp");
+ contextMenu.add(new Separator("additions"));
+ contextMenu.setRemoveAllWhenShown(true);
+ contextMenu.addMenuListener(this);
+ Menu menu = contextMenu.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+ int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+ Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance() };
+ viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+ viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+ }
+
+ /**
+ * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void menuAboutToShow(IMenuManager menuManager) {
+ ((IMenuListener) getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+ }
+
+ private Object buttonsGridData() {
+ final GridData buttonsGridData = new GridData();
+ buttonsGridData.grabExcessHorizontalSpace = true;
+ buttonsGridData.grabExcessVerticalSpace = false;
+ buttonsGridData.horizontalAlignment = SWT.FILL;
+ buttonsGridData.verticalAlignment = SWT.FILL;
+ return buttonsGridData;
+ }
+
+ private Composite createButtonsPane(final Composite parent) {
+ return createButtonsPaneWhenCustomizationIsSelected(parent);
+ }
+
+ private Composite createButtonsPaneWhenCustomizationIsSelected(final Composite parent) {
+ this.buttonsPaneComposite = new Composite(parent, SWT.NONE);
+ final GridData buttonsPaneGridData = new GridData();
+ buttonsPaneGridData.grabExcessHorizontalSpace = false;
+ buttonsPaneGridData.grabExcessVerticalSpace = true;
+ buttonsPaneGridData.horizontalAlignment = SWT.FILL;
+ buttonsPaneGridData.verticalAlignment = SWT.FILL;
+ buttonsPaneComposite.setLayoutData(buttonsPaneGridData);
+
+ buttonsPaneComposite.setLayout(new GridLayout());
+
+ final Composite spacer1 = new Composite(buttonsPaneComposite, SWT.NONE);
+ final GridData spacer1GridData = new GridData();
+ spacer1GridData.heightHint = CustomEditor.VERTICAL_SPACE_BEFORE_FIRST_BUTTON;
+ spacer1.setLayoutData(spacer1GridData);
+
+ final Composite spacer2 = new Composite(buttonsPaneComposite, SWT.NONE);
+ final GridData spacer2GridData = new GridData();
+ spacer2GridData.heightHint = CustomEditor.VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS;
+ spacer2.setLayoutData(spacer2GridData);
+
+ final Label lblConditions = new Label(buttonsPaneComposite, SWT.NONE);
+ lblConditions.setText("add");
+
+ this.btnAddFacetSet = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnAddFacetSet.setText("FacetSet");
+ this.btnAddFacetSet.setLayoutData(buttonsGridData());
+ this.btnAddFacetSet.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnAddFacetSetClicked();
+ }
+ });
+
+ this.btnAddFacet = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnAddFacet.setText("Facet");
+ this.btnAddFacet.setLayoutData(buttonsGridData());
+ this.btnAddFacet.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnAddFacetClicked();
+ }
+ });
+
+ this.btnAddEClassCustom = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnAddEClassCustom.setText("EClassCustom");
+ this.btnAddEClassCustom.setLayoutData(buttonsGridData());
+ this.btnAddEClassCustom.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnAddECLassCustomClicked();
+ }
+ });
+
+ this.btnAddFacetCustom = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnAddFacetCustom.setText("FacetCustom");
+ this.btnAddFacetCustom.setLayoutData(buttonsGridData());
+ this.btnAddFacetCustom.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnAddFacetCustomClicked();
+ }
+ });
+
+ return buttonsPaneComposite;
+ }
+
+ protected void btnRemoveClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final TreeSelection selectedElement = (TreeSelection) getSelection();
+ final Object selectedObject = selectedElement.getFirstElement();
+ if (selectedObject instanceof EObject) {
+ final EObject eObject = (EObject) selectedObject;
+ final EObject eContainer = eObject.eContainer();
+
+ if (eContainer instanceof Customization) {
+
+ Command command = RemoveCommand.create(this.editingDomain,
+ eContainer,
+ EcorePackage.eINSTANCE.getEPackage_EClassifiers(),
+ eObject);
+ this.editingDomain.getCommandStack().execute(command);
+ // refresh();
+ } else if (eContainer instanceof Facet) {
+ if (selectedObject instanceof FacetOperation) {
+ Command command = RemoveCommand.create(this.editingDomain,
+ eContainer,
+ EFacetPackage.eINSTANCE.getFacet_FacetOperations(),
+ eObject);
+ this.editingDomain.getCommandStack().execute(command);
+
+ setInputInCustomizationTreeviewer((Facet) eContainer);
+ this.customizationViewer.getViewer().refresh();
+
+ } else if (selectedObject instanceof FacetAttribute || selectedObject instanceof FacetReference) {
+ Command command = RemoveCommand.create(this.editingDomain,
+ eContainer,
+ EFacetPackage.eINSTANCE.getFacet_FacetElements(),
+ eObject);
+ this.editingDomain.getCommandStack().execute(command);
+
+ setInputInCustomizationTreeviewer((Facet) eContainer);
+ this.customizationViewer.getViewer().refresh();
+ }
+ } else if (eContainer instanceof FacetOperation) {
+ Command command = RemoveCommand.create(this.editingDomain,
+ eContainer,
+ EcorePackage.eINSTANCE.getEOperation_EParameters(),
+ eObject);
+ this.editingDomain.getCommandStack().execute(command);
+
+ setInputInCustomizationTreeviewer((Facet) eContainer);
+ this.customizationViewer.getViewer().refresh();
+
+ }
+
+ }
+ }
+
+ protected void btnDownClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final TreeSelection selectedElement = (TreeSelection) getSelection();
+ final Object selectedObject = selectedElement.getFirstElement();
+ if (selectedObject instanceof EObject) {
+ final EObject eObject = (EObject) selectedObject;
+ final EObject eContainer = eObject.eContainer();
+
+ if (eContainer instanceof Customization) {
+ EList<EClassifier> list = ((Customization) eContainer).getEClassifiers();
+ final int index = list.indexOf(eObject);
+ if (index + 1 < list.size()) {
+ Command command = MoveCommand.create(this.editingDomain,
+ eContainer,
+ EcorePackage.eINSTANCE.getEPackage_EClassifiers(),
+ list.get(index), index + 1);
+ this.editingDomain.getCommandStack().execute(command);
+ }
+ // refresh();
+ } else if (eContainer instanceof Facet) {
+ if (selectedObject instanceof FacetOperation) {
+ EList<FacetOperation> list = ((Facet) eContainer).getFacetOperations();
+ final int index = list.indexOf(eObject);
+ if (index + 1 < list.size()) {
+ Command command = MoveCommand.create(this.editingDomain,
+ eContainer,
+ EFacetPackage.eINSTANCE.getFacet_FacetOperations(),
+ list.get(index), index + 1);
+ this.editingDomain.getCommandStack().execute(command);
+
+ setInputInCustomizationTreeviewer((Facet) eContainer);
+ this.customizationViewer.getViewer().refresh();
+ }
+ } else if (selectedObject instanceof FacetAttribute || selectedObject instanceof FacetReference) {
+ EList<EStructuralFeature> list = ((Facet) eContainer).getFacetElements();
+ final int index = list.indexOf(eObject);
+ if (index + 1 < list.size()) {
+ Command command = MoveCommand.create(this.editingDomain,
+ eContainer,
+ EFacetPackage.eINSTANCE.getFacet_FacetElements(),
+ list.get(index), index + 1);
+ this.editingDomain.getCommandStack().execute(command);
+
+ setInputInCustomizationTreeviewer((Facet) eContainer);
+ this.customizationViewer.getViewer().refresh();
+ }
+ }
+ } else if (eContainer instanceof FacetOperation) {
+ EList<EParameter> list = ((FacetOperation) eContainer).getEParameters();
+ final int index = list.indexOf(eObject);
+ if (index + 1 < list.size()) {
+ Command command = MoveCommand.create(this.editingDomain,
+ eContainer,
+ EcorePackage.eINSTANCE.getEOperation_EParameters(),
+ list.get(index), index + 1);
+ this.editingDomain.getCommandStack().execute(command);
+
+ setInputInCustomizationTreeviewer((Facet) eContainer);
+ this.customizationViewer.getViewer().refresh();
+ }
+ }
+
+ }
+ }
+
+ protected void btnUpClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final TreeSelection selectedElement = (TreeSelection) getSelection();
+ final Object selectedObject = selectedElement.getFirstElement();
+ if (selectedObject instanceof EObject) {
+ final EObject eObject = (EObject) selectedObject;
+ final EObject eContainer = eObject.eContainer();
+
+ if (eContainer instanceof Customization) {
+ EList<EClassifier> list = ((Customization) eContainer).getEClassifiers();
+ final int index = list.indexOf(eObject);
+ if (index - 1 >= 0) {
+ Command command = MoveCommand.create(this.editingDomain,
+ eContainer,
+ EcorePackage.eINSTANCE.getEPackage_EClassifiers(),
+ list.get(index), index - 1);
+ this.editingDomain.getCommandStack().execute(command);
+ }
+ // refresh();
+ } else if (eContainer instanceof Facet) {
+ if (selectedObject instanceof FacetOperation) {
+ EList<FacetOperation> list = ((Facet) eContainer).getFacetOperations();
+ final int index = list.indexOf(eObject);
+ if (index - 1 >= 0) {
+ Command command = MoveCommand.create(this.editingDomain,
+ eContainer,
+ EFacetPackage.eINSTANCE.getFacet_FacetOperations(),
+ list.get(index), index - 1);
+ this.editingDomain.getCommandStack().execute(command);
+
+ setInputInCustomizationTreeviewer((Facet) eContainer);
+ this.customizationViewer.getViewer().refresh();
+ }
+ } else if (selectedObject instanceof FacetAttribute || selectedObject instanceof FacetReference) {
+ EList<EStructuralFeature> list = ((Facet) eContainer).getFacetElements();
+ final int index = list.indexOf(eObject);
+ if (index - 1 >= 0) {
+ Command command = MoveCommand.create(this.editingDomain,
+ eContainer,
+ EFacetPackage.eINSTANCE.getFacet_FacetElements(),
+ list.get(index), index - 1);
+ this.editingDomain.getCommandStack().execute(command);
+
+ setInputInCustomizationTreeviewer((Facet) eContainer);
+ this.customizationViewer.getViewer().refresh();
+ }
+ }
+ } else if (eContainer instanceof FacetOperation) {
+ EList<EParameter> list = ((FacetOperation) eContainer).getEParameters();
+ final int index = list.indexOf(eObject);
+ if (index - 1 >= 0) {
+ Command command = MoveCommand.create(this.editingDomain,
+ eContainer,
+ EcorePackage.eINSTANCE.getEOperation_EParameters(),
+ list.get(index), index - 1);
+ this.editingDomain.getCommandStack().execute(command);
+
+ setInputInCustomizationTreeviewer((Facet) eContainer);
+ this.customizationViewer.getViewer().refresh();
+ }
+ }
+
+ }
+
+ }
+
+ protected void btnAddFacetCustomClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final Object selectedElement = getSelection();
+ if (((TreeSelection) selectedElement).getFirstElement() instanceof Customization) {
+ ICustomizationDialogFactory.DEFAULT.openCreateFacetCustomizationDialog(getSite().getShell().getDisplay(), editingDomain);
+ }
+
+ }
+
+ protected void btnAddECLassCustomClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final Object selectedElement = getSelection();
+ if (((TreeSelection) selectedElement).getFirstElement() instanceof Customization) {
+ ICustomizationDialogFactory.DEFAULT.openCreateEClassCustomizationDialog(getSite().getShell().getDisplay(), editingDomain);
+ }
+
+ }
+
+ protected void btnAddFacetClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final Object selectedElement = getSelection();
+ if (((TreeSelection) selectedElement).getFirstElement() instanceof Customization) {
+ IFacetDialogFactory.INSTANCE.openCreateFacetInFacetSetDialog();
+ }
+ }
+
+ protected void btnAddFacetSetClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final Object selectedElement = getSelection();
+ if (((TreeSelection) selectedElement).getFirstElement() instanceof Customization) {
+ IFacetDialogFactory.INSTANCE.openCreateFacetSetInFacetSetDialog();
+ }
+ }
+
+ private Composite createButtonsPaneWhenFacetIsSelected(final Composite parent) {
+ this.buttonsPaneComposite = new Composite(parent, SWT.NONE);
+ final GridData buttonsPaneGridData = new GridData();
+ buttonsPaneGridData.grabExcessHorizontalSpace = false;
+ buttonsPaneGridData.grabExcessVerticalSpace = true;
+ buttonsPaneGridData.horizontalAlignment = SWT.FILL;
+ buttonsPaneGridData.verticalAlignment = SWT.FILL;
+ buttonsPaneComposite.setLayoutData(buttonsPaneGridData);
+
+ buttonsPaneComposite.setLayout(new GridLayout());
+
+ final Composite spacer1 = new Composite(buttonsPaneComposite, SWT.NONE);
+ final GridData spacer1GridData = new GridData();
+ spacer1GridData.heightHint = CustomEditor.VERTICAL_SPACE_BEFORE_FIRST_BUTTON;
+ spacer1.setLayoutData(spacer1GridData);
+
+ final Composite spacer2 = new Composite(buttonsPaneComposite, SWT.NONE);
+ final GridData spacer2GridData = new GridData();
+ spacer2GridData.heightHint = CustomEditor.VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS;
+ spacer2.setLayoutData(spacer2GridData);
+
+ final Label lblConditions = new Label(buttonsPaneComposite, SWT.NONE);
+ lblConditions.setText("add");
+
+ this.btnAddFacetAttr = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnAddFacetAttr.setText("Facet Attribute");
+ this.btnAddFacetAttr.setLayoutData(buttonsGridData());
+ this.btnAddFacetAttr.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnAddFacetAttributeClicked();
+ }
+ });
+
+ this.btnAddFacetRef = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnAddFacetRef.setText("Facet Reference");
+ this.btnAddFacetRef.setLayoutData(buttonsGridData());
+ this.btnAddFacetRef.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnAddFacetReferenceClicked();
+ }
+ });
+
+ this.btnAddFacetOp = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnAddFacetOp.setText("Facet Operation");
+ this.btnAddFacetOp.setLayoutData(buttonsGridData());
+ this.btnAddFacetOp.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnAddFacetOperationClicked();
+ }
+ });
+
+ final Composite spacer3 = new Composite(buttonsPaneComposite, SWT.NONE);
+ final GridData spacer3GridData = new GridData();
+ spacer3GridData.heightHint = CustomEditor.VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS;
+ spacer3.setLayoutData(spacer2GridData);
+
+ final Label lblEditions = new Label(buttonsPaneComposite, SWT.NONE);
+ lblEditions.setText("edit");
+
+ this.btnEdit = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnEdit.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_edit"));
+ this.btnEdit.setLayoutData(buttonsGridData());
+ this.btnEdit.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnEditClicked();
+ }
+ });
+
+ this.btnRemove = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnRemove.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_remove"));
+ this.btnRemove.setLayoutData(buttonsGridData());
+ this.btnRemove.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnRemoveClicked();
+ }
+ });
+
+ this.btnUp = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnUp.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_up"));
+ this.btnUp.setLayoutData(buttonsGridData());
+ this.btnUp.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnUpClicked();
+ }
+ });
+
+ this.btnDown = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnDown.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_down"));
+ this.btnDown.setLayoutData(buttonsGridData());
+ this.btnDown.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnDownClicked();
+ }
+ });
+
+ return buttonsPaneComposite;
+ }
+
+ protected void btnAddFacetOperationClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final Object selectedElement = getSelection();
+ if (((TreeSelection) selectedElement).getFirstElement() instanceof Facet) {
+ IFacetDialogFactory.INSTANCE.openAddOperationInFacetDialog();
+ }
+
+ }
+
+ protected void btnAddFacetReferenceClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final Object selectedElement = getSelection();
+ if (((TreeSelection) selectedElement).getFirstElement() instanceof Facet) {
+ IFacetDialogFactory.INSTANCE.openAddReferenceInFacetDialog();
+ }
+ }
+
+ protected void btnAddFacetAttributeClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final Object selectedElement = getSelection();
+ if (((TreeSelection) selectedElement).getFirstElement() instanceof Facet) {
+ IFacetDialogFactory.INSTANCE.openAddAttributeInFacetDialog();
+ }
+ }
+
+ private Composite createButtonsPaneWhenDerivedIsSelected(final Composite parent) {
+ this.buttonsPaneComposite = new Composite(parent, SWT.NONE);
+ final GridData buttonsPaneGridData = new GridData();
+ buttonsPaneGridData.grabExcessHorizontalSpace = false;
+ buttonsPaneGridData.grabExcessVerticalSpace = true;
+ buttonsPaneGridData.horizontalAlignment = SWT.FILL;
+ buttonsPaneGridData.verticalAlignment = SWT.FILL;
+ buttonsPaneComposite.setLayoutData(buttonsPaneGridData);
+
+ buttonsPaneComposite.setLayout(new GridLayout());
+
+ final Composite spacer1 = new Composite(buttonsPaneComposite, SWT.NONE);
+ final GridData spacer1GridData = new GridData();
+ spacer1GridData.heightHint = CustomEditor.VERTICAL_SPACE_BEFORE_FIRST_BUTTON;
+ spacer1.setLayoutData(spacer1GridData);
+
+ final Composite spacer2 = new Composite(buttonsPaneComposite, SWT.NONE);
+ final GridData spacer2GridData = new GridData();
+ spacer2GridData.heightHint = CustomEditor.VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS;
+ spacer2.setLayoutData(spacer2GridData);
+
+ final Label lblConditions = new Label(buttonsPaneComposite, SWT.NONE);
+ lblConditions.setText("add");
+
+ this.btnAddFacetParam = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnAddFacetParam.setText("Parameter");
+ this.btnAddFacetParam.setLayoutData(buttonsGridData());
+ this.btnAddFacetParam.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnAddParameterClicked();
+ }
+ });
+
+ if (!(((TreeSelection) getSelection()).getFirstElement() instanceof FacetOperation)) {
+ this.btnAddFacetParam.setEnabled(false);
+ } else {
+ this.btnAddFacetParam.setEnabled(true);
+ }
+
+ final Composite spacer3 = new Composite(buttonsPaneComposite, SWT.NONE);
+ final GridData spacer3GridData = new GridData();
+ spacer3GridData.heightHint = CustomEditor.VERTICAL_SPACE_BETWEEN_BUTTON_GROUPS;
+ spacer3.setLayoutData(spacer2GridData);
+
+ final Label lblEditions = new Label(buttonsPaneComposite, SWT.NONE);
+ lblEditions.setText("edit");
+
+ this.btnEdit = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnEdit.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_edit"));
+ this.btnEdit.setLayoutData(buttonsGridData());
+ this.btnEdit.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnEditClicked();
+ }
+ });
+
+ this.btnRemove = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnRemove.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_remove"));
+ this.btnRemove.setLayoutData(buttonsGridData());
+ this.btnRemove.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnRemoveClicked();
+ }
+ });
+
+ this.btnUp = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnUp.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_up"));
+ this.btnUp.setLayoutData(buttonsGridData());
+ this.btnUp.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnUpClicked();
+ }
+ });
+
+ this.btnDown = new Button(buttonsPaneComposite, SWT.PUSH);
+ this.btnDown.setText(CustomEditorPlugin.INSTANCE.getString("CustomizationEditor_down"));
+ this.btnDown.setLayoutData(buttonsGridData());
+ this.btnDown.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(final SelectionEvent e) {
+ btnDownClicked();
+ }
+ });
+
+ return buttonsPaneComposite;
+ }
+
+ protected void btnAddParameterClicked() {
+ if (this.readOnly) {
+ return;
+ }
+ final Object selectedElement = getSelection();
+ if (selectedElement instanceof TreeSelection) {
+ final Object selectedObject = ((TreeSelection) selectedElement).getFirstElement();
+ if (selectedObject instanceof FacetOperation) {
+ IFacetDialogFactory.INSTANCE.openAddParameterInOperationDialog();
+ }
+ }
+ }
+
+ public EditingDomain getEditingDomain() {
+ return editingDomain;
+ }
+
+ public Viewer getViewer() {
+ return selectionViewer;
+ }
+
+ /**
+ * This also changes the editor's input.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void doSaveAs() {
+ SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+ saveAsDialog.open();
+ IPath path = saveAsDialog.getResult();
+ if (path != null) {
+ IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+ if (file != null) {
+ doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+ }
+ }
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomEditorPlugin.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomEditorPlugin.java
index 084c947a4cb..a8645510364 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomEditorPlugin.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomEditorPlugin.java
@@ -1,109 +1,109 @@
-/**
- * Copyright (c) 2011 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:
- * Gregoire Dupe (Mia-Software) - Bug 361794 - [Restructuring] New customization meta-model
- * Gregoire Dupe (Mia-Software) - Bug 369987 - [Restructuring][Table] Switch to the new customization and facet framework
- * Gregoire Dupe (Mia-Software) - Bug 373078 - API Cleaning
- */
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-import org.eclipse.emf.common.EMFPlugin;
-import org.eclipse.emf.common.ui.EclipseUIPlugin;
-import org.eclipse.emf.common.util.ResourceLocator;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.provider.Efacet2EditPlugin;
-
-/**
- * This is the central singleton for the Custom editor plugin.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
-public final class CustomEditorPlugin extends EMFPlugin {
- /**
- * Keep track of the singleton.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public static final CustomEditorPlugin INSTANCE = new CustomEditorPlugin();
-
- /**
- * Keep track of the singleton.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- private static Implementation plugin;
-
- /**
- * Create the instance.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public CustomEditorPlugin() {
- super(new ResourceLocator[] {
- Efacet2EditPlugin.INSTANCE,
- });
- }
-
- /**
- * Returns the singleton instance of the Eclipse plugin.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @return the singleton instance.
- * @generated
- */
- @Override
- public ResourceLocator getPluginResourceLocator() {
- return plugin;
- }
-
- /**
- * Returns the singleton instance of the Eclipse plugin.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @return the singleton instance.
- * @generated
- */
- public static Implementation getPlugin() {
- return plugin;
- }
-
- /**
- * The actual implementation of the Eclipse <b>Plugin</b>.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public static class Implementation extends EclipseUIPlugin {
- /**
- * Creates an instance.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public Implementation() {
- super();
-
- // Remember the static instance.
- //
- plugin = this;
- }
- }
-
-}
+/**
+ * Copyright (c) 2011 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:
+ * Gregoire Dupe (Mia-Software) - Bug 361794 - [Restructuring] New customization meta-model
+ * Gregoire Dupe (Mia-Software) - Bug 369987 - [Restructuring][Table] Switch to the new customization and facet framework
+ * Gregoire Dupe (Mia-Software) - Bug 373078 - API Cleaning
+ */
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.provider.Efacet2EditPlugin;
+
+/**
+ * This is the central singleton for the Custom editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class CustomEditorPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final CustomEditorPlugin INSTANCE = new CustomEditorPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public CustomEditorPlugin() {
+ super(new ResourceLocator[] {
+ Efacet2EditPlugin.INSTANCE,
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static class Implementation extends EclipseUIPlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomModelWizard.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomModelWizard.java
index 4db778400fd..f50550f4ddf 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomModelWizard.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomModelWizard.java
@@ -1,643 +1,643 @@
-/**
- * Copyright (c) 2011 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:
- * Gregoire Dupe (Mia-Software) - Bug 361794 - [Restructuring] New customization meta-model
- * Gregoire Dupe (Mia-Software) - Bug 369987 - [Restructuring][Table] Switch to the new customization and facet framework
- * Gregoire Dupe (Mia-Software) - Bug 373078 - API Cleaning
- */
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.StringTokenizer;
-
-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.IProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.emf.common.CommonPlugin;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.ecore.xmi.XMLResource;
-import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
-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.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.CustomFactory;
-import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.CustomPackage;
-import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.provider.CustomEditPlugin;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-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.actions.WorkspaceModifyOperation;
-import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
-import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.part.ISetSelectionTarget;
-
-
-/**
- * This is a simple wizard for creating a new model file.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
-public class CustomModelWizard extends Wizard implements INewWizard {
- /**
- * The supported extensions for created files.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public static final List<String> FILE_EXTENSIONS =
- Collections.unmodifiableList(Arrays.asList(CustomEditorPlugin.INSTANCE.getString("_UI_CustomEditorFilenameExtensions").split("\\s*,\\s*")));
-
- /**
- * A formatted list of supported file extensions, suitable for display.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public static final String FORMATTED_FILE_EXTENSIONS =
- CustomEditorPlugin.INSTANCE.getString("_UI_CustomEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
-
- /**
- * This caches an instance of the model package.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected CustomPackage customPackage = CustomPackage.eINSTANCE;
-
- /**
- * This caches an instance of the model factory.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected CustomFactory customFactory = customPackage.getCustomFactory();
-
- /**
- * This is the file creation page.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected CustomModelWizardNewFileCreationPage newFileCreationPage;
-
- /**
- * This is the initial object creation page.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected CustomModelWizardInitialObjectCreationPage initialObjectCreationPage;
-
- /**
- * Remember the selection during initialization for populating the default container.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected IStructuredSelection selection;
-
- /**
- * Remember the workbench during initialization.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected IWorkbench workbench;
-
- /**
- * Caches the names of the types that can be created as the root object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected List<String> initialObjectNames;
-
- /**
- * This just records the information.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- this.workbench = workbench;
- this.selection = selection;
- setWindowTitle(CustomEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
- setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(CustomEditorPlugin.INSTANCE.getImage("full/wizban/NewCustom")));
- }
-
- /**
- * Returns the names of the types that can be created as the root object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Collection<String> getInitialObjectNames() {
- if (initialObjectNames == null) {
- initialObjectNames = new ArrayList<String>();
- for (EClassifier eClassifier : customPackage.getEClassifiers()) {
- if (eClassifier instanceof EClass) {
- EClass eClass = (EClass) eClassifier;
- if (!eClass.isAbstract()) {
- initialObjectNames.add(eClass.getName());
- }
- }
- }
- Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
- }
- return initialObjectNames;
- }
-
- /**
- * Create a new model.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected EObject createInitialModel() {
- EClass eClass = (EClass) customPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
- EObject rootObject = customFactory.create(eClass);
- return rootObject;
- }
-
- /**
- * Do the work after everything is specified.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- public boolean performFinish() {
- try {
- // Remember the file.
- //
- final IFile modelFile = getModelFile();
-
- // Do the work within an operation.
- //
- WorkspaceModifyOperation operation =
- new WorkspaceModifyOperation() {
- @Override
- protected void execute(IProgressMonitor progressMonitor) {
- try {
- // Create a resource set
- //
- ResourceSet resourceSet = new ResourceSetImpl();
-
- // Get the URI of the model file.
- //
- URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
-
- // Create a resource for this file.
- //
- Resource resource = resourceSet.createResource(fileURI);
-
- // Add the initial model object to the contents.
- //
- EObject rootObject = createInitialModel();
- if (rootObject != null) {
- resource.getContents().add(rootObject);
- }
-
- // Save the contents of the resource to the file system.
- //
- Map<Object, Object> options = new HashMap<Object, Object>();
- options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
- resource.save(options);
- }
- catch (Exception exception) {
- CustomEditorPlugin.INSTANCE.log(exception);
- }
- finally {
- progressMonitor.done();
- }
- }
- };
-
- getContainer().run(false, false, operation);
-
- // Select the new file resource in the current view.
- //
- IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
- 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);
- }
- });
- }
-
- // Open an editor on the new file.
- //
- try {
- page.openEditor
- (new FileEditorInput(modelFile),
- workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());
- } catch (PartInitException exception) {
- MessageDialog.openError(workbenchWindow.getShell(), CustomEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
- return false;
- }
-
- return true;
- } catch (Exception exception) {
- CustomEditorPlugin.INSTANCE.log(exception);
- return false;
- }
- }
-
- /**
- * This is the one page of the wizard.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public class CustomModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
- /**
- * Pass in the selection.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public CustomModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
- super(pageId, selection);
- }
-
- /**
- * The framework calls this to see if the file is correct.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- protected boolean validatePage() {
- if (super.validatePage()) {
- String extension = new Path(getFileName()).getFileExtension();
- if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
- String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
- setErrorMessage(CustomEditorPlugin.INSTANCE.getString(key, new Object[] { FORMATTED_FILE_EXTENSIONS }));
- return false;
- }
- return true;
- }
- return false;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public IFile getModelFile() {
- return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
- }
- }
-
- /**
- * This is the page where the type of object to create is selected.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public class CustomModelWizardInitialObjectCreationPage extends WizardPage {
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Combo initialObjectField;
-
- /**
- * @generated
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- */
- protected List<String> encodings;
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Combo encodingField;
-
- /**
- * Pass in the selection.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public CustomModelWizardInitialObjectCreationPage(String pageId) {
- super(pageId);
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public void createControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- {
- GridLayout layout = new GridLayout();
- layout.numColumns = 1;
- layout.verticalSpacing = 12;
- composite.setLayout(layout);
-
- GridData data = new GridData();
- data.verticalAlignment = GridData.FILL;
- data.grabExcessVerticalSpace = true;
- data.horizontalAlignment = GridData.FILL;
- composite.setLayoutData(data);
- }
-
- Label containerLabel = new Label(composite, SWT.LEFT);
- {
- containerLabel.setText(CustomEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- containerLabel.setLayoutData(data);
- }
-
- initialObjectField = new Combo(composite, SWT.BORDER);
- {
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- initialObjectField.setLayoutData(data);
- }
-
- for (String objectName : getInitialObjectNames()) {
- initialObjectField.add(getLabel(objectName));
- }
-
- if (initialObjectField.getItemCount() == 1) {
- initialObjectField.select(0);
- }
- initialObjectField.addModifyListener(validator);
-
- Label encodingLabel = new Label(composite, SWT.LEFT);
- {
- encodingLabel.setText(CustomEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- encodingLabel.setLayoutData(data);
- }
- encodingField = new Combo(composite, SWT.BORDER);
- {
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- encodingField.setLayoutData(data);
- }
-
- for (String encoding : getEncodings()) {
- encodingField.add(encoding);
- }
-
- encodingField.select(0);
- encodingField.addModifyListener(validator);
-
- setPageComplete(validatePage());
- setControl(composite);
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected ModifyListener validator =
- new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- setPageComplete(validatePage());
- }
- };
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected boolean validatePage() {
- return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- if (initialObjectField.getItemCount() == 1) {
- initialObjectField.clearSelection();
- encodingField.setFocus();
- }
- else {
- encodingField.clearSelection();
- initialObjectField.setFocus();
- }
- }
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public String getInitialObjectName() {
- String label = initialObjectField.getText();
-
- for (String name : getInitialObjectNames()) {
- if (getLabel(name).equals(label)) {
- return name;
- }
- }
- return null;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public String getEncoding() {
- return encodingField.getText();
- }
-
- /**
- * Returns the label for the specified type name.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected String getLabel(String typeName) {
- try {
- return CustomEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
- } catch (MissingResourceException mre) {
- CustomEditorPlugin.INSTANCE.log(mre);
- }
- return typeName;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- protected Collection<String> getEncodings() {
- if (encodings == null) {
- encodings = new ArrayList<String>();
- for (StringTokenizer stringTokenizer = new StringTokenizer(CustomEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens();) {
- encodings.add(stringTokenizer.nextToken());
- }
- }
- return encodings;
- }
- }
-
- /**
- * The framework calls this to create the contents of the wizard.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- @Override
- public void addPages() {
- // Create a page, set the title, and the initial model file name.
- //
- newFileCreationPage = new CustomModelWizardNewFileCreationPage("Whatever", selection);
- newFileCreationPage.setTitle(CustomEditorPlugin.INSTANCE.getString("_UI_CustomModelWizard_label"));
- newFileCreationPage.setDescription(CustomEditorPlugin.INSTANCE.getString("_UI_CustomModelWizard_description"));
- newFileCreationPage.setFileName(CustomEditorPlugin.INSTANCE.getString("_UI_CustomEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
- addPage(newFileCreationPage);
-
- // Try and get the resource selection to determine a current directory for the file dialog.
- //
- if (selection != null && !selection.isEmpty()) {
- // Get the resource...
- //
- Object selectedElement = selection.iterator().next();
- if (selectedElement instanceof IResource) {
- // Get the resource parent, if its a file.
- //
- 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.
- //
- newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
-
- // Make up a unique new name here.
- //
- String defaultModelBaseFilename = CustomEditorPlugin.INSTANCE.getString("_UI_CustomEditorFilenameDefaultBase");
- String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
- String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
- for (int i = 1; ((IContainer) selectedResource).findMember(modelFilename) != null; ++i) {
- modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
- }
- newFileCreationPage.setFileName(modelFilename);
- }
- }
- }
- initialObjectCreationPage = new CustomModelWizardInitialObjectCreationPage("Whatever2");
- initialObjectCreationPage.setTitle(CustomEditorPlugin.INSTANCE.getString("_UI_CustomModelWizard_label"));
- initialObjectCreationPage.setDescription(CustomEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
- addPage(initialObjectCreationPage);
- }
-
- /**
- * Get the file from the page.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- *
- * @generated
- */
- public IFile getModelFile() {
- return newFileCreationPage.getModelFile();
- }
-
-}
+/**
+ * Copyright (c) 2011 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:
+ * Gregoire Dupe (Mia-Software) - Bug 361794 - [Restructuring] New customization meta-model
+ * Gregoire Dupe (Mia-Software) - Bug 369987 - [Restructuring][Table] Switch to the new customization and facet framework
+ * Gregoire Dupe (Mia-Software) - Bug 373078 - API Cleaning
+ */
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+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.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.CommonPlugin;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+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.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.CustomFactory;
+import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.CustomPackage;
+import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.provider.CustomEditPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+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.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CustomModelWizard extends Wizard implements INewWizard {
+ /**
+ * The supported extensions for created files.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final List<String> FILE_EXTENSIONS =
+ Collections.unmodifiableList(Arrays.asList(CustomEditorPlugin.INSTANCE.getString("_UI_CustomEditorFilenameExtensions").split("\\s*,\\s*")));
+
+ /**
+ * A formatted list of supported file extensions, suitable for display.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public static final String FORMATTED_FILE_EXTENSIONS =
+ CustomEditorPlugin.INSTANCE.getString("_UI_CustomEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+ /**
+ * This caches an instance of the model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected CustomPackage customPackage = CustomPackage.eINSTANCE;
+
+ /**
+ * This caches an instance of the model factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected CustomFactory customFactory = customPackage.getCustomFactory();
+
+ /**
+ * This is the file creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected CustomModelWizardNewFileCreationPage newFileCreationPage;
+
+ /**
+ * This is the initial object creation page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected CustomModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+ /**
+ * Remember the selection during initialization for populating the default container.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IStructuredSelection selection;
+
+ /**
+ * Remember the workbench during initialization.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected IWorkbench workbench;
+
+ /**
+ * Caches the names of the types that can be created as the root object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected List<String> initialObjectNames;
+
+ /**
+ * This just records the information.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ this.workbench = workbench;
+ this.selection = selection;
+ setWindowTitle(CustomEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+ setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(CustomEditorPlugin.INSTANCE.getImage("full/wizban/NewCustom")));
+ }
+
+ /**
+ * Returns the names of the types that can be created as the root object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<String> getInitialObjectNames() {
+ if (initialObjectNames == null) {
+ initialObjectNames = new ArrayList<String>();
+ for (EClassifier eClassifier : customPackage.getEClassifiers()) {
+ if (eClassifier instanceof EClass) {
+ EClass eClass = (EClass) eClassifier;
+ if (!eClass.isAbstract()) {
+ initialObjectNames.add(eClass.getName());
+ }
+ }
+ }
+ Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+ }
+ return initialObjectNames;
+ }
+
+ /**
+ * Create a new model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected EObject createInitialModel() {
+ EClass eClass = (EClass) customPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+ EObject rootObject = customFactory.create(eClass);
+ return rootObject;
+ }
+
+ /**
+ * Do the work after everything is specified.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean performFinish() {
+ try {
+ // Remember the file.
+ //
+ final IFile modelFile = getModelFile();
+
+ // Do the work within an operation.
+ //
+ WorkspaceModifyOperation operation =
+ new WorkspaceModifyOperation() {
+ @Override
+ protected void execute(IProgressMonitor progressMonitor) {
+ try {
+ // Create a resource set
+ //
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ // Get the URI of the model file.
+ //
+ URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+ // Create a resource for this file.
+ //
+ Resource resource = resourceSet.createResource(fileURI);
+
+ // Add the initial model object to the contents.
+ //
+ EObject rootObject = createInitialModel();
+ if (rootObject != null) {
+ resource.getContents().add(rootObject);
+ }
+
+ // Save the contents of the resource to the file system.
+ //
+ Map<Object, Object> options = new HashMap<Object, Object>();
+ options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+ resource.save(options);
+ }
+ catch (Exception exception) {
+ CustomEditorPlugin.INSTANCE.log(exception);
+ }
+ finally {
+ progressMonitor.done();
+ }
+ }
+ };
+
+ getContainer().run(false, false, operation);
+
+ // Select the new file resource in the current view.
+ //
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ 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);
+ }
+ });
+ }
+
+ // Open an editor on the new file.
+ //
+ try {
+ page.openEditor
+ (new FileEditorInput(modelFile),
+ workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());
+ } catch (PartInitException exception) {
+ MessageDialog.openError(workbenchWindow.getShell(), CustomEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+ return false;
+ }
+
+ return true;
+ } catch (Exception exception) {
+ CustomEditorPlugin.INSTANCE.log(exception);
+ return false;
+ }
+ }
+
+ /**
+ * This is the one page of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public class CustomModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+ /**
+ * Pass in the selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public CustomModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+ super(pageId, selection);
+ }
+
+ /**
+ * The framework calls this to see if the file is correct.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected boolean validatePage() {
+ if (super.validatePage()) {
+ String extension = new Path(getFileName()).getFileExtension();
+ if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+ String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+ setErrorMessage(CustomEditorPlugin.INSTANCE.getString(key, new Object[] { FORMATTED_FILE_EXTENSIONS }));
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public IFile getModelFile() {
+ return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+ }
+ }
+
+ /**
+ * This is the page where the type of object to create is selected.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public class CustomModelWizardInitialObjectCreationPage extends WizardPage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Combo initialObjectField;
+
+ /**
+ * @generated
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ */
+ protected List<String> encodings;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Combo encodingField;
+
+ /**
+ * Pass in the selection.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public CustomModelWizardInitialObjectCreationPage(String pageId) {
+ super(pageId);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public void createControl(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ {
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ layout.verticalSpacing = 12;
+ composite.setLayout(layout);
+
+ GridData data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.grabExcessVerticalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ composite.setLayoutData(data);
+ }
+
+ Label containerLabel = new Label(composite, SWT.LEFT);
+ {
+ containerLabel.setText(CustomEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ containerLabel.setLayoutData(data);
+ }
+
+ initialObjectField = new Combo(composite, SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ initialObjectField.setLayoutData(data);
+ }
+
+ for (String objectName : getInitialObjectNames()) {
+ initialObjectField.add(getLabel(objectName));
+ }
+
+ if (initialObjectField.getItemCount() == 1) {
+ initialObjectField.select(0);
+ }
+ initialObjectField.addModifyListener(validator);
+
+ Label encodingLabel = new Label(composite, SWT.LEFT);
+ {
+ encodingLabel.setText(CustomEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ encodingLabel.setLayoutData(data);
+ }
+ encodingField = new Combo(composite, SWT.BORDER);
+ {
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ encodingField.setLayoutData(data);
+ }
+
+ for (String encoding : getEncodings()) {
+ encodingField.add(encoding);
+ }
+
+ encodingField.select(0);
+ encodingField.addModifyListener(validator);
+
+ setPageComplete(validatePage());
+ setControl(composite);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ModifyListener validator =
+ new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ setPageComplete(validatePage());
+ }
+ };
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected boolean validatePage() {
+ return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ if (visible) {
+ if (initialObjectField.getItemCount() == 1) {
+ initialObjectField.clearSelection();
+ encodingField.setFocus();
+ }
+ else {
+ encodingField.clearSelection();
+ initialObjectField.setFocus();
+ }
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getInitialObjectName() {
+ String label = initialObjectField.getText();
+
+ for (String name : getInitialObjectNames()) {
+ if (getLabel(name).equals(label)) {
+ return name;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public String getEncoding() {
+ return encodingField.getText();
+ }
+
+ /**
+ * Returns the label for the specified type name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected String getLabel(String typeName) {
+ try {
+ return CustomEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+ } catch (MissingResourceException mre) {
+ CustomEditorPlugin.INSTANCE.log(mre);
+ }
+ return typeName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected Collection<String> getEncodings() {
+ if (encodings == null) {
+ encodings = new ArrayList<String>();
+ for (StringTokenizer stringTokenizer = new StringTokenizer(CustomEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens();) {
+ encodings.add(stringTokenizer.nextToken());
+ }
+ }
+ return encodings;
+ }
+ }
+
+ /**
+ * The framework calls this to create the contents of the wizard.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void addPages() {
+ // Create a page, set the title, and the initial model file name.
+ //
+ newFileCreationPage = new CustomModelWizardNewFileCreationPage("Whatever", selection);
+ newFileCreationPage.setTitle(CustomEditorPlugin.INSTANCE.getString("_UI_CustomModelWizard_label"));
+ newFileCreationPage.setDescription(CustomEditorPlugin.INSTANCE.getString("_UI_CustomModelWizard_description"));
+ newFileCreationPage.setFileName(CustomEditorPlugin.INSTANCE.getString("_UI_CustomEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+ addPage(newFileCreationPage);
+
+ // Try and get the resource selection to determine a current directory for the file dialog.
+ //
+ if (selection != null && !selection.isEmpty()) {
+ // Get the resource...
+ //
+ Object selectedElement = selection.iterator().next();
+ if (selectedElement instanceof IResource) {
+ // Get the resource parent, if its a file.
+ //
+ 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.
+ //
+ newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+ // Make up a unique new name here.
+ //
+ String defaultModelBaseFilename = CustomEditorPlugin.INSTANCE.getString("_UI_CustomEditorFilenameDefaultBase");
+ String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+ String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+ for (int i = 1; ((IContainer) selectedResource).findMember(modelFilename) != null; ++i) {
+ modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+ }
+ newFileCreationPage.setFileName(modelFilename);
+ }
+ }
+ }
+ initialObjectCreationPage = new CustomModelWizardInitialObjectCreationPage("Whatever2");
+ initialObjectCreationPage.setTitle(CustomEditorPlugin.INSTANCE.getString("_UI_CustomModelWizard_label"));
+ initialObjectCreationPage.setDescription(CustomEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+ addPage(initialObjectCreationPage);
+ }
+
+ /**
+ * Get the file from the page.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public IFile getModelFile() {
+ return newFileCreationPage.getModelFile();
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomViewer.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomViewer.java
index 5dcbc5ce430..84de3812293 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomViewer.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/CustomViewer.java
@@ -1,435 +1,435 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 Mia-Software.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nicolas Bros (Mia-Software) - initial API and implementation
- *******************************************************************************/
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.eclipse.emf.common.util.BasicEList;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EParameter;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.TreeViewerColumn;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerCell;
-import org.eclipse.jface.viewers.ViewerComparator;
-import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementCase;
-import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementSwitchQuery;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.DerivedTypedElement;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetAttribute;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetElement;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetReference;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.ParameterValue;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.extensible.Query;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.EObjectLiteralQuery;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.FalseLiteralQuery;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.FloatLiteralQuery;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.IntegerLiteralQuery;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.IsOneOfQuery;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.NavigationQuery;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.NullLiteralQuery;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.OperationCallQuery;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.StringLiteralQuery;
-import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.TrueLiteralQuery;
-import org.eclipse.papyrus.emf.facet.query.java.metamodel.v0_2_0.javaquery.JavaQuery;
-import org.eclipse.papyrus.emf.facet.query.ocl.metamodel.oclquery.OclQuery;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * Displays the current customizations for a given {@link CustomView}, which is
- * the input of the viewer
- */
-public class CustomViewer {
-
- private static final int VALUE_COLUMN_WIDTH = 200;
- private static final int TYPE_COLUMN_WIDTH = 200;
- private static final int FEATURE_COLUMN_WIDTH = 200;
- private final TreeViewer treeViewer;
-
- // Customization
- private static final String TOP_LEFT_OVERLAY_ICON_PATH = "topLeftOverlay";
- private static final String TOP_MIDDLE_OVERLAY_ICON_PATH = "topMiddleOverlay";
- private static final String TOP_RIGHT_OVERLAY_ICON_PATH = "topRightOverlay";
- private static final String MIDDLE_LEFT_OVERLAY_ICON_PATH = "middleLeftOverlay";
- private static final String MIDDLE_RIGHT_OVERLAY_ICON_PATH = "middleRightOverlay";
- private static final String BOTTOM_LEFT_OVERLAY_ICON_PATH = "bottomLeftOverlay";
- private static final String BOTTOM_MIDDLE_OVERLAY_ICON_PATH = "bottomMiddleOverlay";
- private static final String BOTTOM_RIGHT_OVERLAY_ICON_PATH = "bottomRightOverlay";
- private static final String CUSTOMIZATION_LABEL = "label";
- private static final String CUSTOMIZATION_IMAGE = "image";
- private static final String CUSTOMIZATION_FOREGROUND = "foreground";
- private static final String CUSTOMIZATION_BACKGROUND = "background";
- private static final String FONT_NAME = "fontName";
- private static final String FONT_SIZE = "fontSize";
- private static final String FONT_BOLD = "isBold";
- private static final String FONT_ITALIC = "isItalic";
- private static final String FONT_UNDERLINE = "isUnderlined";
- private static final String FONT_STRUKETHROUGH = "isStruckthrough";
-
- public CustomViewer(final Composite parent) {
- this.treeViewer = new TreeViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER
- | SWT.SINGLE | SWT.FULL_SELECTION);
- this.treeViewer.getTree().setHeaderVisible(true);
-
- final TreeViewerColumn featureColumn = new TreeViewerColumn(this.treeViewer, SWT.LEFT);
- featureColumn.getColumn().setText("feature column");
- featureColumn.getColumn().setWidth(CustomViewer.FEATURE_COLUMN_WIDTH);
- final TreeViewerColumn typeColumn = new TreeViewerColumn(this.treeViewer, SWT.LEFT);
- typeColumn.getColumn().setText("feature type");
- typeColumn.getColumn().setWidth(CustomViewer.TYPE_COLUMN_WIDTH);
- final TreeViewerColumn valueColumn = new TreeViewerColumn(this.treeViewer, SWT.LEFT);
- valueColumn.getColumn().setText("feature value");
- valueColumn.getColumn().setWidth(CustomViewer.VALUE_COLUMN_WIDTH);
-
- this.treeViewer.setContentProvider(new CustomViewerContentProvider());
-
- // for sorting purposes
- this.treeViewer.setLabelProvider(new FeatureLabelProvider());
- this.treeViewer.setComparator(new ViewerComparator() {
- @Override
- public int compare(final Viewer viewer, final Object e1, final Object e2) {
- // do not sort value cases
- if (e1 instanceof FacetOperation) {
- return 0;
- }
- return super.compare(viewer, e1, e2);
- }
- });
-
- featureColumn.setLabelProvider(new FeatureLabelProvider());
- typeColumn.setLabelProvider(new TypeLabelProvider());
- valueColumn.setLabelProvider(new ValueLabelProvider());
-
- this.treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(final SelectionChangedEvent event) {
- // for selection text color
- CustomViewer.this.treeViewer.refresh();
- }
- });
- }
-
- public void setInput(final Object input) {
- this.treeViewer.setInput(input);
- }
-
- protected class CustomViewerContentProvider implements ITreeContentProvider {
- public Object[] getElements(final Object inputElement) {
- final List facetOperations = new ArrayList<FacetOperation>();
- if (inputElement instanceof FacetOperation) {
- final FacetOperation facetOperation = (FacetOperation) inputElement;
- facetOperations.add(facetOperation);
- }
- if (inputElement instanceof FacetElement) {
- final FacetElement facetElement = (FacetElement) inputElement;
- facetOperations.add(facetElement);
- }
- if (inputElement instanceof List) {
- for (Object object : (List) inputElement) {
- if (object instanceof DerivedTypedElement) {
- facetOperations.add(object);
- }
- }
- }
- return facetOperations.toArray();
- }
-
- public Object[] getChildren(final Object parentElement) {
-
- if (parentElement instanceof FacetOperation) {
- final FacetOperation facetOperation = (FacetOperation) parentElement;
- final EList<EParameter> parameters = new BasicEList<EParameter>();
- parameters.addAll(facetOperation.getEParameters());
- return parameters.toArray();
- }
-
- return new Object[0];
- }
-
- public Object getParent(final Object element) {
- if (element instanceof EParameter) {
- final EParameter eParameter = (EParameter) element;
- return eParameter.getEOperation();
- }
- return null;
- }
-
- public boolean hasChildren(final Object element) {
- if (element instanceof FacetOperation) {
- final FacetOperation facetOperation = (FacetOperation) element;
- return !facetOperation.getEParameters().isEmpty();
- }
- return false;
- }
-
- public void dispose() {
- // nothing
- }
-
- public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
- // nothing
- }
- }
-
- protected class FeatureLabelProvider extends ColumnLabelProvider {
-
- @Override
- public String getText(final Object element) {
- if (element instanceof DerivedTypedElement) {
- final DerivedTypedElement facetElement = (DerivedTypedElement) element;
- return facetElement.getName();
- } else if (element instanceof ParameterValue) {
- final ParameterValue parameterValue = (ParameterValue) element;
- return parameterValue.getParameter().getName();
- } else if (element instanceof EParameter) {
- final EParameter parameterValue = (EParameter) element;
- return parameterValue.getName();
- }
- return element.toString();
- }
-
- @Override
- public Font getFont(final Object element) {
- return null;
- }
-
- }
-
- protected class ValueLabelProvider extends ColumnLabelProvider {
-
- /** Images in use */
- private final HashMap<String, Image> images = new HashMap<String, Image>();
-
- public ValueLabelProvider() {
- super();
- }
-
- @Override
- public String getText(final Object element) {
-
- if (element instanceof DerivedTypedElement) {
- DerivedTypedElement derivedTypedElement = (DerivedTypedElement) element;
- Query query = derivedTypedElement.getQuery();
- if (query != null) {
- if (query instanceof StringLiteralQuery) {
- StringLiteralQuery stringQuery = (StringLiteralQuery) query;
- return stringQuery.getValue();
- } else if (query instanceof TrueLiteralQuery) {
- return "true";
- } else if (query instanceof FalseLiteralQuery) {
- return "false";
- } else if (query instanceof NullLiteralQuery) {
- return "null";
- } else if (query instanceof OperationCallQuery) {
- OperationCallQuery operationCallQuery = (OperationCallQuery) query;
- return operationCallQuery.toString();
- } else if (query instanceof JavaQuery) {
- JavaQuery javaQuery = (JavaQuery) query;
- String qualifiedName = javaQuery.getImplementationClassName();
- String[] path = qualifiedName.split("\\.");
- return path[path.length - 1];
- } else if (query instanceof OclQuery) {
- OclQuery oclQuery = (OclQuery) query;
- return oclQuery.getOclExpression();
- } else if (query instanceof NavigationQuery) {
- NavigationQuery navigationQuery = (NavigationQuery) query;
- return navigationQuery.getPath().toString();
- } else if (query instanceof IsOneOfQuery) {
- IsOneOfQuery isOneOfQuery = (IsOneOfQuery) query;
- return isOneOfQuery.getExpectedEObjects().toString();
- } else if (query instanceof IntegerLiteralQuery) {
- IntegerLiteralQuery integerQuery = (IntegerLiteralQuery) query;
- return String.valueOf(integerQuery.getValue());
- } else if (query instanceof FloatLiteralQuery) {
- FloatLiteralQuery floatQuery = (FloatLiteralQuery) query;
- return String.valueOf(floatQuery.getValue());
- } else if (query instanceof EObjectLiteralQuery) {
- EObjectLiteralQuery eObjectQuery = (EObjectLiteralQuery) query;
- return eObjectQuery.getElement().eClass().getName();
- } else if (query instanceof ETypedElementSwitchQuery) {
- ETypedElementSwitchQuery switchQuery = (ETypedElementSwitchQuery) query;
- EList<ETypedElementCase> list = switchQuery.getCases();
- List listResult = new ArrayList<String>();
- for (ETypedElementCase object : list) {
- if (object.getCase() != null) {
- listResult.add(object.getCase().getName());
- }
- }
- return listResult.toString();
- }
- }
- } else if (element instanceof EParameter) {
- EParameter parameterValue = (EParameter) element;
- return "";
- // return parameterValue.getName();
- }
- return "N/A";
- }
-
- @Override
- public Image getImage(final Object element) {
- return null;
- }
-
- @Override
- public void dispose() {
- for (final Image image : this.images.values()) {
- image.dispose();
- }
- super.dispose();
- }
-
- @Override
- public void update(final ViewerCell cell) {
- // for a color static value => display color
- final Object element = cell.getElement();
-
- // gray if not customized
- boolean gray = false;
- if (element instanceof FacetOperation) {
- final FacetOperation customViewFeature = (FacetOperation) element;
- // if (customViewFeature.getDefaultValue() == null) {
- // gray = true;
- // }
- }
-
- // red if unresolved query
- boolean unresolved = false;
- if (element instanceof DerivedTypedElement) {
- final DerivedTypedElement derivedTypedElement = (DerivedTypedElement) element;
- final Query query = derivedTypedElement.getQuery();
- if (query == null || !EMFUtil.tryResolve(query)) {
- unresolved = true;
- }
- }
-
- if (unresolved) {
- final String text = getText(element);
- cell.setText(text);
- cell.setImage(ImageProvider.getInstance().getErrorIcon());
- super.update(cell);
- } else {
- cell.setImage(getImage(element));
- super.update(cell);
- }
- }
- }
-
- protected class TypeLabelProvider extends ColumnLabelProvider {
-
- @Override
- public String getText(final Object element) {
- if (element instanceof DerivedTypedElement) {
- final DerivedTypedElement facetElement = (DerivedTypedElement) element;
- if (facetElement instanceof FacetAttribute || facetElement instanceof FacetReference) {
- return facetElement.getEType().getName();
- } else {
- DerivedTypedElement override = facetElement.getOverride();
- if (override != null) {
- return override.getName();
- } else {
- return ("N/A");
- }
- }
- } else if (element instanceof EParameter) {
- final EParameter eParameter = (EParameter) element;
- return eParameter.getEType().getName();
- }
-
- return element.toString();
- }
-
- @Override
- public Image getImage(Object element) {
- if (element instanceof DerivedTypedElement) {
- final DerivedTypedElement facetElement = (DerivedTypedElement) element;
- if (facetElement instanceof FacetAttribute || facetElement instanceof FacetReference) {
- return ImageProvider.getInstance().getAttributeIcon();
- } else {
- DerivedTypedElement override = facetElement.getOverride();
- if (override != null) {
- String overrideName = override.getName();
- if (CustomViewer.TOP_LEFT_OVERLAY_ICON_PATH.equals(overrideName)) {
- return ImageProvider.getInstance().getTopLeftOverlayIcon();
- } else if (CustomViewer.TOP_MIDDLE_OVERLAY_ICON_PATH.equals(overrideName)) {
- return ImageProvider.getInstance().getTopMiddleOverlayIcon();
- } else if (CustomViewer.TOP_RIGHT_OVERLAY_ICON_PATH.equals(overrideName)) {
- return ImageProvider.getInstance().getTopRightOverlayIcon();
- } else if (CustomViewer.MIDDLE_LEFT_OVERLAY_ICON_PATH.equals(overrideName)) {
- return ImageProvider.getInstance().getMiddleLeftOverlayIcon();
- } else if (CustomViewer.MIDDLE_RIGHT_OVERLAY_ICON_PATH.equals(overrideName)) {
- return ImageProvider.getInstance().getMiddleRightOverlayIcon();
- } else if (CustomViewer.BOTTOM_LEFT_OVERLAY_ICON_PATH.equals(overrideName)) {
- return ImageProvider.getInstance().getBottomLeftOverlayIcon();
- } else if (CustomViewer.BOTTOM_MIDDLE_OVERLAY_ICON_PATH.equals(overrideName)) {
- return ImageProvider.getInstance().getBottomMiddleOverlayIcon();
- } else if (CustomViewer.BOTTOM_RIGHT_OVERLAY_ICON_PATH.equals(overrideName)) {
- return ImageProvider.getInstance().getBottomRightOverlayIcon();
- } else if (CustomViewer.CUSTOMIZATION_LABEL.equals(overrideName)) {
- return ImageProvider.getInstance().getCustomizationLabelIcon();
- } else if (CustomViewer.CUSTOMIZATION_IMAGE.equals(overrideName)) {
- return ImageProvider.getInstance().getCustomizationImageIcon();
- } else if (CustomViewer.CUSTOMIZATION_FOREGROUND.equals(overrideName)) {
- return ImageProvider.getInstance().getCustomizationColorIcon();
- } else if (CustomViewer.CUSTOMIZATION_BACKGROUND.equals(overrideName)) {
- return ImageProvider.getInstance().getCustomizationColorIcon();
- } else if (CustomViewer.FONT_NAME.equals(overrideName)) {
- return ImageProvider.getInstance().getFontNameIcon();
- } else if (CustomViewer.FONT_SIZE.equals(overrideName)) {
- return ImageProvider.getInstance().getFontSizeIcon();
- } else if (CustomViewer.FONT_BOLD.equals(overrideName)) {
- return ImageProvider.getInstance().getIsBoldIcon();
- } else if (CustomViewer.FONT_ITALIC.equals(overrideName)) {
- return ImageProvider.getInstance().getIsItalicIcon();
- } else if (CustomViewer.FONT_UNDERLINE.equals(overrideName)) {
- return ImageProvider.getInstance().getIsUnderlinedIcon();
- } else if (CustomViewer.FONT_STRUKETHROUGH.equals(overrideName)) {
- return ImageProvider.getInstance().getIsStrukethroughIcon();
- }
- }
- }
- }
- return super.getImage(element);
- }
- }
-
- public void refresh() {
- if (!this.treeViewer.getTree().isDisposed()) {
- try {
- this.treeViewer.getTree().setRedraw(false);
- this.treeViewer.refresh();
- } finally {
- this.treeViewer.getTree().setRedraw(true);
- }
- }
- }
-
- public void addSelectionChangedListener(final ISelectionChangedListener selectionChangedListener) {
- this.treeViewer.addSelectionChangedListener(selectionChangedListener);
- }
-
- public ISelection getSelection() {
- return this.treeViewer.getSelection();
- }
-
- public TreeViewer getViewer() {
- return this.treeViewer;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2009, 2010 Mia-Software.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nicolas Bros (Mia-Software) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EParameter;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.TreeViewerColumn;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerCell;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementCase;
+import org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.ETypedElementSwitchQuery;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.DerivedTypedElement;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetAttribute;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetElement;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.FacetReference;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.ParameterValue;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.extensible.Query;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.EObjectLiteralQuery;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.FalseLiteralQuery;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.FloatLiteralQuery;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.IntegerLiteralQuery;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.IsOneOfQuery;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.NavigationQuery;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.NullLiteralQuery;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.OperationCallQuery;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.StringLiteralQuery;
+import org.eclipse.papyrus.emf.facet.efacet.metamodel.v0_2_0.efacet.query.TrueLiteralQuery;
+import org.eclipse.papyrus.emf.facet.query.java.metamodel.v0_2_0.javaquery.JavaQuery;
+import org.eclipse.papyrus.emf.facet.query.ocl.metamodel.oclquery.OclQuery;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Displays the current customizations for a given {@link CustomView}, which is
+ * the input of the viewer
+ */
+public class CustomViewer {
+
+ private static final int VALUE_COLUMN_WIDTH = 200;
+ private static final int TYPE_COLUMN_WIDTH = 200;
+ private static final int FEATURE_COLUMN_WIDTH = 200;
+ private final TreeViewer treeViewer;
+
+ // Customization
+ private static final String TOP_LEFT_OVERLAY_ICON_PATH = "topLeftOverlay";
+ private static final String TOP_MIDDLE_OVERLAY_ICON_PATH = "topMiddleOverlay";
+ private static final String TOP_RIGHT_OVERLAY_ICON_PATH = "topRightOverlay";
+ private static final String MIDDLE_LEFT_OVERLAY_ICON_PATH = "middleLeftOverlay";
+ private static final String MIDDLE_RIGHT_OVERLAY_ICON_PATH = "middleRightOverlay";
+ private static final String BOTTOM_LEFT_OVERLAY_ICON_PATH = "bottomLeftOverlay";
+ private static final String BOTTOM_MIDDLE_OVERLAY_ICON_PATH = "bottomMiddleOverlay";
+ private static final String BOTTOM_RIGHT_OVERLAY_ICON_PATH = "bottomRightOverlay";
+ private static final String CUSTOMIZATION_LABEL = "label";
+ private static final String CUSTOMIZATION_IMAGE = "image";
+ private static final String CUSTOMIZATION_FOREGROUND = "foreground";
+ private static final String CUSTOMIZATION_BACKGROUND = "background";
+ private static final String FONT_NAME = "fontName";
+ private static final String FONT_SIZE = "fontSize";
+ private static final String FONT_BOLD = "isBold";
+ private static final String FONT_ITALIC = "isItalic";
+ private static final String FONT_UNDERLINE = "isUnderlined";
+ private static final String FONT_STRUKETHROUGH = "isStruckthrough";
+
+ public CustomViewer(final Composite parent) {
+ this.treeViewer = new TreeViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER
+ | SWT.SINGLE | SWT.FULL_SELECTION);
+ this.treeViewer.getTree().setHeaderVisible(true);
+
+ final TreeViewerColumn featureColumn = new TreeViewerColumn(this.treeViewer, SWT.LEFT);
+ featureColumn.getColumn().setText("feature column");
+ featureColumn.getColumn().setWidth(CustomViewer.FEATURE_COLUMN_WIDTH);
+ final TreeViewerColumn typeColumn = new TreeViewerColumn(this.treeViewer, SWT.LEFT);
+ typeColumn.getColumn().setText("feature type");
+ typeColumn.getColumn().setWidth(CustomViewer.TYPE_COLUMN_WIDTH);
+ final TreeViewerColumn valueColumn = new TreeViewerColumn(this.treeViewer, SWT.LEFT);
+ valueColumn.getColumn().setText("feature value");
+ valueColumn.getColumn().setWidth(CustomViewer.VALUE_COLUMN_WIDTH);
+
+ this.treeViewer.setContentProvider(new CustomViewerContentProvider());
+
+ // for sorting purposes
+ this.treeViewer.setLabelProvider(new FeatureLabelProvider());
+ this.treeViewer.setComparator(new ViewerComparator() {
+ @Override
+ public int compare(final Viewer viewer, final Object e1, final Object e2) {
+ // do not sort value cases
+ if (e1 instanceof FacetOperation) {
+ return 0;
+ }
+ return super.compare(viewer, e1, e2);
+ }
+ });
+
+ featureColumn.setLabelProvider(new FeatureLabelProvider());
+ typeColumn.setLabelProvider(new TypeLabelProvider());
+ valueColumn.setLabelProvider(new ValueLabelProvider());
+
+ this.treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(final SelectionChangedEvent event) {
+ // for selection text color
+ CustomViewer.this.treeViewer.refresh();
+ }
+ });
+ }
+
+ public void setInput(final Object input) {
+ this.treeViewer.setInput(input);
+ }
+
+ protected class CustomViewerContentProvider implements ITreeContentProvider {
+ public Object[] getElements(final Object inputElement) {
+ final List facetOperations = new ArrayList<FacetOperation>();
+ if (inputElement instanceof FacetOperation) {
+ final FacetOperation facetOperation = (FacetOperation) inputElement;
+ facetOperations.add(facetOperation);
+ }
+ if (inputElement instanceof FacetElement) {
+ final FacetElement facetElement = (FacetElement) inputElement;
+ facetOperations.add(facetElement);
+ }
+ if (inputElement instanceof List) {
+ for (Object object : (List) inputElement) {
+ if (object instanceof DerivedTypedElement) {
+ facetOperations.add(object);
+ }
+ }
+ }
+ return facetOperations.toArray();
+ }
+
+ public Object[] getChildren(final Object parentElement) {
+
+ if (parentElement instanceof FacetOperation) {
+ final FacetOperation facetOperation = (FacetOperation) parentElement;
+ final EList<EParameter> parameters = new BasicEList<EParameter>();
+ parameters.addAll(facetOperation.getEParameters());
+ return parameters.toArray();
+ }
+
+ return new Object[0];
+ }
+
+ public Object getParent(final Object element) {
+ if (element instanceof EParameter) {
+ final EParameter eParameter = (EParameter) element;
+ return eParameter.getEOperation();
+ }
+ return null;
+ }
+
+ public boolean hasChildren(final Object element) {
+ if (element instanceof FacetOperation) {
+ final FacetOperation facetOperation = (FacetOperation) element;
+ return !facetOperation.getEParameters().isEmpty();
+ }
+ return false;
+ }
+
+ public void dispose() {
+ // nothing
+ }
+
+ public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
+ // nothing
+ }
+ }
+
+ protected class FeatureLabelProvider extends ColumnLabelProvider {
+
+ @Override
+ public String getText(final Object element) {
+ if (element instanceof DerivedTypedElement) {
+ final DerivedTypedElement facetElement = (DerivedTypedElement) element;
+ return facetElement.getName();
+ } else if (element instanceof ParameterValue) {
+ final ParameterValue parameterValue = (ParameterValue) element;
+ return parameterValue.getParameter().getName();
+ } else if (element instanceof EParameter) {
+ final EParameter parameterValue = (EParameter) element;
+ return parameterValue.getName();
+ }
+ return element.toString();
+ }
+
+ @Override
+ public Font getFont(final Object element) {
+ return null;
+ }
+
+ }
+
+ protected class ValueLabelProvider extends ColumnLabelProvider {
+
+ /** Images in use */
+ private final HashMap<String, Image> images = new HashMap<String, Image>();
+
+ public ValueLabelProvider() {
+ super();
+ }
+
+ @Override
+ public String getText(final Object element) {
+
+ if (element instanceof DerivedTypedElement) {
+ DerivedTypedElement derivedTypedElement = (DerivedTypedElement) element;
+ Query query = derivedTypedElement.getQuery();
+ if (query != null) {
+ if (query instanceof StringLiteralQuery) {
+ StringLiteralQuery stringQuery = (StringLiteralQuery) query;
+ return stringQuery.getValue();
+ } else if (query instanceof TrueLiteralQuery) {
+ return "true";
+ } else if (query instanceof FalseLiteralQuery) {
+ return "false";
+ } else if (query instanceof NullLiteralQuery) {
+ return "null";
+ } else if (query instanceof OperationCallQuery) {
+ OperationCallQuery operationCallQuery = (OperationCallQuery) query;
+ return operationCallQuery.toString();
+ } else if (query instanceof JavaQuery) {
+ JavaQuery javaQuery = (JavaQuery) query;
+ String qualifiedName = javaQuery.getImplementationClassName();
+ String[] path = qualifiedName.split("\\.");
+ return path[path.length - 1];
+ } else if (query instanceof OclQuery) {
+ OclQuery oclQuery = (OclQuery) query;
+ return oclQuery.getOclExpression();
+ } else if (query instanceof NavigationQuery) {
+ NavigationQuery navigationQuery = (NavigationQuery) query;
+ return navigationQuery.getPath().toString();
+ } else if (query instanceof IsOneOfQuery) {
+ IsOneOfQuery isOneOfQuery = (IsOneOfQuery) query;
+ return isOneOfQuery.getExpectedEObjects().toString();
+ } else if (query instanceof IntegerLiteralQuery) {
+ IntegerLiteralQuery integerQuery = (IntegerLiteralQuery) query;
+ return String.valueOf(integerQuery.getValue());
+ } else if (query instanceof FloatLiteralQuery) {
+ FloatLiteralQuery floatQuery = (FloatLiteralQuery) query;
+ return String.valueOf(floatQuery.getValue());
+ } else if (query instanceof EObjectLiteralQuery) {
+ EObjectLiteralQuery eObjectQuery = (EObjectLiteralQuery) query;
+ return eObjectQuery.getElement().eClass().getName();
+ } else if (query instanceof ETypedElementSwitchQuery) {
+ ETypedElementSwitchQuery switchQuery = (ETypedElementSwitchQuery) query;
+ EList<ETypedElementCase> list = switchQuery.getCases();
+ List listResult = new ArrayList<String>();
+ for (ETypedElementCase object : list) {
+ if (object.getCase() != null) {
+ listResult.add(object.getCase().getName());
+ }
+ }
+ return listResult.toString();
+ }
+ }
+ } else if (element instanceof EParameter) {
+ EParameter parameterValue = (EParameter) element;
+ return "";
+ // return parameterValue.getName();
+ }
+ return "N/A";
+ }
+
+ @Override
+ public Image getImage(final Object element) {
+ return null;
+ }
+
+ @Override
+ public void dispose() {
+ for (final Image image : this.images.values()) {
+ image.dispose();
+ }
+ super.dispose();
+ }
+
+ @Override
+ public void update(final ViewerCell cell) {
+ // for a color static value => display color
+ final Object element = cell.getElement();
+
+ // gray if not customized
+ boolean gray = false;
+ if (element instanceof FacetOperation) {
+ final FacetOperation customViewFeature = (FacetOperation) element;
+ // if (customViewFeature.getDefaultValue() == null) {
+ // gray = true;
+ // }
+ }
+
+ // red if unresolved query
+ boolean unresolved = false;
+ if (element instanceof DerivedTypedElement) {
+ final DerivedTypedElement derivedTypedElement = (DerivedTypedElement) element;
+ final Query query = derivedTypedElement.getQuery();
+ if (query == null || !EMFUtil.tryResolve(query)) {
+ unresolved = true;
+ }
+ }
+
+ if (unresolved) {
+ final String text = getText(element);
+ cell.setText(text);
+ cell.setImage(ImageProvider.getInstance().getErrorIcon());
+ super.update(cell);
+ } else {
+ cell.setImage(getImage(element));
+ super.update(cell);
+ }
+ }
+ }
+
+ protected class TypeLabelProvider extends ColumnLabelProvider {
+
+ @Override
+ public String getText(final Object element) {
+ if (element instanceof DerivedTypedElement) {
+ final DerivedTypedElement facetElement = (DerivedTypedElement) element;
+ if (facetElement instanceof FacetAttribute || facetElement instanceof FacetReference) {
+ return facetElement.getEType().getName();
+ } else {
+ DerivedTypedElement override = facetElement.getOverride();
+ if (override != null) {
+ return override.getName();
+ } else {
+ return ("N/A");
+ }
+ }
+ } else if (element instanceof EParameter) {
+ final EParameter eParameter = (EParameter) element;
+ return eParameter.getEType().getName();
+ }
+
+ return element.toString();
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof DerivedTypedElement) {
+ final DerivedTypedElement facetElement = (DerivedTypedElement) element;
+ if (facetElement instanceof FacetAttribute || facetElement instanceof FacetReference) {
+ return ImageProvider.getInstance().getAttributeIcon();
+ } else {
+ DerivedTypedElement override = facetElement.getOverride();
+ if (override != null) {
+ String overrideName = override.getName();
+ if (CustomViewer.TOP_LEFT_OVERLAY_ICON_PATH.equals(overrideName)) {
+ return ImageProvider.getInstance().getTopLeftOverlayIcon();
+ } else if (CustomViewer.TOP_MIDDLE_OVERLAY_ICON_PATH.equals(overrideName)) {
+ return ImageProvider.getInstance().getTopMiddleOverlayIcon();
+ } else if (CustomViewer.TOP_RIGHT_OVERLAY_ICON_PATH.equals(overrideName)) {
+ return ImageProvider.getInstance().getTopRightOverlayIcon();
+ } else if (CustomViewer.MIDDLE_LEFT_OVERLAY_ICON_PATH.equals(overrideName)) {
+ return ImageProvider.getInstance().getMiddleLeftOverlayIcon();
+ } else if (CustomViewer.MIDDLE_RIGHT_OVERLAY_ICON_PATH.equals(overrideName)) {
+ return ImageProvider.getInstance().getMiddleRightOverlayIcon();
+ } else if (CustomViewer.BOTTOM_LEFT_OVERLAY_ICON_PATH.equals(overrideName)) {
+ return ImageProvider.getInstance().getBottomLeftOverlayIcon();
+ } else if (CustomViewer.BOTTOM_MIDDLE_OVERLAY_ICON_PATH.equals(overrideName)) {
+ return ImageProvider.getInstance().getBottomMiddleOverlayIcon();
+ } else if (CustomViewer.BOTTOM_RIGHT_OVERLAY_ICON_PATH.equals(overrideName)) {
+ return ImageProvider.getInstance().getBottomRightOverlayIcon();
+ } else if (CustomViewer.CUSTOMIZATION_LABEL.equals(overrideName)) {
+ return ImageProvider.getInstance().getCustomizationLabelIcon();
+ } else if (CustomViewer.CUSTOMIZATION_IMAGE.equals(overrideName)) {
+ return ImageProvider.getInstance().getCustomizationImageIcon();
+ } else if (CustomViewer.CUSTOMIZATION_FOREGROUND.equals(overrideName)) {
+ return ImageProvider.getInstance().getCustomizationColorIcon();
+ } else if (CustomViewer.CUSTOMIZATION_BACKGROUND.equals(overrideName)) {
+ return ImageProvider.getInstance().getCustomizationColorIcon();
+ } else if (CustomViewer.FONT_NAME.equals(overrideName)) {
+ return ImageProvider.getInstance().getFontNameIcon();
+ } else if (CustomViewer.FONT_SIZE.equals(overrideName)) {
+ return ImageProvider.getInstance().getFontSizeIcon();
+ } else if (CustomViewer.FONT_BOLD.equals(overrideName)) {
+ return ImageProvider.getInstance().getIsBoldIcon();
+ } else if (CustomViewer.FONT_ITALIC.equals(overrideName)) {
+ return ImageProvider.getInstance().getIsItalicIcon();
+ } else if (CustomViewer.FONT_UNDERLINE.equals(overrideName)) {
+ return ImageProvider.getInstance().getIsUnderlinedIcon();
+ } else if (CustomViewer.FONT_STRUKETHROUGH.equals(overrideName)) {
+ return ImageProvider.getInstance().getIsStrukethroughIcon();
+ }
+ }
+ }
+ }
+ return super.getImage(element);
+ }
+ }
+
+ public void refresh() {
+ if (!this.treeViewer.getTree().isDisposed()) {
+ try {
+ this.treeViewer.getTree().setRedraw(false);
+ this.treeViewer.refresh();
+ } finally {
+ this.treeViewer.getTree().setRedraw(true);
+ }
+ }
+ }
+
+ public void addSelectionChangedListener(final ISelectionChangedListener selectionChangedListener) {
+ this.treeViewer.addSelectionChangedListener(selectionChangedListener);
+ }
+
+ public ISelection getSelection() {
+ return this.treeViewer.getSelection();
+ }
+
+ public TreeViewer getViewer() {
+ return this.treeViewer;
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/EMFUtil.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/EMFUtil.java
index 67516332c13..a193886e46f 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/EMFUtil.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/EMFUtil.java
@@ -1,233 +1,233 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 Mia-Software.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nicolas Bros (Mia-Software) - initial API and implementation
- *******************************************************************************/
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.TreeIterator;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.ENamedElement;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.InternalEObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-
-/** Utility functions related to EMF */
-public class EMFUtil {
-
- /**
- * @return whether the given EObject is in the first resource of its
- * resource set
- */
- public static boolean isInFirstResource(final EObject eObject) {
- final Resource resource = eObject.eResource();
- if (resource == null) {
- return false;
- }
- final ResourceSet resourceSet = resource.getResourceSet();
- if (resourceSet == null) {
- return false;
- }
- final EList<Resource> resources = resourceSet.getResources();
- if (resources.size() > 0) {
- if (resourceSet.getResources().get(0) == resource) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Search for instances of the given EClass
- *
- * @param eClass
- * the EClass of the elements that are looked for
- * @param resource
- * the resource to search in
- * @return elements that are instances of the given EClass
- */
- public Collection<EObject> findInstancesOf(final EClass eClass, final Resource resource) {
- final ArrayList<EObject> instances = new ArrayList<EObject>();
- final TreeIterator<EObject> allContents = resource.getAllContents();
- while (allContents.hasNext()) {
- final EObject eObject = allContents.next();
- if (eObject.eClass() == eClass) {
- instances.add(eObject);
- }
- }
- return instances;
- }
-
- /**
- * Add all the classes in <code>resources</code> to the <code>classes</code> set
- */
- private static void addAll(final Set<EClass> classes, final List<Resource> resources) {
- for (final Resource resource : resources) {
- final TreeIterator<EObject> allContents = resource.getAllContents();
- while (allContents.hasNext()) {
- final EObject eObject = allContents.next();
- if (eObject instanceof EClass) {
- final EClass eClass = (EClass) eObject;
- classes.add(eClass);
- }
- }
- }
- }
-
- /**
- * Find the most specific metaclass that is common to all of the given
- * elements.
- *
- * @return the common metaclass or <code>null</code> if none was found
- */
- public static EClass findCommonClass(final List<EObject> elements) {
- // FIXME this algorithm can make a choice about a branch early and not
- // find
- // a solution, when a solution does exist
- EClass eClass = null;
- for (final EObject element : elements) {
- final EClass elementEClass = element.eClass();
- if (eClass == null) {
- eClass = elementEClass;
- } else {
- if (eClass.isSuperTypeOf(elementEClass)) {
- continue;
- } else if (elementEClass.isSuperTypeOf(eClass)) {
- eClass = elementEClass;
- } else {
- // elements are on two different branches
- // try to find a common metaclass
- eClass = findSuperType(eClass, elementEClass);
- if (eClass == null) {
- return null;
- }
- }
- }
- }
- return eClass;
- }
-
- /**
- * Find the first superclass of <code>eClass</code> that is a superclass of <code>element</code>
- */
- private static EClass findSuperType(final EClass eClass, final EClass element) {
- // do a breadth-first search (with a bottom-up tree)
- final LinkedList<EClass> breadthFirstList = new LinkedList<EClass>();
- breadthFirstList.addFirst(eClass);
-
- while (!breadthFirstList.isEmpty()) {
- final EClass candidateClass = breadthFirstList.poll();
-
- if (candidateClass.isSuperTypeOf(element)) {
- return candidateClass;
- }
-
- // add all the direct super-types of this class
- for (final EClass supertype : candidateClass.getESuperTypes()) {
- breadthFirstList.addLast(supertype);
- }
- }
-
- return null;
- }
-
- /**
- * Try to resolve the given proxy.
- *
- * @return whether the proxy could be resolved
- */
- public static boolean tryResolve(final EObject eObject) {
- final EObject resolved = EcoreUtil.resolve(eObject, (EObject) null);
- return !resolved.eIsProxy();
- }
-
- /** @return the proxy URI for the given EObject or an empty String if none */
- public static String proxyURI(final EObject eObject) {
- final URI eProxyURI = ((InternalEObject) eObject).eProxyURI();
- if (eProxyURI == null) {
- return ""; //$NON-NLS-1$
- }
- return eProxyURI.toString();
- }
-
- public static <T extends ENamedElement> T findElementWithName(final String name,
- final EList<T> elements) {
- for (T element : elements) {
- if (name.equals(element.getName())) {
- return element;
- }
- }
- return null;
- }
-
- /**
- * @return the name of the package in the package registry with this nsURI,
- * or <code>null</code> if not found
- */
- public static String getMetamodelName(final String nsURI) {
- if (nsURI != null) {
- final EPackage ePackage = EPackage.Registry.INSTANCE.getEPackage(nsURI);
- if (ePackage != null) {
- final String name = ePackage.getName();
- if (name != null) {
- return name;
- }
- }
-
- final URI uri = URI.createURI(nsURI);
- final String lastSegment = uri.lastSegment();
- if (lastSegment != null) {
- return lastSegment;
- }
- }
- return null;
- }
-
- /** @return the list of {@link EClass}es found in the following resource */
- public static List<EClass> getMetaclasses(final Resource metamodel) {
- final List<EClass> metaclasses = new ArrayList<EClass>();
- final TreeIterator<EObject> allContents = metamodel.getAllContents();
- while (allContents.hasNext()) {
- final EObject eObject = allContents.next();
- if (eObject instanceof EClass) {
- final EClass eClass = (EClass) eObject;
- metaclasses.add(eClass);
- }
- }
- return metaclasses;
- }
-
- /**
- * Find the {@link EObject} with the given URI in the given {@link ResourceSet}
- *
- * @return the element or <code>null</code> if no element was found with
- * this URI in the given {@link ResourceSet}
- */
- public static EObject findElementByURI(final String uriFragment, final ResourceSet resourceSet) {
- EList<Resource> resources = resourceSet.getResources();
- for (Resource resource : resources) {
- EObject eObject = resource.getEObject(uriFragment);
- if (eObject != null) {
- return eObject;
- }
- }
- return null;
- }
-
-}
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 Mia-Software.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nicolas Bros (Mia-Software) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+/** Utility functions related to EMF */
+public class EMFUtil {
+
+ /**
+ * @return whether the given EObject is in the first resource of its
+ * resource set
+ */
+ public static boolean isInFirstResource(final EObject eObject) {
+ final Resource resource = eObject.eResource();
+ if (resource == null) {
+ return false;
+ }
+ final ResourceSet resourceSet = resource.getResourceSet();
+ if (resourceSet == null) {
+ return false;
+ }
+ final EList<Resource> resources = resourceSet.getResources();
+ if (resources.size() > 0) {
+ if (resourceSet.getResources().get(0) == resource) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Search for instances of the given EClass
+ *
+ * @param eClass
+ * the EClass of the elements that are looked for
+ * @param resource
+ * the resource to search in
+ * @return elements that are instances of the given EClass
+ */
+ public Collection<EObject> findInstancesOf(final EClass eClass, final Resource resource) {
+ final ArrayList<EObject> instances = new ArrayList<EObject>();
+ final TreeIterator<EObject> allContents = resource.getAllContents();
+ while (allContents.hasNext()) {
+ final EObject eObject = allContents.next();
+ if (eObject.eClass() == eClass) {
+ instances.add(eObject);
+ }
+ }
+ return instances;
+ }
+
+ /**
+ * Add all the classes in <code>resources</code> to the <code>classes</code> set
+ */
+ private static void addAll(final Set<EClass> classes, final List<Resource> resources) {
+ for (final Resource resource : resources) {
+ final TreeIterator<EObject> allContents = resource.getAllContents();
+ while (allContents.hasNext()) {
+ final EObject eObject = allContents.next();
+ if (eObject instanceof EClass) {
+ final EClass eClass = (EClass) eObject;
+ classes.add(eClass);
+ }
+ }
+ }
+ }
+
+ /**
+ * Find the most specific metaclass that is common to all of the given
+ * elements.
+ *
+ * @return the common metaclass or <code>null</code> if none was found
+ */
+ public static EClass findCommonClass(final List<EObject> elements) {
+ // FIXME this algorithm can make a choice about a branch early and not
+ // find
+ // a solution, when a solution does exist
+ EClass eClass = null;
+ for (final EObject element : elements) {
+ final EClass elementEClass = element.eClass();
+ if (eClass == null) {
+ eClass = elementEClass;
+ } else {
+ if (eClass.isSuperTypeOf(elementEClass)) {
+ continue;
+ } else if (elementEClass.isSuperTypeOf(eClass)) {
+ eClass = elementEClass;
+ } else {
+ // elements are on two different branches
+ // try to find a common metaclass
+ eClass = findSuperType(eClass, elementEClass);
+ if (eClass == null) {
+ return null;
+ }
+ }
+ }
+ }
+ return eClass;
+ }
+
+ /**
+ * Find the first superclass of <code>eClass</code> that is a superclass of <code>element</code>
+ */
+ private static EClass findSuperType(final EClass eClass, final EClass element) {
+ // do a breadth-first search (with a bottom-up tree)
+ final LinkedList<EClass> breadthFirstList = new LinkedList<EClass>();
+ breadthFirstList.addFirst(eClass);
+
+ while (!breadthFirstList.isEmpty()) {
+ final EClass candidateClass = breadthFirstList.poll();
+
+ if (candidateClass.isSuperTypeOf(element)) {
+ return candidateClass;
+ }
+
+ // add all the direct super-types of this class
+ for (final EClass supertype : candidateClass.getESuperTypes()) {
+ breadthFirstList.addLast(supertype);
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Try to resolve the given proxy.
+ *
+ * @return whether the proxy could be resolved
+ */
+ public static boolean tryResolve(final EObject eObject) {
+ final EObject resolved = EcoreUtil.resolve(eObject, (EObject) null);
+ return !resolved.eIsProxy();
+ }
+
+ /** @return the proxy URI for the given EObject or an empty String if none */
+ public static String proxyURI(final EObject eObject) {
+ final URI eProxyURI = ((InternalEObject) eObject).eProxyURI();
+ if (eProxyURI == null) {
+ return ""; //$NON-NLS-1$
+ }
+ return eProxyURI.toString();
+ }
+
+ public static <T extends ENamedElement> T findElementWithName(final String name,
+ final EList<T> elements) {
+ for (T element : elements) {
+ if (name.equals(element.getName())) {
+ return element;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @return the name of the package in the package registry with this nsURI,
+ * or <code>null</code> if not found
+ */
+ public static String getMetamodelName(final String nsURI) {
+ if (nsURI != null) {
+ final EPackage ePackage = EPackage.Registry.INSTANCE.getEPackage(nsURI);
+ if (ePackage != null) {
+ final String name = ePackage.getName();
+ if (name != null) {
+ return name;
+ }
+ }
+
+ final URI uri = URI.createURI(nsURI);
+ final String lastSegment = uri.lastSegment();
+ if (lastSegment != null) {
+ return lastSegment;
+ }
+ }
+ return null;
+ }
+
+ /** @return the list of {@link EClass}es found in the following resource */
+ public static List<EClass> getMetaclasses(final Resource metamodel) {
+ final List<EClass> metaclasses = new ArrayList<EClass>();
+ final TreeIterator<EObject> allContents = metamodel.getAllContents();
+ while (allContents.hasNext()) {
+ final EObject eObject = allContents.next();
+ if (eObject instanceof EClass) {
+ final EClass eClass = (EClass) eObject;
+ metaclasses.add(eClass);
+ }
+ }
+ return metaclasses;
+ }
+
+ /**
+ * Find the {@link EObject} with the given URI in the given {@link ResourceSet}
+ *
+ * @return the element or <code>null</code> if no element was found with
+ * this URI in the given {@link ResourceSet}
+ */
+ public static EObject findElementByURI(final String uriFragment, final ResourceSet resourceSet) {
+ EList<Resource> resources = resourceSet.getResources();
+ for (Resource resource : resources) {
+ EObject eObject = resource.getEObject(uriFragment);
+ if (eObject != null) {
+ return eObject;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/FormStyleSashForm.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/FormStyleSashForm.java
index e00906cfa75..f7b2b6ccdf4 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/FormStyleSashForm.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/FormStyleSashForm.java
@@ -1,143 +1,143 @@
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.papyrus.emf.facet.util.core.Logger;
-import org.eclipse.papyrus.emf.facet.util.core.internal.Activator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Sash;
-import org.eclipse.ui.forms.FormColors;
-import org.eclipse.ui.forms.IFormColors;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-/** Adapted from {@link org.eclipse.ui.forms.MasterDetailsBlock} */
-public abstract class FormStyleSashForm extends SashForm {
- private final ArrayList<Sash> fSashes = new ArrayList<Sash>();
- private final FormToolkit formToolkit;
- private int minWidth = 0;
-
- private final Listener fListener = new Listener() {
- public void handleEvent(final Event e) {
- switch (e.type) {
- case SWT.MouseEnter:
- e.widget.setData("hover", Boolean.TRUE); //$NON-NLS-1$
- ((Control) e.widget).redraw();
- break;
- case SWT.MouseExit:
- e.widget.setData("hover", null); //$NON-NLS-1$
- ((Control) e.widget).redraw();
- break;
- case SWT.Paint:
- onSashPaint(e);
- break;
- case SWT.Resize:
- hookSashListeners();
- break;
- case SWT.Selection:
- if (e.x < FormStyleSashForm.this.minWidth) {
- e.x = FormStyleSashForm.this.minWidth;
- }
- break;
- default:
- Logger.logWarning("Unhandled event", Activator.getDefault()); //$NON-NLS-1$
- }
- }
- };
-
- public FormStyleSashForm(final Composite parent, final int style, final FormToolkit formToolkit) {
- super(parent, style);
- this.formToolkit = formToolkit;
- formToolkit.adapt(this, false, false);
- createContents();
- hookListeners();
- }
-
- public void setMinWidth(final int minWidth) {
- this.minWidth = minWidth;
- }
-
- protected abstract void createContents();
-
- private void hookListeners() {
- final Listener listener = this.fListener;
- for (final Control child : getChildren()) {
- if (!(child instanceof Sash)) {
- child.addListener(SWT.Resize, listener);
- }
- }
- }
-
- @Override
- public void layout(final boolean changed) {
- super.layout(changed);
- hookSashListeners();
- }
-
- @Override
- public void layout(final Control[] children) {
- super.layout(children);
- hookSashListeners();
- }
-
- void hookSashListeners() {
- purgeSashes();
- try {
- final Sash[] allSashes = getSashes();
- for (final Sash sash : allSashes) {
- if (this.fSashes.contains(sash)) {
- continue;
- }
- sash.addListener(SWT.Paint, this.fListener);
- sash.addListener(SWT.MouseEnter, this.fListener);
- sash.addListener(SWT.MouseExit, this.fListener);
- sash.addListener(SWT.Selection, this.fListener);
- this.fSashes.add(sash);
- }
- } catch (final Exception e) {
- Logger.logError(e, Activator.getDefault());
- }
- }
-
- private Sash[] getSashes() {
- try {
- final Field sashesField = SashForm.class.getDeclaredField("sashes"); //$NON-NLS-1$
- sashesField.setAccessible(true);
- final Sash[] allSashes = (Sash[]) sashesField.get(this);
- return allSashes;
- } catch (final Exception e) {
- Logger.logError(e, Activator.getDefault());
- return new Sash[0];
- }
- }
-
- private void purgeSashes() {
- for (final Iterator<Sash> iter = this.fSashes.iterator(); iter.hasNext();) {
- final Sash sash = iter.next();
- if (sash.isDisposed()) {
- iter.remove();
- }
- }
- }
-
- void onSashPaint(final Event e) {
- final Sash sash = (Sash) e.widget;
- final FormColors colors = this.formToolkit.getColors();
- final GC gc = e.gc;
- final Boolean hover = (Boolean) sash.getData("hover"); //$NON-NLS-1$
- if (hover != null) {
- gc.setBackground(colors.getColor(IFormColors.TB_BG));
- gc.setForeground(colors.getColor(IFormColors.TB_BORDER));
- final Point size = sash.getSize();
- gc.fillRectangle(0, 0, size.x, size.y);
- }
- }
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.eclipse.papyrus.emf.facet.util.core.Logger;
+import org.eclipse.papyrus.emf.facet.util.core.internal.Activator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Sash;
+import org.eclipse.ui.forms.FormColors;
+import org.eclipse.ui.forms.IFormColors;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/** Adapted from {@link org.eclipse.ui.forms.MasterDetailsBlock} */
+public abstract class FormStyleSashForm extends SashForm {
+ private final ArrayList<Sash> fSashes = new ArrayList<Sash>();
+ private final FormToolkit formToolkit;
+ private int minWidth = 0;
+
+ private final Listener fListener = new Listener() {
+ public void handleEvent(final Event e) {
+ switch (e.type) {
+ case SWT.MouseEnter:
+ e.widget.setData("hover", Boolean.TRUE); //$NON-NLS-1$
+ ((Control) e.widget).redraw();
+ break;
+ case SWT.MouseExit:
+ e.widget.setData("hover", null); //$NON-NLS-1$
+ ((Control) e.widget).redraw();
+ break;
+ case SWT.Paint:
+ onSashPaint(e);
+ break;
+ case SWT.Resize:
+ hookSashListeners();
+ break;
+ case SWT.Selection:
+ if (e.x < FormStyleSashForm.this.minWidth) {
+ e.x = FormStyleSashForm.this.minWidth;
+ }
+ break;
+ default:
+ Logger.logWarning("Unhandled event", Activator.getDefault()); //$NON-NLS-1$
+ }
+ }
+ };
+
+ public FormStyleSashForm(final Composite parent, final int style, final FormToolkit formToolkit) {
+ super(parent, style);
+ this.formToolkit = formToolkit;
+ formToolkit.adapt(this, false, false);
+ createContents();
+ hookListeners();
+ }
+
+ public void setMinWidth(final int minWidth) {
+ this.minWidth = minWidth;
+ }
+
+ protected abstract void createContents();
+
+ private void hookListeners() {
+ final Listener listener = this.fListener;
+ for (final Control child : getChildren()) {
+ if (!(child instanceof Sash)) {
+ child.addListener(SWT.Resize, listener);
+ }
+ }
+ }
+
+ @Override
+ public void layout(final boolean changed) {
+ super.layout(changed);
+ hookSashListeners();
+ }
+
+ @Override
+ public void layout(final Control[] children) {
+ super.layout(children);
+ hookSashListeners();
+ }
+
+ void hookSashListeners() {
+ purgeSashes();
+ try {
+ final Sash[] allSashes = getSashes();
+ for (final Sash sash : allSashes) {
+ if (this.fSashes.contains(sash)) {
+ continue;
+ }
+ sash.addListener(SWT.Paint, this.fListener);
+ sash.addListener(SWT.MouseEnter, this.fListener);
+ sash.addListener(SWT.MouseExit, this.fListener);
+ sash.addListener(SWT.Selection, this.fListener);
+ this.fSashes.add(sash);
+ }
+ } catch (final Exception e) {
+ Logger.logError(e, Activator.getDefault());
+ }
+ }
+
+ private Sash[] getSashes() {
+ try {
+ final Field sashesField = SashForm.class.getDeclaredField("sashes"); //$NON-NLS-1$
+ sashesField.setAccessible(true);
+ final Sash[] allSashes = (Sash[]) sashesField.get(this);
+ return allSashes;
+ } catch (final Exception e) {
+ Logger.logError(e, Activator.getDefault());
+ return new Sash[0];
+ }
+ }
+
+ private void purgeSashes() {
+ for (final Iterator<Sash> iter = this.fSashes.iterator(); iter.hasNext();) {
+ final Sash sash = iter.next();
+ if (sash.isDisposed()) {
+ iter.remove();
+ }
+ }
+ }
+
+ void onSashPaint(final Event e) {
+ final Sash sash = (Sash) e.widget;
+ final FormColors colors = this.formToolkit.getColors();
+ final GC gc = e.gc;
+ final Boolean hover = (Boolean) sash.getData("hover"); //$NON-NLS-1$
+ if (hover != null) {
+ gc.setBackground(colors.getColor(IFormColors.TB_BG));
+ gc.setForeground(colors.getColor(IFormColors.TB_BORDER));
+ final Point size = sash.getSize();
+ gc.fillRectangle(0, 0, size.x, size.y);
+ }
+ }
} \ No newline at end of file
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/ImageProvider.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/ImageProvider.java
index 50d766a0928..c40b38eb0cb 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/ImageProvider.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/ImageProvider.java
@@ -1,770 +1,770 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 Mia-Software.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nicolas Bros (Mia-Software) - initial API and implementation
- * Vincent Lorenzo (CEA-LIST) - bug 341238 - We need to be able to specify which column have to be hidden/visible using the customization mechanism
- *******************************************************************************/
-
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-import java.net.URL;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.papyrus.emf.facet.util.core.Logger;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-
-/** A singleton image provider, which caches image descriptors */
-public final class ImageProvider {
-
- private ImageProvider() {
- // This class must only be instantiated by getInstance().
- }
-
- private static ImageProvider instance;
-
- public static ImageProvider getInstance() {
- if (ImageProvider.instance == null) {
- ImageProvider.instance = new ImageProvider();
- }
- return ImageProvider.instance;
- }
-
- private Image linkIcon = null;
- private Image linkUniDirIcon = null;
- private Image linkFacetIcon = null;
- private Image aggregIcon = null;
- private Image aggregUniDirIcon = null;
- private Image invAggregIcon = null;
-
- private Image emptyLinksIcon = null;
- // private Image sortInstancesIcon = null;
- private Image sortLinksIcon = null;
- private Image sortLinksByTypeIcon = null;
- // private Image sortNumericallyIcon = null;
- private Image showDerivedLinksIcon = null;
- private Image showFullQualifiedNamesIcon = null;
- private Image showMultiplicityIcon = null;
- private Image showOppositeLinksIcon = null;
-
- private Image rangeIcon = null;
- private Image containerIcon = null;
- // private Image emptyMetaclassesIcon = null;
- private Image packageIcon = null;
- // private Image derivedInstancesIcon = null;
- // private Image derivationTreeIcon = null;
- private Image attributeIcon = null;
- private Image attributeFacetIcon = null;
- private Image emptyAttributeIcon = null;
- private Image orderingIcon = null;
- private Image linkTypeIcon = null;
-
- private Image facetIcon = null;
- private Image viewMenuIcon = null;
-
- private ImageDescriptor increaseFontSizeIcon = null;
- private ImageDescriptor decreaseFontSizeIcon = null;
- private ImageDescriptor restoreFontSizeIcon = null;
-
- private Image hideEmptyColumnsIcon = null;
- private Image commonColumnsIcon = null;
- private Image eClassIcon = null;
- private Image operationIcon = null;
- private Image predicateIcon = null;
- private Image emffacetIcon = null;
- private Image featureIcon = null;
- private Image errorIcon = null;
- private Image queryIcon = null;
- private Image uiCustomIcon = null;
- private Image grayedUiCustomIcon = null;
- private Image uriIcon = null;
-
- private Image shortcutIcon = null;
-
- private Image topLeftOverlay = null;
- private Image topMiddleOverlay = null;
- private Image topRightOverlay = null;
- private Image middleLeftOverlay = null;
- private Image middleRightOverlay = null;
- private Image bottomLeftOverlay = null;
- private Image bottomMiddleOverlay = null;
- private Image bottomRightOverlay = null;
- private Image customizationLabel = null;
- private Image customizationImage = null;
- private Image rgb = null;
- private Image fontName = null;
- private Image fontSize = null;
- private Image isBold = null;
- private Image isItalic = null;
- private Image isUnderlined = null;
- private Image isStruckthrough = null;
-
-
- private static final String LINK_ICON_PATH = "/icons/full/ctool16/link.gif"; //$NON-NLS-1$
- private static final String LINK_UNIDIR_ICON_PATH = "/icons/full/ctool16/link_unidir.gif"; //$NON-NLS-1$
- private static final String LINK_FACET_ICON_PATH = "/icons/full/ctool16/link_unidir_facet.gif"; //$NON-NLS-1$
- private static final String AGGREG_ICON_PATH = "/icons/full/ctool16/aggreg.gif"; //$NON-NLS-1$
- private static final String AGGREG_UNIDIR_ICON_PATH = "/icons/full/ctool16/aggreg_unidir.gif"; //$NON-NLS-1$
- private static final String INV_AGGREG_ICON_PATH = "/icons/full/ctool16/inv_aggreg.gif"; //$NON-NLS-1$
- private static final String EMPTY_LINKS_ICON_PATH = "/icons/full/ctool16/empty_links.gif"; //$NON-NLS-1$
- private static final String SORT_INSTANCES_ICON_PATH = "/icons/full/ctool16/sort.gif"; //$NON-NLS-1$
- private static final String SORT_LINKS_ICON_PATH = "/icons/full/ctool16/sort_links.gif"; //$NON-NLS-1$
- private static final String SORT_LINKS_BY_TYPE_ICON_PATH = "/icons/full/ctool16/sort_links_by_type.gif"; //$NON-NLS-1$
- private static final String SORT_NUMERICALLY_ICON_PATH = "/icons/full/ctool16/sort_num.gif"; //$NON-NLS-1$
- private static final String SHOW_DERIVED_LINKS_ICON_PATH = "/icons/full/ctool16/derived.gif"; //$NON-NLS-1$
- private static final String SHOW_FULL_QUALIFIED_NAMES_ICON_PATH = "/icons/full/ctool16/full_name.gif"; //$NON-NLS-1$
- private static final String RANGE_ICON_PATH = "/icons/full/ctool16/range.gif"; //$NON-NLS-1$
- private static final String SHOW_MULTIPLICITY_ICON_PATH = "/icons/full/ctool16/multiplicity.gif"; //$NON-NLS-1$
- private static final String SHOW_OPPOSITE_LINKS_ICON_PATH = "/icons/full/ctool16/opposite_links.gif"; //$NON-NLS-1$
- private static final String CONTAINER_ICON_PATH = "/icons/full/ctool16/container.gif"; //$NON-NLS-1$
- private static final String EMPTY_METACLASSES_ICON_PATH = "/icons/full/ctool16/zero.gif"; //$NON-NLS-1$
- private static final String PACKAGE_ICON_PATH = "/icons/full/ctool16/package.gif"; //$NON-NLS-1$
- private static final String DERIVED_INSTANCES_ICON_PATH = "/icons/full/ctool16/derived_instances.gif"; //$NON-NLS-1$
- private static final String DERIVATION_TREE_ICON_PATH = "/icons/full/ctool16/derivation_tree.gif"; //$NON-NLS-1$
- private static final String ATTRIBUTE_ICON_PATH = "/icons/full/ctool16/attributes.gif"; //$NON-NLS-1$
- private static final String ATTRIBUTE_FACET_ICON_PATH = "/icons/full/ctool16/attribute_facet.gif"; //$NON-NLS-1$
- private static final String EMPTY_ATTRIBUTE_ICON_PATH = "/icons/full/ctool16/empty_attributes.gif"; //$NON-NLS-1$
- private static final String INCREASE_FONT_SIZE_ICON_PATH = "/icons/full/ctool16/increase_font_size.gif"; //$NON-NLS-1$
- private static final String DECREASE_FONT_SIZE_ICON_PATH = "/icons/full/ctool16/decrease_font_size.gif"; //$NON-NLS-1$
- private static final String RESTORE_FONT_SIZE_ICON_PATH = "/icons/full/ctool16/restore_font_size.gif"; //$NON-NLS-1$
- private static final String HIDE_EMPTY_COLUMNS_ICON_PATH = "/icons/full/ctool16/non-zero.gif"; //$NON-NLS-1$
- private static final String COMMON_COLUMNS_ICON_PATH = "/icons/full/ctool16/common_columns.gif"; //$NON-NLS-1$
- private static final String ORDERING_ICON_PATH = "/icons/full/ctool16/ordering.gif"; //$NON-NLS-1$
- private static final String ECLASS_ICON_PATH = "/icons/full/ctool16/eClass.gif"; //$NON-NLS-1$
- private static final String OPERATION_ICON_PATH = "/icons/full/ctool16/operation.gif"; //$NON-NLS-1$
- private static final String PREDICATE_ICON_PATH = "/icons/full/ctool16/predicate.gif"; //$NON-NLS-1$
- private static final String EMFFACET_ICON_PATH = "icons/logoEmfFacetMini.gif"; //$NON-NLS-1$
- private static final String FEATURE_ICON_PATH = "icons/full/ctool16/feature.gif"; //$NON-NLS-1$
- private static final String ERROR_ICON_PATH = "icons/error.gif"; //$NON-NLS-1$
- private static final String FACET_ICON_PATH = "icons/Facet.gif"; //$NON-NLS-1$
- private static final String ADD_UI_CUSTOM_ICON_PATH = "icons/full/ctool16/addUiCustom.gif"; //$NON-NLS-1$
- private static final String VIEW_MENU_ICON_PATH = "icons/full/ctool16/view_menu.gif"; //$NON-NLS-1$
- private static final String LINK_TYPE_ICON_PATH = "icons/full/ctool16/link_type.gif"; //$NON-NLS-1$
- private static final String QUERY_ICON_PATH = "icons/query.png"; //$NON-NLS-1$
- private static final String ELEMENT_IDS_ICON_PATH = "/icons/full/ctool16/element_id.gif"; //$NON-NLS-1$
- private static final String URI_ICON_PATH = "/icons/full/ctool16/uri.gif"; //$NON-NLS-1$
- private static final String COLLAPSE_ALL_ICON_PATH = "/icons/full/ctool16/collapseall.gif"; //$NON-NLS-1$
- private static final String SHORTCUT_ICON_PATH = "/icons/shortcut.png"; //$NON-NLS-1$
-
- // Customization
- private static final String TOP_LEFT_OVERLAY_ICON_PATH = "/icons/full/ctool16/topLeftOverlay.png";
- private static final String TOP_MIDDLE_OVERLAY_ICON_PATH = "/icons/full/ctool16/topMiddleOverlay.png";
- private static final String TOP_RIGHT_OVERLAY_ICON_PATH = "/icons/full/ctool16/topRightOverlay.png";
- private static final String MIDDLE_LEFT_OVERLAY_ICON_PATH = "/icons/full/ctool16/middleLeftOverlay.png";
- private static final String MIDDLE_RIGHT_OVERLAY_ICON_PATH = "/icons/full/ctool16/middleRightOverlay.png";
- private static final String BOTTOM_LEFT_OVERLAY_ICON_PATH = "/icons/full/ctool16/bottomLeftOverlay.png";
- private static final String BOTTOM_MIDDLE_OVERLAY_ICON_PATH = "/icons/full/ctool16/bottomMiddleOverlay.png";
- private static final String BOTTOM_RIGHT_OVERLAY_ICON_PATH = "/icons/full/ctool16/bottomRightOverlay.png";
- private static final String LABEL_CUSTOMIZATION = "/icons/full/ctool16/customizationLabel.png";
- private static final String IMAGE_CUSTOMIZATION = "/icons/full/ctool16/imageCustomization.png";
- private static final String RGB_CUSTOMIZATION = "/icons/full/ctool16/rgb.png";
- private static final String FONT_NAME = "/icons/full/ctool16/fontName.png"; //$NON-NLS-1$
- private static final String FONT_SIZE = "/icons/full/ctool16/fontSize.png"; //$NON-NLS-1$
- private static final String IS_BOLD = "/icons/full/ctool16/fontBold.png"; //$NON-NLS-1$
- private static final String IS_ITALIC = "/icons/full/ctool16/fontItalic.bmp"; //$NON-NLS-1$
- private static final String IS_UNDERLINED = "/icons/full/ctool16/fontUnderline.bmp"; //$NON-NLS-1$
- private static final String IS_STRUCKTHROUGH = "/icons/full/ctool16/fontStrukethrough.bmp"; //$NON-NLS-1$
-
- /**
- * Create an image descriptor from a resource
- *
- * @param resourcePath
- * the path of the resource (in the bundle)
- * @return the image descriptor
- */
- private ImageDescriptor createImageDescriptor(final String resourcePath) {
- final URL url = Activator.getDefault().getBundle().getResource(resourcePath);
- if (url == null) {
- Logger.logError(NLS.bind("Resource not found: {0}", //$NON-NLS-1$
- resourcePath), Activator.getDefault());
- return ImageDescriptor.getMissingImageDescriptor();
- }
- return ImageDescriptor.createFromURL(url);
- }
-
- /** Return the icon representing a bidirectional link */
- public Image getLinkIcon() {
- if (this.linkIcon == null) {
- this.linkIcon = createImageDescriptor(ImageProvider.LINK_ICON_PATH).createImage();
- }
- return this.linkIcon;
- }
-
- /** Return the icon representing an unidirectional link */
- public Image getUnidirectionalLinkIcon() {
- if (this.linkUniDirIcon == null) {
- this.linkUniDirIcon = createImageDescriptor(ImageProvider.LINK_UNIDIR_ICON_PATH)
- .createImage();
- }
- return this.linkUniDirIcon;
- }
-
- /** Return the icon representing a facet reference */
- public Image getFacetLinkIcon() {
- if (this.linkFacetIcon == null) {
- this.linkFacetIcon = createImageDescriptor(ImageProvider.LINK_FACET_ICON_PATH)
- .createImage();
- }
- return this.linkFacetIcon;
- }
-
- /** Return the icon representing a composition link */
- public Image getAggregIcon() {
- if (this.aggregIcon == null) {
- this.aggregIcon = createImageDescriptor(ImageProvider.AGGREG_ICON_PATH).createImage();
- }
- return this.aggregIcon;
- }
-
- /** Return the icon representing an unidirectional composition link */
- public Image getUnidirectionalAggregIcon() {
- if (this.aggregUniDirIcon == null) {
- this.aggregUniDirIcon = createImageDescriptor(ImageProvider.AGGREG_UNIDIR_ICON_PATH)
- .createImage();
- }
- return this.aggregUniDirIcon;
- }
-
- /** Return the icon representing a reverse composition link */
- public Image getInvAggregIcon() {
- if (this.invAggregIcon == null) {
- this.invAggregIcon = createImageDescriptor(ImageProvider.INV_AGGREG_ICON_PATH)
- .createImage();
- }
- return this.invAggregIcon;
- }
-
- /** Return the icon representing empty links */
- public Image getEmptyLinksIcon() {
- if (this.emptyLinksIcon == null) {
- this.emptyLinksIcon = createImageDescriptor(ImageProvider.EMPTY_LINKS_ICON_PATH)
- .createImage();
- }
- return this.emptyLinksIcon;
- }
-
- /** Return the icon representing empty links */
- public ImageDescriptor getEmptyLinksImageDescriptor() {
- return createImageDescriptor(ImageProvider.EMPTY_LINKS_ICON_PATH);
- }
-
- /** Return the icon representing sorting of instances */
- public ImageDescriptor getSortInstancesIcon() {
- return createImageDescriptor(ImageProvider.SORT_INSTANCES_ICON_PATH);
- }
-
- /** Return the icon representing sorting of links */
- public Image getSortLinksIcon() {
- if (this.sortLinksIcon == null) {
- this.sortLinksIcon = createImageDescriptor(ImageProvider.SORT_LINKS_ICON_PATH)
- .createImage();
- }
- return this.sortLinksIcon;
- }
-
- /** Return the icon representing sorting of links */
- public ImageDescriptor getSortLinksImageDescriptor() {
- return createImageDescriptor(ImageProvider.SORT_LINKS_ICON_PATH);
- }
-
- /** Return the icon representing sorting of links by type */
- public Image getSortLinksByTypeIcon() {
- if (this.sortLinksByTypeIcon == null) {
- this.sortLinksByTypeIcon = createImageDescriptor(
- ImageProvider.SORT_LINKS_BY_TYPE_ICON_PATH).createImage();
- }
- return this.sortLinksByTypeIcon;
- }
-
- /** Return the icon representing sorting of links by type */
- public ImageDescriptor getSortLinksByTypeImageDescriptor() {
- return createImageDescriptor(ImageProvider.SORT_LINKS_BY_TYPE_ICON_PATH);
- }
-
- /** Return the icon representing sorting numerically */
- public ImageDescriptor getSortNumericallyIcon() {
- return createImageDescriptor(ImageProvider.SORT_NUMERICALLY_ICON_PATH);
- }
-
- /** Return the icon representing derived links */
- public Image getShowDerivedLinksIcon() {
- if (this.showDerivedLinksIcon == null) {
- this.showDerivedLinksIcon = createImageDescriptor(
- ImageProvider.SHOW_DERIVED_LINKS_ICON_PATH).createImage();
- }
- return this.showDerivedLinksIcon;
- }
-
- /** Return the icon representing derived links */
- public ImageDescriptor getShowDerivedLinksImageDescriptor() {
- return createImageDescriptor(ImageProvider.SHOW_DERIVED_LINKS_ICON_PATH);
- }
-
- /** Return the icon representing full qualified names */
- public Image getShowFullQualifiedNamesIcon() {
- if (this.showFullQualifiedNamesIcon == null) {
- this.showFullQualifiedNamesIcon = createImageDescriptor(
- ImageProvider.SHOW_FULL_QUALIFIED_NAMES_ICON_PATH).createImage();
- }
- return this.showFullQualifiedNamesIcon;
- }
-
- /** Return the icon representing full qualified names */
- public ImageDescriptor getShowFullQualifiedNamesImageDescriptor() {
- return createImageDescriptor(ImageProvider.SHOW_FULL_QUALIFIED_NAMES_ICON_PATH);
- }
-
- /** Return the icon representing a range */
- public Image getRangeIcon() {
- if (this.rangeIcon == null) {
- this.rangeIcon = createImageDescriptor(ImageProvider.RANGE_ICON_PATH).createImage();
- }
- return this.rangeIcon;
- }
-
- /** Return the multiplicity icon */
- public Image getShowMultiplicityIcon() {
- if (this.showMultiplicityIcon == null) {
- this.showMultiplicityIcon = createImageDescriptor(
- ImageProvider.SHOW_MULTIPLICITY_ICON_PATH).createImage();
- }
- return this.showMultiplicityIcon;
- }
-
- /** Return the multiplicity icon */
- public ImageDescriptor getShowMultiplicityImageDescriptor() {
- return createImageDescriptor(ImageProvider.SHOW_MULTIPLICITY_ICON_PATH);
- }
-
- /** Return the "opposite links" icon */
- public Image getShowOppositeLinksIcon() {
- if (this.showOppositeLinksIcon == null) {
- this.showOppositeLinksIcon = createImageDescriptor(
- ImageProvider.SHOW_OPPOSITE_LINKS_ICON_PATH).createImage();
- }
- return this.showOppositeLinksIcon;
- }
-
- /** Return the "opposite links" icon */
- public ImageDescriptor getShowOppositeLinksImageDescriptor() {
- return createImageDescriptor(ImageProvider.SHOW_OPPOSITE_LINKS_ICON_PATH);
- }
-
- /** Return the "container" icon */
- public Image getContainerIcon() {
- if (this.containerIcon == null) {
- this.containerIcon = createImageDescriptor(ImageProvider.CONTAINER_ICON_PATH)
- .createImage();
- }
- return this.containerIcon;
- }
-
- /** Return the "container" icon */
- public ImageDescriptor getContainerImageDescriptor() {
- return createImageDescriptor(ImageProvider.CONTAINER_ICON_PATH);
- }
-
- /** Return the "show empty metaclasses" icon */
- public ImageDescriptor getShowEmptyMetaclassesIcon() {
- return createImageDescriptor(ImageProvider.EMPTY_METACLASSES_ICON_PATH);
- }
-
- /** Return the "package" icon */
- public Image getPackageIcon() {
- if (this.packageIcon == null) {
- this.packageIcon = createImageDescriptor(ImageProvider.PACKAGE_ICON_PATH).createImage();
- }
- return this.packageIcon;
- }
-
- /** Return the "package" icon */
- public ImageDescriptor getPackageImageDescriptor() {
- return createImageDescriptor(ImageProvider.PACKAGE_ICON_PATH);
- }
-
- // /** Return the "derived instances" icon */
- // public Image getDerivedInstancesIcon() {
- // if (this.derivedInstancesIcon == null) {
- // this.derivedInstancesIcon = createImageDescriptor(
- // ImageProvider.DERIVED_INSTANCES_ICON_PATH).createImage();
- // }
- // return this.derivedInstancesIcon;
- // }
-
- /** Return the "derived instances" icon */
- public ImageDescriptor getDerivedInstancesImageDescriptor() {
- return createImageDescriptor(ImageProvider.DERIVED_INSTANCES_ICON_PATH);
- }
-
- /** Return the "derivation tree" icon */
- public ImageDescriptor getDerivationTreeIcon() {
- return createImageDescriptor(ImageProvider.DERIVATION_TREE_ICON_PATH);
- }
-
- /** Return the "attribute" icon */
- public Image getAttributeIcon() {
- if (this.attributeIcon == null) {
- this.attributeIcon = createImageDescriptor(ImageProvider.ATTRIBUTE_ICON_PATH)
- .createImage();
- }
- return this.attributeIcon;
- }
-
- /** Return the "attribute" icon */
- public ImageDescriptor getAttributeImageDescriptor() {
- return createImageDescriptor(ImageProvider.ATTRIBUTE_ICON_PATH);
- }
-
- /** Return the "facet attribute" icon */
- public Image getFacetAttributeIcon() {
- if (this.attributeFacetIcon == null) {
- this.attributeFacetIcon = createImageDescriptor(ImageProvider.ATTRIBUTE_FACET_ICON_PATH)
- .createImage();
- }
- return this.attributeFacetIcon;
- }
-
- /** Return the "empty attributes" icon */
- public Image getEmptyAttributeIcon() {
- if (this.emptyAttributeIcon == null) {
- this.emptyAttributeIcon = createImageDescriptor(ImageProvider.EMPTY_ATTRIBUTE_ICON_PATH)
- .createImage();
- }
- return this.emptyAttributeIcon;
- }
-
- /** Return the "empty attributes" icon */
- public ImageDescriptor getEmptyAttributeImageDescriptor() {
- return createImageDescriptor(ImageProvider.EMPTY_ATTRIBUTE_ICON_PATH);
- }
-
- /** Return the "increase font size" icon */
- public ImageDescriptor getIncreaseFontSizeIcon() {
- if (this.increaseFontSizeIcon == null) {
- this.increaseFontSizeIcon = createImageDescriptor(ImageProvider.INCREASE_FONT_SIZE_ICON_PATH);
- }
- return this.increaseFontSizeIcon;
- }
-
- /** Return the "decrease font size" icon */
- public ImageDescriptor getDecreaseFontSizeIcon() {
- if (this.decreaseFontSizeIcon == null) {
- this.decreaseFontSizeIcon = createImageDescriptor(ImageProvider.DECREASE_FONT_SIZE_ICON_PATH);
- }
- return this.decreaseFontSizeIcon;
- }
-
- /** Return the "restore font size" icon */
- public ImageDescriptor getRestoreFontSizeIcon() {
- if (this.restoreFontSizeIcon == null) {
- this.restoreFontSizeIcon = createImageDescriptor(ImageProvider.RESTORE_FONT_SIZE_ICON_PATH);
- }
- return this.restoreFontSizeIcon;
- }
-
- /** Return the "hide empty columns" icon */
- public Image getHideEmptyColumnsIcon() {
- if (this.hideEmptyColumnsIcon == null) {
- this.hideEmptyColumnsIcon = createImageDescriptor(
- ImageProvider.HIDE_EMPTY_COLUMNS_ICON_PATH).createImage();
- }
- return this.hideEmptyColumnsIcon;
- }
-
- /** Return the "common columns" icon */
- public Image getCommonColumnsIcon() {
- if (this.commonColumnsIcon == null) {
- this.commonColumnsIcon = createImageDescriptor(ImageProvider.COMMON_COLUMNS_ICON_PATH)
- .createImage();
- }
- return this.commonColumnsIcon;
- }
-
- /** Return the "ordering" icon */
- public Image getOrderingIcon() {
- if (this.orderingIcon == null) {
- this.orderingIcon = createImageDescriptor(ImageProvider.ORDERING_ICON_PATH)
- .createImage();
- }
- return this.orderingIcon;
- }
-
- /** Return the "ordering" icon */
- public ImageDescriptor getOrderingImageDescriptor() {
- return createImageDescriptor(ImageProvider.ORDERING_ICON_PATH);
- }
-
- /** Return the "eClass" icon */
- public Image getEClassIcon() {
- if (this.eClassIcon == null) {
- this.eClassIcon = createImageDescriptor(ImageProvider.ECLASS_ICON_PATH).createImage();
- }
- return this.eClassIcon;
- }
-
- /** Return the "operation" icon */
- public Image getOperationIcon() {
- if (this.operationIcon == null) {
- this.operationIcon = createImageDescriptor(ImageProvider.OPERATION_ICON_PATH)
- .createImage();
- }
- return this.operationIcon;
- }
-
- /** Return the "predicate" icon */
- public Image getPredicateIcon() {
- if (this.predicateIcon == null) {
- this.predicateIcon = createImageDescriptor(ImageProvider.PREDICATE_ICON_PATH)
- .createImage();
- }
- return this.predicateIcon;
- }
-
- /** Return the "EmfFacet" icon */
- public Image getEmfFacetIcon() {
- if (this.emffacetIcon == null) {
- this.emffacetIcon = createImageDescriptor(ImageProvider.EMFFACET_ICON_PATH).createImage();
- }
- return this.emffacetIcon;
- }
-
- /** Return an icon representing the concept of "feature" */
- public Image getFeatureIcon() {
- if (this.featureIcon == null) {
- this.featureIcon = createImageDescriptor(ImageProvider.FEATURE_ICON_PATH).createImage();
- }
- return this.featureIcon;
- }
-
- /** Return an icon descriptor representing the concept of "feature" */
- public ImageDescriptor getFeatureIconDescriptor() {
- return createImageDescriptor(ImageProvider.FEATURE_ICON_PATH);
- }
-
- /** Return an icon descriptor representing the concept of "facet" */
- public ImageDescriptor getFacetIconDescriptor() {
- return createImageDescriptor(ImageProvider.FACET_ICON_PATH);
- }
-
- /** Return an icon descriptor representing the concept of "facet" */
- public Image getFacetIcon() {
- if (this.facetIcon == null) {
- this.facetIcon = createImageDescriptor(ImageProvider.FACET_ICON_PATH).createImage();
- }
- return this.facetIcon;
- }
-
- /** Return an icon descriptor for "uiCustom" */
- public ImageDescriptor getAddUiCustomIconDescriptor() {
- return createImageDescriptor(ImageProvider.ADD_UI_CUSTOM_ICON_PATH);
- }
-
- /** Return an icon for "uiCustom" */
- public Image getUiCustomIcon() {
- if (this.uiCustomIcon == null) {
- this.uiCustomIcon = createImageDescriptor(ImageProvider.ADD_UI_CUSTOM_ICON_PATH)
- .createImage();
- }
- return this.uiCustomIcon;
- }
-
- /** Return the grayed image for "uiCustom */
- public Image getGrayedUiCustomIcon() {
- if (this.grayedUiCustomIcon == null) {
- this.grayedUiCustomIcon = new Image(Display.getCurrent(), getUiCustomIcon(), SWT.IMAGE_GRAY);
- }
- return this.grayedUiCustomIcon;
- }
-
- /** Return the "error" icon */
- public Image getErrorIcon() {
- if (this.errorIcon == null) {
- this.errorIcon = createImageDescriptor(ImageProvider.ERROR_ICON_PATH).createImage();
- }
- return this.errorIcon;
- }
-
- /** Return the toolbar menu icon */
- public Image getViewMenuIcon() {
- if (this.viewMenuIcon == null) {
- this.viewMenuIcon = createImageDescriptor(ImageProvider.VIEW_MENU_ICON_PATH)
- .createImage();
- }
- return this.viewMenuIcon;
- }
-
- /** Return the query menu icon */
- public Image getQueryIcon() {
- if (this.queryIcon == null) {
- this.queryIcon = createImageDescriptor(ImageProvider.QUERY_ICON_PATH).createImage();
- }
- return this.queryIcon;
- }
-
- /** Return the link type icon */
- public Image getLinkTypeIcon() {
- if (this.linkTypeIcon == null) {
- this.linkTypeIcon = createImageDescriptor(ImageProvider.LINK_TYPE_ICON_PATH)
- .createImage();
- }
- return this.linkTypeIcon;
- }
-
- /** Return the link type icon descriptor */
- public ImageDescriptor getLinkTypeIconDescriptor() {
- return createImageDescriptor(ImageProvider.LINK_TYPE_ICON_PATH);
- }
-
- /** Return the "element ID" icon descriptor */
- public ImageDescriptor getShowElementIDsDescriptor() {
- return createImageDescriptor(ImageProvider.ELEMENT_IDS_ICON_PATH);
- }
-
- public ImageDescriptor getShowURIDescriptor() {
- return createImageDescriptor(ImageProvider.URI_ICON_PATH);
- }
-
- public Image getURIIcon() {
- if (this.uriIcon == null) {
- this.uriIcon = createImageDescriptor(ImageProvider.URI_ICON_PATH).createImage();
- }
- return this.uriIcon;
- }
-
- public ImageDescriptor getCollapseAllDescriptor() {
- return createImageDescriptor(ImageProvider.COLLAPSE_ALL_ICON_PATH);
- }
-
- public Image getShortcutIcon() {
- if (this.shortcutIcon == null) {
- this.shortcutIcon = createImageDescriptor(ImageProvider.SHORTCUT_ICON_PATH).createImage();
- }
- return this.shortcutIcon;
- }
-
- public Image getTopLeftOverlayIcon() {
- if (this.topLeftOverlay == null) {
- this.topLeftOverlay = createImageDescriptor(ImageProvider.TOP_LEFT_OVERLAY_ICON_PATH).createImage();
- }
- return this.topLeftOverlay;
- }
-
- public Image getTopMiddleOverlayIcon() {
- if (this.topMiddleOverlay == null) {
- this.topMiddleOverlay = createImageDescriptor(ImageProvider.TOP_MIDDLE_OVERLAY_ICON_PATH).createImage();
- }
- return this.topMiddleOverlay;
- }
-
- public Image getTopRightOverlayIcon() {
- if (this.topRightOverlay == null) {
- this.topRightOverlay = createImageDescriptor(ImageProvider.TOP_RIGHT_OVERLAY_ICON_PATH).createImage();
- }
- return this.topRightOverlay;
- }
-
- public Image getMiddleLeftOverlayIcon() {
- if (this.middleLeftOverlay == null) {
- this.middleLeftOverlay = createImageDescriptor(ImageProvider.MIDDLE_LEFT_OVERLAY_ICON_PATH).createImage();
- }
- return this.middleLeftOverlay;
- }
-
- public Image getMiddleRightOverlayIcon() {
- if (this.middleRightOverlay == null) {
- this.middleRightOverlay = createImageDescriptor(ImageProvider.MIDDLE_RIGHT_OVERLAY_ICON_PATH).createImage();
- }
- return this.middleRightOverlay;
- }
-
- public Image getBottomLeftOverlayIcon() {
- if (this.bottomLeftOverlay == null) {
- this.bottomLeftOverlay = createImageDescriptor(ImageProvider.BOTTOM_LEFT_OVERLAY_ICON_PATH).createImage();
- }
- return this.bottomLeftOverlay;
- }
-
- public Image getBottomMiddleOverlayIcon() {
- if (this.bottomMiddleOverlay == null) {
- this.bottomMiddleOverlay = createImageDescriptor(ImageProvider.BOTTOM_MIDDLE_OVERLAY_ICON_PATH).createImage();
- }
- return this.bottomMiddleOverlay;
- }
-
- public Image getBottomRightOverlayIcon() {
- if (this.bottomRightOverlay == null) {
- this.bottomRightOverlay = createImageDescriptor(ImageProvider.BOTTOM_RIGHT_OVERLAY_ICON_PATH).createImage();
- }
- return this.bottomRightOverlay;
- }
-
- public Image getCustomizationLabelIcon() {
- if (this.customizationLabel == null) {
- this.customizationLabel = createImageDescriptor(ImageProvider.LABEL_CUSTOMIZATION).createImage();
- }
- return this.customizationLabel;
- }
-
- public Image getCustomizationImageIcon() {
- if (this.customizationImage == null) {
- this.customizationImage = createImageDescriptor(ImageProvider.IMAGE_CUSTOMIZATION).createImage();
- }
- return this.customizationImage;
- }
-
- public Image getCustomizationColorIcon() {
- if (this.rgb == null) {
- this.rgb = createImageDescriptor(ImageProvider.RGB_CUSTOMIZATION).createImage();
- }
- return this.rgb;
- }
-
- public Image getFontNameIcon() {
- if (this.fontName == null) {
- this.fontName = createImageDescriptor(ImageProvider.FONT_NAME).createImage();
- }
- return this.fontName;
- }
-
- public Image getFontSizeIcon() {
- if (this.fontSize == null) {
- this.fontSize = createImageDescriptor(ImageProvider.FONT_SIZE).createImage();
- }
- return this.fontSize;
- }
-
- public Image getIsBoldIcon() {
- if (this.isBold == null) {
- this.isBold = createImageDescriptor(ImageProvider.IS_BOLD).createImage();
- }
- return this.isBold;
- }
-
- public Image getIsItalicIcon() {
- if (this.isItalic == null) {
- this.isItalic = createImageDescriptor(ImageProvider.IS_ITALIC).createImage();
- }
- return this.isItalic;
- }
-
- public Image getIsUnderlinedIcon() {
- if (this.isUnderlined == null) {
- this.isUnderlined = createImageDescriptor(ImageProvider.IS_UNDERLINED).createImage();
- }
- return this.isUnderlined;
- }
-
- public Image getIsStrukethroughIcon() {
- if (this.isStruckthrough == null) {
- this.isStruckthrough = createImageDescriptor(ImageProvider.IS_STRUCKTHROUGH).createImage();
- }
- return this.isStruckthrough;
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2008, 2010 Mia-Software.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nicolas Bros (Mia-Software) - initial API and implementation
+ * Vincent Lorenzo (CEA-LIST) - bug 341238 - We need to be able to specify which column have to be hidden/visible using the customization mechanism
+ *******************************************************************************/
+
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+import java.net.URL;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.emf.facet.util.core.Logger;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+
+/** A singleton image provider, which caches image descriptors */
+public final class ImageProvider {
+
+ private ImageProvider() {
+ // This class must only be instantiated by getInstance().
+ }
+
+ private static ImageProvider instance;
+
+ public static ImageProvider getInstance() {
+ if (ImageProvider.instance == null) {
+ ImageProvider.instance = new ImageProvider();
+ }
+ return ImageProvider.instance;
+ }
+
+ private Image linkIcon = null;
+ private Image linkUniDirIcon = null;
+ private Image linkFacetIcon = null;
+ private Image aggregIcon = null;
+ private Image aggregUniDirIcon = null;
+ private Image invAggregIcon = null;
+
+ private Image emptyLinksIcon = null;
+ // private Image sortInstancesIcon = null;
+ private Image sortLinksIcon = null;
+ private Image sortLinksByTypeIcon = null;
+ // private Image sortNumericallyIcon = null;
+ private Image showDerivedLinksIcon = null;
+ private Image showFullQualifiedNamesIcon = null;
+ private Image showMultiplicityIcon = null;
+ private Image showOppositeLinksIcon = null;
+
+ private Image rangeIcon = null;
+ private Image containerIcon = null;
+ // private Image emptyMetaclassesIcon = null;
+ private Image packageIcon = null;
+ // private Image derivedInstancesIcon = null;
+ // private Image derivationTreeIcon = null;
+ private Image attributeIcon = null;
+ private Image attributeFacetIcon = null;
+ private Image emptyAttributeIcon = null;
+ private Image orderingIcon = null;
+ private Image linkTypeIcon = null;
+
+ private Image facetIcon = null;
+ private Image viewMenuIcon = null;
+
+ private ImageDescriptor increaseFontSizeIcon = null;
+ private ImageDescriptor decreaseFontSizeIcon = null;
+ private ImageDescriptor restoreFontSizeIcon = null;
+
+ private Image hideEmptyColumnsIcon = null;
+ private Image commonColumnsIcon = null;
+ private Image eClassIcon = null;
+ private Image operationIcon = null;
+ private Image predicateIcon = null;
+ private Image emffacetIcon = null;
+ private Image featureIcon = null;
+ private Image errorIcon = null;
+ private Image queryIcon = null;
+ private Image uiCustomIcon = null;
+ private Image grayedUiCustomIcon = null;
+ private Image uriIcon = null;
+
+ private Image shortcutIcon = null;
+
+ private Image topLeftOverlay = null;
+ private Image topMiddleOverlay = null;
+ private Image topRightOverlay = null;
+ private Image middleLeftOverlay = null;
+ private Image middleRightOverlay = null;
+ private Image bottomLeftOverlay = null;
+ private Image bottomMiddleOverlay = null;
+ private Image bottomRightOverlay = null;
+ private Image customizationLabel = null;
+ private Image customizationImage = null;
+ private Image rgb = null;
+ private Image fontName = null;
+ private Image fontSize = null;
+ private Image isBold = null;
+ private Image isItalic = null;
+ private Image isUnderlined = null;
+ private Image isStruckthrough = null;
+
+
+ private static final String LINK_ICON_PATH = "/icons/full/ctool16/link.gif"; //$NON-NLS-1$
+ private static final String LINK_UNIDIR_ICON_PATH = "/icons/full/ctool16/link_unidir.gif"; //$NON-NLS-1$
+ private static final String LINK_FACET_ICON_PATH = "/icons/full/ctool16/link_unidir_facet.gif"; //$NON-NLS-1$
+ private static final String AGGREG_ICON_PATH = "/icons/full/ctool16/aggreg.gif"; //$NON-NLS-1$
+ private static final String AGGREG_UNIDIR_ICON_PATH = "/icons/full/ctool16/aggreg_unidir.gif"; //$NON-NLS-1$
+ private static final String INV_AGGREG_ICON_PATH = "/icons/full/ctool16/inv_aggreg.gif"; //$NON-NLS-1$
+ private static final String EMPTY_LINKS_ICON_PATH = "/icons/full/ctool16/empty_links.gif"; //$NON-NLS-1$
+ private static final String SORT_INSTANCES_ICON_PATH = "/icons/full/ctool16/sort.gif"; //$NON-NLS-1$
+ private static final String SORT_LINKS_ICON_PATH = "/icons/full/ctool16/sort_links.gif"; //$NON-NLS-1$
+ private static final String SORT_LINKS_BY_TYPE_ICON_PATH = "/icons/full/ctool16/sort_links_by_type.gif"; //$NON-NLS-1$
+ private static final String SORT_NUMERICALLY_ICON_PATH = "/icons/full/ctool16/sort_num.gif"; //$NON-NLS-1$
+ private static final String SHOW_DERIVED_LINKS_ICON_PATH = "/icons/full/ctool16/derived.gif"; //$NON-NLS-1$
+ private static final String SHOW_FULL_QUALIFIED_NAMES_ICON_PATH = "/icons/full/ctool16/full_name.gif"; //$NON-NLS-1$
+ private static final String RANGE_ICON_PATH = "/icons/full/ctool16/range.gif"; //$NON-NLS-1$
+ private static final String SHOW_MULTIPLICITY_ICON_PATH = "/icons/full/ctool16/multiplicity.gif"; //$NON-NLS-1$
+ private static final String SHOW_OPPOSITE_LINKS_ICON_PATH = "/icons/full/ctool16/opposite_links.gif"; //$NON-NLS-1$
+ private static final String CONTAINER_ICON_PATH = "/icons/full/ctool16/container.gif"; //$NON-NLS-1$
+ private static final String EMPTY_METACLASSES_ICON_PATH = "/icons/full/ctool16/zero.gif"; //$NON-NLS-1$
+ private static final String PACKAGE_ICON_PATH = "/icons/full/ctool16/package.gif"; //$NON-NLS-1$
+ private static final String DERIVED_INSTANCES_ICON_PATH = "/icons/full/ctool16/derived_instances.gif"; //$NON-NLS-1$
+ private static final String DERIVATION_TREE_ICON_PATH = "/icons/full/ctool16/derivation_tree.gif"; //$NON-NLS-1$
+ private static final String ATTRIBUTE_ICON_PATH = "/icons/full/ctool16/attributes.gif"; //$NON-NLS-1$
+ private static final String ATTRIBUTE_FACET_ICON_PATH = "/icons/full/ctool16/attribute_facet.gif"; //$NON-NLS-1$
+ private static final String EMPTY_ATTRIBUTE_ICON_PATH = "/icons/full/ctool16/empty_attributes.gif"; //$NON-NLS-1$
+ private static final String INCREASE_FONT_SIZE_ICON_PATH = "/icons/full/ctool16/increase_font_size.gif"; //$NON-NLS-1$
+ private static final String DECREASE_FONT_SIZE_ICON_PATH = "/icons/full/ctool16/decrease_font_size.gif"; //$NON-NLS-1$
+ private static final String RESTORE_FONT_SIZE_ICON_PATH = "/icons/full/ctool16/restore_font_size.gif"; //$NON-NLS-1$
+ private static final String HIDE_EMPTY_COLUMNS_ICON_PATH = "/icons/full/ctool16/non-zero.gif"; //$NON-NLS-1$
+ private static final String COMMON_COLUMNS_ICON_PATH = "/icons/full/ctool16/common_columns.gif"; //$NON-NLS-1$
+ private static final String ORDERING_ICON_PATH = "/icons/full/ctool16/ordering.gif"; //$NON-NLS-1$
+ private static final String ECLASS_ICON_PATH = "/icons/full/ctool16/eClass.gif"; //$NON-NLS-1$
+ private static final String OPERATION_ICON_PATH = "/icons/full/ctool16/operation.gif"; //$NON-NLS-1$
+ private static final String PREDICATE_ICON_PATH = "/icons/full/ctool16/predicate.gif"; //$NON-NLS-1$
+ private static final String EMFFACET_ICON_PATH = "icons/logoEmfFacetMini.gif"; //$NON-NLS-1$
+ private static final String FEATURE_ICON_PATH = "icons/full/ctool16/feature.gif"; //$NON-NLS-1$
+ private static final String ERROR_ICON_PATH = "icons/error.gif"; //$NON-NLS-1$
+ private static final String FACET_ICON_PATH = "icons/Facet.gif"; //$NON-NLS-1$
+ private static final String ADD_UI_CUSTOM_ICON_PATH = "icons/full/ctool16/addUiCustom.gif"; //$NON-NLS-1$
+ private static final String VIEW_MENU_ICON_PATH = "icons/full/ctool16/view_menu.gif"; //$NON-NLS-1$
+ private static final String LINK_TYPE_ICON_PATH = "icons/full/ctool16/link_type.gif"; //$NON-NLS-1$
+ private static final String QUERY_ICON_PATH = "icons/query.png"; //$NON-NLS-1$
+ private static final String ELEMENT_IDS_ICON_PATH = "/icons/full/ctool16/element_id.gif"; //$NON-NLS-1$
+ private static final String URI_ICON_PATH = "/icons/full/ctool16/uri.gif"; //$NON-NLS-1$
+ private static final String COLLAPSE_ALL_ICON_PATH = "/icons/full/ctool16/collapseall.gif"; //$NON-NLS-1$
+ private static final String SHORTCUT_ICON_PATH = "/icons/shortcut.png"; //$NON-NLS-1$
+
+ // Customization
+ private static final String TOP_LEFT_OVERLAY_ICON_PATH = "/icons/full/ctool16/topLeftOverlay.png";
+ private static final String TOP_MIDDLE_OVERLAY_ICON_PATH = "/icons/full/ctool16/topMiddleOverlay.png";
+ private static final String TOP_RIGHT_OVERLAY_ICON_PATH = "/icons/full/ctool16/topRightOverlay.png";
+ private static final String MIDDLE_LEFT_OVERLAY_ICON_PATH = "/icons/full/ctool16/middleLeftOverlay.png";
+ private static final String MIDDLE_RIGHT_OVERLAY_ICON_PATH = "/icons/full/ctool16/middleRightOverlay.png";
+ private static final String BOTTOM_LEFT_OVERLAY_ICON_PATH = "/icons/full/ctool16/bottomLeftOverlay.png";
+ private static final String BOTTOM_MIDDLE_OVERLAY_ICON_PATH = "/icons/full/ctool16/bottomMiddleOverlay.png";
+ private static final String BOTTOM_RIGHT_OVERLAY_ICON_PATH = "/icons/full/ctool16/bottomRightOverlay.png";
+ private static final String LABEL_CUSTOMIZATION = "/icons/full/ctool16/customizationLabel.png";
+ private static final String IMAGE_CUSTOMIZATION = "/icons/full/ctool16/imageCustomization.png";
+ private static final String RGB_CUSTOMIZATION = "/icons/full/ctool16/rgb.png";
+ private static final String FONT_NAME = "/icons/full/ctool16/fontName.png"; //$NON-NLS-1$
+ private static final String FONT_SIZE = "/icons/full/ctool16/fontSize.png"; //$NON-NLS-1$
+ private static final String IS_BOLD = "/icons/full/ctool16/fontBold.png"; //$NON-NLS-1$
+ private static final String IS_ITALIC = "/icons/full/ctool16/fontItalic.bmp"; //$NON-NLS-1$
+ private static final String IS_UNDERLINED = "/icons/full/ctool16/fontUnderline.bmp"; //$NON-NLS-1$
+ private static final String IS_STRUCKTHROUGH = "/icons/full/ctool16/fontStrukethrough.bmp"; //$NON-NLS-1$
+
+ /**
+ * Create an image descriptor from a resource
+ *
+ * @param resourcePath
+ * the path of the resource (in the bundle)
+ * @return the image descriptor
+ */
+ private ImageDescriptor createImageDescriptor(final String resourcePath) {
+ final URL url = Activator.getDefault().getBundle().getResource(resourcePath);
+ if (url == null) {
+ Logger.logError(NLS.bind("Resource not found: {0}", //$NON-NLS-1$
+ resourcePath), Activator.getDefault());
+ return ImageDescriptor.getMissingImageDescriptor();
+ }
+ return ImageDescriptor.createFromURL(url);
+ }
+
+ /** Return the icon representing a bidirectional link */
+ public Image getLinkIcon() {
+ if (this.linkIcon == null) {
+ this.linkIcon = createImageDescriptor(ImageProvider.LINK_ICON_PATH).createImage();
+ }
+ return this.linkIcon;
+ }
+
+ /** Return the icon representing an unidirectional link */
+ public Image getUnidirectionalLinkIcon() {
+ if (this.linkUniDirIcon == null) {
+ this.linkUniDirIcon = createImageDescriptor(ImageProvider.LINK_UNIDIR_ICON_PATH)
+ .createImage();
+ }
+ return this.linkUniDirIcon;
+ }
+
+ /** Return the icon representing a facet reference */
+ public Image getFacetLinkIcon() {
+ if (this.linkFacetIcon == null) {
+ this.linkFacetIcon = createImageDescriptor(ImageProvider.LINK_FACET_ICON_PATH)
+ .createImage();
+ }
+ return this.linkFacetIcon;
+ }
+
+ /** Return the icon representing a composition link */
+ public Image getAggregIcon() {
+ if (this.aggregIcon == null) {
+ this.aggregIcon = createImageDescriptor(ImageProvider.AGGREG_ICON_PATH).createImage();
+ }
+ return this.aggregIcon;
+ }
+
+ /** Return the icon representing an unidirectional composition link */
+ public Image getUnidirectionalAggregIcon() {
+ if (this.aggregUniDirIcon == null) {
+ this.aggregUniDirIcon = createImageDescriptor(ImageProvider.AGGREG_UNIDIR_ICON_PATH)
+ .createImage();
+ }
+ return this.aggregUniDirIcon;
+ }
+
+ /** Return the icon representing a reverse composition link */
+ public Image getInvAggregIcon() {
+ if (this.invAggregIcon == null) {
+ this.invAggregIcon = createImageDescriptor(ImageProvider.INV_AGGREG_ICON_PATH)
+ .createImage();
+ }
+ return this.invAggregIcon;
+ }
+
+ /** Return the icon representing empty links */
+ public Image getEmptyLinksIcon() {
+ if (this.emptyLinksIcon == null) {
+ this.emptyLinksIcon = createImageDescriptor(ImageProvider.EMPTY_LINKS_ICON_PATH)
+ .createImage();
+ }
+ return this.emptyLinksIcon;
+ }
+
+ /** Return the icon representing empty links */
+ public ImageDescriptor getEmptyLinksImageDescriptor() {
+ return createImageDescriptor(ImageProvider.EMPTY_LINKS_ICON_PATH);
+ }
+
+ /** Return the icon representing sorting of instances */
+ public ImageDescriptor getSortInstancesIcon() {
+ return createImageDescriptor(ImageProvider.SORT_INSTANCES_ICON_PATH);
+ }
+
+ /** Return the icon representing sorting of links */
+ public Image getSortLinksIcon() {
+ if (this.sortLinksIcon == null) {
+ this.sortLinksIcon = createImageDescriptor(ImageProvider.SORT_LINKS_ICON_PATH)
+ .createImage();
+ }
+ return this.sortLinksIcon;
+ }
+
+ /** Return the icon representing sorting of links */
+ public ImageDescriptor getSortLinksImageDescriptor() {
+ return createImageDescriptor(ImageProvider.SORT_LINKS_ICON_PATH);
+ }
+
+ /** Return the icon representing sorting of links by type */
+ public Image getSortLinksByTypeIcon() {
+ if (this.sortLinksByTypeIcon == null) {
+ this.sortLinksByTypeIcon = createImageDescriptor(
+ ImageProvider.SORT_LINKS_BY_TYPE_ICON_PATH).createImage();
+ }
+ return this.sortLinksByTypeIcon;
+ }
+
+ /** Return the icon representing sorting of links by type */
+ public ImageDescriptor getSortLinksByTypeImageDescriptor() {
+ return createImageDescriptor(ImageProvider.SORT_LINKS_BY_TYPE_ICON_PATH);
+ }
+
+ /** Return the icon representing sorting numerically */
+ public ImageDescriptor getSortNumericallyIcon() {
+ return createImageDescriptor(ImageProvider.SORT_NUMERICALLY_ICON_PATH);
+ }
+
+ /** Return the icon representing derived links */
+ public Image getShowDerivedLinksIcon() {
+ if (this.showDerivedLinksIcon == null) {
+ this.showDerivedLinksIcon = createImageDescriptor(
+ ImageProvider.SHOW_DERIVED_LINKS_ICON_PATH).createImage();
+ }
+ return this.showDerivedLinksIcon;
+ }
+
+ /** Return the icon representing derived links */
+ public ImageDescriptor getShowDerivedLinksImageDescriptor() {
+ return createImageDescriptor(ImageProvider.SHOW_DERIVED_LINKS_ICON_PATH);
+ }
+
+ /** Return the icon representing full qualified names */
+ public Image getShowFullQualifiedNamesIcon() {
+ if (this.showFullQualifiedNamesIcon == null) {
+ this.showFullQualifiedNamesIcon = createImageDescriptor(
+ ImageProvider.SHOW_FULL_QUALIFIED_NAMES_ICON_PATH).createImage();
+ }
+ return this.showFullQualifiedNamesIcon;
+ }
+
+ /** Return the icon representing full qualified names */
+ public ImageDescriptor getShowFullQualifiedNamesImageDescriptor() {
+ return createImageDescriptor(ImageProvider.SHOW_FULL_QUALIFIED_NAMES_ICON_PATH);
+ }
+
+ /** Return the icon representing a range */
+ public Image getRangeIcon() {
+ if (this.rangeIcon == null) {
+ this.rangeIcon = createImageDescriptor(ImageProvider.RANGE_ICON_PATH).createImage();
+ }
+ return this.rangeIcon;
+ }
+
+ /** Return the multiplicity icon */
+ public Image getShowMultiplicityIcon() {
+ if (this.showMultiplicityIcon == null) {
+ this.showMultiplicityIcon = createImageDescriptor(
+ ImageProvider.SHOW_MULTIPLICITY_ICON_PATH).createImage();
+ }
+ return this.showMultiplicityIcon;
+ }
+
+ /** Return the multiplicity icon */
+ public ImageDescriptor getShowMultiplicityImageDescriptor() {
+ return createImageDescriptor(ImageProvider.SHOW_MULTIPLICITY_ICON_PATH);
+ }
+
+ /** Return the "opposite links" icon */
+ public Image getShowOppositeLinksIcon() {
+ if (this.showOppositeLinksIcon == null) {
+ this.showOppositeLinksIcon = createImageDescriptor(
+ ImageProvider.SHOW_OPPOSITE_LINKS_ICON_PATH).createImage();
+ }
+ return this.showOppositeLinksIcon;
+ }
+
+ /** Return the "opposite links" icon */
+ public ImageDescriptor getShowOppositeLinksImageDescriptor() {
+ return createImageDescriptor(ImageProvider.SHOW_OPPOSITE_LINKS_ICON_PATH);
+ }
+
+ /** Return the "container" icon */
+ public Image getContainerIcon() {
+ if (this.containerIcon == null) {
+ this.containerIcon = createImageDescriptor(ImageProvider.CONTAINER_ICON_PATH)
+ .createImage();
+ }
+ return this.containerIcon;
+ }
+
+ /** Return the "container" icon */
+ public ImageDescriptor getContainerImageDescriptor() {
+ return createImageDescriptor(ImageProvider.CONTAINER_ICON_PATH);
+ }
+
+ /** Return the "show empty metaclasses" icon */
+ public ImageDescriptor getShowEmptyMetaclassesIcon() {
+ return createImageDescriptor(ImageProvider.EMPTY_METACLASSES_ICON_PATH);
+ }
+
+ /** Return the "package" icon */
+ public Image getPackageIcon() {
+ if (this.packageIcon == null) {
+ this.packageIcon = createImageDescriptor(ImageProvider.PACKAGE_ICON_PATH).createImage();
+ }
+ return this.packageIcon;
+ }
+
+ /** Return the "package" icon */
+ public ImageDescriptor getPackageImageDescriptor() {
+ return createImageDescriptor(ImageProvider.PACKAGE_ICON_PATH);
+ }
+
+ // /** Return the "derived instances" icon */
+ // public Image getDerivedInstancesIcon() {
+ // if (this.derivedInstancesIcon == null) {
+ // this.derivedInstancesIcon = createImageDescriptor(
+ // ImageProvider.DERIVED_INSTANCES_ICON_PATH).createImage();
+ // }
+ // return this.derivedInstancesIcon;
+ // }
+
+ /** Return the "derived instances" icon */
+ public ImageDescriptor getDerivedInstancesImageDescriptor() {
+ return createImageDescriptor(ImageProvider.DERIVED_INSTANCES_ICON_PATH);
+ }
+
+ /** Return the "derivation tree" icon */
+ public ImageDescriptor getDerivationTreeIcon() {
+ return createImageDescriptor(ImageProvider.DERIVATION_TREE_ICON_PATH);
+ }
+
+ /** Return the "attribute" icon */
+ public Image getAttributeIcon() {
+ if (this.attributeIcon == null) {
+ this.attributeIcon = createImageDescriptor(ImageProvider.ATTRIBUTE_ICON_PATH)
+ .createImage();
+ }
+ return this.attributeIcon;
+ }
+
+ /** Return the "attribute" icon */
+ public ImageDescriptor getAttributeImageDescriptor() {
+ return createImageDescriptor(ImageProvider.ATTRIBUTE_ICON_PATH);
+ }
+
+ /** Return the "facet attribute" icon */
+ public Image getFacetAttributeIcon() {
+ if (this.attributeFacetIcon == null) {
+ this.attributeFacetIcon = createImageDescriptor(ImageProvider.ATTRIBUTE_FACET_ICON_PATH)
+ .createImage();
+ }
+ return this.attributeFacetIcon;
+ }
+
+ /** Return the "empty attributes" icon */
+ public Image getEmptyAttributeIcon() {
+ if (this.emptyAttributeIcon == null) {
+ this.emptyAttributeIcon = createImageDescriptor(ImageProvider.EMPTY_ATTRIBUTE_ICON_PATH)
+ .createImage();
+ }
+ return this.emptyAttributeIcon;
+ }
+
+ /** Return the "empty attributes" icon */
+ public ImageDescriptor getEmptyAttributeImageDescriptor() {
+ return createImageDescriptor(ImageProvider.EMPTY_ATTRIBUTE_ICON_PATH);
+ }
+
+ /** Return the "increase font size" icon */
+ public ImageDescriptor getIncreaseFontSizeIcon() {
+ if (this.increaseFontSizeIcon == null) {
+ this.increaseFontSizeIcon = createImageDescriptor(ImageProvider.INCREASE_FONT_SIZE_ICON_PATH);
+ }
+ return this.increaseFontSizeIcon;
+ }
+
+ /** Return the "decrease font size" icon */
+ public ImageDescriptor getDecreaseFontSizeIcon() {
+ if (this.decreaseFontSizeIcon == null) {
+ this.decreaseFontSizeIcon = createImageDescriptor(ImageProvider.DECREASE_FONT_SIZE_ICON_PATH);
+ }
+ return this.decreaseFontSizeIcon;
+ }
+
+ /** Return the "restore font size" icon */
+ public ImageDescriptor getRestoreFontSizeIcon() {
+ if (this.restoreFontSizeIcon == null) {
+ this.restoreFontSizeIcon = createImageDescriptor(ImageProvider.RESTORE_FONT_SIZE_ICON_PATH);
+ }
+ return this.restoreFontSizeIcon;
+ }
+
+ /** Return the "hide empty columns" icon */
+ public Image getHideEmptyColumnsIcon() {
+ if (this.hideEmptyColumnsIcon == null) {
+ this.hideEmptyColumnsIcon = createImageDescriptor(
+ ImageProvider.HIDE_EMPTY_COLUMNS_ICON_PATH).createImage();
+ }
+ return this.hideEmptyColumnsIcon;
+ }
+
+ /** Return the "common columns" icon */
+ public Image getCommonColumnsIcon() {
+ if (this.commonColumnsIcon == null) {
+ this.commonColumnsIcon = createImageDescriptor(ImageProvider.COMMON_COLUMNS_ICON_PATH)
+ .createImage();
+ }
+ return this.commonColumnsIcon;
+ }
+
+ /** Return the "ordering" icon */
+ public Image getOrderingIcon() {
+ if (this.orderingIcon == null) {
+ this.orderingIcon = createImageDescriptor(ImageProvider.ORDERING_ICON_PATH)
+ .createImage();
+ }
+ return this.orderingIcon;
+ }
+
+ /** Return the "ordering" icon */
+ public ImageDescriptor getOrderingImageDescriptor() {
+ return createImageDescriptor(ImageProvider.ORDERING_ICON_PATH);
+ }
+
+ /** Return the "eClass" icon */
+ public Image getEClassIcon() {
+ if (this.eClassIcon == null) {
+ this.eClassIcon = createImageDescriptor(ImageProvider.ECLASS_ICON_PATH).createImage();
+ }
+ return this.eClassIcon;
+ }
+
+ /** Return the "operation" icon */
+ public Image getOperationIcon() {
+ if (this.operationIcon == null) {
+ this.operationIcon = createImageDescriptor(ImageProvider.OPERATION_ICON_PATH)
+ .createImage();
+ }
+ return this.operationIcon;
+ }
+
+ /** Return the "predicate" icon */
+ public Image getPredicateIcon() {
+ if (this.predicateIcon == null) {
+ this.predicateIcon = createImageDescriptor(ImageProvider.PREDICATE_ICON_PATH)
+ .createImage();
+ }
+ return this.predicateIcon;
+ }
+
+ /** Return the "EmfFacet" icon */
+ public Image getEmfFacetIcon() {
+ if (this.emffacetIcon == null) {
+ this.emffacetIcon = createImageDescriptor(ImageProvider.EMFFACET_ICON_PATH).createImage();
+ }
+ return this.emffacetIcon;
+ }
+
+ /** Return an icon representing the concept of "feature" */
+ public Image getFeatureIcon() {
+ if (this.featureIcon == null) {
+ this.featureIcon = createImageDescriptor(ImageProvider.FEATURE_ICON_PATH).createImage();
+ }
+ return this.featureIcon;
+ }
+
+ /** Return an icon descriptor representing the concept of "feature" */
+ public ImageDescriptor getFeatureIconDescriptor() {
+ return createImageDescriptor(ImageProvider.FEATURE_ICON_PATH);
+ }
+
+ /** Return an icon descriptor representing the concept of "facet" */
+ public ImageDescriptor getFacetIconDescriptor() {
+ return createImageDescriptor(ImageProvider.FACET_ICON_PATH);
+ }
+
+ /** Return an icon descriptor representing the concept of "facet" */
+ public Image getFacetIcon() {
+ if (this.facetIcon == null) {
+ this.facetIcon = createImageDescriptor(ImageProvider.FACET_ICON_PATH).createImage();
+ }
+ return this.facetIcon;
+ }
+
+ /** Return an icon descriptor for "uiCustom" */
+ public ImageDescriptor getAddUiCustomIconDescriptor() {
+ return createImageDescriptor(ImageProvider.ADD_UI_CUSTOM_ICON_PATH);
+ }
+
+ /** Return an icon for "uiCustom" */
+ public Image getUiCustomIcon() {
+ if (this.uiCustomIcon == null) {
+ this.uiCustomIcon = createImageDescriptor(ImageProvider.ADD_UI_CUSTOM_ICON_PATH)
+ .createImage();
+ }
+ return this.uiCustomIcon;
+ }
+
+ /** Return the grayed image for "uiCustom */
+ public Image getGrayedUiCustomIcon() {
+ if (this.grayedUiCustomIcon == null) {
+ this.grayedUiCustomIcon = new Image(Display.getCurrent(), getUiCustomIcon(), SWT.IMAGE_GRAY);
+ }
+ return this.grayedUiCustomIcon;
+ }
+
+ /** Return the "error" icon */
+ public Image getErrorIcon() {
+ if (this.errorIcon == null) {
+ this.errorIcon = createImageDescriptor(ImageProvider.ERROR_ICON_PATH).createImage();
+ }
+ return this.errorIcon;
+ }
+
+ /** Return the toolbar menu icon */
+ public Image getViewMenuIcon() {
+ if (this.viewMenuIcon == null) {
+ this.viewMenuIcon = createImageDescriptor(ImageProvider.VIEW_MENU_ICON_PATH)
+ .createImage();
+ }
+ return this.viewMenuIcon;
+ }
+
+ /** Return the query menu icon */
+ public Image getQueryIcon() {
+ if (this.queryIcon == null) {
+ this.queryIcon = createImageDescriptor(ImageProvider.QUERY_ICON_PATH).createImage();
+ }
+ return this.queryIcon;
+ }
+
+ /** Return the link type icon */
+ public Image getLinkTypeIcon() {
+ if (this.linkTypeIcon == null) {
+ this.linkTypeIcon = createImageDescriptor(ImageProvider.LINK_TYPE_ICON_PATH)
+ .createImage();
+ }
+ return this.linkTypeIcon;
+ }
+
+ /** Return the link type icon descriptor */
+ public ImageDescriptor getLinkTypeIconDescriptor() {
+ return createImageDescriptor(ImageProvider.LINK_TYPE_ICON_PATH);
+ }
+
+ /** Return the "element ID" icon descriptor */
+ public ImageDescriptor getShowElementIDsDescriptor() {
+ return createImageDescriptor(ImageProvider.ELEMENT_IDS_ICON_PATH);
+ }
+
+ public ImageDescriptor getShowURIDescriptor() {
+ return createImageDescriptor(ImageProvider.URI_ICON_PATH);
+ }
+
+ public Image getURIIcon() {
+ if (this.uriIcon == null) {
+ this.uriIcon = createImageDescriptor(ImageProvider.URI_ICON_PATH).createImage();
+ }
+ return this.uriIcon;
+ }
+
+ public ImageDescriptor getCollapseAllDescriptor() {
+ return createImageDescriptor(ImageProvider.COLLAPSE_ALL_ICON_PATH);
+ }
+
+ public Image getShortcutIcon() {
+ if (this.shortcutIcon == null) {
+ this.shortcutIcon = createImageDescriptor(ImageProvider.SHORTCUT_ICON_PATH).createImage();
+ }
+ return this.shortcutIcon;
+ }
+
+ public Image getTopLeftOverlayIcon() {
+ if (this.topLeftOverlay == null) {
+ this.topLeftOverlay = createImageDescriptor(ImageProvider.TOP_LEFT_OVERLAY_ICON_PATH).createImage();
+ }
+ return this.topLeftOverlay;
+ }
+
+ public Image getTopMiddleOverlayIcon() {
+ if (this.topMiddleOverlay == null) {
+ this.topMiddleOverlay = createImageDescriptor(ImageProvider.TOP_MIDDLE_OVERLAY_ICON_PATH).createImage();
+ }
+ return this.topMiddleOverlay;
+ }
+
+ public Image getTopRightOverlayIcon() {
+ if (this.topRightOverlay == null) {
+ this.topRightOverlay = createImageDescriptor(ImageProvider.TOP_RIGHT_OVERLAY_ICON_PATH).createImage();
+ }
+ return this.topRightOverlay;
+ }
+
+ public Image getMiddleLeftOverlayIcon() {
+ if (this.middleLeftOverlay == null) {
+ this.middleLeftOverlay = createImageDescriptor(ImageProvider.MIDDLE_LEFT_OVERLAY_ICON_PATH).createImage();
+ }
+ return this.middleLeftOverlay;
+ }
+
+ public Image getMiddleRightOverlayIcon() {
+ if (this.middleRightOverlay == null) {
+ this.middleRightOverlay = createImageDescriptor(ImageProvider.MIDDLE_RIGHT_OVERLAY_ICON_PATH).createImage();
+ }
+ return this.middleRightOverlay;
+ }
+
+ public Image getBottomLeftOverlayIcon() {
+ if (this.bottomLeftOverlay == null) {
+ this.bottomLeftOverlay = createImageDescriptor(ImageProvider.BOTTOM_LEFT_OVERLAY_ICON_PATH).createImage();
+ }
+ return this.bottomLeftOverlay;
+ }
+
+ public Image getBottomMiddleOverlayIcon() {
+ if (this.bottomMiddleOverlay == null) {
+ this.bottomMiddleOverlay = createImageDescriptor(ImageProvider.BOTTOM_MIDDLE_OVERLAY_ICON_PATH).createImage();
+ }
+ return this.bottomMiddleOverlay;
+ }
+
+ public Image getBottomRightOverlayIcon() {
+ if (this.bottomRightOverlay == null) {
+ this.bottomRightOverlay = createImageDescriptor(ImageProvider.BOTTOM_RIGHT_OVERLAY_ICON_PATH).createImage();
+ }
+ return this.bottomRightOverlay;
+ }
+
+ public Image getCustomizationLabelIcon() {
+ if (this.customizationLabel == null) {
+ this.customizationLabel = createImageDescriptor(ImageProvider.LABEL_CUSTOMIZATION).createImage();
+ }
+ return this.customizationLabel;
+ }
+
+ public Image getCustomizationImageIcon() {
+ if (this.customizationImage == null) {
+ this.customizationImage = createImageDescriptor(ImageProvider.IMAGE_CUSTOMIZATION).createImage();
+ }
+ return this.customizationImage;
+ }
+
+ public Image getCustomizationColorIcon() {
+ if (this.rgb == null) {
+ this.rgb = createImageDescriptor(ImageProvider.RGB_CUSTOMIZATION).createImage();
+ }
+ return this.rgb;
+ }
+
+ public Image getFontNameIcon() {
+ if (this.fontName == null) {
+ this.fontName = createImageDescriptor(ImageProvider.FONT_NAME).createImage();
+ }
+ return this.fontName;
+ }
+
+ public Image getFontSizeIcon() {
+ if (this.fontSize == null) {
+ this.fontSize = createImageDescriptor(ImageProvider.FONT_SIZE).createImage();
+ }
+ return this.fontSize;
+ }
+
+ public Image getIsBoldIcon() {
+ if (this.isBold == null) {
+ this.isBold = createImageDescriptor(ImageProvider.IS_BOLD).createImage();
+ }
+ return this.isBold;
+ }
+
+ public Image getIsItalicIcon() {
+ if (this.isItalic == null) {
+ this.isItalic = createImageDescriptor(ImageProvider.IS_ITALIC).createImage();
+ }
+ return this.isItalic;
+ }
+
+ public Image getIsUnderlinedIcon() {
+ if (this.isUnderlined == null) {
+ this.isUnderlined = createImageDescriptor(ImageProvider.IS_UNDERLINED).createImage();
+ }
+ return this.isUnderlined;
+ }
+
+ public Image getIsStrukethroughIcon() {
+ if (this.isStruckthrough == null) {
+ this.isStruckthrough = createImageDescriptor(ImageProvider.IS_STRUCKTHROUGH).createImage();
+ }
+ return this.isStruckthrough;
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/Messages.java b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/Messages.java
index baa1d3401ff..de53a2fd0d2 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/Messages.java
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/Messages.java
@@ -1,122 +1,122 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 Mia-Software.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nicolas Bros (Mia-Software) - initial API and implementation
- *******************************************************************************/
-package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
-
-import org.eclipse.osgi.util.NLS;
-
-public final class Messages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.papyrus.emf.facet.custom.metamodel.editor.messages"; //$NON-NLS-1$
-
- public static String CustomizationEditor_add;
- public static String CustomizationEditor_appliesToSubInstances;
- public static String CustomizationEditor_bold;
- public static String CustomizationEditor_btnOpenElementSelectionDialogText;
- public static String CustomizationEditor_btnOpenFontDialogText;
- public static String CustomizationEditor_btnProperties;
- public static String CustomizationEditor_btnTooltipViewErrors;
- public static String CustomizationEditor_cannotFindMetamodel;
-
- public static String CustomizationEditor_changeProperties;
- public static String CustomizationEditor_collapseLink;
-
- public static String CustomizationEditor_conditions;
-
- public static String CustomizationEditor_conflictingUnsavedChanges;
- public static String CustomizationEditor_customizationsWillBeDeleted;
-
- public static String CustomizationEditor_customViewFor;
- public static String CustomizationEditor_down;
- public static String CustomizationEditor_edit;
- public static String CustomizationEditor_editFeatureValue;
- public static String CustomizationEditor_error;
- public static String CustomizationEditor_errorLoadingResource;
-
- public static String CustomizationEditor_fileConflict;
- public static String CustomizationEditor_hideMetaclassName;
- public static String CustomizationEditor_iconSelection;
- public static String CustomizationEditor_invalidSelection;
- public static String CustomizationEditor_italic;
- public static String CustomizationEditor_missingQuery;
- public static String CustomizationEditor_missingQuerySet;
- public static String CustomizationEditor_nonExistingQuery;
- public static String CustomizationEditor_nonExistingQuerySet;
- public static String CustomizationEditor_notFileSelected;
- public static String CustomizationEditor_promptCleanCustomizations;
- public static String CustomizationEditor_readonly;
- public static String CustomizationEditor_remove;
-
- public static String CustomizationEditor_removeIrrelevantCustomizations;
-
- public static String CustomizationEditor_resetDefaults;
- public static String CustomizationEditor_sectionName_customizations;
- public static String CustomizationEditor_sectionName_types;
- public static String CustomizationEditor_selectAnIcon;
- public static String CustomizationEditor_strikethrough;
- public static String CustomizationEditor_text;
- public static String CustomizationEditor_Title_cleanCustomization;
- public static String CustomizationEditor_underlined;
- public static String CustomizationEditor_unknown;
- public static String CustomizationEditor_up;
- public static String CustomizationEditor_visible;
- public static String CustomizationEditor_metaclassVisible;
- public static String CustomizationEditor_youChangedMetamodel;
- public static String CustomizationPropertiesDialog_customizationProperties;
- public static String CustomizationPropertiesDialog_metamodel;
- public static String CustomizationPropertiesDialog_metamodelMustBeSelected;
- public static String CustomizationPropertiesDialog_noMetamodelSelected;
- public static String CustomizationPropertiesDialog_querySets;
- public static String CustomizationViewer_backgroundColor;
-
- public static String CustomizationViewer_collapseLink;
- public static String CustomizationViewer_defaultValue;
- public static String CustomizationViewer_feature;
- public static String CustomizationViewer_hideMetaclassName;
- public static String CustomizationViewer_typeIcon;
- public static String CustomizationViewer_isBold;
- public static String CustomizationViewer_isItalic;
- public static String CustomizationViewer_isStruckthrough;
- public static String CustomizationViewer_isUnderlined;
- public static String CustomizationViewer_isVisible;
- public static String CustomizationViewer_label;
- public static String CustomizationViewer_instanceIcon;
- public static String CustomizationViewer_overlayIcon;
- public static String CustomizationViewer_textColor;
- public static String CustomizationViewer_textFontName;
- public static String CustomizationViewer_value;
- public static String CustomizationViewer_metaclassVisible;
- public static String ErrorsDialog_diagnosticMessage;
- public static String ErrorsDialog_errors;
- public static String MetaclassViewToolBar_showDerivedLinks;
- public static String MetaclassViewToolBar_showFullQualifiedNames;
- public static String MetaclassViewToolBar_showMultiplicity;
- public static String MetaclassViewToolBar_sortLinks;
- public static String MetaclassViewToolBar_sortLinksByType;
- public static String EditFeatureValueDialog_conditionQueryMustBeSelected;
- public static String EditFeatureValueDialog_defaultValue;
- public static String EditFeatureValueDialog_editFeatureValue;
- public static String EditFeatureValueDialog_featureValue;
- public static String EditFeatureValueDialog_noConditionQuerySelected;
- public static String EditFeatureValueDialog_noQuerySelected;
- public static String EditFeatureValueDialog_queryForCondition;
- public static String EditFeatureValueDialog_queryMustBeSelected;
- public static String EditFeatureValueDialog_queryValue;
- public static String EditFeatureValueDialog_staticValue;
- public static String EditFeatureValueDialog_type;
-
- static {
- // initialize resource bundle
- NLS.initializeMessages(Messages.BUNDLE_NAME, Messages.class);
- }
-
- private Messages() {
- // not instantiable
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2009, 2010 Mia-Software.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nicolas Bros (Mia-Software) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.emf.facet.custom.metamodel.v0_2_0.custom.presentation;
+
+import org.eclipse.osgi.util.NLS;
+
+public final class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.papyrus.emf.facet.custom.metamodel.editor.messages"; //$NON-NLS-1$
+
+ public static String CustomizationEditor_add;
+ public static String CustomizationEditor_appliesToSubInstances;
+ public static String CustomizationEditor_bold;
+ public static String CustomizationEditor_btnOpenElementSelectionDialogText;
+ public static String CustomizationEditor_btnOpenFontDialogText;
+ public static String CustomizationEditor_btnProperties;
+ public static String CustomizationEditor_btnTooltipViewErrors;
+ public static String CustomizationEditor_cannotFindMetamodel;
+
+ public static String CustomizationEditor_changeProperties;
+ public static String CustomizationEditor_collapseLink;
+
+ public static String CustomizationEditor_conditions;
+
+ public static String CustomizationEditor_conflictingUnsavedChanges;
+ public static String CustomizationEditor_customizationsWillBeDeleted;
+
+ public static String CustomizationEditor_customViewFor;
+ public static String CustomizationEditor_down;
+ public static String CustomizationEditor_edit;
+ public static String CustomizationEditor_editFeatureValue;
+ public static String CustomizationEditor_error;
+ public static String CustomizationEditor_errorLoadingResource;
+
+ public static String CustomizationEditor_fileConflict;
+ public static String CustomizationEditor_hideMetaclassName;
+ public static String CustomizationEditor_iconSelection;
+ public static String CustomizationEditor_invalidSelection;
+ public static String CustomizationEditor_italic;
+ public static String CustomizationEditor_missingQuery;
+ public static String CustomizationEditor_missingQuerySet;
+ public static String CustomizationEditor_nonExistingQuery;
+ public static String CustomizationEditor_nonExistingQuerySet;
+ public static String CustomizationEditor_notFileSelected;
+ public static String CustomizationEditor_promptCleanCustomizations;
+ public static String CustomizationEditor_readonly;
+ public static String CustomizationEditor_remove;
+
+ public static String CustomizationEditor_removeIrrelevantCustomizations;
+
+ public static String CustomizationEditor_resetDefaults;
+ public static String CustomizationEditor_sectionName_customizations;
+ public static String CustomizationEditor_sectionName_types;
+ public static String CustomizationEditor_selectAnIcon;
+ public static String CustomizationEditor_strikethrough;
+ public static String CustomizationEditor_text;
+ public static String CustomizationEditor_Title_cleanCustomization;
+ public static String CustomizationEditor_underlined;
+ public static String CustomizationEditor_unknown;
+ public static String CustomizationEditor_up;
+ public static String CustomizationEditor_visible;
+ public static String CustomizationEditor_metaclassVisible;
+ public static String CustomizationEditor_youChangedMetamodel;
+ public static String CustomizationPropertiesDialog_customizationProperties;
+ public static String CustomizationPropertiesDialog_metamodel;
+ public static String CustomizationPropertiesDialog_metamodelMustBeSelected;
+ public static String CustomizationPropertiesDialog_noMetamodelSelected;
+ public static String CustomizationPropertiesDialog_querySets;
+ public static String CustomizationViewer_backgroundColor;
+
+ public static String CustomizationViewer_collapseLink;
+ public static String CustomizationViewer_defaultValue;
+ public static String CustomizationViewer_feature;
+ public static String CustomizationViewer_hideMetaclassName;
+ public static String CustomizationViewer_typeIcon;
+ public static String CustomizationViewer_isBold;
+ public static String CustomizationViewer_isItalic;
+ public static String CustomizationViewer_isStruckthrough;
+ public static String CustomizationViewer_isUnderlined;
+ public static String CustomizationViewer_isVisible;
+ public static String CustomizationViewer_label;
+ public static String CustomizationViewer_instanceIcon;
+ public static String CustomizationViewer_overlayIcon;
+ public static String CustomizationViewer_textColor;
+ public static String CustomizationViewer_textFontName;
+ public static String CustomizationViewer_value;
+ public static String CustomizationViewer_metaclassVisible;
+ public static String ErrorsDialog_diagnosticMessage;
+ public static String ErrorsDialog_errors;
+ public static String MetaclassViewToolBar_showDerivedLinks;
+ public static String MetaclassViewToolBar_showFullQualifiedNames;
+ public static String MetaclassViewToolBar_showMultiplicity;
+ public static String MetaclassViewToolBar_sortLinks;
+ public static String MetaclassViewToolBar_sortLinksByType;
+ public static String EditFeatureValueDialog_conditionQueryMustBeSelected;
+ public static String EditFeatureValueDialog_defaultValue;
+ public static String EditFeatureValueDialog_editFeatureValue;
+ public static String EditFeatureValueDialog_featureValue;
+ public static String EditFeatureValueDialog_noConditionQuerySelected;
+ public static String EditFeatureValueDialog_noQuerySelected;
+ public static String EditFeatureValueDialog_queryForCondition;
+ public static String EditFeatureValueDialog_queryMustBeSelected;
+ public static String EditFeatureValueDialog_queryValue;
+ public static String EditFeatureValueDialog_staticValue;
+ public static String EditFeatureValueDialog_type;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(Messages.BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ // not instantiable
+ }
+}
diff --git a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/messages.properties b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/messages.properties
index e213977eea5..556357fdfd1 100644
--- a/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/messages.properties
+++ b/plugins/facet/editor/org.eclipse.papyrus.emf.facet.custom.metamodel.editor/src/org/eclipse/papyrus/emf/facet/custom/metamodel/v0_2_0/custom/presentation/messages.properties
@@ -1,97 +1,97 @@
-###############################################################################
-# Copyright (c) 2009, 2010 Mia-Software.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# Nicolas Bros (Mia-Software) - initial API and implementation
-###############################################################################
-CustomizationEditor_add=&Add...
-CustomizationEditor_appliesToSubInstances=Applies to &Sub-Instances
-CustomizationEditor_bold=Bold
-CustomizationEditor_btnOpenElementSelectionDialogText=...
-CustomizationEditor_btnOpenFontDialogText=...
-CustomizationEditor_btnProperties=&Properties
-CustomizationEditor_btnTooltipViewErrors=View errors
-CustomizationEditor_cannotFindMetamodel=Couldn't find metamodel with URI "{0}"
-CustomizationEditor_changeProperties=Change Properties
-CustomizationEditor_collapseLink=Collapse link
-CustomizationEditor_conditions=Conditions :
-CustomizationEditor_conflictingUnsavedChanges=There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes?
-CustomizationEditor_customizationsWillBeDeleted=All the customizations for metaclass "{0}" will be deleted. Are you sure?
-CustomizationEditor_customViewFor=custom view for "{0}" ({1})
-CustomizationEditor_down=&Down
-CustomizationEditor_edit=&Edit...
-CustomizationEditor_editFeatureValue=Edit feature &value...
-CustomizationEditor_error=Error
-CustomizationEditor_errorLoadingResource=Error loading resource. See log for more information.
-CustomizationEditor_fileConflict=File Conflict
-CustomizationEditor_hideMetaclassName=Hide metaclass name
-CustomizationEditor_iconSelection=Icon selection
-CustomizationEditor_invalidSelection=Invalid selection
-CustomizationEditor_italic=Italic
-CustomizationEditor_missingQuery=Couldn't find Query named "{0}" in query set "{1}".
-CustomizationEditor_missingQuerySet=Couldn't find Query Set named "{0}".
-CustomizationEditor_nonExistingQuery=Non-existing Query
-CustomizationEditor_nonExistingQuerySet=Non-existing Query Set
-CustomizationEditor_notFileSelected=You haven't selected a file
-CustomizationEditor_promptCleanCustomizations=Do you want to remove customizations that don't correspond to the new metamodel?
-CustomizationEditor_readonly=READONLY
-CustomizationEditor_remove=&Remove
-CustomizationEditor_removeIrrelevantCustomizations=Remove Irrelevant Customizations
-CustomizationEditor_resetDefaults=Reset Defaults
-CustomizationEditor_sectionName_customizations=Customizations
-CustomizationEditor_sectionName_types=Types
-CustomizationEditor_selectAnIcon=Select an icon:
-CustomizationEditor_strikethrough=Strikethrough
-CustomizationEditor_text=Text
-CustomizationEditor_Title_cleanCustomization=Clean customization
-CustomizationEditor_underlined=Underlined
-CustomizationEditor_unknown=<unknown>
-CustomizationEditor_up=&Up
-CustomizationEditor_visible=Visible
-CustomizationEditor_metaclassVisible=Visible in Types Panel
-CustomizationEditor_youChangedMetamodel=You have changed the metamodel.\n
-CustomizationPropertiesDialog_customizationProperties=Customization Properties
-CustomizationPropertiesDialog_metamodel=Metamodel
-CustomizationPropertiesDialog_metamodelMustBeSelected=A metamodel must be selected
-CustomizationPropertiesDialog_noMetamodelSelected=No metamodel selected
-CustomizationPropertiesDialog_querySets=Query Sets
-CustomizationViewer_backgroundColor=Background Color
-CustomizationViewer_collapseLink=Collapse Link
-CustomizationViewer_defaultValue=<default value>
-CustomizationViewer_feature=Feature
-CustomizationViewer_hideMetaclassName=Hide Metaclass Name
-CustomizationViewer_typeIcon=Type Icon
-CustomizationViewer_isBold=Is Bold
-CustomizationViewer_isItalic=Is Italic
-CustomizationViewer_isStruckthrough=Is Struckthrough
-CustomizationViewer_isUnderlined=Is Underlined
-CustomizationViewer_isVisible=Is Visible
-CustomizationViewer_metaclassVisible=Visible in Types Panel
-CustomizationViewer_label=Label
-CustomizationViewer_instanceIcon=Instance Icon
-CustomizationViewer_overlayIcon=Overlay Icon
-CustomizationViewer_textColor=Text Color
-CustomizationViewer_textFontName=Text Font Name
-CustomizationViewer_value=Value
-ErrorsDialog_diagnosticMessage={0}\nin: {1}\nline: {2} column: {3}
-ErrorsDialog_errors=Errors
-MetaclassViewToolBar_showDerivedLinks=Show Derived Links
-MetaclassViewToolBar_showFullQualifiedNames=Show Full Qualified Names
-MetaclassViewToolBar_showMultiplicity=Show Multiplicity
-MetaclassViewToolBar_sortLinks=Sort Links
-MetaclassViewToolBar_sortLinksByType=Sort Links by Type
-EditFeatureValueDialog_conditionQueryMustBeSelected=A condition query must be selected
-EditFeatureValueDialog_defaultValue=Default value
-EditFeatureValueDialog_editFeatureValue=Edit Feature Value
-EditFeatureValueDialog_featureValue=Feature value
-EditFeatureValueDialog_noConditionQuerySelected=No condition query selected
-EditFeatureValueDialog_noQuerySelected=No query selected
-EditFeatureValueDialog_queryForCondition=Query for condition
-EditFeatureValueDialog_queryMustBeSelected=A query must be selected
-EditFeatureValueDialog_queryValue=Value computed by a query
-EditFeatureValueDialog_staticValue=Static value
-EditFeatureValueDialog_type=Type
+###############################################################################
+# Copyright (c) 2009, 2010 Mia-Software.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Nicolas Bros (Mia-Software) - initial API and implementation
+###############################################################################
+CustomizationEditor_add=&Add...
+CustomizationEditor_appliesToSubInstances=Applies to &Sub-Instances
+CustomizationEditor_bold=Bold
+CustomizationEditor_btnOpenElementSelectionDialogText=...
+CustomizationEditor_btnOpenFontDialogText=...
+CustomizationEditor_btnProperties=&Properties
+CustomizationEditor_btnTooltipViewErrors=View errors
+CustomizationEditor_cannotFindMetamodel=Couldn't find metamodel with URI "{0}"
+CustomizationEditor_changeProperties=Change Properties
+CustomizationEditor_collapseLink=Collapse link
+CustomizationEditor_conditions=Conditions :
+CustomizationEditor_conflictingUnsavedChanges=There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes?
+CustomizationEditor_customizationsWillBeDeleted=All the customizations for metaclass "{0}" will be deleted. Are you sure?
+CustomizationEditor_customViewFor=custom view for "{0}" ({1})
+CustomizationEditor_down=&Down
+CustomizationEditor_edit=&Edit...
+CustomizationEditor_editFeatureValue=Edit feature &value...
+CustomizationEditor_error=Error
+CustomizationEditor_errorLoadingResource=Error loading resource. See log for more information.
+CustomizationEditor_fileConflict=File Conflict
+CustomizationEditor_hideMetaclassName=Hide metaclass name
+CustomizationEditor_iconSelection=Icon selection
+CustomizationEditor_invalidSelection=Invalid selection
+CustomizationEditor_italic=Italic
+CustomizationEditor_missingQuery=Couldn't find Query named "{0}" in query set "{1}".
+CustomizationEditor_missingQuerySet=Couldn't find Query Set named "{0}".
+CustomizationEditor_nonExistingQuery=Non-existing Query
+CustomizationEditor_nonExistingQuerySet=Non-existing Query Set
+CustomizationEditor_notFileSelected=You haven't selected a file
+CustomizationEditor_promptCleanCustomizations=Do you want to remove customizations that don't correspond to the new metamodel?
+CustomizationEditor_readonly=READONLY
+CustomizationEditor_remove=&Remove
+CustomizationEditor_removeIrrelevantCustomizations=Remove Irrelevant Customizations
+CustomizationEditor_resetDefaults=Reset Defaults
+CustomizationEditor_sectionName_customizations=Customizations
+CustomizationEditor_sectionName_types=Types
+CustomizationEditor_selectAnIcon=Select an icon:
+CustomizationEditor_strikethrough=Strikethrough
+CustomizationEditor_text=Text
+CustomizationEditor_Title_cleanCustomization=Clean customization
+CustomizationEditor_underlined=Underlined
+CustomizationEditor_unknown=<unknown>
+CustomizationEditor_up=&Up
+CustomizationEditor_visible=Visible
+CustomizationEditor_metaclassVisible=Visible in Types Panel
+CustomizationEditor_youChangedMetamodel=You have changed the metamodel.\n
+CustomizationPropertiesDialog_customizationProperties=Customization Properties
+CustomizationPropertiesDialog_metamodel=Metamodel
+CustomizationPropertiesDialog_metamodelMustBeSelected=A metamodel must be selected
+CustomizationPropertiesDialog_noMetamodelSelected=No metamodel selected
+CustomizationPropertiesDialog_querySets=Query Sets
+CustomizationViewer_backgroundColor=Background Color
+CustomizationViewer_collapseLink=Collapse Link
+CustomizationViewer_defaultValue=<default value>
+CustomizationViewer_feature=Feature
+CustomizationViewer_hideMetaclassName=Hide Metaclass Name
+CustomizationViewer_typeIcon=Type Icon
+CustomizationViewer_isBold=Is Bold
+CustomizationViewer_isItalic=Is Italic
+CustomizationViewer_isStruckthrough=Is Struckthrough
+CustomizationViewer_isUnderlined=Is Underlined
+CustomizationViewer_isVisible=Is Visible
+CustomizationViewer_metaclassVisible=Visible in Types Panel
+CustomizationViewer_label=Label
+CustomizationViewer_instanceIcon=Instance Icon
+CustomizationViewer_overlayIcon=Overlay Icon
+CustomizationViewer_textColor=Text Color
+CustomizationViewer_textFontName=Text Font Name
+CustomizationViewer_value=Value
+ErrorsDialog_diagnosticMessage={0}\nin: {1}\nline: {2} column: {3}
+ErrorsDialog_errors=Errors
+MetaclassViewToolBar_showDerivedLinks=Show Derived Links
+MetaclassViewToolBar_showFullQualifiedNames=Show Full Qualified Names
+MetaclassViewToolBar_showMultiplicity=Show Multiplicity
+MetaclassViewToolBar_sortLinks=Sort Links
+MetaclassViewToolBar_sortLinksByType=Sort Links by Type
+EditFeatureValueDialog_conditionQueryMustBeSelected=A condition query must be selected
+EditFeatureValueDialog_defaultValue=Default value
+EditFeatureValueDialog_editFeatureValue=Edit Feature Value
+EditFeatureValueDialog_featureValue=Feature value
+EditFeatureValueDialog_noConditionQuerySelected=No condition query selected
+EditFeatureValueDialog_noQuerySelected=No query selected
+EditFeatureValueDialog_queryForCondition=Query for condition
+EditFeatureValueDialog_queryMustBeSelected=A query must be selected
+EditFeatureValueDialog_queryValue=Value computed by a query
+EditFeatureValueDialog_staticValue=Static value
+EditFeatureValueDialog_type=Type

Back to the top