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 d45b30df87573b27b95ef30976d01c49c87b5e35..b1fcc5d50d9364a1990e6776a8930a8c0739d01d 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 @@ -152,7 +152,7 @@ public abstract class DiagramEditPartBase<T extends EObject> extends /** {@inheritDoc} */ @Override public IFigure getContentPane() { - return getLayer(ExtendedLayerRootEditPart.NODE_LAYER); + return super.getContentPane(); // getLayer(ExtendedLayerRootEditPart.NODE_LAYER); } /** Adds all nodes and connectors as children. */ 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 8642aedd4df224fe0d4de065d46a9dda861680cb..40d28211e587685894f1fcc60e3cbe1f81bcaab8 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,6 +23,7 @@ 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; @@ -102,7 +103,7 @@ public class ExtendedLayerRootEditPart extends ScalableRootEditPart { /** {@inheritDoc} */ @Override public IFigure getContentPane() { - return getLayer(NODE_LAYER); + return super.getContentPane();// getLayer(NODE_LAYER); } /** {@inheritDoc} */ @@ -123,6 +124,16 @@ 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 0ae93d2a434ef5a5fd2ce86ec4cc6f0241f507cd..8fd2b4e49eea387721414b05782412c3170c7f91 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,4 +100,17 @@ 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 ceb002586228c7bf2f5c8a34616d157baa113ca9..d2f2cf534ae0b1e3c5c2d2a8b008604195e16d77 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 @@ -253,4 +253,21 @@ 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