Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvlorenzo2012-04-26 13:21:35 +0000
committervlorenzo2012-04-26 13:21:35 +0000
commit5ab9602f8b51c168cc0d2314be1c9b12fcb5648b (patch)
tree7f2871e1ba4d5c694093eb592ed5c9a67f94bdc9 /incoming
parent043e5b4b007be857b2a9183bb39ff62d4961af73 (diff)
downloadorg.eclipse.papyrus-5ab9602f8b51c168cc0d2314be1c9b12fcb5648b.tar.gz
org.eclipse.papyrus-5ab9602f8b51c168cc0d2314be1c9b12fcb5648b.tar.xz
org.eclipse.papyrus-5ab9602f8b51c168cc0d2314be1c9b12fcb5648b.zip
377154: [Nested UML Compare] Comparison between 2 elements which don't have the same parent is not done properly
https://bugs.eclipse.org/bugs/show_bug.cgi?id=377154 376408: [UML Compare] Papyrus should provide its own CompareEditor to compare 2 models https://bugs.eclipse.org/bugs/show_bug.cgi?id=376408 376190: [EMF-Compare] Papyrus should provide viewers for EMF-Compare https://bugs.eclipse.org/bugs/show_bug.cgi?id=376190 Changes the methods to get the label provider Remove the possibility to use the Transaction content merge viewer in the stanrd EMF-Compare Provides an Undo/Redo for the nested and the standalone editor
Diffstat (limited to 'incoming')
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/META-INF/MANIFEST.MF3
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/AbstractPapyrusCompareEditor.java120
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/EMFCompareEditor.java29
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/listener/CloseEditorTriggerListener.java12
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/EMFCompareUtils.java16
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/ICompareViewerProvider.java40
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/PapyrusModelCompareEditorInput.java40
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/plugin.xml6
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/actions/CustomizationAction.java11
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/transactional/viewer/PapyrusTransactionalContentMergeViewerCreator.java3
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusCustomizableModelContentMergeViewer.java11
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/content/viewer/PapyrusModelContentMergeTabFolder.java30
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/CustomizationAndViewerActionDispatcher.java124
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/EMFCompareLabelProviderRefreshingViewer.java82
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/EMFCompareUIUtils.java (renamed from incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/EMFCompareUIUtils.java)2
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/ILabelProviderRefreshingViewer.java (renamed from incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ILabelProviderRefreshingViewer.java)7
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/LabelProviderUtil.java240
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/EMFCompareLabelProvider.java61
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/queries/GetDiffElementLabel.java17
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/structural/viewer/PapyrusCustomizableParameterizedStructureMergeViewer.java24
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/EditingDomainUtil.java55
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/ICustomizableEditor.java24
-rw-r--r--incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/LabelProviderUtil.java189
-rw-r--r--incoming/org.eclipse.papyrus.uml.compare.file/META-INF/MANIFEST.MF3
-rw-r--r--incoming/org.eclipse.papyrus.uml.compare.file/src/org/eclipse/papyrus/uml/compare/file/editor/CompareUMLFileEditor.java49
-rw-r--r--incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/content/viewer/UMLTransactionalModelContentMergeViewer.java4
-rw-r--r--incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/utils/UMLModelCompareEditorInput.java38
27 files changed, 853 insertions, 387 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 6d86f3117d6..063de6e21c6 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
@@ -14,7 +14,8 @@ Require-Bundle: org.eclipse.papyrus.infra.emf.compare.instance,
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"
+ org.eclipse.emf.facet.infra.browser.uicore;bundle-version="0.2.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="0.9.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.papyrus.infra.emf.compare.common,
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/AbstractPapyrusCompareEditor.java b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/AbstractPapyrusCompareEditor.java
index b981c7a85ca..51bf2009d64 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/AbstractPapyrusCompareEditor.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/editor/AbstractPapyrusCompareEditor.java
@@ -17,6 +17,9 @@ import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import org.eclipse.compare.internal.CompareEditor;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.commands.operations.IOperationHistoryListener;
+import org.eclipse.core.commands.operations.OperationHistoryEvent;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.compare.EMFCompareException;
import org.eclipse.emf.compare.diff.metamodel.ComparisonResourceSnapshot;
@@ -33,12 +36,14 @@ 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.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
import org.eclipse.papyrus.infra.emf.compare.common.Activator;
+import org.eclipse.papyrus.infra.emf.compare.common.utils.ICompareViewerProvider;
import org.eclipse.papyrus.infra.emf.compare.common.utils.PapyrusModelCompareEditorInput;
-import org.eclipse.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer;
+import org.eclipse.papyrus.infra.emf.compare.ui.provider.EMFCompareLabelProvider;
+import org.eclipse.papyrus.infra.emf.compare.ui.utils.ICustomizableEditor;
import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
+import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.PlatformUI;
/**
@@ -47,21 +52,42 @@ import org.eclipse.ui.PlatformUI;
* and the standalone Papyrus Compare Editor
*
*/
-public abstract class AbstractPapyrusCompareEditor extends CompareEditor {
+@SuppressWarnings("restriction")
+//suppress restriction for CompareEditor
+public abstract class AbstractPapyrusCompareEditor extends CompareEditor implements ICustomizableEditor {
+
+
+ /**
+ * The listener on the operation history to catch the Undo/Redo and update the upper viewer
+ */
+ private IOperationHistoryListener historyListener;
+
/**
* The label provider for this editor
*/
- private ILabelProvider labelProvider;
+ private EMFCompareLabelProvider labelProvider;
- @SuppressWarnings("restriction")
public AbstractPapyrusCompareEditor() {
super();
}
- public ILabelProvider getLabelProvider() {
+ protected final void addUndoRedoListeners() {
+ final IOperationHistory operationHistory = getIOperationHistory();
+ operationHistory.addOperationHistoryListener(getUndoRedoListener());
+ }
+
+ /**
+ * Remove the listener on the Undo/Redo
+ */
+ protected void removeUndoRedoListener() {
+ final IOperationHistory operationHistory = getIOperationHistory();
+ operationHistory.removeOperationHistoryListener(getUndoRedoListener());
+ }
+
+ public EMFCompareLabelProvider getLabelProvider() {
if(labelProvider == null) {
- labelProvider = (LabelProvider)LabelProviderUtil.INSTANCE.getLabelProviderFor(this);
+ labelProvider = LabelProviderUtil.createLabelProvider();
}
return labelProvider;
}
@@ -107,7 +133,7 @@ public abstract class AbstractPapyrusCompareEditor extends CompareEditor {
//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.getLabelProviderFor(this)).refreshViewer();
+ refreshViewers();
super.setFocus();
}
@@ -147,7 +173,6 @@ public abstract class AbstractPapyrusCompareEditor extends CompareEditor {
return snapshot;
}
-
/**
*
* @param left
@@ -171,10 +196,17 @@ public abstract class AbstractPapyrusCompareEditor extends CompareEditor {
return DiffService.doDiff(match);
}
+ /**
+ *
+ * @param left
+ * @param right
+ * @return
+ */
protected final ModelCompareEditorInput getCompareInput(final EObject left, final EObject right) {
- ComparisonSnapshot snapshot = doContentCompare(left, right);
+ final ComparisonSnapshot snapshot = doContentCompare(left, right);
return getConfiguredModelCompareEditorInput(snapshot);
}
+
/**
*
* @param snapshot
@@ -200,4 +232,70 @@ public abstract class AbstractPapyrusCompareEditor extends CompareEditor {
* the input
*/
protected abstract void configureInput(final PapyrusModelCompareEditorInput input);
+
+ /**
+ *
+ */
+ protected void addListeners() {
+
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.ui.utils.ICustomizableEditor#refreshViewers()
+ *
+ */
+ public void refreshViewers() {
+ final IEditorInput input = this.getEditorInput();
+ if(input instanceof ICompareViewerProvider) {
+ final Viewer contentViewer = ((ICompareViewerProvider)input).getContentMergeViewer();
+ final Viewer structureViewer = ((ICompareViewerProvider)input).getStructureMergeViewer();
+ if(contentViewer != null) {
+ contentViewer.refresh();
+ }
+ if(structureViewer != null) {
+ structureViewer.refresh();
+ }
+ }
+ }
+
+ protected IOperationHistoryListener getUndoRedoListener() {
+ if(this.historyListener == null) {
+ this.historyListener = new IOperationHistoryListener() {
+
+ /** the last catched event */
+ private OperationHistoryEvent lastEvent = null;
+
+ /**
+ *
+ * @see org.eclipse.core.commands.operations.IOperationHistoryListener#historyNotification(org.eclipse.core.commands.operations.OperationHistoryEvent)
+ *
+ * @param event
+ */
+ public void historyNotification(final OperationHistoryEvent event) {
+ int eventType = event.getEventType();
+ if(eventType == 10 || eventType == 9) {
+ if(this.lastEvent != event) {
+ this.lastEvent = event;
+ if(!event.getOperation().getLabel().equals("Create CompareEditor")) {//TODO improve it!
+ resetInput();
+ }
+ }
+ }
+ }
+
+ private void resetInput() {
+ AbstractPapyrusCompareEditor.this.resetInput();
+ }
+ };
+ }
+ return this.historyListener;
+ }
+
+ protected abstract IOperationHistory getIOperationHistory();
+
+ /**
+ * reset the input in the viewer
+ */
+ protected abstract void resetInput();
}
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 b9a3df73d5a..5af280ad100 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
@@ -14,13 +14,17 @@
package org.eclipse.papyrus.infra.emf.compare.common.editor;
import org.eclipse.compare.CompareEditorInput;
+import org.eclipse.core.commands.operations.IOperationHistory;
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.ui.ModelCompareInput;
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.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.commands.NotifyingWorkspaceCommandStack;
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;
@@ -99,7 +103,9 @@ public class EMFCompareEditor extends AbstractPapyrusCompareEditor implements IR
+ @Override
protected void addListeners() {
+ addUndoRedoListeners();
if(EMFCompareEditor.this.servicesRegistry != null) {//we are in papyrus
TransactionalEditingDomain domain = null;
try {
@@ -117,6 +123,7 @@ public class EMFCompareEditor extends AbstractPapyrusCompareEditor implements IR
* Remove the listener
*/
protected void removeListeners() {
+ removeUndoRedoListener();
//done by the CloseTriggerlistener. Here, it is too early to remove it
// if(EMFCompareEditor.this.servicesRegistry != null) {//we are in papyrus
// TransactionalEditingDomain domain = null;
@@ -265,4 +272,26 @@ public class EMFCompareEditor extends AbstractPapyrusCompareEditor implements IR
}
+ @Override
+ protected IOperationHistory getIOperationHistory() {
+ TransactionalEditingDomain domain = null;
+ try {
+ domain = servicesRegistry.getService(TransactionalEditingDomain.class);
+ } catch (ServiceException e) {
+ Activator.log.error("I can't find the TransactionalEditingDomain", e);
+ }
+
+ return ((NotifyingWorkspaceCommandStack)domain.getCommandStack()).getOperationHistory();
+ }
+
+
+ @Override
+ protected void resetInput() {
+ final TreeViewer viewer = ((PapyrusModelCompareEditorInput)this.input).getStructureMergeViewer();
+ final PapyrusModelCompareEditorInput input = (PapyrusModelCompareEditorInput)getCompareInput(rawModel.getLeft(), rawModel.getRight());
+ final ModelCompareInput input2 = input.getpreparedModelCompareInput();
+ viewer.setInput(input2);
+ }
+
+
}
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
index 97d5dd13269..2531ee4e670 100644
--- 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
@@ -13,29 +13,21 @@
*****************************************************************************/
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;
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.messages.Messages;
/**
@@ -51,10 +43,10 @@ public class CloseEditorTriggerListener extends TriggerListener {
/**
* The listened model of the editor
*/
- private EObject rawModel;
+ private final EObject rawModel;
/** the service registry */
- private ServicesRegistry registry;
+ private final ServicesRegistry registry;
/**
*
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
index cf2badd49f7..efdfa3d06aa 100644
--- 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
@@ -17,7 +17,7 @@ import org.eclipse.osgi.util.NLS;
import org.eclipse.papyrus.infra.emf.compare.common.messages.Messages;
import org.eclipse.papyrus.infra.emf.compare.instance.papyrusemfcompareinstance.PapyrusEMFCompareInstance;
import org.eclipse.papyrus.infra.emf.compare.ui.provider.EMFCompareLabelProvider;
-import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
+import org.eclipse.papyrus.infra.emf.compare.ui.utils.ICustomizableEditor;
import org.eclipse.ui.IEditorPart;
@@ -39,11 +39,15 @@ public class EMFCompareUtils {
* the name for the editor
*/
public static String getCompareEditorTitle(final IEditorPart editor, final PapyrusEMFCompareInstance rawModel) {
- EMFCompareLabelProvider labelProvider = (EMFCompareLabelProvider)LabelProviderUtil.INSTANCE.getLabelProviderFor(editor);
- String leftLabel = labelProvider.getText(rawModel.getLeft());
- String rightLabel = labelProvider.getText(rawModel.getRight());
- String title = NLS.bind(Messages.EMFCompareUtils_CompareTitle, leftLabel, rightLabel);
- return title;
+ if(editor instanceof ICustomizableEditor) {
+ EMFCompareLabelProvider labelProvider = (EMFCompareLabelProvider)((ICustomizableEditor)editor).getLabelProvider();
+ String leftLabel = labelProvider.getText(rawModel.getLeft());
+ String rightLabel = labelProvider.getText(rawModel.getRight());
+ String title = NLS.bind(Messages.EMFCompareUtils_CompareTitle, leftLabel, rightLabel);
+ return title;
+ }
+ return "";
+
}
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/ICompareViewerProvider.java b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/ICompareViewerProvider.java
new file mode 100644
index 00000000000..ed11d80beae
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/ICompareViewerProvider.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * 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 org.eclipse.compare.contentmergeviewer.ContentMergeViewer;
+import org.eclipse.emf.compare.ui.viewer.structure.ModelStructureMergeViewer;
+
+/**
+ *
+ * This interface
+ *
+ */
+public interface ICompareViewerProvider {
+
+ /**
+ *
+ * @return
+ * the content merge viewer for this input. The returned value can be <code>null</code> if the viewer has not been yet created
+ */
+ public ContentMergeViewer getContentMergeViewer();
+
+ /**
+ *
+ * @return
+ * the structure merge viewer for this input. The returned value can be <code>null</code> if the viewer has not been yet created
+ */
+ public ModelStructureMergeViewer getStructureMergeViewer();
+
+}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/PapyrusModelCompareEditorInput.java b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/PapyrusModelCompareEditorInput.java
index 104bed7f023..bd12843a080 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/PapyrusModelCompareEditorInput.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.common/src/org/eclipse/papyrus/infra/emf/compare/common/utils/PapyrusModelCompareEditorInput.java
@@ -17,10 +17,14 @@ import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.CompareEditorInput;
import org.eclipse.compare.CompareViewerPane;
import org.eclipse.compare.Splitter;
+import org.eclipse.compare.contentmergeviewer.ContentMergeViewer;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.compare.diff.metamodel.ComparisonSnapshot;
+import org.eclipse.emf.compare.ui.ModelCompareInput;
import org.eclipse.emf.compare.ui.editor.ModelCompareEditorInput;
import org.eclipse.emf.compare.ui.viewer.content.ModelContentMergeViewer;
+import org.eclipse.emf.compare.ui.viewer.structure.ModelStructureMergeViewer;
import org.eclipse.osgi.util.NLS;
import org.eclipse.papyrus.infra.emf.compare.common.messages.Messages;
import org.eclipse.papyrus.infra.emf.compare.ui.content.transactional.viewer.PapyrusTransactionalModelContentMergeViewer;
@@ -36,7 +40,7 @@ import org.eclipse.ui.IEditorPart;
* the ModelInput for Papyrus Compare
*
*/
-public class PapyrusModelCompareEditorInput extends ModelCompareEditorInput {
+public class PapyrusModelCompareEditorInput extends ModelCompareEditorInput implements ICompareViewerProvider {
/** the editor */
protected IEditorPart editor;
@@ -93,7 +97,7 @@ public class PapyrusModelCompareEditorInput extends ModelCompareEditorInput {
* @return
*/
@Override
- protected ModelContentMergeViewer createMergeViewer(CompareViewerPane pane, CompareConfiguration config) {
+ protected ModelContentMergeViewer createMergeViewer(final CompareViewerPane pane, final CompareConfiguration config) {
return new PapyrusTransactionalModelContentMergeViewer(pane, config, editor);
}
@@ -103,7 +107,7 @@ public class PapyrusModelCompareEditorInput extends ModelCompareEditorInput {
* @see CompareEditorInput#createOutlineContents(Composite, int)
*/
@Override
- public Control createOutlineContents(Composite parent, int direction) {
+ public Control createOutlineContents(final Composite parent, final int direction) {
final Splitter splitter = new Splitter(parent, direction);
final CompareViewerPane pane = new CompareViewerPane(splitter, SWT.NONE);
@@ -126,9 +130,37 @@ public class PapyrusModelCompareEditorInput extends ModelCompareEditorInput {
* @param monitor
*/
@Override
- public void saveChanges(IProgressMonitor monitor) {
+ public void saveChanges(final IProgressMonitor monitor) {
//normally it ok, there is nothing to do to save notation and di files
super.saveChanges(monitor);
}
+ /**
+ *
+ * @return
+ * the content merge viewer for this input. The returned value can be <code>null</code> if the viewer has not been yet created
+ */
+ public ContentMergeViewer getContentMergeViewer() {
+ return this.contentMergeViewer;
+ }
+
+ /**
+ *
+ * @return
+ * the structure merge viewer for this input. The retruned value can be <code>null</code> if the viewer has not been yet created
+ */
+ public ModelStructureMergeViewer getStructureMergeViewer() {
+ return this.structureMergeViewer;
+ }
+
+ /**
+ *
+ * @return
+ * the prepared input
+ */
+ public ModelCompareInput getpreparedModelCompareInput() {
+ prepareInput(new NullProgressMonitor());
+ return this.preparedInput;
+ }
+
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/plugin.xml b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/plugin.xml
index 0d14e2044ca..b851b34add6 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/plugin.xml
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/plugin.xml
@@ -5,12 +5,6 @@
<extension point="org.eclipse.compare.contentMergeViewers">
<viewer class="org.eclipse.papyrus.infra.emf.compare.ui.content.viewer.PapyrusCustomizableContentMergeViewerCreator" extensions="ecore, uml" id="org.eclipse.papyrus.infra.emf.compare.ui.papyrus.viewer" label="Papyrus Customizable Content Merge Viewer">
</viewer>
- <viewer
- class="org.eclipse.papyrus.infra.emf.compare.ui.content.transactional.viewer.PapyrusTransactionalContentMergeViewerCreator"
- extensions="ecore, uml"
- id="org.eclipse.papyrus.infra.emf.compare.ui.content.transactionalviewer"
- label="Papyrus Transactional Content Merge Viewer">
- </viewer>
</extension>
<extension point="org.eclipse.compare.structureMergeViewers">
<!--I add uml here, but it is not really a dependency-->
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 f3db7a28db8..eb58ac0fcf9 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
@@ -28,9 +28,8 @@ 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.internal.utils.CustomizationAndViewerActionDispatcher;
import org.eclipse.papyrus.infra.emf.compare.ui.messages.Messages;
-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.Display;
import org.eclipse.ui.IEditorPart;
@@ -85,7 +84,9 @@ public class CustomizationAction extends Action {
currentEditor = ((IMultiPageEditorPart)currentEditor).getActiveEditor();
}
- final CustomizationManager customizationManager = LabelProviderUtil.INSTANCE.getCustomizationManager(currentEditor);
+ final CustomizationManager customizationManager = CustomizationAndViewerActionDispatcher.getCustomizationManager(currentEditor);
+ assert customizationManager != null;
+
final List<MetamodelView> initiallySelectedCustomizations = customizationManager.getRegisteredCustomizations();
final LoadCustomizationsDialog loadCustomizationsDialog = new LoadCustomizationsDialog(Display.getCurrent().getActiveShell(), initiallySelectedCustomizations, this.registeredMetamodel);
//TODO : override the dialog to hide the checkbox for the facet
@@ -103,11 +104,13 @@ public class CustomizationAction extends Action {
}
customizationManager.loadCustomizations();
}
+
+
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, "", "")); //$NON-NLS-1$ //$NON-NLS-2$
}
- ((ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getExistingLabelProviderFor(currentEditor)).refreshViewer();
+ CustomizationAndViewerActionDispatcher.refreshViewers(currentEditor);
}
}
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 420c5e55473..25bafb70510 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
@@ -27,6 +27,7 @@ import org.eclipse.ui.IEditorPart;
* This class allows to create the MergeViewer when we change the viewer used in CompareEditor
*
*/
+//unused for the moment
public class PapyrusTransactionalContentMergeViewerCreator implements IViewerCreator {
/**
@@ -46,7 +47,7 @@ public class PapyrusTransactionalContentMergeViewerCreator implements IViewerCre
* @param config
* @return
*/
- public Viewer createViewer(Composite parent, CompareConfiguration config) {
+ public Viewer createViewer(final Composite parent, final CompareConfiguration 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/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 080d1b79d7c..10e222a10a1 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
@@ -21,19 +21,18 @@ import java.util.HashSet;
import org.eclipse.compare.CompareConfiguration;
import org.eclipse.emf.compare.ui.viewer.content.ModelContentMergeViewer;
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.ecore.EPackage;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarManager;
+import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.papyrus.infra.emf.compare.ui.actions.CollapseAllAction;
import org.eclipse.papyrus.infra.emf.compare.ui.actions.CustomizationAction;
import org.eclipse.papyrus.infra.emf.compare.ui.actions.ExpandAllAction;
-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.papyrus.infra.emf.compare.ui.internal.utils.CustomizationAndViewerActionDispatcher;
+import org.eclipse.papyrus.infra.emf.compare.ui.internal.utils.EMFCompareUIUtils;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorPart;
@@ -57,7 +56,7 @@ public class PapyrusCustomizableModelContentMergeViewer extends ModelContentMerg
*/
public PapyrusCustomizableModelContentMergeViewer(final Composite parent, final CompareConfiguration config, final IEditorPart editor) {
super(parent, config);
- ILabelProviderRefreshingViewer labelProvider = (ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(editor);
+ final LabelProvider labelProvider = CustomizationAndViewerActionDispatcher.getLabelProvider(editor);
((PapyrusModelContentMergeTabFolder)leftPart).setLabelProvider(labelProvider);
((PapyrusModelContentMergeTabFolder)rightPart).setLabelProvider(labelProvider);
}
@@ -134,7 +133,7 @@ public class PapyrusCustomizableModelContentMergeViewer extends ModelContentMerg
* @param event
*/
@Override
- protected void handleDispose(DisposeEvent event) {
+ protected void handleDispose(final DisposeEvent event) {
metamodels.clear();
super.handleDispose(event);
}
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 eba013e223b..6f8977d1f55 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
@@ -28,9 +28,9 @@ 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.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.papyrus.infra.emf.compare.ui.internal.utils.CustomizationAndViewerActionDispatcher;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
@@ -46,7 +46,7 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
protected final PapyrusCustomizableModelContentMergeViewer myUMLViewer;
/** the label provider */
- private ILabelProviderRefreshingViewer labelProvider;
+ private LabelProvider labelProvider;
/** the diff tab */
protected ModelContentMergeDiffTab diffTab;
@@ -61,7 +61,7 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
* @param side
* the side
*/
- public PapyrusModelContentMergeTabFolder(ModelContentMergeViewer viewer, Composite composite, int side) {
+ public PapyrusModelContentMergeTabFolder(final ModelContentMergeViewer viewer, final Composite composite, final int side) {
super(viewer, composite, side);
myUMLViewer = (PapyrusCustomizableModelContentMergeViewer)viewer;
}
@@ -72,10 +72,10 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
* @param labelProvider
* the labelProvider
*/
- public void setLabelProvider(final ILabelProviderRefreshingViewer labelProvider) {
+ public void setLabelProvider(final LabelProvider labelProvider) {
this.labelProvider = labelProvider;
- this.labelProvider.registerViewer(diffTab);
- diffTab.setLabelProvider((IBaseLabelProvider)labelProvider);
+ CustomizationAndViewerActionDispatcher.associateViewerAndLabelProvider(diffTab, this.labelProvider);
+ diffTab.setLabelProvider(labelProvider);
}
/**
@@ -86,7 +86,7 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
* @return
*/
@Override
- protected IModelContentMergeViewerTab createModelContentMergeDiffTab(Composite parent) {
+ protected IModelContentMergeViewerTab createModelContentMergeDiffTab(final Composite parent) {
diffTab = new ModelContentMergeDiffTab(parent, partSide, this);
diffTab.setContentProvider(createDiffTabContentProvider());
return diffTab;
@@ -96,11 +96,11 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
/**
*
* @see org.eclipse.emf.compare.ui.viewer.content.part.ModelContentMergeTabFolder#createContents(org.eclipse.swt.widgets.Composite)
- *
+ *
* @param composite
*/
@Override
- protected void createContents(Composite composite) {
+ protected void createContents(final Composite composite) {
super.createContents(composite);
//we set the layout here, because, it we don't set, we have a little treeviwer...
Control ctrl = tree.getControl();
@@ -115,7 +115,7 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
@Override
public void dispose() {
if(labelProvider != null) {
- labelProvider.unregisterViewer(diffTab);
+ CustomizationAndViewerActionDispatcher.dissociateTreeViewerAndLabelProvider(diffTab, labelProvider);
diffTab = null;
labelProvider = null;
}
@@ -146,7 +146,7 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
* @param factory
* Factory to get labels and icons from.
*/
- public ModelContentMergeDiffTabContentProvider(AdapterFactory factory) {
+ public ModelContentMergeDiffTabContentProvider(final AdapterFactory factory) {
super(factory);
}
@@ -157,7 +157,7 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
*/
@SuppressWarnings("unchecked")
@Override
- public Object[] getElements(Object object) {
+ public Object[] getElements(final Object object) {
// overwritten to ensure contents of ResourceSets, List<Resource>, and Resource are correclty
// returned.
Object[] result = null;
@@ -190,7 +190,7 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
* @see org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider#getChildren(java.lang.Object)
*/
@Override
- public Object[] getChildren(Object object) {
+ public Object[] getChildren(final Object object) {
if(object instanceof Resource) {
return ((Resource)object).getContents().toArray();
}
@@ -203,7 +203,7 @@ public class PapyrusModelContentMergeTabFolder extends ModelContentMergeTabFolde
* @see org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider#hasChildren(java.lang.Object)
*/
@Override
- public boolean hasChildren(Object object) {
+ public boolean hasChildren(final Object object) {
if(object instanceof Resource) {
return ((Resource)object).getContents().size() > 0;
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/CustomizationAndViewerActionDispatcher.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/CustomizationAndViewerActionDispatcher.java
new file mode 100644
index 00000000000..e573cdb99fc
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/CustomizationAndViewerActionDispatcher.java
@@ -0,0 +1,124 @@
+/*****************************************************************************
+ * 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.internal.utils;
+
+import org.eclipse.emf.facet.infra.browser.uicore.CustomizationManager;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.infra.emf.compare.ui.provider.EMFCompareLabelProvider;
+import org.eclipse.papyrus.infra.emf.compare.ui.utils.ICustomizableEditor;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ *
+ * This class provides methods to manage the Labelprovider and the viewers for the CompareEditor.
+ *
+ *
+ */
+public class CustomizationAndViewerActionDispatcher {
+
+ private CustomizationAndViewerActionDispatcher() {
+ //to prevent instantiation
+ }
+
+ /**
+ *
+ * @param editor
+ * an editor
+ * @return
+ * Create if it is necessary and returns the Labelprovider for this editor
+ */
+ public static LabelProvider getLabelProvider(final IEditorPart editor) {
+ if(editor instanceof ICustomizableEditor) {
+ return ((ICustomizableEditor)editor).getLabelProvider();
+ } else {
+ return LabelProviderUtil.INSTANCE.getLabelProviderFor(editor);
+ }
+ }
+
+ /**
+ *
+ * @param editor
+ * an editor
+ * @return
+ * the labelprovider associated to this editor. The returned value can be <code>null</code>
+ */
+ public static LabelProvider getExistingLabelProvider(final IEditorPart editor) {
+ if(editor instanceof ICustomizableEditor) {
+ return ((ICustomizableEditor)editor).getLabelProvider();
+ } else {
+ return LabelProviderUtil.INSTANCE.getExistingLabelProviderFor(editor);
+ }
+ }
+
+ /**
+ *
+ * @param editor
+ * an editor
+ * @return
+ * the CustomizationManager associated to this editor (via its LabelProvider)
+ */
+ public static CustomizationManager getCustomizationManager(final IEditorPart editor) {
+ if(editor instanceof ICustomizableEditor) {
+ EMFCompareLabelProvider provider = ((ICustomizableEditor)editor).getLabelProvider();
+ return provider.getCustomizationManager();
+ } else {
+ EMFCompareLabelProvider provider = LabelProviderUtil.INSTANCE.getExistingLabelProviderFor(editor);
+ return provider.getCustomizationManager();
+ }
+ }
+
+ /**
+ * Refresh the viewers of the editor
+ *
+ * @param editor
+ * an editor
+ */
+ public static void refreshViewers(final IEditorPart editor) {
+ if(editor instanceof ICustomizableEditor) {
+ ((ICustomizableEditor)editor).refreshViewers();
+ } else {
+ EMFCompareLabelProviderRefreshingViewer provider = LabelProviderUtil.INSTANCE.getExistingLabelProviderFor(editor);
+ provider.refreshViewer();
+ }
+ }
+
+ /**
+ * Break the couple viewer/labelprovider if necessary
+ *
+ * @param viewer
+ * a viewer
+ * @param provider
+ * a label provider
+ */
+ public static void dissociateTreeViewerAndLabelProvider(final TreeViewer viewer, final LabelProvider provider) {
+ if(provider instanceof ILabelProviderRefreshingViewer) {
+ ((ILabelProviderRefreshingViewer)provider).unregisterViewer(viewer);
+ }
+ }
+
+ /**
+ * Create the couple viewer/labelprovider if necessary
+ *
+ * @param viewer
+ * a viewer
+ * @param provider
+ * a label provider
+ */
+ public static void associateViewerAndLabelProvider(final TreeViewer viewer, final LabelProvider provider) {
+ if(provider instanceof ILabelProviderRefreshingViewer) {
+ ((ILabelProviderRefreshingViewer)provider).registerViewer(viewer);
+ }
+ }
+}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/EMFCompareLabelProviderRefreshingViewer.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/EMFCompareLabelProviderRefreshingViewer.java
new file mode 100644
index 00000000000..f786f251c42
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/EMFCompareLabelProviderRefreshingViewer.java
@@ -0,0 +1,82 @@
+/*****************************************************************************
+ * 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.internal.utils;
+
+import java.util.Collection;
+import java.util.HashSet;
+
+import org.eclipse.emf.facet.infra.browser.uicore.CustomizationManager;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.infra.emf.compare.ui.provider.EMFCompareLabelProvider;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+
+/**
+ *
+ * This Label provider is used when the editor doesn't manage itself the viewers.
+ * This label provider allows to refresh the viewers which used it
+ *
+ */
+//this class must have a package visibility
+final class EMFCompareLabelProviderRefreshingViewer extends EMFCompareLabelProvider implements ILabelProviderRefreshingViewer {
+
+ /** the list of the registered viewer */
+ private final Collection<TreeViewer> viewers;
+
+ public EMFCompareLabelProviderRefreshingViewer(final CustomizationManager customizationManager) {
+ super(customizationManager);
+ this.viewers = new HashSet<TreeViewer>();
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.ui.internal.utils.ILabelProviderRefreshingViewer#registerViewer(org.eclipse.jface.viewers.TreeViewer)
+ *
+ * @param viewer
+ */
+ public void registerViewer(final TreeViewer viewer) {
+ final DisposeListener listener = new DisposeListener() {
+
+ public void widgetDisposed(final DisposeEvent e) {
+ viewer.getTree().removeDisposeListener(this);
+ unregisterViewer(viewer);
+ }
+ };
+ viewer.getTree().addDisposeListener(listener);
+ viewers.add(viewer);
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.ui.internal.utils.ILabelProviderRefreshingViewer#refreshViewer()
+ *
+ */
+ public void refreshViewer() {
+ for(TreeViewer current : viewers) {
+ if(!current.getTree().isDisposed()) {
+ current.refresh();
+ }
+ }
+ }
+
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.ui.internal.utils.ILabelProviderRefreshingViewer#unregisterViewer(org.eclipse.jface.viewers.TreeViewer)
+ *
+ * @param viewer
+ */
+ public void unregisterViewer(final TreeViewer viewer) {
+ viewers.remove(viewer);
+ }
+}
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/internal/utils/EMFCompareUIUtils.java
index 173d97075d8..446fbafe483 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/internal/utils/EMFCompareUIUtils.java
@@ -11,7 +11,7 @@
* Vincent Lorenzo (CEA LIST) Vincent.Lorenzo@cea.fr - Initial API and implementation
*
*****************************************************************************/
-package org.eclipse.papyrus.infra.emf.compare.ui.utils;
+package org.eclipse.papyrus.infra.emf.compare.ui.internal.utils;
import java.util.Collection;
import java.util.HashSet;
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ILabelProviderRefreshingViewer.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/ILabelProviderRefreshingViewer.java
index 8a07bdb2220..a826705891b 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/ILabelProviderRefreshingViewer.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/ILabelProviderRefreshingViewer.java
@@ -11,9 +11,9 @@
* Vincent Lorenzo (CEA LIST) Vincent.Lorenzo@cea.fr - Initial API and implementation
*
*****************************************************************************/
-package org.eclipse.papyrus.infra.emf.compare.ui.provider;
+package org.eclipse.papyrus.infra.emf.compare.ui.internal.utils;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
/**
@@ -21,7 +21,8 @@ import org.eclipse.jface.viewers.TreeViewer;
* The classes implements this interface when they are in charge of resfreshing Viewer
*
*/
-public interface ILabelProviderRefreshingViewer extends IBaseLabelProvider {
+//this interface must have a package visibility
+interface ILabelProviderRefreshingViewer extends ILabelProvider {
/**
* Register a viewer to refresh it
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/LabelProviderUtil.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/LabelProviderUtil.java
new file mode 100644
index 00000000000..0e35e89fcee
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/internal/utils/LabelProviderUtil.java
@@ -0,0 +1,240 @@
+/*****************************************************************************
+ * 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.internal.utils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+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.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.messages.Messages;
+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
+ *
+ */
+//FIXME use the futur service for the label provider
+//this class must have a package visibility
+class LabelProviderUtil {
+
+ /**
+ * This map associates an IEditorPart with an ILabelProvider
+ */
+ private final Map<IEditorPart, EMFCompareLabelProviderRefreshingViewer> 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() {
+ labelProviderMap = new HashMap<IEditorPart, EMFCompareLabelProviderRefreshingViewer>();
+ customizationMap = new HashMap<IEditorPart, CustomizationManager>(){
+ @Override
+ public String toString() {
+ String str = super.toString();
+ return str.replaceAll(", ", "\n");
+
+ }
+ };
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(new CloseCompareEditorListener());
+ }
+
+ /**
+ *
+ * @param editor
+ * an editor
+ * @return
+ * the ILabelProvider associated to this editor
+ */
+ public EMFCompareLabelProviderRefreshingViewer 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(Messages.LabelProviderUtil_CantProvideLabelProviderMessage, IMultiPageEditorPart.class));
+ }
+ EMFCompareLabelProviderRefreshingViewer provider = labelProviderMap.get(editor);
+ if(provider == null) {
+ CustomizationManager customizationManager = getCustomizationManager(editor);
+ provider = new EMFCompareLabelProviderRefreshingViewer(customizationManager);
+ labelProviderMap.put(editor, provider);
+ }
+ return provider;
+ }
+
+ /**
+ *
+ * @param editor
+ * an editor
+ * @return
+ * the LabelProvider associated to this editor
+ * @throws NullPointerException
+ * when no LabelProvider is associated to the editor
+ */
+ public EMFCompareLabelProviderRefreshingViewer 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(Messages.LabelProviderUtil_CantProvideLabelProviderMessage, IMultiPageEditorPart.class));
+ }
+ final EMFCompareLabelProviderRefreshingViewer provider = labelProviderMap.get(editor);
+ if(provider == null) {
+ throw new NullPointerException();
+ }
+ return provider;
+ }
+
+ /**
+ * 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);
+ }
+
+ /**
+ * FIXME : duplicated code with modelExplorer, table, ...?
+ * init the customization manager
+ *
+ * @param customizationManager
+ */
+ private void init(final CustomizationManager customizationManager) {
+ // the appearance can be customized here:
+
+ customizationManager.setShowDerivedLinks(true);
+
+ try {
+
+ // load customizations defined as default through the customization
+ // extension
+ final List<MetamodelView> registryDefaultCustomizations = CustomizationsCatalog.getInstance().getRegistryDefaultCustomizations();
+ for(final MetamodelView metamodelView : registryDefaultCustomizations) {
+ customizationManager.registerCustomization(metamodelView);
+ }
+ customizationManager.loadCustomizations();
+ //TODO load the facets!
+ // loadFacetsForCustomizations(registryDefaultCustomizations,customizationManager);
+
+ } catch (final Throwable e) {
+ Activator.log.error(e);
+ }
+ }
+
+ /**
+ *
+ * @param anEditor
+ * an editor
+ * @return
+ * a customization manager for this editor
+ */
+ public CustomizationManager getCustomizationManager(final IEditorPart anEditor) {
+ CustomizationManager manager = customizationMap.get(anEditor);
+ if(manager == null) {
+ manager = new CustomizationManager();
+ init(manager);
+ customizationMap.put(anEditor, manager);
+ }
+ 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(final IWorkbenchPart part) {
+ //nothing to do
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IPartListener#partBroughtToTop(org.eclipse.ui.IWorkbenchPart)
+ *
+ * @param part
+ */
+ public void partBroughtToTop(final IWorkbenchPart part) {
+ //nothing to do
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IPartListener#partClosed(org.eclipse.ui.IWorkbenchPart)
+ *
+ * @param part
+ */
+ public void partClosed(final 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(final IWorkbenchPart part) {
+ //nothing to do
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IPartListener#partOpened(org.eclipse.ui.IWorkbenchPart)
+ *
+ * @param part
+ */
+ public void partOpened(final IWorkbenchPart part) {
+ //nothing to do
+ }
+
+ }
+}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/EMFCompareLabelProvider.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/EMFCompareLabelProvider.java
index 2d07d80a0a0..a2d6e69e082 100644
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/EMFCompareLabelProvider.java
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/provider/EMFCompareLabelProvider.java
@@ -9,14 +9,12 @@
*
* Contributors:
* Tatiana Fesenko (CEA LIST) - Initial API and implementation
- *
+ * Vincent Lorenzo (CEA-LIST)
*****************************************************************************/
package org.eclipse.papyrus.infra.emf.compare.ui.provider;
import java.lang.reflect.InvocationTargetException;
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;
@@ -28,10 +26,7 @@ import org.eclipse.emf.facet.infra.browser.uicore.internal.AppearanceConfigurati
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.OwnerDrawLabelProvider;
-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.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
@@ -45,13 +40,14 @@ import org.eclipse.ui.PlatformUI;
* TODO : this label provider should be able to support StyledString (as done by Tatiana). In order to do that, this label provider should be
* a CellLabelProvider (or (better ?) an {@link OwnerDrawLabelProvider}) Il will be easiest when we will use the last version of EMF-Facet
*/
-public class EMFCompareLabelProvider extends CustomizableModelLabelProvider implements ILabelProviderRefreshingViewer {
+public class EMFCompareLabelProvider extends CustomizableModelLabelProvider {
/** The configuration. */
private final AppearanceConfiguration configuration;
- /** the list of the registered viewer */
- private Collection<TreeViewer> viewers = null;
+
+ /** the customization manager for this label provider*/
+ private final CustomizationManager manager;
/**
* Constructor.
@@ -61,8 +57,8 @@ public class EMFCompareLabelProvider extends CustomizableModelLabelProvider impl
*/
public EMFCompareLabelProvider(final CustomizationManager customizationManager) {
super(customizationManager);
+ this.manager = customizationManager;
this.configuration = getAppearanceConfiguration(customizationManager);
- this.viewers = new HashSet<TreeViewer>();
}
@@ -159,49 +155,8 @@ public class EMFCompareLabelProvider extends CustomizableModelLabelProvider impl
return new ModelElementItem(eObject, getTreeElement(eObject.eContainer()), this.configuration);
}
-
-
-
-
- /**
- *
- * @see org.eclipse.papyrus.infra.emf.compare.ui.provider.ILabelProviderRefreshingViewer#registerViewer(org.eclipse.jface.viewers.TreeViewer)
- *
- * @param viewer
- */
- public void registerViewer(final TreeViewer viewer) {
- final DisposeListener listener = new DisposeListener() {
-
- public void widgetDisposed(DisposeEvent e) {
- 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()) {
- current.refresh();
- }
- }
- }
-
- /**
- *
- * @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);
+ public CustomizationManager getCustomizationManager(){
+ return this.manager;
}
}
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 0eec0553e6d..a64e60de5d6 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
@@ -37,12 +37,11 @@ import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.facet.infra.query.core.exception.ModelQueryExecutionException;
import org.eclipse.emf.facet.infra.query.core.java.IJavaModelQuery;
import org.eclipse.emf.facet.infra.query.core.java.ParameterValueList;
+import org.eclipse.jface.viewers.LabelProvider;
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;
-import org.eclipse.papyrus.infra.emf.compare.ui.utils.LabelProviderUtil;
+import org.eclipse.papyrus.infra.emf.compare.ui.internal.utils.CustomizationAndViewerActionDispatcher;
import org.eclipse.papyrus.infra.tools.util.EditorHelper;
import org.eclipse.papyrus.infra.widgets.toolbox.notification.builders.NotificationBuilder;
import org.eclipse.ui.IEditorPart;
@@ -78,9 +77,9 @@ public class GetDiffElementLabel implements IJavaModelQuery<EObject, String> {
if(editor == null) {
return null;
}
- EMFCompareLabelProvider labelProvider;
+ LabelProvider labelProvider;
try {
- labelProvider = (EMFCompareLabelProvider)LabelProviderUtil.INSTANCE.getExistingLabelProviderFor(editor);
+ labelProvider = CustomizationAndViewerActionDispatcher.getExistingLabelProvider(editor);
} catch (NullPointerException e) {
return null;
}
@@ -140,7 +139,7 @@ public class GetDiffElementLabel implements IJavaModelQuery<EObject, String> {
final DiffGroup group = (DiffGroup)context;
final EObject parent = group.getRightParent();
if(parent != null) {
- final String parentLabel = ((EMFCompareLabelProvider)labelProvider).getText(parent);
+ final String parentLabel = labelProvider.getText(parent);
diffLabel = itemProvider.getString("_UI_DiffGroup_type", new Object[]{ group.getSubchanges(), parentLabel }); //$NON-NLS-1$
} else {
diffLabel = itemProvider.getString("_UI_DiffGroup_type", new Object[]{ group.getSubchanges(), "model" }); //$NON-NLS-1$ //$NON-NLS-2$
@@ -195,7 +194,7 @@ public class GetDiffElementLabel implements IJavaModelQuery<EObject, String> {
} else if(context instanceof ModelElementChangeRightTarget) { //comes from ModelElementChangeRightTargetItemProvider
final ModelElementChangeRightTarget operation = (ModelElementChangeRightTarget)context;
- final String targetName = ((EMFCompareLabelProvider)labelProvider).getText(operation.getRightElement());
+ final String targetName = labelProvider.getText(operation.getRightElement());
if(operation.isRemote()) {
diffLabel = itemProvider.getString("_UI_RemoteAddModelElement_type", new Object[]{ targetName }); //$NON-NLS-1$
} else {
@@ -274,7 +273,7 @@ public class GetDiffElementLabel implements IJavaModelQuery<EObject, String> {
* The update reference operation for which we need target information.
* @return The value of the given operation's target reference for the left element.
*/
- private EObject getLeftValue(UpdateReference operation) {
+ private EObject getLeftValue(final UpdateReference operation) {
final EReference reference = operation.getReference();
return (EObject)operation.getLeftElement().eGet(reference);
}
@@ -286,7 +285,7 @@ public class GetDiffElementLabel implements IJavaModelQuery<EObject, String> {
* The update reference operation for which we need target information.
* @return The value of the given operation's target reference for the right element.
*/
- private EObject getRightValue(UpdateReference operation) {
+ private EObject getRightValue(final UpdateReference operation) {
final EReference reference = operation.getReference();
return (EObject)operation.getRightElement().eGet(reference);
}
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 7dd5328196a..99d72ab35ac 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
@@ -30,9 +30,8 @@ import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.papyrus.infra.emf.compare.ui.actions.CollapseAllAction;
import org.eclipse.papyrus.infra.emf.compare.ui.actions.CustomizationAction;
import org.eclipse.papyrus.infra.emf.compare.ui.actions.ExpandAllAction;
-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.papyrus.infra.emf.compare.ui.internal.utils.CustomizationAndViewerActionDispatcher;
+import org.eclipse.papyrus.infra.emf.compare.ui.internal.utils.EMFCompareUIUtils;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorPart;
@@ -48,14 +47,13 @@ public class PapyrusCustomizableParameterizedStructureMergeViewer extends Parame
* the list of the metamodels referenced by the input
*/
private Collection<EPackage> metamodels;
-
/**
* The label provider
*/
- private ILabelProviderRefreshingViewer labelProvider;
+ private LabelProvider labelProvider;
/** the current editor */
- private IEditorPart editor;
+ private final IEditorPart editor;
/**
*
@@ -78,7 +76,8 @@ public class PapyrusCustomizableParameterizedStructureMergeViewer extends Parame
* @param input
* @param oldInput
*/
- protected void inputChanged(Object input, Object oldInput) {
+ @Override
+ protected void inputChanged(final Object input, final Object oldInput) {
if(input instanceof ModelCompareInput) {
metamodels = EMFCompareUIUtils.getMetamodelForDiffCustomization(input, metamodels);
}
@@ -110,7 +109,7 @@ public class PapyrusCustomizableParameterizedStructureMergeViewer extends Parame
tbm.insert(1, collapseAllActionContributionItem);
tbm.insert(2, new Separator("treeAction")); //$NON-NLS-1$
-
+
//we add an action to change the applied cuztomization
final IAction customizationAction = new CustomizationAction(Collections.unmodifiableCollection(metamodels));
final ActionContributionItem customizationContributionItem = new ActionContributionItem(customizationAction);
@@ -128,9 +127,9 @@ public class PapyrusCustomizableParameterizedStructureMergeViewer extends Parame
* @param event
*/
@Override
- protected void handleDispose(DisposeEvent event) {
+ protected void handleDispose(final DisposeEvent event) {
metamodels.clear();
- labelProvider.unregisterViewer(this);
+ CustomizationAndViewerActionDispatcher.dissociateTreeViewerAndLabelProvider(this, this.labelProvider);
super.handleDispose(event);
}
@@ -140,8 +139,7 @@ public class PapyrusCustomizableParameterizedStructureMergeViewer extends Parame
* @return
*/
protected LabelProvider createLabelProvider() {
- labelProvider = (ILabelProviderRefreshingViewer)LabelProviderUtil.INSTANCE.getLabelProviderFor(editor);
- labelProvider.registerViewer(this);
- return (LabelProvider)labelProvider;
+ this.labelProvider = CustomizationAndViewerActionDispatcher.getLabelProvider(this.editor);
+ return this.labelProvider;
}
}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/EditingDomainUtil.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/EditingDomainUtil.java
deleted file mode 100644
index 850fd08b529..00000000000
--- a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/EditingDomainUtil.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*****************************************************************************
- * 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.utils;
-
-import org.eclipse.emf.edit.domain.IEditingDomainProvider;
-import org.eclipse.emf.transaction.TransactionalEditingDomain;
-import org.eclipse.papyrus.infra.core.services.ServiceException;
-import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
-import org.eclipse.papyrus.infra.emf.compare.ui.Activator;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-
-
-public class EditingDomainUtil {
-
- private EditingDomainUtil() {
- //nothing to do
- }
-
-
- /**
- * This method use the Papyrus Service Registry to get the EditingDomain. If not, when the
- * editorPart is an instanceof IEditingDomainProvider, the method returns this editingdomain
- *
- * @return
- * the current editing domain or <code>null</code> if not found
- *
- */
- public static TransactionalEditingDomain getEditingDomain() {
- TransactionalEditingDomain domain = null;
- IEditorPart editorPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
- ServicesRegistry servicesRegistry = (ServicesRegistry)editorPart.getAdapter(ServicesRegistry.class);
- if(servicesRegistry != null) {
- try {
- domain = servicesRegistry.getService(TransactionalEditingDomain.class);
- } catch (ServiceException e) {
- Activator.log.error(e);
- }
- } else if(editorPart instanceof IEditingDomainProvider) {
- domain = (TransactionalEditingDomain)((IEditingDomainProvider)editorPart).getEditingDomain();
- }
- return domain;
- }
-}
diff --git a/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/ICustomizableEditor.java b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/ICustomizableEditor.java
new file mode 100644
index 00000000000..e2ed739abd7
--- /dev/null
+++ b/incoming/org.eclipse.papyrus.infra.emf.compare.ui/src/org/eclipse/papyrus/infra/emf/compare/ui/utils/ICustomizableEditor.java
@@ -0,0 +1,24 @@
+package org.eclipse.papyrus.infra.emf.compare.ui.utils;
+
+import org.eclipse.papyrus.infra.emf.compare.ui.provider.EMFCompareLabelProvider;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ *
+ * This interface provides useful methods to manage easily the customization of the viewers in an editor
+ *
+ */
+public interface ICustomizableEditor extends IEditorPart {
+
+ /**
+ *
+ * @return
+ * a LabelProvider
+ */
+ public EMFCompareLabelProvider getLabelProvider();
+
+ /**
+ * Refresh the viewers of the editor
+ */
+ public void refreshViewers();
+}
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 80e85bb44e7..a6fca304b46 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,122 +13,31 @@
*****************************************************************************/
package org.eclipse.papyrus.infra.emf.compare.ui.utils;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-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.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.messages.Messages;
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
+ * This class provides methods to get the customizable LabelProvider for the CompareEditor and viewers
*
*/
-//FIXME use the futur service for the label provider
+//TODO : move this in the class EMFCompareLabelProvider (or not)
+//warning : there is a subclass to EMFCompareLabelProvider, with specific action with the CustomizationEngine
public class LabelProviderUtil {
- /**
- * 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() {
- labelProviderMap = new HashMap<IEditorPart, IBaseLabelProvider>();
- customizationMap = new HashMap<IEditorPart, CustomizationManager>(){
- @Override
- public String toString() {
- String str = super.toString();
- return str.replaceAll(", ", "\n");
-
- }
- };
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(new CloseCompareEditorListener());
- }
-
- /**
- *
- * @param editor
- * an editor
- * @return
- * 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(Messages.LabelProviderUtil_CantProvideLabelProviderMessage, IMultiPageEditorPart.class));
- }
- IBaseLabelProvider provider = labelProviderMap.get(editor);
- if(provider == null) {
- CustomizationManager customizationManager = getCustomizationManager(editor);
- provider = new EMFCompareLabelProvider(customizationManager);
- labelProviderMap.put(editor, provider);
- }
- return provider;
+ //to prevent intentiation
}
- /**
- *
- * @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(Messages.LabelProviderUtil_CantProvideLabelProviderMessage, 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
- * an editor
- */
- public void destroyConfigurationFor(final IEditorPart editor) {
- labelProviderMap.remove(editor);
- customizationMap.remove(editor);
+ public static final EMFCompareLabelProvider createLabelProvider() {
+ CustomizationManager customizationManager = new CustomizationManager();
+ init(customizationManager);
+ return new EMFCompareLabelProvider(customizationManager);
}
/**
@@ -137,7 +46,7 @@ public class LabelProviderUtil {
*
* @param customizationManager
*/
- private void init(final CustomizationManager customizationManager) {
+ private static void init(final CustomizationManager customizationManager) {
// the appearance can be customized here:
customizationManager.setShowDerivedLinks(true);
@@ -158,84 +67,4 @@ public class LabelProviderUtil {
Activator.log.error(e);
}
}
-
- /**
- *
- * @param anEditor
- * an editor
- * @return
- * a customization manager for this editor
- */
- public CustomizationManager getCustomizationManager(final IEditorPart anEditor) {
- CustomizationManager manager = customizationMap.get(anEditor);
- if(manager == null) {
- manager = new CustomizationManager();
- init(manager);
- customizationMap.put(anEditor, manager);
- }
- 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/incoming/org.eclipse.papyrus.uml.compare.file/META-INF/MANIFEST.MF b/incoming/org.eclipse.papyrus.uml.compare.file/META-INF/MANIFEST.MF
index ae585bc1ef8..1f4cd61fc39 100644
--- a/incoming/org.eclipse.papyrus.uml.compare.file/META-INF/MANIFEST.MF
+++ b/incoming/org.eclipse.papyrus.uml.compare.file/META-INF/MANIFEST.MF
@@ -21,7 +21,8 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.papyrus.infra.emf.compare.common;bundle-version="0.9.0",
org.eclipse.emf.transaction,
org.eclipse.emf.workspace,
- org.eclipse.emf.workspace.ui
+ org.eclipse.emf.workspace.ui,
+ org.eclipse.emf.compare.match;bundle-version="1.3.1"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.papyrus.uml.compare.file.editor,
diff --git a/incoming/org.eclipse.papyrus.uml.compare.file/src/org/eclipse/papyrus/uml/compare/file/editor/CompareUMLFileEditor.java b/incoming/org.eclipse.papyrus.uml.compare.file/src/org/eclipse/papyrus/uml/compare/file/editor/CompareUMLFileEditor.java
index 5e6a3e671ad..fe085d5ba04 100644
--- a/incoming/org.eclipse.papyrus.uml.compare.file/src/org/eclipse/papyrus/uml/compare/file/editor/CompareUMLFileEditor.java
+++ b/incoming/org.eclipse.papyrus.uml.compare.file/src/org/eclipse/papyrus/uml/compare/file/editor/CompareUMLFileEditor.java
@@ -30,6 +30,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.common.command.CommandStack;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.compare.diff.metamodel.ComparisonSnapshot;
+import org.eclipse.emf.compare.ui.ModelCompareInput;
import org.eclipse.emf.compare.ui.editor.ModelCompareEditorInput;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
@@ -39,6 +40,7 @@ import org.eclipse.emf.edit.domain.IEditingDomainProvider;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.emf.workspace.IWorkspaceCommandStack;
import org.eclipse.emf.workspace.ResourceUndoContext;
+import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.osgi.util.NLS;
import org.eclipse.papyrus.infra.core.resource.TransactionalEditingDomainManager;
import org.eclipse.papyrus.infra.emf.compare.common.editor.AbstractPapyrusCompareEditor;
@@ -67,6 +69,9 @@ public class CompareUMLFileEditor extends /* EMFCompareEditor */AbstractPapyrusC
private final IOperationHistoryListener historyListener;
+ /** the compared root object */
+ private EObject roots[];
+
/**
*
* Constructor.
@@ -120,6 +125,7 @@ public class CompareUMLFileEditor extends /* EMFCompareEditor */AbstractPapyrusC
}
};
getOperationHistory().addOperationHistoryListener(historyListener);
+ addUndoRedoListeners();
}
@@ -168,8 +174,10 @@ public class CompareUMLFileEditor extends /* EMFCompareEditor */AbstractPapyrusC
}
}
+
+
private EObject[] loadPapyrusFiles(final CompareUMLFileInput input) {
- EObject roots[] = new EObject[2];
+ roots = new EObject[2];
for(int i = 0; i < 2; i++) {
String filePath = input.getComparedFiles().get(i).getFullPath().toString();
@@ -225,10 +233,12 @@ public class CompareUMLFileEditor extends /* EMFCompareEditor */AbstractPapyrusC
@Override
protected void configureInput(final PapyrusModelCompareEditorInput input) {
- String leftLabel = this.tmpInput.getComparedFiles().get(0).getFullPath().makeRelative().toString();;
- String rightLabel = this.tmpInput.getComparedFiles().get(1).getFullPath().makeRelative().toString();;
- Image im = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "/icons/UMLModelFile.gif").createImage();
- input.initLabels(leftLabel, im, rightLabel, im);
+ if(this.tmpInput != null) {//null, when are in the Undo/Redo
+ String leftLabel = this.tmpInput.getComparedFiles().get(0).getFullPath().makeRelative().toString();;
+ String rightLabel = this.tmpInput.getComparedFiles().get(1).getFullPath().makeRelative().toString();;
+ Image im = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "/icons/UMLModelFile.gif").createImage();
+ input.initLabels(leftLabel, im, rightLabel, im);
+ }
}
@@ -255,9 +265,38 @@ public class CompareUMLFileEditor extends /* EMFCompareEditor */AbstractPapyrusC
@Override
public void dispose() {
getOperationHistory().removeOperationHistoryListener(historyListener);
+ removeUndoRedoListener();
super.dispose();
}
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.common.editor.AbstractPapyrusCompareEditor#getIOperationHistory()
+ *
+ * @return
+ */
+ @Override
+ protected IOperationHistory getIOperationHistory() {
+ return getOperationHistory();
+ }
+
+
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.common.editor.AbstractPapyrusCompareEditor#resetInput()
+ *
+ */
+ @Override
+ protected void resetInput() {
+ IEditorInput input = getEditorInput();
+ assert (input instanceof PapyrusModelCompareEditorInput);
+ final TreeViewer viewer = ((PapyrusModelCompareEditorInput)input).getStructureMergeViewer();
+ final PapyrusModelCompareEditorInput newInput = (PapyrusModelCompareEditorInput)getCompareInput(roots[0], roots[1]);
+ final ModelCompareInput input2 = newInput.getpreparedModelCompareInput();
+ viewer.setInput(input2);
+ }
+
+
}
diff --git a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/content/viewer/UMLTransactionalModelContentMergeViewer.java b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/content/viewer/UMLTransactionalModelContentMergeViewer.java
index c3685cf5d2d..6dd55c290da 100644
--- a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/content/viewer/UMLTransactionalModelContentMergeViewer.java
+++ b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/content/viewer/UMLTransactionalModelContentMergeViewer.java
@@ -23,7 +23,7 @@ public class UMLTransactionalModelContentMergeViewer extends PapyrusTransactiona
return new ModelContentMergeContentProvider(configuration) {
@Override
- public Object getLeftContent(Object element) {
+ public Object getLeftContent(final Object element) {
if(element != null) {
return new RootObject(configuration.getProperty(RootObject.LEFT_OBJECT_KEY));
}
@@ -31,7 +31,7 @@ public class UMLTransactionalModelContentMergeViewer extends PapyrusTransactiona
}
@Override
- public Object getRightContent(Object element) {
+ public Object getRightContent(final Object element) {
if(element != null) {
return new RootObject(configuration.getProperty(RootObject.RIGHT_OBJECT_KEY));
}
diff --git a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/utils/UMLModelCompareEditorInput.java b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/utils/UMLModelCompareEditorInput.java
index a00f21c8dc4..d7214228dda 100644
--- a/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/utils/UMLModelCompareEditorInput.java
+++ b/incoming/org.eclipse.papyrus.uml.compare/src/org/eclipse/papyrus/uml/compare/utils/UMLModelCompareEditorInput.java
@@ -1,3 +1,16 @@
+/*****************************************************************************
+ * 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.uml.compare.utils;
import org.eclipse.compare.CompareConfiguration;
@@ -8,15 +21,38 @@ import org.eclipse.papyrus.infra.emf.compare.common.utils.PapyrusModelCompareEdi
import org.eclipse.papyrus.uml.compare.content.viewer.UMLTransactionalModelContentMergeViewer;
import org.eclipse.ui.IEditorPart;
-
+/**
+ *
+ * The Input for the nested UMLCompareEditor
+ *
+ */
public class UMLModelCompareEditorInput extends PapyrusModelCompareEditorInput {
+ /**
+ *
+ * Constructor.
+ *
+ * @param snapshot
+ * the comparison snapshot
+ * @param editor
+ * the editor
+ */
public UMLModelCompareEditorInput(final ComparisonSnapshot snapshot, final IEditorPart editor) {
super(snapshot, editor);
}
+ /**
+ *
+ * @see org.eclipse.papyrus.infra.emf.compare.common.utils.PapyrusModelCompareEditorInput#createMergeViewer(org.eclipse.compare.CompareViewerPane,
+ * org.eclipse.compare.CompareConfiguration)
+ *
+ * @param pane
+ * @param config
+ * @return
+ */
@Override
protected ModelContentMergeViewer createMergeViewer(final CompareViewerPane pane, final CompareConfiguration config) {
return new UMLTransactionalModelContentMergeViewer(pane, config, editor);
}
+
}

Back to the top