Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvlorenzo2012-02-09 17:05:09 +0000
committervlorenzo2012-02-09 17:05:09 +0000
commit238340bb02b2a55586b5bc51c0330284f7ab0fc7 (patch)
tree67eba6e9ae85358df8844177b5fa5a54b150bd5d /sandbox
parent31c34edb86c488bfd4a21748d9afa665c8942972 (diff)
downloadorg.eclipse.papyrus-238340bb02b2a55586b5bc51c0330284f7ab0fc7.tar.gz
org.eclipse.papyrus-238340bb02b2a55586b5bc51c0330284f7ab0fc7.tar.xz
org.eclipse.papyrus-238340bb02b2a55586b5bc51c0330284f7ab0fc7.zip
A save of my work
Diffstat (limited to 'sandbox')
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/plugin.xml14
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/resources/diffElement.uiCustom13
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java12
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/EMFCompareLabelProvider.java (renamed from sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/PapyrusLabelProvider.java)139
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ILabelProviderRefreshingViewer.java46
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/IRefreshViewer.java11
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ModelStructureLabelProvider.java106
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusParameterizedStructureMergeViewer.java26
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java126
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/PapyrusContentMergeViewerCreator.java (renamed from sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalContentMergeViewerCreator.java)19
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/PapyrusModelContentMergeTabFolder.java197
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/PapyrusModelContentMergeViewer.java (renamed from sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeViewer.java)24
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeDiffTab.java43
-rw-r--r--sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeTabFolder.java259
14 files changed, 468 insertions, 567 deletions
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/plugin.xml b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/plugin.xml
index 75ced15498b..962c29af83a 100644
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/plugin.xml
+++ b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/plugin.xml
@@ -4,19 +4,15 @@
<plugin>
<extension point="org.eclipse.compare.contentMergeViewers">
<viewer
- class="org.eclipse.papyrus.infra.emf.compare.ui.viewer.TransactionalContentMergeViewerCreator"
- extensions="uml,ecore"
+ class="org.eclipse.papyrus.infra.emf.compare.ui.viewer.PapyrusContentMergeViewerCreator"
+ extensions="uml"
id="org.eclipse.papyrus.infra.emf.compare.ui.papyrus.viewer"
- label="INFRA Papyrus Viewer">
+ label="Papyrus Content Merge Viewer">
</viewer>
</extension>
<extension point="org.eclipse.compare.structureMergeViewers">
- <viewer class="org.eclipse.papyrus.infra.emf.compare.ui.structural.viewer.PapyrusStructureMergeViewerCreator" extensions="uml,ecore" id="org.eclipse.papyrus.infra.emf.compare.ui.structural.viewer" label="INFRA Papyrus Structure Merge Viewer">
+ <viewer class="org.eclipse.papyrus.infra.emf.compare.ui.structural.viewer.PapyrusStructureMergeViewerCreator" extensions="uml" id="org.eclipse.papyrus.infra.emf.compare.ui.structural.viewer" label="Papyrus Structure Merge Viewer">
</viewer>
</extension>
-
- <extension point="org.eclipse.emf.facet.infra.browser.custom.core.registration">
- <browserCustomization
- file="resources/diffElement.uiCustom"/>
- </extension>
+
</plugin>
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/resources/diffElement.uiCustom b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/resources/diffElement.uiCustom
deleted file mode 100644
index 9fd044c9524..00000000000
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/resources/diffElement.uiCustom
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<uicustom:MetamodelView xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uicustom="http://www.eclipse.org/EmfFacet/infra/browser/custom/0.8" metamodelURI="http://www.eclipse.org/emf/compare/diff/1.1">
- <types metaclassName="diff.AbstractDiffExtension">
- <customizedFeatures customizedFeature="hideMetaclassName">
- <defaultValue xsi:type="uicustom:StaticFeatureValue" value="true"/>
- </customizedFeatures>
- </types>
- <types metaclassName="diff.UpdateAttribute">
- <customizedFeatures customizedFeature="color">
- <defaultValue xsi:type="uicustom:StaticFeatureValue" value="(0,128,0)"/>
- </customizedFeatures>
- </types>
-</uicustom:MetamodelView>
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java
index 353e656a395..f2cc249aefc 100644
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java
+++ b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java
@@ -16,28 +16,20 @@ package org.eclipse.papyrus.infra.emf.compare.ui.actions;
import java.util.Collection;
import java.util.List;
-import org.eclipse.compare.internal.CompareEditor;
-import org.eclipse.compare.internal.ViewerDescriptor;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.facet.infra.browser.custom.MetamodelView;
import org.eclipse.emf.facet.infra.browser.custom.ui.dialogs.LoadCustomizationsDialog;
import org.eclipse.emf.facet.infra.browser.uicore.CustomizationManager;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.window.Window;
-import org.eclipse.papyrus.infra.core.utils.EditorUtils;
import org.eclipse.papyrus.infra.emf.compare.ui.Activator;
-import org.eclipse.papyrus.infra.emf.compare.ui.provider.IRefreshViewer;
+import org.eclipse.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer;
import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
import org.eclipse.papyrus.infra.emf.compare.ui.utils.Utils;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.team.internal.ui.synchronize.SaveablesCompareEditorInput;
-import org.eclipse.team.ui.synchronize.SaveableCompareEditorInput;
-import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
/**
*
@@ -104,6 +96,6 @@ public class CustomizationAction extends Action {
customizationManager.loadCustomizations();
}
//we refresh the viewers in the editor
- ((IRefreshViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(Utils.getCurrentEditor())).refreshViewer();
+ ((ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(Utils.getCurrentEditor())).refreshViewer();
}
}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/PapyrusLabelProvider.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/EMFCompareLabelProvider.java
index 932e709d533..362e6732921 100644
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/PapyrusLabelProvider.java
+++ b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/EMFCompareLabelProvider.java
@@ -18,34 +18,34 @@ import java.lang.reflect.Method;
import java.util.Collection;
import java.util.HashSet;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.compare.diff.metamodel.AbstractDiffExtension;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.facet.infra.browser.uicore.CustomizableModelLabelProvider;
import org.eclipse.emf.facet.infra.browser.uicore.CustomizationManager;
import org.eclipse.emf.facet.infra.browser.uicore.internal.AppearanceConfiguration;
import org.eclipse.emf.facet.infra.browser.uicore.internal.model.ITreeElement;
import org.eclipse.emf.facet.infra.browser.uicore.internal.model.ModelElementItem;
import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.infra.emf.compare.ui.Activator;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
-
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
/**
- * PapyrusLabelProvider provides the same labels and icons as one can find in the Model Explorer.
+ * PLabelProvider provides the same labels and icons as one can find in
+ * the Model Explorer.
*/
-// Not placed in the UI plugin because it is used in the subclasses of AbstractDiffExtension, in getText() method
-public class PapyrusLabelProvider extends CustomizableModelLabelProvider implements IRefreshViewer {
-
+public class EMFCompareLabelProvider extends CustomizableModelLabelProvider implements ILabelProviderRefreshingViewer {
/** The configuration. */
private final AppearanceConfiguration configuration;
- //TODO merge ModelStructureLabelProvider with this provider!
- private final ModelStructureLabelProvider provider = new ModelStructureLabelProvider();
+ /** the list of the registered viewer */
+ private Collection<TreeViewer> viewers = null;
/**
* Constructor.
@@ -53,41 +53,11 @@ public class PapyrusLabelProvider extends CustomizableModelLabelProvider impleme
* @param customizationManager
* the customization manager
*/
- public PapyrusLabelProvider(final CustomizationManager customizationManager) {
+ public EMFCompareLabelProvider(final CustomizationManager customizationManager) {
super(customizationManager);
this.configuration = getAppearanceConfiguration(customizationManager);
}
- // /**
- // * Instantiates a new papyrus label provider.
- // */
- // public PapyrusLabelProvider() {
- // this(initCustomizationManager());
- // }
-
- // /**
- // * Inits the customization manager.
- // *
- // * @return the customization manager
- // */
- // private static CustomizationManager initCustomizationManager() {
- // CustomizationManager manager = new CustomizationManager();
- // try {
- // List<MetamodelView> registryDefaultCustomizations = CustomizationsCatalog.getInstance().getRegistryDefaultCustomizations();
- // for(MetamodelView metamodelView : registryDefaultCustomizations) {
- // manager.registerCustomization(metamodelView);
- // }
- // manager.loadCustomizations();
- //
- // } catch (Throwable e) {
- // //TODO
- //// Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Error initializing customizations", e)); //$NON-NLS-1$
- // }
- // manager.setShowFullQualifiedNames(false);
- // manager.setShowURI(true);
- // manager.setShowDerivedLinks(false);
- // return manager;
- // }
/**
* Gets the appearance configuration.
@@ -105,16 +75,15 @@ public class PapyrusLabelProvider extends CustomizableModelLabelProvider impleme
return (AppearanceConfiguration)getApperanceConfigurationMethod.invoke(customizationManager2);
}
} catch (final SecurityException e) {
- //TODO
- // Activator.logError(e);
+ Activator.log.error(e);
} catch (final NoSuchMethodException e) {
- // Activator.logError(e);
+ Activator.log.error(e);
} catch (final IllegalArgumentException e) {
- // Activator.logError(e);
+ Activator.log.error(e);
} catch (final IllegalAccessException e) {
- // Activator.logError(e);
+ Activator.log.error(e);
} catch (final InvocationTargetException e) {
- // Activator.logError(e);
+ Activator.log.error(e);
}
return new AppearanceConfiguration(null); // default one.
}
@@ -128,33 +97,46 @@ public class PapyrusLabelProvider extends CustomizableModelLabelProvider impleme
*/
@Override
public String getText(final Object element) {
- if(element == null) {
- return ""; //$NON-NLS-1$
+ String text = "";
+ if(element instanceof AbstractDiffExtension) {
+ text = ((AbstractDiffExtension)element).getText();
+ } else if(element instanceof IFile) {
+ text = ((IFile)element).getName();
+ } else if(element instanceof Resource) {
+ text = ((Resource)element).getURI().lastSegment();
}
if(element instanceof EObject) {
final ITreeElement treeElement = getTreeElement((EObject)element);
- return super.getText(treeElement);
+ text = super.getText(treeElement);
+ } else {
+ text = super.getText(element);
}
- return super.getText(element);
+ return text;
}
/*
* (non-Javadoc)
*
- * @see org.eclipse.emf.facet.infra.browser.uicore.CustomizableModelLabelProvider#getImage(java.lang.Object)
+ * @see
+ * org.eclipse.emf.facet.infra.browser.uicore.CustomizableModelLabelProvider
+ * #getImage(java.lang.Object)
*/
@Override
public Image getImage(final Object element) {
- if(element == null) {
- return null;
- }
- if(element instanceof EObject) {
+ Image image = null;
+ if(element instanceof AbstractDiffExtension) {
+ image = (Image)((AbstractDiffExtension)element).getImage();
+ } else if(element instanceof IFile) {
+ image = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
+ } else if(element instanceof EObject) {
final ITreeElement treeElement = getTreeElement((EObject)element);
- return super.getImage(treeElement);
+ image = super.getImage(treeElement);
+ } else {
+ image = super.getImage(element);
}
- return super.getImage(element);
- }
+ return image;
+ }
/**
* Gets the tree element.
@@ -170,36 +152,36 @@ public class PapyrusLabelProvider extends CustomizableModelLabelProvider impleme
return new ModelElementItem(eObject, getTreeElement(eObject.eContainer()), this.configuration);
}
-// //TODO for test only!
-// @Override
-// public Color getBackground(final Object element) {
-// final RGB rgb = new RGB(255, 200, 0);
-// final Device device = Display.getDefault();
-// final Color color = new Color(device, rgb);
-// // TODO Auto-generated method stub
-// return color;
-// }
- private Collection<TreeViewer> viewers = null;
- //TODO supprimer ces viewers quand ils seront disposés!
+
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer#registerViewer(org.eclipse.jface.viewers.TreeViewer)
+ *
+ * @param viewer
+ */
public void registerViewer(final TreeViewer viewer) {
- // TODO Auto-generated method stub
if(viewers == null) {
viewers = new HashSet<TreeViewer>();
}
final DisposeListener listener = new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
- viewer.getTree().removeDisposeListener(this);
- viewers.remove(viewer);
+ viewer.getTree().removeDisposeListener(this);
+ unregisterViewer(viewer);
}
};
viewer.getTree().addDisposeListener(listener);
viewers.add(viewer);
}
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer#refreshViewer()
+ *
+ */
public void refreshViewer() {
for(TreeViewer current : viewers) {
if(!current.getTree().isDisposed()) {
@@ -208,5 +190,14 @@ public class PapyrusLabelProvider extends CustomizableModelLabelProvider impleme
}
}
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer#unregisterViewer(org.eclipse.jface.viewers.TreeViewer)
+ *
+ * @param viewer
+ */
+ public void unregisterViewer(TreeViewer viewer) {
+ viewers.remove(viewer);
+ }
}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ILabelProviderRefreshingViewer.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ILabelProviderRefreshingViewer.java
new file mode 100644
index 00000000000..ed297e4d4f2
--- /dev/null
+++ b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ILabelProviderRefreshingViewer.java
@@ -0,0 +1,46 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) Vincent.Lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.emf.compare.ui.provider;
+
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+
+/**
+ *
+ * The classes implements this interface when they are in charge of resfreshing Viewer
+ *
+ */
+public interface ILabelProviderRefreshingViewer extends IBaseLabelProvider{
+
+ /**
+ * Register a viewer to refresh it
+ *
+ * @param viewer
+ * a viewer
+ */
+ public void registerViewer(TreeViewer viewer);
+
+ /**
+ * viewer are refresh in this methods
+ */
+ public void refreshViewer();
+
+ /**
+ * Unregister a viewer
+ *
+ * @param viewer
+ * a viewer
+ */
+ public void unregisterViewer(final TreeViewer viewer);
+}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/IRefreshViewer.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/IRefreshViewer.java
deleted file mode 100644
index b02f7c49c32..00000000000
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/IRefreshViewer.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.eclipse.papyrus.infra.emf.compare.ui.provider;
-
-import org.eclipse.jface.viewers.TreeViewer;
-
-
-public interface IRefreshViewer {
-
- public void registerViewer(TreeViewer viewer);
-
- public void refreshViewer();
-}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ModelStructureLabelProvider.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ModelStructureLabelProvider.java
deleted file mode 100644
index 03e80d5813e..00000000000
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ModelStructureLabelProvider.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2011 CEA LIST.
- *
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Vincent Lorenzo (CEA LIST) Vincent.Lorenzo@cea.fr - Initial API and implementation
- *
- *****************************************************************************/
-package org.eclipse.papyrus.infra.emf.compare.ui.provider;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.emf.compare.diff.metamodel.AbstractDiffExtension;
-import org.eclipse.emf.compare.util.AdapterUtils;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-
-//FIXME : duplicated code from ModelStructureMergeViewer::ModelStructureLabelProvider
-/**
- * {@link LabelProvider} of this viewer.
- *
- * @author <a href="mailto:laurent.goubet@obeo.fr">Laurent Goubet</a>
- */
-public class ModelStructureLabelProvider extends LabelProvider {
-
- /**
- * We use this generic label provider, but we want to customize some aspects that's why we choose to
- * aggregate it.
- */
- /* package */AdapterFactoryLabelProvider adapterProvider;
-
- /**
- * Default constructor.
- */
- public ModelStructureLabelProvider() {
- adapterProvider = new AdapterFactoryLabelProvider(AdapterUtils.getAdapterFactory());
-
- }
-
- /**
- * Returns the platform icon for a given {@link IFile}. If not an {@link IFile}, delegates to the {@link AdapterFactoryLabelProvider} to get the
- * {@link Image}.
- *
- * @param object
- * Object to get the {@link Image} for.
- * @return The platform icon for the given object.
- * @see AdapterFactoryLabelProvider#getImage(Object)
- */
- @Override
- public Image getImage(Object object) {
- Image image = null;
- if(object instanceof AbstractDiffExtension) {
- image = (Image)((AbstractDiffExtension)object).getImage();
- } else if(object instanceof IFile) {
- image = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
- }
-
- // fallback to ItemProvider
- if(image == null) {
- image = adapterProvider.getImage(object);
- }
-
- return image;
- }
-
- /**
- * Returns the name of the given {@link IFile}, delegates to {@link AdapterFactoryLabelProvider#getText(Object)} if not an {@link IFile}.
- *
- * @param object
- * Object we seek the name for.
- * @return The name of the given object.
- * @see AdapterFactoryLabelProvider#getText(Object)
- */
- @Override
- public String getText(Object object) {
- String text = null;
- if(object instanceof AbstractDiffExtension) {
- text = ((AbstractDiffExtension)object).getText();
- text = getDiffExtensionText((AbstractDiffExtension)object);
- } else if(object instanceof IFile) {
- text = ((IFile)object).getName();
- } else if(object instanceof Resource) {
- text = ((Resource)object).getURI().lastSegment();
- }
-
- // fallback to ItemProvider
- if(text == null || "".equals(text)) { //$NON-NLS-1$
- text = adapterProvider.getText(object);
- }
-
- return text;
- }
-
- public String getDiffExtensionText(AbstractDiffExtension extension){
-
- return extension.getText();
- }
-}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusParameterizedStructureMergeViewer.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusParameterizedStructureMergeViewer.java
index 83b36fc3f23..05f1d4ed577 100644
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusParameterizedStructureMergeViewer.java
+++ b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusParameterizedStructureMergeViewer.java
@@ -14,6 +14,7 @@
package org.eclipse.papyrus.infra.emf.compare.ui.structural.viewer;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import org.eclipse.compare.CompareConfiguration;
@@ -26,7 +27,7 @@ import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.papyrus.infra.emf.compare.ui.actions.CustomizationAction;
-import org.eclipse.papyrus.infra.emf.compare.ui.provider.IRefreshViewer;
+import org.eclipse.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer;
import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
import org.eclipse.papyrus.infra.emf.compare.ui.utils.Utils;
import org.eclipse.swt.events.DisposeEvent;
@@ -47,6 +48,11 @@ public class PapyrusParameterizedStructureMergeViewer extends ParameterizedStruc
private Collection<EPackage> metamodels;
/**
+ * The label provider
+ */
+ private ILabelProviderRefreshingViewer labelProvider;
+
+ /**
*
* Constructor.
* see {@link ParameterizedStructureMergeViewer#ParameterizedStructureMergeViewer(Composite, CompareConfiguration)}
@@ -87,17 +93,23 @@ public class PapyrusParameterizedStructureMergeViewer extends ParameterizedStruc
metamodels = new HashSet<EPackage>();
}
//we add an action to change the applied cuztomization
- final IAction customizationAction = new CustomizationAction(metamodels);
+ final IAction customizationAction = new CustomizationAction(Collections.unmodifiableCollection(metamodels));
final ActionContributionItem customizationContributionItem = new ActionContributionItem(customizationAction);
tbm.insert(1, customizationContributionItem);
tbm.update(true);
}
-
+ /**
+ *
+ * @see org.eclipse.emf.compare.ui.viewer.structure.ModelStructureMergeViewer#handleDispose(org.eclipse.swt.events.DisposeEvent)
+ *
+ * @param event
+ */
@Override
protected void handleDispose(DisposeEvent event) {
- // TODO Auto-generated method stub
+ metamodels.clear();
+ labelProvider.unregisterViewer(this);
super.handleDispose(event);
}
@@ -108,8 +120,8 @@ public class PapyrusParameterizedStructureMergeViewer extends ParameterizedStruc
*/
protected LabelProvider createLabelProvider() {
final IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- IRefreshViewer refreshViewer = (IRefreshViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(activeEditor);
- refreshViewer.registerViewer(this);
- return (LabelProvider)refreshViewer;
+ labelProvider = (ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(activeEditor);
+ labelProvider.registerViewer(this);
+ return (LabelProvider)labelProvider;
}
}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java
index f49b3aadeb0..0318edc9bed 100644
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java
+++ b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java
@@ -3,46 +3,76 @@ package org.eclipse.papyrus.infra.emf.compare.ui.utils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.compare.internal.CompareEditor;
import org.eclipse.emf.facet.infra.browser.custom.MetamodelView;
import org.eclipse.emf.facet.infra.browser.custom.core.CustomizationsCatalog;
import org.eclipse.emf.facet.infra.browser.uicore.CustomizationManager;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.papyrus.infra.emf.compare.ui.Activator;
-import org.eclipse.papyrus.infra.emf.compare.ui.provider.PapyrusLabelProvider;
+import org.eclipse.papyrus.infra.emf.compare.ui.provider.EMFCompareLabelProvider;
import org.eclipse.ui.IEditorPart;
-
-
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ *
+ * This class provides usefull methods to get a LabelProvider for the Editor.
+ * It allows to instanciate only 1 LabelProvider and one CustomizationManager for 1 Editor even if there are 2 customizable viewers in the editor
+ *
+ */
public class LabelProviderUtil {
- private final Map<IEditorPart, ILabelProvider> map;
+ /**
+ * This map associates an IEditorPart with an ILabelProvider
+ */
+ private final Map<IEditorPart, IBaseLabelProvider> labelProviderMap;
+ /**
+ * This map associates an IEditorPart with a CustomizationManager
+ */
private final Map<IEditorPart, CustomizationManager> customizationMap;
+ /** LabelProviderUtil is a singleton */
public final static LabelProviderUtil INSTANCE = new LabelProviderUtil();
+ /**
+ * Constructor
+ */
private LabelProviderUtil() {
- map = new HashMap<IEditorPart, ILabelProvider>();
+ labelProviderMap = new HashMap<IEditorPart, IBaseLabelProvider>();
customizationMap = new HashMap<IEditorPart, CustomizationManager>();
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(new CloseCompareEditorListener());
}
- public ILabelProvider getLabelProviderFor(final IEditorPart editor/* , final Set<EPackage> packages */) {
- ILabelProvider provider = map.get(editor);
+ /**
+ *
+ * @param editor
+ * an editor
+ * @return
+ * the ILabelProvider associated to this editor
+ */
+ public IBaseLabelProvider getLabelProviderFor(final IEditorPart editor/* , final Set<EPackage> packages */) {
+ IBaseLabelProvider provider = labelProviderMap.get(editor);
if(provider == null) {
CustomizationManager customizationManager = getCustomizationManager(editor);
- provider = new PapyrusLabelProvider(customizationManager);
- map.put(editor, provider);
+ provider = new EMFCompareLabelProvider(customizationManager);
+ labelProviderMap.put(editor, provider);
}
return provider;
}
- public void destroyLabelProvider(final IEditorPart editor) {
- map.remove(editor);
+ /**
+ * Remove the LabelProvider and the CustomizationManager registered for this editor
+ *
+ * @param editor
+ * an editor
+ */
+ public void destroyConfigurationFor(final IEditorPart editor) {
+ labelProviderMap.remove(editor);
+ customizationMap.remove(editor);
}
/**
@@ -69,8 +99,7 @@ public class LabelProviderUtil {
// loadFacetsForCustomizations(registryDefaultCustomizations,customizationManager);
} catch (final Throwable e) {
- //TODO
- // Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Error initializing customizations", e)); //$NON-NLS-1$
+ Activator.log.error(e);
}
}
@@ -90,4 +119,67 @@ public class LabelProviderUtil {
}
return manager;
}
+
+ /**
+ *
+ * This listener allows to listen the close of the CompareEditor to remove it from the map
+ *
+ *
+ */
+ public class CloseCompareEditorListener implements IPartListener {
+
+ /**
+ *
+ * @see org.eclipse.ui.IPartListener#partActivated(org.eclipse.ui.IWorkbenchPart)
+ *
+ * @param part
+ */
+ public void partActivated(IWorkbenchPart part) {
+ //nothing to do
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IPartListener#partBroughtToTop(org.eclipse.ui.IWorkbenchPart)
+ *
+ * @param part
+ */
+ public void partBroughtToTop(IWorkbenchPart part) {
+ //nothing to do
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IPartListener#partClosed(org.eclipse.ui.IWorkbenchPart)
+ *
+ * @param part
+ */
+ public void partClosed(IWorkbenchPart part) {
+ if(part instanceof CompareEditor) {
+ customizationMap.remove(part);
+ labelProviderMap.remove(part);
+ }
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IPartListener#partDeactivated(org.eclipse.ui.IWorkbenchPart)
+ *
+ * @param part
+ */
+ public void partDeactivated(IWorkbenchPart part) {
+ //nothing to do
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IPartListener#partOpened(org.eclipse.ui.IWorkbenchPart)
+ *
+ * @param part
+ */
+ public void partOpened(IWorkbenchPart part) {
+ //nothing to do
+ }
+
+ }
}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalContentMergeViewerCreator.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/PapyrusContentMergeViewerCreator.java
index 3923fdcb317..8b3539d52e8 100644
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalContentMergeViewerCreator.java
+++ b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/PapyrusContentMergeViewerCreator.java
@@ -23,13 +23,26 @@ import org.eclipse.swt.widgets.Composite;
* This class allows to create the MergeViewer
*
*/
-public class TransactionalContentMergeViewerCreator implements IViewerCreator {
+public class PapyrusContentMergeViewerCreator implements IViewerCreator {
- public TransactionalContentMergeViewerCreator() {
+ /**
+ *
+ * Constructor.
+ *
+ */
+ public PapyrusContentMergeViewerCreator() {
//nothing to do
}
+ /**
+ *
+ * @see org.eclipse.compare.IViewerCreator#createViewer(org.eclipse.swt.widgets.Composite, org.eclipse.compare.CompareConfiguration)
+ *
+ * @param parent
+ * @param config
+ * @return
+ */
public Viewer createViewer(Composite parent, CompareConfiguration config) {
- return new TransactionalModelContentMergeViewer(parent, config);
+ return new PapyrusModelContentMergeViewer(parent, config);
}
}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/PapyrusModelContentMergeTabFolder.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/PapyrusModelContentMergeTabFolder.java
new file mode 100644
index 00000000000..853d108f172
--- /dev/null
+++ b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/PapyrusModelContentMergeTabFolder.java
@@ -0,0 +1,197 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Tatiana Fesenko (CEA LIST) - Initial API and implementation
+ * Vincent Lorenzo (CEA LIST) - 349650: [Papyrus Merge] IndexOfBoundException
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.emf.compare.ui.viewer;
+
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.compare.diff.metamodel.ComparisonSnapshot;
+import org.eclipse.emf.compare.ui.TypedElementWrapper;
+import org.eclipse.emf.compare.ui.viewer.content.ModelContentMergeViewer;
+import org.eclipse.emf.compare.ui.viewer.content.part.IModelContentMergeViewerTab;
+import org.eclipse.emf.compare.ui.viewer.content.part.ModelContentMergeTabFolder;
+import org.eclipse.emf.compare.ui.viewer.content.part.diff.ModelContentMergeDiffTab;
+import org.eclipse.emf.compare.util.AdapterUtils;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer;
+import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * The Class UMLModelContentMergeTabFolder.
+ */
+public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolder {
+
+ /** The my uml viewer. */
+ protected final PapyrusModelContentMergeViewer myUMLViewer;
+
+ /** the label provider */
+ private ILabelProviderRefreshingViewer labelProvider;
+
+ /** the diff tab */
+ private ModelContentMergeDiffTab diffTab;
+
+ /**
+ * Instantiates a new uML model content merge tab folder.
+ *
+ * @param viewer
+ * the viewer
+ * @param composite
+ * the composite
+ * @param side
+ * the side
+ */
+ public PapyrusModelContentMergeTabFolder(ModelContentMergeViewer viewer, Composite composite, int side) {
+ super(viewer, composite, side);
+ myUMLViewer = (PapyrusModelContentMergeViewer)viewer;
+ }
+
+ /**
+ *
+ * @see org.eclipse.emf.compare.ui.viewer.content.part.ModelContentMergeTabFolder#createModelContentMergeDiffTab(org.eclipse.swt.widgets.Composite)
+ *
+ * @param parent
+ * @return
+ */
+ @Override
+ protected IModelContentMergeViewerTab createModelContentMergeDiffTab(Composite parent) {
+ diffTab = new ModelContentMergeDiffTab(parent, partSide, this);
+ diffTab.setContentProvider(createDiffTabContentProvider());
+ IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ labelProvider = (ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(activeEditor);
+ labelProvider.registerViewer(diffTab);
+ diffTab.setLabelProvider((IBaseLabelProvider)labelProvider);
+ return diffTab;
+
+ }
+
+ /**
+ *
+ * @see org.eclipse.emf.compare.ui.viewer.content.part.ModelContentMergeTabFolder#dispose()
+ *
+ */
+ @Override
+ public void dispose() {
+ labelProvider.unregisterViewer(diffTab);
+ diffTab = null;
+ labelProvider = null;
+ super.dispose();
+ }
+
+ /**
+ *
+ * @return
+ */
+ protected IContentProvider createDiffTabContentProvider() {
+ return new ModelContentMergeDiffTabContentProvider(AdapterUtils.getAdapterFactory());
+ }
+
+
+ /**
+ * This implementation of an {@link AdapterFactoryContentProvider} will strip ComparisonSnapshots out of
+ * the view.
+ *
+ * @author <a href="mailto:laurent.goubet@obeo.fr">Laurent Goubet</a>
+ */
+ //duplicate code from EMF-Compare :ModelContentMergeDiffTab.ModelContentMergeDiffTabContentProvider
+ public class ModelContentMergeDiffTabContentProvider extends AdapterFactoryContentProvider {
+
+ /**
+ * Default constructor. Delegates to the super implementation.
+ *
+ * @param factory
+ * Factory to get labels and icons from.
+ */
+ public ModelContentMergeDiffTabContentProvider(AdapterFactory factory) {
+ super(factory);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider#getElements(java.lang.Object)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object[] getElements(Object object) {
+ // overwritten to ensure contents of ResourceSets, List<Resource>, and Resource are correclty
+ // returned.
+ Object[] result = null;
+ if(object instanceof ResourceSet) {
+ final List<Resource> resources = ((ResourceSet)object).getResources();
+ final List<Resource> elements = new ArrayList<Resource>(resources.size());
+ for(final Resource resource : resources) {
+ if(resource.getContents().isEmpty() || !(resource.getContents().get(0) instanceof ComparisonSnapshot)) {
+ elements.add(resource);
+ }
+ }
+ result = elements.toArray();
+ } else if(object instanceof TypedElementWrapper) {
+ result = new Object[]{ ((EObject)object).eResource(), };
+ } else if(object instanceof List) {
+ // we may also display a list of resources
+ result = ((List)object).toArray();
+ } else if(object instanceof Resource) {
+ // return contents of resource
+ result = ((Resource)object).getContents().toArray();
+ } else {
+ result = super.getElements(object);
+ }
+ return result;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider#getChildren(java.lang.Object)
+ */
+ @Override
+ public Object[] getChildren(Object object) {
+ if(object instanceof Resource) {
+ return ((Resource)object).getContents().toArray();
+ }
+ return super.getChildren(object);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider#hasChildren(java.lang.Object)
+ */
+ @Override
+ public boolean hasChildren(Object object) {
+ if(object instanceof Resource) {
+ return ((Resource)object).getContents().size() > 0;
+ }
+ return super.hasChildren(object);
+ }
+ }
+
+ @Override
+ protected void fireSelectionChanged(SelectionChangedEvent event) {
+ // TODO Auto-generated method stub
+ super.fireSelectionChanged(event);
+ }
+}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeViewer.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/PapyrusModelContentMergeViewer.java
index 2d8326cc9b7..288dfd720e5 100644
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeViewer.java
+++ b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/PapyrusModelContentMergeViewer.java
@@ -14,6 +14,7 @@
package org.eclipse.papyrus.infra.emf.compare.ui.viewer;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import org.eclipse.compare.CompareConfiguration;
@@ -24,13 +25,11 @@ import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.papyrus.infra.emf.compare.ui.actions.CustomizationAction;
-import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
import org.eclipse.papyrus.infra.emf.compare.ui.utils.Utils;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorPart;
-public class TransactionalModelContentMergeViewer extends ModelContentMergeViewer {
+public class PapyrusModelContentMergeViewer extends ModelContentMergeViewer {
/** the list of the metamodels referenced in the compared files. this field is used by the Customization Manager */
private Collection<EPackage> metamodels;
@@ -42,7 +41,7 @@ public class TransactionalModelContentMergeViewer extends ModelContentMergeViewe
* @param parent
* @param config
*/
- public TransactionalModelContentMergeViewer(final Composite parent, final CompareConfiguration config) {
+ public PapyrusModelContentMergeViewer(final Composite parent, final CompareConfiguration config) {
super(parent, config);
}
@@ -70,7 +69,7 @@ public class TransactionalModelContentMergeViewer extends ModelContentMergeViewe
*/
@Override
protected ModelContentMergeTabFolder createModelContentMergeTabFolder(final Composite composite, final int side) {
- return new TransactionalModelContentMergeTabFolder(this, composite, side);
+ return new PapyrusModelContentMergeTabFolder(this, composite, side);
}
@@ -84,30 +83,25 @@ public class TransactionalModelContentMergeViewer extends ModelContentMergeViewe
*/
@Override
protected void createToolItems(final ToolBarManager tbm) {
-
//we add an action to change the applied customization
if(metamodels == null) {
metamodels = new HashSet<EPackage>();
}
- final IAction customizationAction = new CustomizationAction(metamodels);
+ final IAction customizationAction = new CustomizationAction(Collections.unmodifiableCollection(metamodels));
final ActionContributionItem customizationContributionItem = new ActionContributionItem(customizationAction);
tbm.insert(1, customizationContributionItem);
super.createToolItems(tbm);
-
}
-
/**
*
- * {@inheritDoc}
- *
+ * @see org.eclipse.emf.compare.ui.viewer.content.ModelContentMergeViewer#handleDispose(org.eclipse.swt.events.DisposeEvent)
+ *
* @param event
*/
@Override
- protected void handleDispose(final DisposeEvent event) {
- //TODO : et si l'éditeur que l'on ferme n'est pas celui au premier plan...
- final IEditorPart editor = org.eclipse.papyrus.infra.emf.compare.ui.utils.Utils.getCurrentEditor();
- LabelProviderUtil.INSTANCE.destroyLabelProvider(editor);
+ protected void handleDispose(DisposeEvent event) {
+ metamodels.clear();
super.handleDispose(event);
}
}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeDiffTab.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeDiffTab.java
deleted file mode 100644
index 1810d734961..00000000000
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeDiffTab.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2010 CEA LIST.
- *
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Tatiana Fesenko (CEA LIST) - Initial API and implementation
- *
- *****************************************************************************/
-package org.eclipse.papyrus.infra.emf.compare.ui.viewer;
-
-import org.eclipse.emf.compare.ui.viewer.content.part.ModelContentMergeTabFolder;
-import org.eclipse.emf.compare.ui.viewer.content.part.diff.ModelContentMergeDiffTab;
-import org.eclipse.swt.widgets.Composite;
-
-
-/**
- * The Structure Tab in the Merge Viewer.
- */
-//duplicate code from tatiana
-//TODO : verify the super class
-
-//TODO : useful?
-public class TransactionalModelContentMergeDiffTab extends ModelContentMergeDiffTab {
-
- /**
- * Instantiates a new uML model content merge diff tab.
- *
- * @param parentComposite
- * the parent composite
- * @param side
- * the side
- * @param parentFolder
- * the parent folder
- */
- public TransactionalModelContentMergeDiffTab(Composite parentComposite, int side, ModelContentMergeTabFolder parentFolder) {
- super(parentComposite, side, parentFolder);
- }
-}
diff --git a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeTabFolder.java b/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeTabFolder.java
deleted file mode 100644
index dac0548da4e..00000000000
--- a/sandbox/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/viewer/TransactionalModelContentMergeTabFolder.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2010 CEA LIST.
- *
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Tatiana Fesenko (CEA LIST) - Initial API and implementation
- * Vincent Lorenzo (CEA LIST) - 349650: [Papyrus Merge] IndexOfBoundException
- *****************************************************************************/
-package org.eclipse.papyrus.infra.emf.compare.ui.viewer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.compare.diff.metamodel.ComparisonSnapshot;
-import org.eclipse.emf.compare.ui.TypedElementWrapper;
-import org.eclipse.emf.compare.ui.viewer.content.ModelContentMergeViewer;
-import org.eclipse.emf.compare.ui.viewer.content.part.IModelContentMergeViewerTab;
-import org.eclipse.emf.compare.ui.viewer.content.part.ModelContentMergeTabFolder;
-import org.eclipse.emf.compare.util.AdapterUtils;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
-import org.eclipse.emf.facet.infra.browser.uicore.CustomizationManager;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.papyrus.infra.emf.compare.ui.provider.IRefreshViewer;
-import org.eclipse.papyrus.infra.emf.compare.ui.provider.PapyrusLabelProvider;
-import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-
-
-/**
- * The Class UMLModelContentMergeTabFolder.
- */
-//duplicate code from tatiana
-//TODO verify the super class
-public class TransactionalModelContentMergeTabFolder extends ModelContentMergeTabFolder {
-
- /** The my uml viewer. */
- protected final TransactionalModelContentMergeViewer myUMLViewer;
-
- /**
- * Instantiates a new uML model content merge tab folder.
- *
- * @param viewer the viewer
- * @param composite the composite
- * @param side the side
- */
- public TransactionalModelContentMergeTabFolder(ModelContentMergeViewer viewer, Composite composite, int side) {
- super(viewer, composite, side);
- myUMLViewer = (TransactionalModelContentMergeViewer)viewer;
- }
-
-
- @Override
- protected IModelContentMergeViewerTab createModelContentMergeDiffTab(Composite parent) {
-// IModelContentMergeViewerTab tab = super.createModelContentMergeDiffTab(parent);
- TransactionalModelContentMergeDiffTab diffTab = new TransactionalModelContentMergeDiffTab(parent, partSide, this);
- diffTab.setContentProvider(createDiffTabContentProvider());
- IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
-// CustomizationManager manager = LabelProviderUtil.getCustomizationManager(activeEditor);
-// diffTab.setLabelProvider(new PapyrusLabelProvider(manager));
- IRefreshViewer refresher = (IRefreshViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(activeEditor);
- refresher.registerViewer(diffTab);
- diffTab.setLabelProvider((IBaseLabelProvider)refresher);
- return diffTab;
-
- }
-
- @Override
- public void dispose() {
-// Activator.getDefault().
- super.dispose();
- }
-//
-// /* (non-Javadoc)
-// * @see org.eclipse.emf.compare.ui.viewer.content.part.ModelContentMergeTabFolder#createModelContentMergeViewerTab(org.eclipse.swt.widgets.Composite)
-// */
-// @Override
-// protected IModelContentMergeViewerTab createModelContentMergeViewerTab(Composite parent) {
-// ModelContentMergePropertyTab propertyTab = new ModelContentMergePropertyTab(parent, partSide, this);
-// propertyTab.setContentProvider(new UMLPropertyContentProvider());
-// return propertyTab;
-// }
-//
-// /**
-// * Creates the diff tab content provider.
-// *
-// * @return the i content provider
-// */
-// protected IContentProvider createDiffTabContentProvider() {
-// ComposedAdapterFactory adapterFactory = new UMLAdapterFactory();
-// AdapterFactoryContentProvider result = new AdapterFactoryContentProvider(adapterFactory) {
-//
-// @Override
-// public Object[] getElements(Object object) {
-// if(object instanceof RootObject) {
-// return new Object[]{ ((RootObject)object).object };
-// }
-// return super.getElements(object);
-// }
-// };
-//
-// return result;
-// }
-//
-// /* (non-Javadoc)
-// * @see org.eclipse.emf.compare.ui.viewer.content.part.ModelContentMergeTabFolder#findMatchFromElement(org.eclipse.emf.ecore.EObject)
-// */
-// protected EObject findMatchFromElement(EObject element) {
-// EObject matchElement = super.findMatchFromElement(element);
-// if(!myUMLViewer.isShowAllProperties() && matchElement instanceof Match2Elements) {
-// if(myUMLViewer.getCurrentSelection().size()!=0){//see bug 349650
-// return new Match2ElementsWithDiff((Match2Elements)matchElement, myUMLViewer.getCurrentSelection().get(0));
-// }
-// }
-// return matchElement;
-// }
-//
-// /**
-// * Gets the selected tab.
-// *
-// * @return the selected tab
-// */
-// public int getSelectedTab() {
-// return tabFolder.getSelectionIndex();
-// }
-//
-// /**
-// * Checks if is property tab.
-// *
-// * @param index the index
-// * @return true, if is property tab
-// */
-// public boolean isPropertyTab(int index) {
-// final IModelContentMergeViewerTab currentTab = tabs.get(index);
-// return (currentTab == getPropertyPart());
-// }
-
-//TODO : use the content provider from the new EMF-Compare
- protected IContentProvider createDiffTabContentProvider() {
-// private ModelContentMergeDiffTabContentProvider createContentProvider() {
-
- return new ModelContentMergeDiffTabContentProvider(AdapterUtils.getAdapterFactory());
-// }
-
- // ComposedAdapterFactory adapterFactory = new UMLAdapterFactory();
-// ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory();
-// AdapterFactoryContentProvider result = new AdapterFactoryContentProvider(adapterFactory) {
-//
-// @Override
-// public Object[] getElements(Object object) {
-//// if(object instanceof RootObject) {
-//// return new Object[]{ ((RootObject)object).object };
-//// }
-// return super.getElements(object);
-// }
-// }
-
-// return result;
- }
-
-
- /**
- * This implementation of an {@link AdapterFactoryContentProvider} will strip ComparisonSnapshots out of
- * the view.
- *
- * @author <a href="mailto:laurent.goubet@obeo.fr">Laurent Goubet</a>
- */
- //duplicate code from EMF-Compare :ModelContentMergeDiffTab.ModelContentMergeDiffTabContentProvider
- public class ModelContentMergeDiffTabContentProvider extends AdapterFactoryContentProvider {
- /**
- * Default constructor. Delegates to the super implementation.
- *
- * @param factory
- * Factory to get labels and icons from.
- */
- public ModelContentMergeDiffTabContentProvider(AdapterFactory factory) {
- super(factory);
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider#getElements(java.lang.Object)
- */
- @SuppressWarnings("unchecked")
- @Override
- public Object[] getElements(Object object) {
- // overwritten to ensure contents of ResourceSets, List<Resource>, and Resource are correclty
- // returned.
- Object[] result = null;
- if (object instanceof ResourceSet) {
- final List<Resource> resources = ((ResourceSet)object).getResources();
- final List<Resource> elements = new ArrayList<Resource>(resources.size());
- for (final Resource resource : resources) {
- if (resource.getContents().isEmpty()
- || !(resource.getContents().get(0) instanceof ComparisonSnapshot)) {
- elements.add(resource);
- }
- }
- result = elements.toArray();
- } else if (object instanceof TypedElementWrapper) {
- result = new Object[] {((EObject)object).eResource(), };
- } else if (object instanceof List) {
- // we may also display a list of resources
- result = ((List)object).toArray();
- } else if (object instanceof Resource) {
- // return contents of resource
- result = ((Resource)object).getContents().toArray();
- } else {
- result = super.getElements(object);
- }
- return result;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider#getChildren(java.lang.Object)
- */
- @Override
- public Object[] getChildren(Object object) {
- if (object instanceof Resource) {
- return ((Resource)object).getContents().toArray();
- }
- return super.getChildren(object);
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider#hasChildren(java.lang.Object)
- */
- @Override
- public boolean hasChildren(Object object) {
- if (object instanceof Resource) {
- return ((Resource)object).getContents().size() > 0;
- }
- return super.hasChildren(object);
- }
- }
-
- @Override
- protected void fireSelectionChanged(SelectionChangedEvent event) {
- // TODO Auto-generated method stub
- super.fireSelectionChanged(event);
- }
-}

Back to the top