diff options
| author | Maxime Porhel | 2016-10-06 14:03:50 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2017-09-22 14:33:09 +0000 |
| commit | d0b51dc020c3d4f4b605e9078d26278b79c42efc (patch) | |
| tree | 2d4b0e6a4047a748e72bcf83e825c58defefd3e6 | |
| parent | 656d6f534677e9678d12a13db1cb8929e1dea9ae (diff) | |
| download | org.eclipse.sirius-d0b51dc020c3d4f4b605e9078d26278b79c42efc.tar.gz org.eclipse.sirius-d0b51dc020c3d4f4b605e9078d26278b79c42efc.tar.xz org.eclipse.sirius-d0b51dc020c3d4f4b605e9078d26278b79c42efc.zip | |
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>
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()); } /** |
