### Eclipse Workspace Patch 1.0 #P org.eclipse.rse.ui Index: UI/org/eclipse/rse/internal/ui/view/SystemView.java =================================================================== RCS file: /cvsroot/dsdp/org.eclipse.tm.rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java,v retrieving revision 1.131 diff -u -r1.131 SystemView.java --- UI/org/eclipse/rse/internal/ui/view/SystemView.java 7 Jun 2007 16:36:23 -0000 1.131 +++ UI/org/eclipse/rse/internal/ui/view/SystemView.java 27 Jun 2007 14:25:23 -0000 @@ -28,6 +28,7 @@ * Martin Oberhuber (Wind River) - [186964] Fix adapter actions for multiselect, and and NPE * Martin Oberhuber (Wind River) - [186991] Avoid remote refresh if no element is remote * Martin Oberhuber (Wind River) - [190271] Move ISystemViewInputProvider to Core + * Kevin Doyle (IBM) - [194602] handleDoubleClick does expand/collapse on treepath instead of element ********************************************************************************/ package org.eclipse.rse.internal.ui.view; @@ -66,6 +67,7 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.ITreePathContentProvider; +import org.eclipse.jface.viewers.ITreeSelection; import org.eclipse.jface.viewers.ITreeViewerListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; @@ -506,12 +508,17 @@ //event.doit = false; return; } - IStructuredSelection s = (IStructuredSelection) event.getSelection(); + ITreeSelection s = (ITreeSelection) event.getSelection(); Object element = s.getFirstElement(); if (element == null) return; - if (isExpandable(element)) { - boolean expandedState = getExpandedState(element); - setExpandedState(element, !expandedState); + // Get the path for the element and use it for setting expanded state, + // so the proper TreeItem is expanded/collapsed + TreePath[] paths = s.getPathsFor(element); + if (paths == null || paths.length == 0 || paths[0] == null) return; + TreePath elementPath = paths[0]; + if (isExpandable(elementPath)) { + boolean expandedState = getExpandedState(elementPath); + setExpandedState(elementPath, !expandedState); // DY: fire collapse / expand event if (expandedState) { fireTreeCollapsed(new TreeExpansionEvent(this, element));