Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 49433 Details for
Bug 142957
compartment items not shown in outline view (tree)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Resynchronized patch
Patch_142957 (text/plain), 10.97 KB, created by
Alex Boyko
on 2006-09-05 16:19:40 EDT
(
hide
)
Description:
Resynchronized patch
Filename:
MIME Type:
Creator:
Alex Boyko
Created:
2006-09-05 16:19:40 EDT
Size:
10.97 KB
patch
obsolete
>### 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.5 >diff -u -r1.29.2.5 DiagramEditor.java >--- src/org/eclipse/gmf/runtime/diagram/ui/parts/DiagramEditor.java 10 Aug 2006 18:39:12 -0000 1.29.2.5 >+++ src/org/eclipse/gmf/runtime/diagram/ui/parts/DiagramEditor.java 5 Sep 2006 20:22:53 -0000 >@@ -91,6 +91,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; >@@ -106,6 +107,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; >@@ -116,6 +118,7 @@ > import org.eclipse.jface.util.Assert; > import org.eclipse.jface.viewers.ISelection; > import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.jface.viewers.StructuredSelection; > import org.eclipse.swt.SWT; > import org.eclipse.swt.SWTException; > import org.eclipse.swt.events.DisposeEvent; >@@ -164,9 +167,48 @@ > */ > protected PreferenceStore workspaceViewerPreferenceStore = null; > >+ class GMFTreeViewer extends TreeViewer >+ { >+ >+ /** >+ * A work-around to convert selected tree edit parts into graphical edit >+ * parts right before firing selection changed event to the listeners. This >+ * is done to ensure that Properties View stays in sync with the selection >+ * made from the tree viewer >+ * >+ * @see org.eclipse.gef.ui.parts.AbstractEditPartViewer#getSelection() >+ */ >+ public ISelection getSelection() { >+ ISelection selected = super.getSelection(); >+ if (getDiagramGraphicalViewer() == null || !(selected instanceof IStructuredSelection)) >+ return selected; >+ >+ ArrayList selectedItems = new ArrayList(); >+ Iterator iter = ((IStructuredSelection) selected).iterator(); >+ while (iter.hasNext()) { >+ Object o = iter.next(); >+ EditPart ep = null; >+ if (o instanceof EditPart) { >+ try { >+ ep = (EditPart) getDiagramGraphicalViewer() >+ .getEditPartRegistry().get( >+ ((EditPart) o).getModel()); >+ } catch (Exception e) { >+ } >+ } >+ >+ if (ep != null) >+ selectedItems.add(ep); >+ else >+ selectedItems.add(o); >+ } >+ return new StructuredSelection(selectedItems); >+ } >+ } >+ > /** >- * A diagram outline page >- */ >+ * A diagram outline page >+ */ > class DiagramOutlinePage > extends ContentOutlinePage > implements IAdaptable { >@@ -184,7 +226,7 @@ > private Thumbnail thumbnail; > > private DisposeListener disposeListener; >- >+ > /** > * @param viewer > */ >@@ -223,7 +265,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); > } > } >@@ -612,7 +658,7 @@ > */ > public Object getAdapter(Class type) { > if (type == IContentOutlinePage.class) { >- TreeViewer viewer = new TreeViewer(); >+ GMFTreeViewer viewer = new GMFTreeViewer(); > viewer.setRootEditPart(new DiagramRootTreeEditPart()); > return new DiagramOutlinePage(viewer); > } >@@ -1493,4 +1539,4 @@ > protected PreferencesHint getPreferencesHint() { > return new PreferencesHint(getEditorSite().getId()); > }; >-} >+} >\ No newline at end of file >Index: src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeEditPart.java >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui/src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeEditPart.java,v >retrieving revision 1.11.2.6 >diff -u -r1.11.2.6 TreeEditPart.java >--- src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeEditPart.java 25 Aug 2006 19:44:30 -0000 1.11.2.6 >+++ src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeEditPart.java 5 Sep 2006 20:22:53 -0000 >@@ -228,7 +228,7 @@ > * > * @return the diagram event broker > */ >- private DiagramEventBroker getDiagramEventBroker() { >+ protected DiagramEventBroker getDiagramEventBroker() { > EditingDomain theEditingDomain = getEditingDomain(); > if (theEditingDomain instanceof TransactionalEditingDomain) { > return DiagramEventBroker >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,145 @@ >+/****************************************************************************** >+ * Copyright (c) 2006, 2006 IBM Corporation and others. >+ * 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 >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ****************************************************************************/ >+ >+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.DrawerStyle; >+import org.eclipse.gmf.runtime.notation.Node; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+ >+/** >+ * Implementation of a tree edit part for node views >+ * @author aboyko >+ * @canBeSeenBy org.eclipse.gmf.runtime.diagram.ui.* >+ */ >+public class TreeNodeEditPart extends TreeContainerEditPart { >+ >+ public TreeNodeEditPart(Object model) { >+ super(model); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.gmf.runtime.diagram.ui.internal.editparts.TreeContainerEditPart#getModelChildren() >+ */ >+ protected List getModelChildren() { >+ if (!(getModel() instanceof Node)) >+ return super.getModelChildren(); >+ >+ return getNodeChildren((Node)getModel()); >+ } >+ >+ /** >+ * Checks whether the node passed in as an argument is compartment >+ * @param node - The node to check >+ * @return <Code>true</Code> if node is a compartment, <Code>false</Code> otherwise >+ */ >+ private boolean isCompartment(Node node) >+ { >+ return node.getStyle(NotationPackage.eINSTANCE.getDrawerStyle())!=null; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.gmf.runtime.diagram.ui.internal.editparts.TreeContainerEditPart#handleNotificationEvent(org.eclipse.emf.common.notify.Notification) >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getView_Visible()==feature >+ || NotationPackage.eINSTANCE.getDrawerStyle_Collapsed()==feature) >+ refreshChildren(); >+ else >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * Collect non-compartment children of the node. If one of the children is a compartment then children of >+ * this non-compartment children of this compartment child are appended to the list. >+ * @param node - the node from which children are collected >+ * @return <Code>List</Code> of non-compartment children of the node passed in as an argument >+ */ >+ private List getNodeChildren(Node node) >+ { >+ List children = new ArrayList(node.getVisibleChildren().size()); >+ ListIterator iter = node.getVisibleChildren().listIterator(); >+ while (iter.hasNext()) >+ { >+ Object element = iter.next(); >+ if (element instanceof Node) >+ { >+ Node child = (Node) element; >+ if (isCompartment(child)) >+ { >+ children.addAll(getNodeChildren(child)); >+ } >+ else if (isCompartment(node) && >+ !((DrawerStyle) node.getStyle(NotationPackage.eINSTANCE.getDrawerStyle())).isCollapsed() >+ ) >+ { >+ children.add(child); >+ } >+ } >+ } >+ return children; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.gmf.runtime.diagram.ui.internal.editparts.TreeEditPart#activate() >+ */ >+ public void activate() { >+ super.activate(); >+ >+ // add listeners to catch compartments notification events >+ ListIterator iter = getCompartmentChildren().listIterator(); >+ while(iter.hasNext()) >+ { >+ View view = (View)iter.next(); >+ getDiagramEventBroker().addNotificationListener(view, this); >+ } >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.gmf.runtime.diagram.ui.internal.editparts.TreeEditPart#deactivate() >+ */ >+ public void deactivate() { >+ super.deactivate(); >+ >+ // remove listeners catching compartments notification events >+ ListIterator iter = getCompartmentChildren().listIterator(); >+ while(iter.hasNext()) >+ { >+ View view = (View)iter.next(); >+ getDiagramEventBroker().removeNotificationListener(view, this); >+ } >+ } >+ >+ /** >+ * Collects all compartment children of the node including comaprtments within compartments >+ * @return <Code>List</Code> of all compartments contained within this node >+ */ >+ private List getCompartmentChildren() >+ { >+ ArrayList compartments = new ArrayList(); >+ ListIterator iter = ((Node)getModel()).getChildren().listIterator(); >+ while(iter.hasNext()) >+ { >+ Object obj = iter.next(); >+ if (obj instanceof Node && isCompartment((Node)obj)) >+ compartments.add(obj); >+ } >+ return compartments; >+ } >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 142957
:
42136
|
47166
|
47649
|
48014
|
48019
|
49433
|
49995
|
50065
|
50066
|
50067
|
50099