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 47649 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]
Attempt2 to fix 142957
Patch_142957_attempt2 (text/plain), 10.30 KB, created by
Alex Boyko
on 2006-08-09 16:51:10 EDT
(
hide
)
Description:
Attempt2 to fix 142957
Filename:
MIME Type:
Creator:
Alex Boyko
Created:
2006-08-09 16:51:10 EDT
Size:
10.30 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.gmf.runtime.diagram.ui >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.5 >diff -u -r1.11.2.5 TreeEditPart.java >--- src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeEditPart.java 2 Aug 2006 13:38:48 -0000 1.11.2.5 >+++ src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/TreeEditPart.java 9 Aug 2006 20:42:38 -0000 >@@ -168,7 +168,7 @@ > * @param event > */ > protected void handleNotificationEvent( Notification notification ) { >- if (NotationPackage.Literals.VIEW__ELEMENT==notification.getFeature()) { >+ if (notification.getNotifier() == getModel() && NotationPackage.Literals.VIEW__ELEMENT==notification.getFeature()) { > reactivateSemanticElement(); > } else{ > refreshVisuals(); >@@ -225,7 +225,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/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.4 >diff -u -r1.29.2.4 DiagramEditor.java >--- src/org/eclipse/gmf/runtime/diagram/ui/parts/DiagramEditor.java 2 Aug 2006 17:11:40 -0000 1.29.2.4 >+++ src/org/eclipse/gmf/runtime/diagram/ui/parts/DiagramEditor.java 9 Aug 2006 20:42:38 -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; >@@ -115,6 +117,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; >@@ -163,9 +166,49 @@ > */ > 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() >+ */ >+ @Override >+ 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 { >@@ -183,7 +226,7 @@ > private Thumbnail thumbnail; > > private DisposeListener disposeListener; >- >+ > /** > * @param viewer > */ >@@ -222,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); > } > } >@@ -611,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); > } >@@ -1487,4 +1534,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/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,113 @@ >+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; >+ >+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(); >+ >+ return getNodeChildren((Node)getModel()); >+ } >+ >+ 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 || >+ NotationPackage.eINSTANCE.getDrawerStyle_Collapsed()==feature) >+ refreshChildren(); >+ else >+ super.handleNotificationEvent(event); >+ } >+ >+ private List getNodeChildren(Node node) >+ { >+ List children = new ArrayList(node.getChildren().size()); >+ ListIterator iter = node.getChildren().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; >+ } >+ >+ @Override >+ public void activate() { >+ super.activate(); >+ ListIterator iter = getCompartmentChildren().listIterator(); >+ while(iter.hasNext()) >+ { >+ View view = (View)iter.next(); >+ getDiagramEventBroker().addNotificationListener(view, NotationPackage.eINSTANCE.getView_PersistedChildren(), this); >+ getDiagramEventBroker().addNotificationListener(view, NotationPackage.eINSTANCE.getView_TransientChildren(), this); >+ getDiagramEventBroker().addNotificationListener(view, NotationPackage.eINSTANCE.getView_Visible(), this); >+ getDiagramEventBroker().addNotificationListener(view, NotationPackage.eINSTANCE.getDrawerStyle_Collapsed(), this); >+ } >+ } >+ >+ @Override >+ public void deactivate() { >+ super.deactivate(); >+ ListIterator iter = getCompartmentChildren().listIterator(); >+ while(iter.hasNext()) >+ { >+ View view = (View)iter.next(); >+ getDiagramEventBroker().removeNotificationListener(view, NotationPackage.eINSTANCE.getView_PersistedChildren(), this); >+ getDiagramEventBroker().removeNotificationListener(view, NotationPackage.eINSTANCE.getView_TransientChildren(), this); >+ getDiagramEventBroker().removeNotificationListener(view, NotationPackage.eINSTANCE.getView_Visible(), this); >+ getDiagramEventBroker().removeNotificationListener(view, NotationPackage.eINSTANCE.getDrawerStyle().getEIDAttribute(), this); >+ } >+ } >+ >+ 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