From 1bb2b46810f9604b13380abc083e2f008c0beb3e Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Sun, 30 Oct 2011 10:03:12 +0000
Subject: [PATCH] fixed the viewer.setContents() behavior. Label and decoration
 figures are added and removed properl now. refs 160

---
 .../base/ui/editpart/DiagramEditPartBase.java |  6 --
 .../editpart/ExtendedLayerRootEditPart.java   | 17 ------
 .../ui/editpart/GraphicalEditPartBase.java    | 13 -----
 .../ui/editpart/PositionedEditPartBase.java   | 58 +++++++++----------
 4 files changed, 29 insertions(+), 65 deletions(-)

diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/DiagramEditPartBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/DiagramEditPartBase.java
index b1fcc5d50..8c7aaa0e5 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/DiagramEditPartBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/DiagramEditPartBase.java
@@ -149,12 +149,6 @@ public abstract class DiagramEditPartBase<T extends EObject> extends
 		return super.getAdapter(adapter);
 	}
 
-	/** {@inheritDoc} */
-	@Override
-	public IFigure getContentPane() {
-		return super.getContentPane(); // getLayer(ExtendedLayerRootEditPart.NODE_LAYER);
-	}
-
 	/** Adds all nodes and connectors as children. */
 	@Override
 	protected List<Object> getModelChildren() {
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ExtendedLayerRootEditPart.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ExtendedLayerRootEditPart.java
index 40d28211e..a8712a545 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ExtendedLayerRootEditPart.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ExtendedLayerRootEditPart.java
@@ -23,7 +23,6 @@ import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.Layer;
 import org.eclipse.draw2d.LayeredPane;
 import org.eclipse.draw2d.XYLayout;
-import org.eclipse.gef.EditPart;
 import org.eclipse.gef.LayerConstants;
 import org.eclipse.gef.editparts.ScalableRootEditPart;
 
@@ -100,12 +99,6 @@ public class ExtendedLayerRootEditPart extends ScalableRootEditPart {
 		return pane;
 	}
 
-	/** {@inheritDoc} */
-	@Override
-	public IFigure getContentPane() {
-		return super.getContentPane();// getLayer(NODE_LAYER);
-	}
-
 	/** {@inheritDoc} */
 	@Override
 	public IFigure getLayer(Object key) {
@@ -124,16 +117,6 @@ public class ExtendedLayerRootEditPart extends ScalableRootEditPart {
 		return super.getLayer(key);
 	}
 
-	/** {@inheritDoc} */
-	@Override
-	protected void removeChildVisual(EditPart childEditPart) {
-		super.removeChildVisual(childEditPart);
-		if (childEditPart instanceof GraphicalEditPartBase<?>) {
-			GraphicalEditPartBase<?> gep = (GraphicalEditPartBase<?>) childEditPart;
-			gep.removeVisuals();
-		}
-	}
-
 	/** Creates the default layer with XYLayout. */
 	private Layer createDefaultLayer() {
 		Layer l = new FreeformLayer();
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/GraphicalEditPartBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/GraphicalEditPartBase.java
index 8fd2b4e49..0ae93d2a4 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/GraphicalEditPartBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/GraphicalEditPartBase.java
@@ -100,17 +100,4 @@ public abstract class GraphicalEditPartBase<T extends EObject> extends
 		}
 		return super.getAdapter(key);
 	}
-
-	/**
-	 * Called when the edit part is removed and should remove its visual
-	 * children from layers. Sub-classes may override, but must call super
-	 * implementation.
-	 */
-	public void removeVisuals() {
-		for (Object ep : getChildren()) {
-			if (ep instanceof GraphicalEditPartBase<?>) {
-				((GraphicalEditPartBase<?>) ep).removeVisuals();
-			}
-		}
-	}
 }
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/PositionedEditPartBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/PositionedEditPartBase.java
index d2f2cf534..3b54ca2c5 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/PositionedEditPartBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/PositionedEditPartBase.java
@@ -86,18 +86,6 @@ public abstract class PositionedEditPartBase<T extends ILayoutedModelElement>
 	@Override
 	protected final IFigure createFigure() {
 		baseFigure = createBaseFigure();
-
-		labelFigure = createLabelFigure();
-		if (labelFigure != null) {
-			getLayer(ExtendedLayerRootEditPart.LABEL_LAYER).add(labelFigure);
-		}
-
-		decorationFigure = createDecorationFigure();
-		if (decorationFigure != null) {
-			getLayer(ExtendedLayerRootEditPart.DECORATION_LAYER).add(
-					decorationFigure);
-		}
-
 		return baseFigure;
 	}
 
@@ -195,6 +183,35 @@ public abstract class PositionedEditPartBase<T extends ILayoutedModelElement>
 		}
 	}
 
+	/** {@inheritDoc} */
+	@Override
+	public void addNotify() {
+		labelFigure = createLabelFigure();
+		if (labelFigure != null) {
+			getLayer(ExtendedLayerRootEditPart.LABEL_LAYER).add(labelFigure);
+		}
+		decorationFigure = createDecorationFigure();
+		if (decorationFigure != null) {
+			getLayer(ExtendedLayerRootEditPart.DECORATION_LAYER).add(
+					decorationFigure);
+		}
+		// called last, since it also refreshes label and decoration
+		super.addNotify();
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void removeNotify() {
+		if (labelFigure != null) {
+			getLayer(ExtendedLayerRootEditPart.LABEL_LAYER).remove(labelFigure);
+		}
+		if (decorationFigure != null) {
+			getLayer(ExtendedLayerRootEditPart.DECORATION_LAYER).remove(
+					decorationFigure);
+		}
+		super.removeNotify();
+	}
+
 	/**
 	 * {@inheritDoc}
 	 * <p>
@@ -253,21 +270,4 @@ public abstract class PositionedEditPartBase<T extends ILayoutedModelElement>
 		}
 		return null;
 	}
-
-	/** {@inheritDoc} */
-	@Override
-	public void removeVisuals() {
-		super.removeVisuals();
-
-		// if (baseFigure != null) {
-		// getLayer(ExtendedLayerRootEditPart.NODE_LAYER).remove(baseFigure);
-		// }
-		if (labelFigure != null) {
-			getLayer(ExtendedLayerRootEditPart.LABEL_LAYER).remove(labelFigure);
-		}
-		if (decorationFigure != null) {
-			getLayer(ExtendedLayerRootEditPart.DECORATION_LAYER).remove(
-					decorationFigure);
-		}
-	}
 }
\ No newline at end of file
-- 
GitLab