Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Porhel2016-10-06 14:03:50 +0000
committerPierre-Charles David2017-09-22 14:33:09 +0000
commitd0b51dc020c3d4f4b605e9078d26278b79c42efc (patch)
tree2d4b0e6a4047a748e72bcf83e825c58defefd3e6
parent656d6f534677e9678d12a13db1cb8929e1dea9ae (diff)
downloadorg.eclipse.sirius-d0b51dc020c3d4f4b605e9078d26278b79c42efc.tar.gz
org.eclipse.sirius-d0b51dc020c3d4f4b605e9078d26278b79c42efc.tar.xz
org.eclipse.sirius-d0b51dc020c3d4f4b605e9078d26278b79c42efc.zip
[522478] fix Model Explorer items mixingv5.1.0rc1
Two items with different types are not anymore considered as equals. Updated Sirius debugging view to have more information about the current selection Bug: 522478 Change-Id: I4bb804879c51840953b77de93c5210130b5f9381 Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr> Signed-off-by: pguilet <pierre.guilet@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.ui.debug/src/org/eclipse/sirius/ui/debug/SiriusDebugView.java2
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/views/RefreshLabelImageJob.java24
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerItemComparer.java59
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerView.java1
4 files changed, 25 insertions, 61 deletions
diff --git a/plugins/org.eclipse.sirius.ui.debug/src/org/eclipse/sirius/ui/debug/SiriusDebugView.java b/plugins/org.eclipse.sirius.ui.debug/src/org/eclipse/sirius/ui/debug/SiriusDebugView.java
index 94c09fa061..b5da962e55 100644
--- a/plugins/org.eclipse.sirius.ui.debug/src/org/eclipse/sirius/ui/debug/SiriusDebugView.java
+++ b/plugins/org.eclipse.sirius.ui.debug/src/org/eclipse/sirius/ui/debug/SiriusDebugView.java
@@ -174,7 +174,7 @@ public class SiriusDebugView extends AbstractDebugView {
} else if (obj instanceof ConnectionEditPart) {
return getTextForConnection((ConnectionEditPart) obj);
} else if (getRepresentationDescriptor(obj) != null) {
- return getTextForRepDescriptor(getRepresentationDescriptor(obj));
+ return obj + "\n\n" + getTextForRepDescriptor(getRepresentationDescriptor(obj));
} else {
return "Selection type not supported: " + obj;
}
diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/views/RefreshLabelImageJob.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/views/RefreshLabelImageJob.java
index 13719e5e67..fa81ec91ac 100644
--- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/views/RefreshLabelImageJob.java
+++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/views/RefreshLabelImageJob.java
@@ -12,16 +12,24 @@ package org.eclipse.sirius.ui.tools.api.views;
import java.util.Collection;
import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.viewers.IBasicPropertyConstants;
import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.sirius.ui.tools.api.views.common.item.RepresentationDescriptionItem;
+import org.eclipse.sirius.ui.tools.internal.views.common.item.RepresentationItemImpl;
+import org.eclipse.sirius.viewpoint.DRepresentationDescriptor;
import org.eclipse.sirius.viewpoint.provider.Messages;
import org.eclipse.ui.navigator.CommonViewer;
import org.eclipse.ui.progress.UIJob;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
/**
* A {@link UIJob} to refresh the image of the label in a {@link CommonViewer}.
*
@@ -71,6 +79,22 @@ public class RefreshLabelImageJob extends UIJob {
if (elementsToRefresh == null || elementsToRefresh.isEmpty()) {
commonViewer.refresh();
} else {
+ List<Object> repDescs = elementsToRefresh.stream().filter(DRepresentationDescriptor.class::isInstance).collect(Collectors.toList());
+ Object[] expandedElements = commonViewer.getExpandedElements();
+ // RepresentationItemImpl encapsulate the DRepresentationDescriptor. It's label and image are based on
+ // its descriptor status. So any change to the descriptor triggers the refresh of any
+ // RepresentationItemImpl encapsulating it.
+ if (!repDescs.isEmpty() && expandedElements != null) {
+ List<Object> expandedElementsList = Lists.newArrayList(expandedElements);
+ for (RepresentationDescriptionItem item : expandedElementsList.stream().filter(RepresentationDescriptionItem.class::isInstance).map(RepresentationDescriptionItem.class::cast)
+ .collect(Collectors.toList())) {
+ for (RepresentationItemImpl repItem : Iterables.filter(item.getChildren(), RepresentationItemImpl.class)) {
+ if (repDescs.contains(repItem.getWrappedObject())) {
+ elementsToRefresh.add(repItem);
+ }
+ }
+ }
+ }
commonViewer.update(elementsToRefresh.toArray(), refreshProperties);
}
}
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
deleted file mode 100644
index 1836f461d6..0000000000
--- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/views/modelexplorer/ModelExplorerItemComparer.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 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;
-
-/**
- * A {@link IElementComparer} to have {@link ItemWrapper} considered equals to
- * {@link ItemWrapper#getWrappedObject()}.
- *
- * @author <a href="mailto:esteban.dugueperoux@obeo.fr">Esteban Dugueperoux</a>
- */
-public class ModelExplorerItemComparer implements IElementComparer {
-
- /**
- * {@inheritDoc}
- */
- public boolean equals(Object a, Object b) {
- boolean equals = false;
- 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);
- return equals;
- }
-
- /**
- * {@inheritDoc}
- */
- 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 4d9c229b2c..a5a98eb029 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,7 +143,6 @@ public class ModelExplorerView extends CommonNavigator implements IModelExplorer
createTabs(tabDescriptors);
}
- getCommonViewer().setComparer(new ModelExplorerItemComparer());
}
/**

Back to the top