Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpguilet2017-09-28 14:35:58 +0000
committerPierre-Charles David2017-09-29 07:05:10 +0000
commit5d5cc181ad44773d959e72d6a236bc01b2793775 (patch)
treef5fcca1b416ceaa3483135c956399cd34c8e7a06
parentefd3b9696ba32572b6494bacfb51899cb2b2408a (diff)
downloadorg.eclipse.sirius-5d5cc181ad44773d959e72d6a236bc01b2793775.tar.gz
org.eclipse.sirius-5d5cc181ad44773d959e72d6a236bc01b2793775.tar.xz
org.eclipse.sirius-5d5cc181ad44773d959e72d6a236bc01b2793775.zip
[522478] fix regression with link to editor functionality
Fix regression with the link to editor functionality introduced by previous fix and visible with the test LinkWithEditorFeatureWithModelExplorerViewTest. Bug: 522478 Change-Id: I9c155fb2bf44433165a0797d81eeea19aeef352f Signed-off-by: pguilet <pierre.guilet@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerItemComparer.java71
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java1
2 files changed, 72 insertions, 0 deletions
diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerItemComparer.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerItemComparer.java
new file mode 100644
index 0000000000..8faf06302a
--- /dev/null
+++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerItemComparer.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2017 THALES GLOBAL SERVICES.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.ui.tools.internal.views.modelexplorer;
+
+import org.eclipse.jface.viewers.IElementComparer;
+import org.eclipse.sirius.ui.tools.api.views.common.item.ItemWrapper;
+import org.eclipse.sirius.ui.tools.internal.views.common.item.RepresentationItemImpl;
+import org.eclipse.sirius.viewpoint.DRepresentationDescriptor;
+
+/**
+ * A {@link IElementComparer} to have {@link ItemWrapper} considered equals to {@link ItemWrapper#getWrappedObject()}.
+ * This comparer is created to allow link to editor functionality to select {@link RepresentationItemImpl} corresponding
+ * to opened {@link DRepresentationDescriptor} of an opened diagram.
+ *
+ * @author <a href="mailto:esteban.dugueperoux@obeo.fr">Esteban Dugueperoux</a>
+ */
+public class ModelExplorerItemComparer implements IElementComparer {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean equals(Object a, Object b) {
+ boolean equals = false;
+ // We compare wrapped object of RepresentationItemImpl only when other object is a DRepresentationDescriptor. In
+ // every other cases we use standard equality. It allows to link with editor RepresentationItemImpl in
+ // ModelExplorerView with DRepresentationDescriptor of the opened diagram.
+ if ((a instanceof DRepresentationDescriptor && b instanceof RepresentationItemImpl) || (b instanceof DRepresentationDescriptor && a instanceof RepresentationItemImpl)) {
+ Object realAObject = a;
+ if (realAObject instanceof ItemWrapper) {
+ ItemWrapper itemWrapper = (ItemWrapper) realAObject;
+ realAObject = itemWrapper.getWrappedObject();
+ }
+ Object realBObject = b;
+ if (realBObject instanceof ItemWrapper) {
+ ItemWrapper itemWrapper = (ItemWrapper) realBObject;
+ realBObject = itemWrapper.getWrappedObject();
+ }
+ equals = realAObject != null && realAObject.equals(realBObject);
+ } else {
+ equals = a.equals(b);
+ }
+ return equals;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int hashCode(Object element) {
+ int hashCode = 0;
+ Object realElementObject = element;
+ if (realElementObject instanceof ItemWrapper) {
+ ItemWrapper itemWrapper = (ItemWrapper) realElementObject;
+ realElementObject = itemWrapper.getWrappedObject();
+ }
+ if (realElementObject != null) {
+ hashCode = realElementObject.hashCode();
+ }
+ return hashCode;
+ }
+
+}
diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java
index a5a98eb029..4d9c229b2c 100644
--- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java
+++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java
@@ -143,6 +143,7 @@ public class ModelExplorerView extends CommonNavigator implements IModelExplorer
createTabs(tabDescriptors);
}
+ getCommonViewer().setComparer(new ModelExplorerItemComparer());
}
/**

Back to the top