### Eclipse Workspace Patch 1.0 #P org.eclipse.gmf.runtime.diagram.ui Index: src/org/eclipse/gmf/runtime/diagram/ui/parts/DiagramEditor.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui/src/org/eclipse/gmf/runtime/diagram/ui/parts/DiagramEditor.java,v retrieving revision 1.29.2.3 diff -u -r1.29.2.3 DiagramEditor.java --- src/org/eclipse/gmf/runtime/diagram/ui/parts/DiagramEditor.java 27 Jul 2006 21:34:16 -0000 1.29.2.3 +++ src/org/eclipse/gmf/runtime/diagram/ui/parts/DiagramEditor.java 1 Aug 2006 18:00:43 -0000 @@ -90,6 +90,7 @@ import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.DiagramRootTreeEditPart; import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.TreeDiagramEditPart; import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.TreeEditPart; +import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.TreeNodeEditPart; import org.eclipse.gmf.runtime.diagram.ui.internal.l10n.DiagramUIPluginImages; import org.eclipse.gmf.runtime.diagram.ui.internal.pagesetup.DefaultValues; import org.eclipse.gmf.runtime.diagram.ui.internal.pagesetup.PageInfoHelper; @@ -105,6 +106,7 @@ import org.eclipse.gmf.runtime.emf.commands.core.command.EditingDomainUndoContext; import org.eclipse.gmf.runtime.notation.Diagram; import org.eclipse.gmf.runtime.notation.GuideStyle; +import org.eclipse.gmf.runtime.notation.Node; import org.eclipse.gmf.runtime.notation.NotationPackage; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.jface.action.Action; @@ -222,7 +224,11 @@ public EditPart createEditPart(EditPart context, Object model) { if (model instanceof Diagram) { return new TreeDiagramEditPart(model); - } else { + } + else if (model instanceof Node) { + return new TreeNodeEditPart(model); + } + else { return new TreeEditPart(model); } } Index: src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeContainerEditPart.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui/src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeContainerEditPart.java,v retrieving revision 1.4 diff -u -r1.4 TreeContainerEditPart.java --- src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeContainerEditPart.java 22 Sep 2005 15:42:19 -0000 1.4 +++ src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeContainerEditPart.java 1 Aug 2006 18:00:43 -0000 @@ -14,8 +14,8 @@ import java.util.List; import org.eclipse.emf.common.notify.Notification; -import org.eclipse.gmf.runtime.notation.Diagram; import org.eclipse.gmf.runtime.notation.NotationPackage; +import org.eclipse.gmf.runtime.notation.View; /** * @author melaasar @@ -40,9 +40,7 @@ * @return List of children. */ protected List getModelChildren() { - if (getModel() instanceof Diagram) - return ((Diagram) getModel()).getChildren(); - return null; + return ((View) getModel()).getChildren(); } /** Index: src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeNodeEditPart.java =================================================================== RCS file: src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeNodeEditPart.java diff -N src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeNodeEditPart.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeNodeEditPart.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,58 @@ +package org.eclipse.gmf.runtime.diagram.ui.internal.editparts; + +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.gmf.runtime.notation.Node; +import org.eclipse.gmf.runtime.notation.NotationPackage; + +public class TreeNodeEditPart extends TreeContainerEditPart { + + public TreeNodeEditPart(Object model) { + super(model); + } + + /** + * Returns the children of this from the model, + * as this is capable enough of holding EditParts. + * + * @return List of children. + */ + protected List getModelChildren() { + if (!(getModel() instanceof Node)) + return super.getModelChildren(); + + Node node = (Node)getModel(); + if (isCompartment(node)) + return super.getModelChildren(); + + ArrayList children = new ArrayList(node.getChildren().size()); + ListIterator iter = node.getChildren().listIterator(); + while(iter.hasNext()) + { + Object child = iter.next(); + if (child instanceof Node + && ((Node)child).isVisible() + && (isCompartment((Node)child)) ) + children.add(child); + } + return children; + } + + private boolean isCompartment(Node node) + { + return node.getStyle(NotationPackage.eINSTANCE.getDrawerStyle())!=null; + } + + @Override + protected void handleNotificationEvent(Notification event) { + Object feature = event.getFeature(); + if (NotationPackage.eINSTANCE.getView_Visible()==feature) + refreshChildren(); + else + super.handleNotificationEvent(event); + } + +}