Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEsteban Dugueperoux2015-08-21 09:08:04 +0000
committerEsteban DUGUEPEROUX2015-08-24 07:40:03 +0000
commitb1c1d1084062099eb3df87d12129e2296eb851ca (patch)
treedb4038e953b082cd6ddffa62bd279d35bb3e9b82
parent0aba32044be8dbf0d55d974314ee1e03731119e8 (diff)
downloadorg.eclipse.sirius-b1c1d1084062099eb3df87d12129e2296eb851ca.tar.gz
org.eclipse.sirius-b1c1d1084062099eb3df87d12129e2296eb851ca.tar.xz
org.eclipse.sirius-b1c1d1084062099eb3df87d12129e2296eb851ca.zip
[475380] Avoid reset several times an edge
- Add a black list to not reset several times edge. Bug: 475380 Change-Id: I753f5434045187ddc7499c8b09fc8d8653407e5b Signed-off-by: Esteban Dugueperoux <esteban.dugueperoux@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/layout/provider/BorderItemAwareLayoutProvider.java22
1 files changed, 16 insertions, 6 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/layout/provider/BorderItemAwareLayoutProvider.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/layout/provider/BorderItemAwareLayoutProvider.java
index 5389ff500f..c5d942eb21 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/layout/provider/BorderItemAwareLayoutProvider.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/layout/provider/BorderItemAwareLayoutProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2010 THALES GLOBAL SERVICES.
+ * Copyright (c) 2010, 2015 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
@@ -15,11 +15,12 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
-import java.util.Iterator;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.draw2d.Connection;
@@ -704,6 +705,7 @@ public class BorderItemAwareLayoutProvider extends AbstractLayoutProvider {
}
// Keep only first and last points of edges linked to at least one of
// moved border nodes.
+ Set<Edge> resetEdges = new HashSet<Edge>();
for (Entry<View, List<Request>> requestByView : getViewsToChangeBoundsRequest().entrySet()) {
View view = requestByView.getKey();
// Get corresponding edit part
@@ -714,12 +716,20 @@ public class BorderItemAwareLayoutProvider extends AbstractLayoutProvider {
List<Request> requests = requestByView.getValue();
if (!(view.getSourceEdges().isEmpty() && view.getTargetEdges().isEmpty())) {
// For each edge starting from this view
- for (Iterator<Edge> iterator = Iterables.filter(view.getSourceEdges(), Edge.class).iterator(); iterator.hasNext(); /* */) {
- resetBendpoints(iterator.next(), cc, borderItemEditPart, requests, true);
+ for (Object obj : view.getSourceEdges()) {
+ if (!resetEdges.contains(obj) && obj instanceof Edge) {
+ Edge sourceEdge = (Edge) obj;
+ resetBendpoints(sourceEdge, cc, borderItemEditPart, requests, true);
+ resetEdges.add(sourceEdge);
+ }
}
// For each edge ending to this view
- for (Iterator<Edge> iterator = Iterables.filter(view.getTargetEdges(), Edge.class).iterator(); iterator.hasNext(); /* */) {
- resetBendpoints(iterator.next(), cc, borderItemEditPart, requests, false);
+ for (Object obj : view.getTargetEdges()) {
+ if (!resetEdges.contains(obj) && obj instanceof Edge) {
+ Edge targetEdge = (Edge) obj;
+ resetBendpoints(targetEdge, cc, borderItemEditPart, requests, false);
+ resetEdges.add(targetEdge);
+ }
}
}
}

Back to the top