### Eclipse Workspace Patch 1.0 #P org.eclipse.ui.workbench Index: Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java,v retrieving revision 1.8 diff -u -r1.8 CtrlEAction.java --- Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java 20 Oct 2006 21:01:18 -0000 1.8 +++ Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java 23 Oct 2006 17:40:35 -0000 @@ -8,6 +8,7 @@ import java.util.List; import java.util.Set; import java.util.SortedSet; +import java.util.TreeMap; import java.util.TreeSet; import org.eclipse.core.commands.AbstractHandler; @@ -37,6 +38,7 @@ import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreePathViewerSorter; import org.eclipse.jface.viewers.TreeViewer; @@ -82,6 +84,8 @@ private IWorkbenchWindow window; protected String rememberedText; + + protected TreeMap treeMap = new TreeMap(); private LinkedList previousPicksList = new LinkedList(); @@ -172,6 +176,17 @@ viewer.setComparator(new QuickAccessTreeSorter()); return viewer; } + + protected void selectFirstMatch() { + if(treeMap.containsKey(getFilterText().getText())) { + Object element = treeMap.get(getFilterText().getText()); + if(element != null && previousPicksList.contains(element)) { + getTreeViewer().setSelection(new StructuredSelection(element), true); + return; + } + } + super.selectFirstMatch(); + } protected String getMatchName(Object element) { String name = ((ILabelProvider) getTreeViewer().getLabelProvider()).getText(element); @@ -219,6 +234,7 @@ protected void handleElementSelected(Object selectedElement) { addPreviousPick(selectedElement); + treeMap.put(rememberedText, selectedElement); IWorkbenchPage activePage = window.getActivePage(); if (activePage != null) { if (selectedElement instanceof IViewDescriptor) {