Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvlorenzo2012-04-06 17:01:15 +0000
committervlorenzo2012-04-06 17:01:15 +0000
commitf4453a159dccaab586199b42debfe4b528975fa9 (patch)
treed66316fb627c15a854d2987af45a12989025dbff /incoming
parentc3b4ce387c08274d7553ecb87ce831e206597f2c (diff)
downloadorg.eclipse.papyrus-f4453a159dccaab586199b42debfe4b528975fa9.tar.gz
org.eclipse.papyrus-f4453a159dccaab586199b42debfe4b528975fa9.tar.xz
org.eclipse.papyrus-f4453a159dccaab586199b42debfe4b528975fa9.zip
371606: [UML Compare] Papyrus should provide a nested editor to compare 2 elements included in the same resource
https://bugs.eclipse.org/bugs/show_bug.cgi?id=371606
Diffstat (limited to 'incoming')
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/META-INF/MANIFEST.MF17
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/Activator.java9
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/EMFCompareEditor.java381
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/listener/CloseEditorTriggerListener.java101
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/factory/AbstractEMFCompareEditorFactory.java9
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/handler/AbstractEMFCompareEditorHandler.java11
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/modelresource/EMFCompareEditorModel.java23
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/EMFCompareUtils.java163
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/META-INF/MANIFEST.MF1
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java17
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalContentMergeViewerCreator.java10
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalModelContentMergeViewer.java4
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableContentMergeViewerCreator.java10
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableModelContentMergeViewer.java7
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusModelContentMergeTabFolder.java27
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/queries/GetDiffElementLabel.java20
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusCustomizableParameterizedStructureMergeViewer.java12
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusStructureMergeViewerCreator.java8
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/EMFCompareUIUtils.java8
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java36
-rw-r--r--incoming/org.eclipse.papyrus.uml.compare/META-INF/MANIFEST.MF7
-rw-r--r--incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/Activator.java9
-rw-r--r--incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/editor/UMLCompareEditor.java4
-rw-r--r--incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/factory/UMLCompareEditorFactory.java2
-rw-r--r--incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/handler/UMLCompareEditorHandler.java17
25 files changed, 661 insertions, 252 deletions
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/META-INF/MANIFEST.MF b/incoming/org.eclipse.papyrus.infra.emf.compare.common/META-INF/MANIFEST.MF
index c1756ae4eb6..6d86f3117d6 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.common/META-INF/MANIFEST.MF
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/META-INF/MANIFEST.MF
@@ -5,22 +5,21 @@ Bundle-SymbolicName: org.eclipse.papyrus.infra.emf.compare.common;singleton:=tru
Bundle-Version: 0.9.0.qualifier
Bundle-Activator: org.eclipse.papyrus.infra.emf.compare.common.Activator
Bundle-Vendor: Eclipse Modeling Project
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.emf.ecore,
- org.eclipse.papyrus.infra.core,
- org.eclipse.papyrus.infra.emf.compare.instance,
- org.eclipse.emf.transaction,
- org.eclipse.emf.workspace,
+Require-Bundle: org.eclipse.papyrus.infra.emf.compare.instance,
org.eclipse.compare,
org.eclipse.emf.compare.ui,
org.eclipse.emf.compare,
org.eclipse.emf.compare.diff,
- org.eclipse.emf.compare.match
+ org.eclipse.emf.compare.match,
+ org.eclipse.papyrus.infra.core;bundle-version="0.9.0",
+ org.eclipse.gmf.runtime.emf.commands.core;bundle-version="1.4.0",
+ org.eclipse.papyrus.infra.emf.compare.ui;bundle-version="0.9.0",
+ org.eclipse.emf.facet.infra.browser.uicore;bundle-version="0.2.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.papyrus.infra.emf.compare.common,
org.eclipse.papyrus.infra.emf.compare.common.editor,
org.eclipse.papyrus.infra.emf.compare.common.factory,
org.eclipse.papyrus.infra.emf.compare.common.handler,
- org.eclipse.papyrus.infra.emf.compare.common.modelresource
+ org.eclipse.papyrus.infra.emf.compare.common.modelresource,
+ org.eclipse.papyrus.infra.emf.compare.common.utils
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/Activator.java b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/Activator.java
index f89aac3f3a9..779c3fbb3c9 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/Activator.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/Activator.java
@@ -27,9 +27,10 @@ public class Activator extends AbstractUIPlugin {
// The shared instance
private static Activator plugin;
-
- /**the Papyrus log helper*/
+
+ /** the Papyrus log helper */
public static LogHelper log;
+
/**
* The constructor
*/
@@ -38,6 +39,7 @@ public class Activator extends AbstractUIPlugin {
/*
* (non-Javadoc)
+ *
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
@@ -48,6 +50,7 @@ public class Activator extends AbstractUIPlugin {
/*
* (non-Javadoc)
+ *
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
@@ -57,7 +60,7 @@ public class Activator extends AbstractUIPlugin {
/**
* Returns the shared instance
- *
+ *
* @return the shared instance
*/
public static Activator getDefault() {
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/EMFCompareEditor.java b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/EMFCompareEditor.java
index b381cccde71..febd5416505 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/EMFCompareEditor.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/EMFCompareEditor.java
@@ -13,246 +13,275 @@
*****************************************************************************/
package org.eclipse.papyrus.infra.emf.compare.common.editor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Map;
-
import org.eclipse.compare.CompareEditorInput;
import org.eclipse.compare.internal.CompareEditor;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.emf.compare.EMFCompareException;
-import org.eclipse.emf.compare.diff.metamodel.ComparisonResourceSnapshot;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.compare.diff.metamodel.ComparisonSnapshot;
-import org.eclipse.emf.compare.diff.metamodel.DiffFactory;
-import org.eclipse.emf.compare.diff.metamodel.DiffModel;
-import org.eclipse.emf.compare.diff.service.DiffService;
-import org.eclipse.emf.compare.match.MatchOptions;
-import org.eclipse.emf.compare.match.engine.GenericMatchScopeProvider;
-import org.eclipse.emf.compare.match.metamodel.MatchModel;
-import org.eclipse.emf.compare.match.service.MatchService;
import org.eclipse.emf.compare.ui.editor.ModelCompareEditorInput;
-import org.eclipse.emf.compare.util.EMFCompareMap;
import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.action.IAction;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.papyrus.infra.core.editor.PageMngrServiceFactory;
-import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageMngr;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
import org.eclipse.papyrus.infra.core.services.ServiceException;
import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
import org.eclipse.papyrus.infra.core.utils.ServiceUtils;
import org.eclipse.papyrus.infra.emf.compare.common.Activator;
+import org.eclipse.papyrus.infra.emf.compare.common.editor.listener.CloseEditorTriggerListener;
+import org.eclipse.papyrus.infra.emf.compare.common.utils.EMFCompareUtils;
import org.eclipse.papyrus.infra.emf.compare.instance.papyrusemfcompareinstance.PapyrusEMFCompareInstance;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
+import org.eclipse.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer;
+import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IPropertyListener;
import org.eclipse.ui.IReusableEditor;
import org.eclipse.ui.ISaveablesLifecycleListener;
import org.eclipse.ui.ISaveablesSource;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.Saveable;
-import org.eclipse.ui.SaveablesLifecycleEvent;
-import org.eclipse.ui.part.EditorPart;
-
-//TODO the CompareEditor should be extented or Encapsulated?
-public class EMFCompareEditor implements IReusableEditor, ISaveablesSource, IPropertyChangeListener, ISaveablesLifecycleListener {
- /** the type of the editor */
-// public static final String EDITOR_TYPE = "PapyrusGenericCompareEditor"; //$NON-NLS-1$
+/**
+ *
+ * This class provides an EMF-Compare Editor for Papyrus. This Editor has been created to be embedded in the Papyrus SashEditor
+ *
+ */
+public class EMFCompareEditor extends CompareEditor implements IReusableEditor, ISaveablesSource, IPropertyChangeListener, ISaveablesLifecycleListener {
/** the service registry */
protected ServicesRegistry servicesRegistry;
- protected CompareEditor compareEditor;
-
- /**
- * @param servicesRegistry
- * @param rawModel
- *
- */
- public EMFCompareEditor(ServicesRegistry servicesRegistry, final PapyrusEMFCompareInstance rawModel) {
- super();
- this.servicesRegistry = servicesRegistry;
- compareEditor = new CompareEditor();
- ComparisonSnapshot snapshot = doContentCompare(rawModel.getLeft(), rawModel.getRight());
- // CompareUI.openCompareEditor(new ModelCompareEditorInput(snapshot));
- // openCompareEditor(input, true);
- // openCompareEditorOnPage(input, null, activate);
- // page.openEditor(input, COMPARE_EDITOR, activate);
- // CompareUIPlugin plugin= CompareUIPlugin.getDefault();
- // if (plugin != null)
- // plugin.openCompareEditor(input, page, null, activate);
- //
- // IWorkbenchPage page2 = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
-
- this.input = new ModelCompareEditorInput(snapshot);
- }
+ private CloseEditorTriggerListener closeListener;
+ protected PapyrusEMFCompareInstance rawModel;
- public void setCompareEditor(final CompareEditor compareEditor) {
- this.compareEditor = compareEditor;
- }
+ /**
+ * The compare editor input
+ */
private CompareEditorInput input;
+ private PartNameSynchronizer synchronizer;
/**
*
- * @see org.eclipse.ui.IEditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
+ * @see org.eclipse.compare.internal.CompareEditor#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
*
- * @param site
- * @param input
- * @throws PartInitException
+ * @param event
*/
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
- if(input instanceof CompareEditorInput) {
- this.compareEditor.init(site, input);
+ @Override
+ public void propertyChange(PropertyChangeEvent event) {
+ if(event.getSource() == IAction.class && event.getProperty() == CompareEditorInput.PROP_TITLE) {
+ //the CustomizationAction of the viewer sent this refresh
+ setPartName(EMFCompareUtils.getCompareEditorTitle(EMFCompareEditor.this, rawModel));
} else {
- this.compareEditor.init(site, this.input);
+ super.propertyChange(event);
}
-
- }
-
- public void handleLifecycleEvent(SaveablesLifecycleEvent event) {
- this.compareEditor.handleLifecycleEvent(event);
-
- }
-
- public void propertyChange(PropertyChangeEvent event) {
- this.compareEditor.propertyChange(event);
-
}
- public Saveable[] getSaveables() {
- return this.compareEditor.getSaveables();
- }
-
- public Saveable[] getActiveSaveables() {
- return this.compareEditor.getActiveSaveables();
+ /**
+ * @param servicesRegistry
+ * the service registry
+ * @param rawModel
+ * the raw model
+ *
+ */
+ public EMFCompareEditor(ServicesRegistry servicesRegistry, final PapyrusEMFCompareInstance rawModel) {
+ this.servicesRegistry = servicesRegistry;
+ this.rawModel = rawModel;
+ this.synchronizer = new PartNameSynchronizer(rawModel);
+ ComparisonSnapshot snapshot = doContentCompare(rawModel.getLeft(), rawModel.getRight());
+ this.input = createModelCompareEditorInput(snapshot);
+ addListeners();
}
- public void doSave(IProgressMonitor monitor) {
- this.compareEditor.doSave(monitor);
-
+ /**
+ *
+ * @param left
+ * the left eobject
+ * @param right
+ * the rihgt eobject
+ * @return
+ * the ComparisinSnapshot
+ */
+ protected ComparisonSnapshot doContentCompare(final EObject left, final EObject right) {
+ return EMFCompareUtils.doContentCompare(left, right);
}
- public void doSaveAs() {
- this.compareEditor.doSaveAs();
-
+ protected void addListeners() {
+ if(EMFCompareEditor.this.servicesRegistry != null) {//we are in papyrus
+ TransactionalEditingDomain domain = null;
+ try {
+ domain = EMFCompareEditor.this.servicesRegistry.getService(TransactionalEditingDomain.class);
+ } catch (ServiceException e) {
+ Activator.log.error(e);
+ }
+
+ closeListener = new CloseEditorTriggerListener(this.rawModel, this.servicesRegistry);
+ domain.addResourceSetListener(closeListener);
+ }
}
- public boolean isDirty() {
- return this.compareEditor.isDirty();
- }
+ protected void removeListeners() {
+ if(EMFCompareEditor.this.servicesRegistry != null) {//we are in papyrus
+ TransactionalEditingDomain domain = null;
+ try {
+ domain = EMFCompareEditor.this.servicesRegistry.getService(TransactionalEditingDomain.class);
+ } catch (ServiceException e) {
+ Activator.log.error(e);
+ }
- public boolean isSaveAsAllowed() {
- return this.compareEditor.isDirty();
+ domain.removeResourceSetListener(closeListener);
+ }
}
- public void createPartControl(Composite parent) {
- this.compareEditor.createPartControl(parent);
-
+ protected ISashWindowsContainer getISashWindowsContainer() {
+ ISashWindowsContainer container = null;
+ if(EMFCompareEditor.this.servicesRegistry != null) {//we are in papyrus
+ try {
+ container = ServiceUtils.getInstance().getISashWindowsContainer(this.servicesRegistry);
+ } catch (ServiceException e) {
+ Activator.log.error("I can't get the ISashWindowsContainer to add a listener on it", e);
+ }
+ }
+ return container;
}
- public void setFocus() {
- this.compareEditor.setFocus();
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.common.editor.EMFCompareEditor#createModelCompareEditorInput(org.eclipse.emf.compare.diff.metamodel.ComparisonSnapshot)
+ *
+ * @param snapshot
+ * @return
+ */
+ protected ModelCompareEditorInput createModelCompareEditorInput(ComparisonSnapshot snapshot) {
+ return EMFCompareUtils.createModelCompareEditorInput(snapshot, this);
}
- public IEditorInput getEditorInput() {
- return this.compareEditor.getEditorInput();
- }
- public IEditorSite getEditorSite() {
- return this.compareEditor.getEditorSite();
- }
- public void addPropertyListener(IPropertyListener listener) {
- this.compareEditor.addPropertyListener(listener);
+ /**
+ *
+ * @see org.eclipse.ui.IEditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
+ *
+ * @param site
+ * @param input
+ * @throws PartInitException
+ */
+ public void init(IEditorSite site, IEditorInput input) throws PartInitException {
+ if(input instanceof CompareEditorInput) {
+ super.init(site, input);
+ } else {
+ super.init(site, this.input);
+ }
}
public void dispose() {
- this.compareEditor.dispose();
- int i=0;
- i++;
- //TODO : remove the listener on the partService
- }
-
- public IWorkbenchPartSite getSite() {
- return this.compareEditor.getSite();
- }
-
- public String getTitle() {
- return this.compareEditor.getTitle();
- }
-
- public Image getTitleImage() {
- return this.compareEditor.getTitleImage();
- }
-
- public String getTitleToolTip() {
- return this.compareEditor.getTitleToolTip();
- }
-
- public void removePropertyListener(IPropertyListener listener) {
- this.compareEditor.removePropertyListener(listener);
-
- }
-
- public Object getAdapter(Class adapter) {
- return this.compareEditor.getAdapter(adapter);
- }
-
- public boolean isSaveOnCloseNeeded() {
- return this.compareEditor.isSaveOnCloseNeeded();
+ removeListeners();
+ super.dispose();
}
-
- public void setInput(IEditorInput input) {
- this.compareEditor.setInput(input);
+ @Override
+ public void setFocus() {
+ //I refresh the viewer here, because the EMF queries for name, ... are called during the creation of the editor, and
+ //it is not the correct Editor which is used by these queries to get the correct label provider
+ //
+ ((ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getExistingLabelProviderFor(this)).refreshViewer();
+ super.setFocus();
}
- protected ComparisonResourceSnapshot doContentCompare(final EObject left, final EObject right) {
- final ComparisonResourceSnapshot snapshot = DiffFactory.eINSTANCE.createComparisonResourceSnapshot();
-
- try {
- PlatformUI.getWorkbench().getProgressService().busyCursorWhile(new IRunnableWithProgress() {
-
- public void run(IProgressMonitor monitor) throws InterruptedException {
- final Map<String, Object> options = new EMFCompareMap<String, Object>();
- options.put(MatchOptions.OPTION_PROGRESS_MONITOR, monitor);
- options.put(MatchOptions.OPTION_MATCH_SCOPE_PROVIDER, new GenericMatchScopeProvider(left.eResource(), right.eResource()));
- options.put(MatchOptions.OPTION_IGNORE_ID, Boolean.TRUE);
- options.put(MatchOptions.OPTION_IGNORE_XMI_ID, Boolean.TRUE);
-
- final MatchModel match = MatchService.doContentMatch(left, right, options);
- DiffModel diff = DiffService.doDiff(match);
- // final MatchModel match = contentMatch(left, right, monitor);
- // final DiffModel diff = contentDiff(left, right, match);
-
- snapshot.setDiff(diff);
- snapshot.setMatch(match);
+ /**
+ *
+ * A class taking in charge the synchronization of the partName and the right/left elements.
+ * When a name change, the other is automatically updated.
+ *
+ * @author vincent lorenzo
+ * adapted class from UmlGmfDiagramEditor
+ */
+ public class PartNameSynchronizer {
+
+ /** the papyrus table */
+ private PapyrusEMFCompareInstance compareInstance;
+
+ /**
+ * Listener on diagram name change.
+ */
+ private final Adapter tableNameListener = new Adapter() {
+
+ /**
+ *
+ * @see org.eclipse.emf.common.notify.Adapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ *
+ * @param notification
+ */
+ public void notifyChanged(final Notification notification) {
+ setPartName(EMFCompareUtils.getCompareEditorTitle(EMFCompareEditor.this, rawModel));
+ }
+
+ /**
+ *
+ * @see org.eclipse.emf.common.notify.Adapter#getTarget()
+ *
+ * @return
+ */
+ public Notifier getTarget() {
+ return null;
+ }
+
+ /**
+ *
+ * @see org.eclipse.emf.common.notify.Adapter#setTarget(org.eclipse.emf.common.notify.Notifier)
+ *
+ * @param newTarget
+ */
+ public void setTarget(final Notifier newTarget) {
+ }
+
+ /**
+ *
+ * @see org.eclipse.emf.common.notify.Adapter#isAdapterForType(java.lang.Object)
+ *
+ * @param type
+ * @return
+ */
+ public boolean isAdapterForType(final Object type) {
+ return false;
+ }
+
+ };
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param diagram
+ */
+ public PartNameSynchronizer(final PapyrusEMFCompareInstance compareInstance) {
+ setCompare(compareInstance);
+ }
- }
+ /**
+ * Change the associated diagram.
+ *
+ * @param papyrusTable
+ */
+ public void setCompare(final PapyrusEMFCompareInstance compareInstance) {
+ // Remove from old diagram, if any
+ if(this.compareInstance != null) {
+ compareInstance.getLeft().eAdapters().remove(this.tableNameListener);
+ compareInstance.getRight().eAdapters().remove(this.tableNameListener);
+ }
+ // Set new table
+ this.compareInstance = compareInstance;
+
+ // Listen to name change
+ compareInstance.getLeft().eAdapters().add(this.tableNameListener);
+ compareInstance.getRight().eAdapters().add(this.tableNameListener);
- });
- } catch (final InterruptedException e) {
- Activator.log.error(e);
- } catch (final EMFCompareException e) {
- Activator.log.error(e);
- } catch (final InvocationTargetException e) {
- Activator.log.error(e);
}
-
- return snapshot;
}
-
-
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/listener/CloseEditorTriggerListener.java b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/listener/CloseEditorTriggerListener.java
new file mode 100644
index 00000000000..6473c5be345
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/listener/CloseEditorTriggerListener.java
@@ -0,0 +1,101 @@
+/*****************************************************************************
+ * 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.common.editor.listener;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.TriggerListener;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageMngr;
+import org.eclipse.papyrus.infra.core.sashwindows.di.PageRef;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.core.utils.ServiceUtils;
+
+
+public class CloseEditorTriggerListener extends TriggerListener {
+
+ private EObject rawModel;
+
+ private ServicesRegistry registry;
+
+ public CloseEditorTriggerListener(final EObject rawModel, final ServicesRegistry registry) {
+ this.rawModel = rawModel;
+ this.registry = registry;
+ }
+
+ @Override
+ protected Command trigger(TransactionalEditingDomain domain, Notification notification) {
+ int type = notification.getEventType();
+ Object feature = notification.getFeature();
+ final Object notifier = notification.getNotifier();
+ IPageMngr mngr = null;
+ try {
+ mngr = ServiceUtils.getInstance().getIPageMngr(registry);
+ } catch (ServiceException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ final IPageMngr mngr2 = mngr;
+ if(notifier instanceof PageRef) {
+ PageRef ref = (PageRef)notifier;
+ EObject pageId = ref.getEmfPageIdentifier();
+ if(pageId == rawModel) {
+ CompoundCommand command = new CompoundCommand();
+ Command sashRemoveComd = new RecordingCommand(domain) {
+
+ @Override
+ protected void doExecute() {
+ mngr2.removePage(rawModel);
+ }
+ };
+ EList<EObject> tabls = rawModel.eResource().getContents();
+ command.append(sashRemoveComd);
+ command.append(new RemoveCommand(domain, tabls, rawModel));
+
+ //
+ // return new GMFtoEMFCommandWrapper(new AbstractTransactionalCommand(domain, "Delete Compare Editor", null) {
+ //
+ // @Override
+ // protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ //
+ //// mngr2.removePage(rawModel);
+ //// int index = ((PageRef)notifier).getParent().getChildren().indexOf(notifier);
+ //// ((PageRef)notifier).getParent().removePage(index);
+ //
+ // //we remove the rawModel of its resource
+ // rawModel.eResource().getContents().remove(rawModel);
+ // return null;
+ // }
+ // });
+ return command;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/factory/AbstractEMFCompareEditorFactory.java b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/factory/AbstractEMFCompareEditorFactory.java
index 07dbce3a071..1ae75bc1afb 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/factory/AbstractEMFCompareEditorFactory.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/factory/AbstractEMFCompareEditorFactory.java
@@ -43,6 +43,7 @@ import org.eclipse.papyrus.infra.core.services.ServiceException;
import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
import org.eclipse.papyrus.infra.emf.compare.common.Activator;
import org.eclipse.papyrus.infra.emf.compare.common.editor.EMFCompareEditor;
+import org.eclipse.papyrus.infra.emf.compare.common.utils.EMFCompareUtils;
import org.eclipse.papyrus.infra.emf.compare.instance.papyrusemfcompareinstance.PapyrusEMFCompareInstance;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IEditorPart;
@@ -62,7 +63,7 @@ public abstract class AbstractEMFCompareEditorFactory extends AbstractEditorFact
* the type of editor
*/
public AbstractEMFCompareEditorFactory(final Class<?> editorClass, final String type) {
- super(editorClass,type);
+ super(editorClass, type);
}
/**
@@ -97,7 +98,7 @@ public abstract class AbstractEMFCompareEditorFactory extends AbstractEditorFact
*
*
*/
- class CompareEditorModel implements IEditorModel {
+ private class CompareEditorModel implements IEditorModel {
/**
@@ -203,7 +204,7 @@ public abstract class AbstractEMFCompareEditorFactory extends AbstractEditorFact
*/
public Image getTabIcon() {
ImageDescriptor imageDescriptor = getEditorDescriptor().getIcon();
- if(imageDescriptor == null){
+ if(imageDescriptor == null) {
return null;
}
return imageDescriptor.createImage();
@@ -217,7 +218,7 @@ public abstract class AbstractEMFCompareEditorFactory extends AbstractEditorFact
*
*/
public String getTabTitle() {
- return rawModel.getName();
+ return EMFCompareUtils.getCompareEditorTitle(editor, rawModel);
}
}
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/handler/AbstractEMFCompareEditorHandler.java b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/handler/AbstractEMFCompareEditorHandler.java
index 7d875514234..df607baef1d 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/handler/AbstractEMFCompareEditorHandler.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/handler/AbstractEMFCompareEditorHandler.java
@@ -49,10 +49,11 @@ import org.eclipse.ui.PlatformUI;
public abstract class AbstractEMFCompareEditorHandler extends AbstractHandler {
final private String type;
-
- public AbstractEMFCompareEditorHandler(final String type){
+
+ public AbstractEMFCompareEditorHandler(final String type) {
this.type = type;
}
+
/**
*
* @see org.eclipse.core.commands.AbstractHandler#isEnabled()
@@ -72,10 +73,10 @@ public abstract class AbstractEMFCompareEditorHandler extends AbstractHandler {
Iterator<?> iter = ((IStructuredSelection)selection).iterator();
while(iter.hasNext()) {
Object current = iter.next();
- if(current instanceof IAdaptable){
+ if(current instanceof IAdaptable) {
EObject tmp = (EObject)((IAdaptable)current).getAdapter(EObject.class);
- if(tmp!=null){
- currentSelection.add(tmp);
+ if(tmp != null) {
+ currentSelection.add(tmp);
}
}
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/modelresource/EMFCompareEditorModel.java b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/modelresource/EMFCompareEditorModel.java
index 3d82e1dcd8a..149c4dec57c 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/modelresource/EMFCompareEditorModel.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/modelresource/EMFCompareEditorModel.java
@@ -12,6 +12,7 @@
*
*****************************************************************************/
package org.eclipse.papyrus.infra.emf.compare.common.modelresource;
+
import org.eclipse.emf.ecore.EObject;
import org.eclipse.papyrus.infra.core.resource.AbstractModelWithSharedResource;
import org.eclipse.papyrus.infra.core.resource.IModel;
@@ -29,8 +30,6 @@ public class EMFCompareEditorModel extends AbstractModelWithSharedResource<Papyr
/**
* File extension used for notation.
*/
- // public static final String NOTATION_FILE_EXTENSION = "nattable"; //$NON-NLS-1$
-
public static final String NOTATION_FILE_EXTENSION = "notation"; //$NON-NLS-1$
/**
@@ -40,9 +39,9 @@ public class EMFCompareEditorModel extends AbstractModelWithSharedResource<Papyr
/**
- *
+ *
* Constructor.
- *
+ *
*/
public EMFCompareEditorModel() {
@@ -51,9 +50,9 @@ public class EMFCompareEditorModel extends AbstractModelWithSharedResource<Papyr
/**
* Get the file extension used for this model.
- *
+ *
* @see org.eclipse.papyrus.infra.core.resource.AbstractBaseModel#getModelFileExtension()
- *
+ *
* @return
*/
@Override
@@ -63,9 +62,9 @@ public class EMFCompareEditorModel extends AbstractModelWithSharedResource<Papyr
/**
* Get the identifier used to register this model.
- *
+ *
* @see org.eclipse.papyrus.infra.core.resource.AbstractBaseModel#getIdentifier()
- *
+ *
* @return
*/
@Override
@@ -76,7 +75,7 @@ public class EMFCompareEditorModel extends AbstractModelWithSharedResource<Papyr
/**
* Add a new initialized {@link PapyrusEMFCompareInstance} to the model.
- *
+ *
* @param compareInstance
* The compareInstance to add.
*/
@@ -86,7 +85,7 @@ public class EMFCompareEditorModel extends AbstractModelWithSharedResource<Papyr
/**
* Add a new initialized {@link PapyrusEMFCompareInstance} to the model.
- *
+ *
* @param compareInstance
* The compareInstance to add.
*/
@@ -95,9 +94,9 @@ public class EMFCompareEditorModel extends AbstractModelWithSharedResource<Papyr
}
/**
- *
+ *
* @see org.eclipse.papyrus.infra.core.resource.AbstractModelWithSharedResource#isModelRoot(org.eclipse.emf.ecore.EObject)
- *
+ *
* @param object
* @return
*/
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/EMFCompareUtils.java b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/EMFCompareUtils.java
new file mode 100644
index 00000000000..d6d750545a0
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/EMFCompareUtils.java
@@ -0,0 +1,163 @@
+/*****************************************************************************
+ * 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.common.utils;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.compare.CompareConfiguration;
+import org.eclipse.compare.CompareEditorInput;
+import org.eclipse.compare.CompareViewerPane;
+import org.eclipse.compare.Splitter;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.compare.EMFCompareException;
+import org.eclipse.emf.compare.diff.metamodel.ComparisonResourceSnapshot;
+import org.eclipse.emf.compare.diff.metamodel.ComparisonSnapshot;
+import org.eclipse.emf.compare.diff.metamodel.DiffFactory;
+import org.eclipse.emf.compare.diff.metamodel.DiffModel;
+import org.eclipse.emf.compare.diff.service.DiffService;
+import org.eclipse.emf.compare.match.MatchOptions;
+import org.eclipse.emf.compare.match.engine.GenericMatchScopeProvider;
+import org.eclipse.emf.compare.match.metamodel.MatchModel;
+import org.eclipse.emf.compare.match.service.MatchService;
+import org.eclipse.emf.compare.ui.editor.ModelCompareEditorInput;
+import org.eclipse.emf.compare.ui.viewer.content.ModelContentMergeViewer;
+import org.eclipse.emf.compare.util.EMFCompareMap;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.papyrus.infra.emf.compare.common.Activator;
+import org.eclipse.papyrus.infra.emf.compare.instance.papyrusemfcompareinstance.PapyrusEMFCompareInstance;
+import org.eclipse.papyrus.infra.emf.compare.ui.content.transactional.viewer.PapyrusTransactionalModelContentMergeViewer;
+import org.eclipse.papyrus.infra.emf.compare.ui.provider.EMFCompareLabelProvider;
+import org.eclipse.papyrus.infra.emf.compare.ui.structural.viewer.PapyrusCustomizableParameterizedStructureMergeViewer;
+import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+
+
+public class EMFCompareUtils {
+
+ private EMFCompareUtils() {
+ //nothing to do
+ }
+
+ public static ComparisonResourceSnapshot doContentCompare(final EObject left, final EObject right) {
+ final ComparisonResourceSnapshot snapshot = DiffFactory.eINSTANCE.createComparisonResourceSnapshot();
+
+ try {
+ PlatformUI.getWorkbench().getProgressService().busyCursorWhile(new IRunnableWithProgress() {
+
+ public void run(IProgressMonitor monitor) throws InterruptedException {
+ final Map<String, Object> options = new EMFCompareMap<String, Object>();
+ options.put(MatchOptions.OPTION_PROGRESS_MONITOR, monitor);
+ options.put(MatchOptions.OPTION_MATCH_SCOPE_PROVIDER, new GenericMatchScopeProvider(left.eResource(), right.eResource()));
+ options.put(MatchOptions.OPTION_IGNORE_ID, Boolean.TRUE);
+ options.put(MatchOptions.OPTION_IGNORE_XMI_ID, Boolean.TRUE);
+
+ final MatchModel match = MatchService.doContentMatch(left, right, options);
+ DiffModel diff = DiffService.doDiff(match);
+ // final MatchModel match = contentMatch(left, right, monitor);
+ // final DiffModel diff = contentDiff(left, right, match);
+
+ snapshot.setDiff(diff);
+ snapshot.setMatch(match);
+
+ }
+
+ });
+ } catch (final InterruptedException e) {
+ Activator.log.error(e);
+ } catch (final EMFCompareException e) {
+ Activator.log.error(e);
+ } catch (final InvocationTargetException e) {
+ Activator.log.error(e);
+ }
+
+ return snapshot;
+ }
+
+ /**
+ *
+ * @param editor
+ * the editor
+ * @param rawModel
+ * the raw model
+ * @return
+ * the name for the editor
+ */
+ public static String getCompareEditorTitle(final IEditorPart editor, final PapyrusEMFCompareInstance rawModel) {
+ String title = "Compare";
+ if(editor != null) {
+ EMFCompareLabelProvider labelProvider = (EMFCompareLabelProvider)LabelProviderUtil.INSTANCE.getLabelProviderFor(editor);
+ title += " " + labelProvider.getText(rawModel.getLeft());
+ title += " /" + labelProvider.getText(rawModel.getRight());
+ }
+
+ return title;
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.common.editor.EMFCompareEditor#createModelCompareEditorInput(org.eclipse.emf.compare.diff.metamodel.ComparisonSnapshot)
+ *
+ * @param snapshot
+ * @return
+ */
+ public static ModelCompareEditorInput createModelCompareEditorInput(ComparisonSnapshot snapshot, final IEditorPart editor) {
+ //TODO : test on Editor
+ return new ModelCompareEditorInput(snapshot) {
+
+ @Override
+ protected ModelContentMergeViewer createMergeViewer(CompareViewerPane pane, CompareConfiguration config) {
+ return new PapyrusTransactionalModelContentMergeViewer(pane, config, editor);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see CompareEditorInput#createOutlineContents(Composite, int)
+ */
+ @Override
+ public Control createOutlineContents(Composite parent, int direction) {
+ final Splitter splitter = new Splitter(parent, direction);
+
+ final CompareViewerPane pane = new CompareViewerPane(splitter, SWT.NONE);
+
+ //structureMergeViewer = new ModelStructureMergeViewer(pane, getCompareConfiguration());
+ structureMergeViewer = new PapyrusCustomizableParameterizedStructureMergeViewer(pane, getCompareConfiguration(), editor);
+ pane.setContent(structureMergeViewer.getTree());
+
+ structureMergeViewer.setInput(preparedInput);
+
+ return splitter;
+ }
+
+ /**
+ *
+ * @see org.eclipse.emf.compare.ui.editor.ModelCompareEditorInput#saveChanges(org.eclipse.core.runtime.IProgressMonitor)
+ *
+ * @param monitor
+ */
+ @Override
+ public void saveChanges(IProgressMonitor monitor) {
+ //normally it ok, there is nothing to do to save notation and di files
+ super.saveChanges(monitor);
+ }
+
+ };
+ }
+}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/META-INF/MANIFEST.MF b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/META-INF/MANIFEST.MF
index 475bed2853e..8062fc2eb9e 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/META-INF/MANIFEST.MF
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/META-INF/MANIFEST.MF
@@ -1,7 +1,6 @@
Manifest-Version: 1.0
Require-Bundle: org.eclipse.compare,
org.eclipse.emf.compare.ui,
- org.eclipse.emf.compare.diff;bundle-version="1.3.0",
org.eclipse.emf.facet.infra.browser.custom,
org.eclipse.emf.facet.infra.browser.custom.core,
org.eclipse.emf.compare,
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java
index 08885193ac2..9de52675203 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java
@@ -16,13 +16,17 @@ package org.eclipse.papyrus.infra.emf.compare.ui.actions;
import java.util.Collection;
import java.util.List;
+import org.eclipse.compare.CompareEditorInput;
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.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IMultiPageEditorPart;
import org.eclipse.papyrus.infra.emf.compare.ui.Activator;
import org.eclipse.papyrus.infra.emf.compare.ui.messages.Messages;
import org.eclipse.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer;
@@ -76,8 +80,11 @@ public class CustomizationAction extends Action {
//FIXME duplicate in the table ?
@Override
public void run() {
+ IEditorPart currentEditor = EditorHelper.getCurrentEditor();
+ if(currentEditor instanceof IMultiPageEditorPart) {
+ currentEditor = ((IMultiPageEditorPart)currentEditor).getActiveEditor();
+ }
- final IEditorPart currentEditor = EditorHelper.getCurrentEditor();
final CustomizationManager customizationManager = LabelProviderUtil.INSTANCE.getCustomizationManager(currentEditor);
final List<MetamodelView> initiallySelectedCustomizations = customizationManager.getRegisteredCustomizations();
final LoadCustomizationsDialog loadCustomizationsDialog = new LoadCustomizationsDialog(Display.getCurrent().getActiveShell(), initiallySelectedCustomizations, this.registeredMetamodel);
@@ -96,7 +103,11 @@ public class CustomizationAction extends Action {
}
customizationManager.loadCustomizations();
}
- //we refresh the viewers in the editor
- ((ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(EditorHelper.getCurrentEditor())).refreshViewer();
+ if(currentEditor instanceof IPropertyChangeListener) {//implemented by CompareEditor
+ //we refresh the name of the tab in Papyrus
+ ((IPropertyChangeListener)currentEditor).propertyChange(new PropertyChangeEvent(IAction.class, CompareEditorInput.PROP_TITLE, "", ""));
+ }
+ ((ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getExistingLabelProviderFor(currentEditor)).refreshViewer();
+
}
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalContentMergeViewerCreator.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalContentMergeViewerCreator.java
index b1e31ca2cc6..420c5e55473 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalContentMergeViewerCreator.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalContentMergeViewerCreator.java
@@ -15,12 +15,16 @@ package org.eclipse.papyrus.infra.emf.compare.ui.content.transactional.viewer;
import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.IViewerCreator;
+import org.eclipse.compare.internal.CompareEditor;
+import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.infra.tools.util.EditorHelper;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorPart;
/**
*
- * This class allows to create the MergeViewer
+ * This class allows to create the MergeViewer when we change the viewer used in CompareEditor
*
*/
public class PapyrusTransactionalContentMergeViewerCreator implements IViewerCreator {
@@ -43,6 +47,8 @@ public class PapyrusTransactionalContentMergeViewerCreator implements IViewerCre
* @return
*/
public Viewer createViewer(Composite parent, CompareConfiguration config) {
- return new PapyrusTransactionalModelContentMergeViewer(parent, config);
+ final IEditorPart editor = EditorHelper.getCurrentEditor();//the current CompareEditor
+ Assert.isTrue(editor instanceof CompareEditor);
+ return new PapyrusTransactionalModelContentMergeViewer(parent, config, editor);
}
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalModelContentMergeViewer.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalModelContentMergeViewer.java
index d7b6901904c..bab199b5580 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalModelContentMergeViewer.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalModelContentMergeViewer.java
@@ -58,8 +58,8 @@ public class PapyrusTransactionalModelContentMergeViewer extends PapyrusCustomiz
* @param parent
* @param config
*/
- public PapyrusTransactionalModelContentMergeViewer(final Composite parent, final CompareConfiguration config) {
- super(parent, config);
+ public PapyrusTransactionalModelContentMergeViewer(final Composite parent, final CompareConfiguration config, final IEditorPart editor) {
+ super(parent, config, editor);
}
/**
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableContentMergeViewerCreator.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableContentMergeViewerCreator.java
index 3fbd7311f08..00e564e6e6f 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableContentMergeViewerCreator.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableContentMergeViewerCreator.java
@@ -15,10 +15,12 @@ package org.eclipse.papyrus.infra.emf.compare.ui.content.viewer;
import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.IViewerCreator;
-import org.eclipse.emf.compare.diff.metamodel.AbstractDiffExtension;
-import org.eclipse.emf.compare.diff.metamodel.UpdateReference;
+import org.eclipse.compare.internal.CompareEditor;
+import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.infra.tools.util.EditorHelper;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorPart;
/**
*
@@ -45,6 +47,8 @@ public class PapyrusCustomizableContentMergeViewerCreator implements IViewerCrea
* @return
*/
public Viewer createViewer(Composite parent, CompareConfiguration config) {
- return new PapyrusCustomizableModelContentMergeViewer(parent, config);
+ final IEditorPart editor = EditorHelper.getCurrentEditor();//the current CompareEditor
+ Assert.isTrue(editor instanceof CompareEditor);
+ return new PapyrusCustomizableModelContentMergeViewer(parent, config, editor);
}
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableModelContentMergeViewer.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableModelContentMergeViewer.java
index 4092097123b..46e97ac926a 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableModelContentMergeViewer.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableModelContentMergeViewer.java
@@ -25,9 +25,12 @@ 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.provider.ILabelProviderRefreshingViewer;
import org.eclipse.papyrus.infra.emf.compare.ui.utils.EMFCompareUIUtils;
+import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorPart;
/**
*
@@ -46,8 +49,10 @@ public class PapyrusCustomizableModelContentMergeViewer extends ModelContentMerg
* @param parent
* @param config
*/
- public PapyrusCustomizableModelContentMergeViewer(final Composite parent, final CompareConfiguration config) {
+ public PapyrusCustomizableModelContentMergeViewer(final Composite parent, final CompareConfiguration config, final IEditorPart editor) {
super(parent, config);
+ ILabelProviderRefreshingViewer labelProvider = (ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(editor);
+ ((PapyrusModelContentMergeTabFolder)leftPart).setLabelProvider(labelProvider);
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusModelContentMergeTabFolder.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusModelContentMergeTabFolder.java
index b56e6c4ab4d..b3328c2a7bc 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusModelContentMergeTabFolder.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusModelContentMergeTabFolder.java
@@ -30,11 +30,12 @@ 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.papyrus.infra.core.sasheditor.editor.IMultiPageEditorPart;
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.tools.util.EditorHelper;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
/**
@@ -67,6 +68,18 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
}
/**
+ * Set the labelProvider for the viewer
+ *
+ * @param labelProvider
+ * the labelProvider
+ */
+ public void setLabelProvider(final ILabelProviderRefreshingViewer labelProvider) {
+ this.labelProvider = labelProvider;
+ this.labelProvider.registerViewer(diffTab);
+ diffTab.setLabelProvider((IBaseLabelProvider)labelProvider);
+ }
+
+ /**
*
* @see org.eclipse.emf.compare.ui.viewer.content.part.ModelContentMergeTabFolder#createModelContentMergeDiffTab(org.eclipse.swt.widgets.Composite)
*
@@ -77,10 +90,6 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
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;
}
@@ -92,9 +101,11 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
*/
@Override
public void dispose() {
- labelProvider.unregisterViewer(diffTab);
- diffTab = null;
- labelProvider = null;
+ if(labelProvider != null) {
+ labelProvider.unregisterViewer(diffTab);
+ diffTab = null;
+ labelProvider = null;
+ }
super.dispose();
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/queries/GetDiffElementLabel.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/queries/GetDiffElementLabel.java
index e5bfaca9470..0eec0553e6d 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/queries/GetDiffElementLabel.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/queries/GetDiffElementLabel.java
@@ -38,6 +38,7 @@ import org.eclipse.emf.facet.infra.query.core.exception.ModelQueryExecutionExcep
import org.eclipse.emf.facet.infra.query.core.java.IJavaModelQuery;
import org.eclipse.emf.facet.infra.query.core.java.ParameterValueList;
import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IMultiPageEditorPart;
import org.eclipse.papyrus.infra.emf.Activator;
import org.eclipse.papyrus.infra.emf.compare.ui.messages.Messages;
import org.eclipse.papyrus.infra.emf.compare.ui.provider.EMFCompareLabelProvider;
@@ -68,8 +69,21 @@ public class GetDiffElementLabel implements IJavaModelQuery<EObject, String> {
public String evaluate(final EObject context, final ParameterValueList parameterValues) throws ModelQueryExecutionException {
final AdapterFactory adapter = AdapterUtils.getAdapterFactory();
final DiffElementItemProvider itemProvider = new DiffElementItemProvider(adapter);
- final IEditorPart editor = EditorHelper.getCurrentEditor();
- final EMFCompareLabelProvider labelProvider = (EMFCompareLabelProvider)LabelProviderUtil.INSTANCE.getLabelProviderFor(editor);
+ IEditorPart editor = EditorHelper.getCurrentEditor();
+
+ if(editor instanceof IMultiPageEditorPart) {
+ editor = ((IMultiPageEditorPart)editor).getActiveEditor();
+ }
+
+ if(editor == null) {
+ return null;
+ }
+ EMFCompareLabelProvider labelProvider;
+ try {
+ labelProvider = (EMFCompareLabelProvider)LabelProviderUtil.INSTANCE.getExistingLabelProviderFor(editor);
+ } catch (NullPointerException e) {
+ return null;
+ }
String diffLabel = null;
if(context instanceof UpdateAttribute) { //comes from UpdateAttributeItemProvider
@@ -245,7 +259,7 @@ public class GetDiffElementLabel implements IJavaModelQuery<EObject, String> {
}
if(diffLabel == null) {
final String message = NLS.bind("{0} doesn't manage {1}", new Object[]{ this.getClass().getSimpleName(), context.getClass().getSimpleName() });//$NON-NLS-1$
- Activator.log.warn(message);
+ Activator.log.warn(message);
NotificationBuilder.createAsyncPopup(message).run();
// in this case the default Label will be displayed
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusCustomizableParameterizedStructureMergeViewer.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusCustomizableParameterizedStructureMergeViewer.java
index ded7541e8d5..66b277ca525 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusCustomizableParameterizedStructureMergeViewer.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusCustomizableParameterizedStructureMergeViewer.java
@@ -28,12 +28,11 @@ 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.ILabelProviderRefreshingViewer;
-import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
import org.eclipse.papyrus.infra.emf.compare.ui.utils.EMFCompareUIUtils;
+import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
/**
*
@@ -52,6 +51,9 @@ public class PapyrusCustomizableParameterizedStructureMergeViewer extends Parame
*/
private ILabelProviderRefreshingViewer labelProvider;
+ /** the current editor */
+ private IEditorPart editor;
+
/**
*
* Constructor.
@@ -60,8 +62,9 @@ public class PapyrusCustomizableParameterizedStructureMergeViewer extends Parame
* @param parent
* @param compareConfiguration
*/
- public PapyrusCustomizableParameterizedStructureMergeViewer(final Composite parent, final CompareConfiguration compareConfiguration) {
+ public PapyrusCustomizableParameterizedStructureMergeViewer(final Composite parent, final CompareConfiguration compareConfiguration, final IEditorPart editor) {
super(parent, compareConfiguration);
+ this.editor = editor;
setLabelProvider(createLabelProvider());
}
@@ -119,8 +122,7 @@ public class PapyrusCustomizableParameterizedStructureMergeViewer extends Parame
* @return
*/
protected LabelProvider createLabelProvider() {
- final IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- labelProvider = (ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(activeEditor);
+ labelProvider = (ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(editor);
labelProvider.registerViewer(this);
return (LabelProvider)labelProvider;
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusStructureMergeViewerCreator.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusStructureMergeViewerCreator.java
index deb8e379ce0..1b880a36019 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusStructureMergeViewerCreator.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusStructureMergeViewerCreator.java
@@ -15,8 +15,12 @@ package org.eclipse.papyrus.infra.emf.compare.ui.structural.viewer;
import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.IViewerCreator;
+import org.eclipse.compare.internal.CompareEditor;
+import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.infra.tools.util.EditorHelper;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorPart;
/**
*
@@ -34,6 +38,8 @@ public class PapyrusStructureMergeViewerCreator implements IViewerCreator {
* @return
*/
public Viewer createViewer(final Composite parent, final CompareConfiguration config) {
- return new PapyrusCustomizableParameterizedStructureMergeViewer(parent, config);
+ final IEditorPart editor = EditorHelper.getCurrentEditor();//the current CompareEditor
+ Assert.isTrue(editor instanceof CompareEditor);
+ return new PapyrusCustomizableParameterizedStructureMergeViewer(parent, config, editor);
}
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/EMFCompareUIUtils.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/EMFCompareUIUtils.java
index 48cefa1f069..173d97075d8 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/EMFCompareUIUtils.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/EMFCompareUIUtils.java
@@ -55,10 +55,10 @@ public class EMFCompareUIUtils {
res = ((ModelCompareInput)input).getRightResource();
metamodels.addAll(EMFHelper.getMetamodels(res));
-// List<DiffElement> diffs = ((ModelCompareInput)input).getDiffAsList();
-// for(DiffElement current : diffs) {
-// metamodels.add(current.eClass().getEPackage());
-// }
+ // List<DiffElement> diffs = ((ModelCompareInput)input).getDiffAsList();
+ // for(DiffElement current : diffs) {
+ // metamodels.add(current.eClass().getEPackage());
+ // }
}
return metamodels;
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java
index c26fc68704a..df7d6e124b8 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java
@@ -13,6 +13,7 @@
*****************************************************************************/
package org.eclipse.papyrus.infra.emf.compare.ui.utils;
+import java.io.NotSerializableException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -22,6 +23,8 @@ 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.osgi.util.NLS;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IMultiPageEditorPart;
import org.eclipse.papyrus.infra.emf.compare.ui.Activator;
import org.eclipse.papyrus.infra.emf.compare.ui.provider.EMFCompareLabelProvider;
import org.eclipse.ui.IEditorPart;
@@ -68,6 +71,14 @@ public class LabelProviderUtil {
* the ILabelProvider associated to this editor
*/
public IBaseLabelProvider getLabelProviderFor(final IEditorPart editor/* , final Set<EPackage> packages */) {
+ if(editor instanceof IMultiPageEditorPart) {
+ /*
+ * I set this exception because I think that we never want a customizable label provider for CoreMultiDiagramEditor.
+ * We want a label provider for embedded editor (or eclipse editor)
+ * -> when you get this exce^ption, it an error of the developper
+ */
+ throw new IllegalArgumentException(NLS.bind("I can't provide a label provider for {0}.", IMultiPageEditorPart.class));
+ }
IBaseLabelProvider provider = labelProviderMap.get(editor);
if(provider == null) {
CustomizationManager customizationManager = getCustomizationManager(editor);
@@ -78,6 +89,31 @@ public class LabelProviderUtil {
}
/**
+ *
+ * @param editor
+ * an editor
+ * @return
+ * the LabelProvider associated to this editor
+ * @throws NullPointerException
+ * when no LabelProvider is associated to the editor
+ */
+ public IBaseLabelProvider getExistingLabelProviderFor(final IEditorPart editor) throws NullPointerException {
+ if(editor instanceof IMultiPageEditorPart) {
+ /*
+ * I set this exception because I think that we never want a customizable label provider for CoreMultiDiagramEditor.
+ * We want a label provider for embedded editor (or eclipse editor)
+ * -> when you get this exce^ption, it an error of the developper
+ */
+ throw new IllegalArgumentException(NLS.bind("I can't provide a label provider for {0}.", IMultiPageEditorPart.class));
+ }
+ final IBaseLabelProvider provider = labelProviderMap.get(editor);
+ if(provider == null) {
+ throw new NullPointerException();
+ }
+ return provider;
+ }
+
+ /**
* Remove the LabelProvider and the CustomizationManager registered for this editor
*
* @param editor
diff --git a/incoming/org.eclipse.papyrus.uml.compare/META-INF/MANIFEST.MF b/incoming/org.eclipse.papyrus.uml.compare/META-INF/MANIFEST.MF
index ca2d8104e13..7977f051a4b 100644
--- a/incoming/org.eclipse.papyrus.uml.compare/META-INF/MANIFEST.MF
+++ b/incoming/org.eclipse.papyrus.uml.compare/META-INF/MANIFEST.MF
@@ -11,6 +11,11 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.papyrus.infra.emf.compare.common;bundle-version="0.9.0",
org.eclipse.papyrus.infra.core,
org.eclipse.papyrus.infra.emf.compare.instance;bundle-version="0.9.0",
- org.eclipse.uml2.uml;bundle-version="4.0.0"
+ org.eclipse.uml2.uml;bundle-version="4.0.0",
+ org.eclipse.compare;bundle-version="3.5.300",
+ org.eclipse.emf.compare.diff,
+ org.eclipse.papyrus.infra.emf.compare.ui,
+ org.eclipse.emf.compare.ui,
+ org.eclipse.emf.facet.infra.browser.uicore;bundle-version="0.2.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
diff --git a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/Activator.java b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/Activator.java
index 6648caca795..133ba809d72 100644
--- a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/Activator.java
+++ b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/Activator.java
@@ -27,9 +27,10 @@ public class Activator extends AbstractUIPlugin {
// The shared instance
private static Activator plugin;
-
- /**the Papyrus log helper*/
+
+ /** the Papyrus log helper */
public static LogHelper log;
+
/**
* The constructor
*/
@@ -38,6 +39,7 @@ public class Activator extends AbstractUIPlugin {
/*
* (non-Javadoc)
+ *
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
@@ -47,6 +49,7 @@ public class Activator extends AbstractUIPlugin {
/*
* (non-Javadoc)
+ *
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
@@ -56,7 +59,7 @@ public class Activator extends AbstractUIPlugin {
/**
* Returns the shared instance
- *
+ *
* @return the shared instance
*/
public static Activator getDefault() {
diff --git a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/editor/UMLCompareEditor.java b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/editor/UMLCompareEditor.java
index 028f7944a3c..457bc01b5ba 100644
--- a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/editor/UMLCompareEditor.java
+++ b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/editor/UMLCompareEditor.java
@@ -19,8 +19,8 @@ import org.eclipse.papyrus.infra.emf.compare.instance.papyrusemfcompareinstance.
-public class UMLCompareEditor extends EMFCompareEditor{
-
+public class UMLCompareEditor extends EMFCompareEditor {
+
/** the type of the editor */
public static final String EDITOR_TYPE = "PapyrusUMLCompare"; //$NON-NLS-1$
diff --git a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/factory/UMLCompareEditorFactory.java b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/factory/UMLCompareEditorFactory.java
index 6a27be4d521..62073e895f1 100644
--- a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/factory/UMLCompareEditorFactory.java
+++ b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/factory/UMLCompareEditorFactory.java
@@ -17,7 +17,7 @@ import org.eclipse.papyrus.infra.emf.compare.common.factory.AbstractEMFCompareEd
import org.eclipse.papyrus.uml.compare.editor.UMLCompareEditor;
-public class UMLCompareEditorFactory extends AbstractEMFCompareEditorFactory{
+public class UMLCompareEditorFactory extends AbstractEMFCompareEditorFactory {
/**
* Constructor.
diff --git a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/handler/UMLCompareEditorHandler.java b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/handler/UMLCompareEditorHandler.java
index 513d8e432e8..bfda63037a1 100644
--- a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/handler/UMLCompareEditorHandler.java
+++ b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/handler/UMLCompareEditorHandler.java
@@ -14,7 +14,6 @@
package org.eclipse.papyrus.uml.compare.handler;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
@@ -22,7 +21,9 @@ import org.eclipse.papyrus.infra.emf.compare.common.handler.AbstractEMFCompareEd
import org.eclipse.papyrus.uml.compare.editor.UMLCompareEditor;
import org.eclipse.uml2.uml.Element;
-
+/**
+ * The handler for the UML Compare Editor
+ */
public class UMLCompareEditorHandler extends AbstractEMFCompareEditorHandler {
public UMLCompareEditorHandler() {
@@ -32,7 +33,7 @@ public class UMLCompareEditorHandler extends AbstractEMFCompareEditorHandler {
/**
*
* @see org.eclipse.papyrus.infra.emf.compare.common.handler.AbstractEMFCompareEditorHandler#getSelection()
- *
+ *
* @return
*/
@Override
@@ -46,4 +47,14 @@ public class UMLCompareEditorHandler extends AbstractEMFCompareEditorHandler {
return umlSelection;
}
+ @Override
+ public boolean isEnabled() {
+ boolean enabled = super.isEnabled();
+ if(enabled) {
+ EObject left = getSelection().get(0);
+ EObject right = getSelection().get(1);
+ return left.getClass() == right.getClass();
+ }
+ return false;
+ }
}

Back to the top