From c8a6061ed9801a90e953e279bc995c5550c70767 Mon Sep 17 00:00:00 2001
From: Vincent Aravantinos <aravantinos@fortiss.org>
Date: Wed, 16 Dec 2015 18:36:42 +0000
Subject: [PATCH] do not take layout changes into account when outdating some
 contracts refs 2409

---
 .../tooling/base/utils/LayoutDataUtils.java   | 28 ++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/org.fortiss.tooling.base/trunk/src/org/fortiss/tooling/base/utils/LayoutDataUtils.java b/org.fortiss.tooling.base/trunk/src/org/fortiss/tooling/base/utils/LayoutDataUtils.java
index 1e326fc53..f71d0c196 100644
--- a/org.fortiss.tooling.base/trunk/src/org/fortiss/tooling/base/utils/LayoutDataUtils.java
+++ b/org.fortiss.tooling.base/trunk/src/org/fortiss/tooling/base/utils/LayoutDataUtils.java
@@ -32,6 +32,10 @@ import static org.fortiss.tooling.base.utils.PointUtils.setPoint;
 import static org.fortiss.tooling.base.utils.RectangleLayoutUtils.layoutNodeInRoot;
 import static org.fortiss.tooling.kernel.utils.EcoreUtils.copy;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.ecore.EObject;
 import org.fortiss.tooling.base.dnd.ElementDropContext;
 import org.fortiss.tooling.base.layout.LayoutKeyConstants;
@@ -57,7 +61,7 @@ import org.fortiss.tooling.kernel.extension.data.IElementCompositionContext;
  * @author hummel
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: D0471E64A1CE82CAAD2E58A6D30FD5A5
+ * @ConQAT.Rating YELLOW Hash: 88A392D0ACFEDEA4B6D4B85919A5CEDB
  */
 public class LayoutDataUtils {
 
@@ -156,4 +160,26 @@ public class LayoutDataUtils {
 			}
 		}
 	}
+
+	/**
+	 * @param obj
+	 *            Removes all the layout-related data (including for descendants) in
+	 *            <code>obj</code>.
+	 */
+	public static void filterAllLayoutData(EObject obj) {
+		if(obj instanceof ILayoutedModelElement) {
+			((ILayoutedModelElement)obj).getLayoutData().clear();
+		}
+		TreeIterator<EObject> contents = obj.eAllContents();
+		List<ILayoutedModelElement> toClears = new ArrayList<ILayoutedModelElement>();
+		while(contents.hasNext()) {
+			EObject elt = contents.next();
+			if(elt instanceof ILayoutedModelElement) {
+				toClears.add((ILayoutedModelElement)elt);
+			}
+		}
+		for(ILayoutedModelElement toClear : toClears) {
+			toClear.getLayoutData().clear();
+		}
+	}
 }
-- 
GitLab