From a728efdbd2e794b0b9e3a997ea6ce9eefd77f989 Mon Sep 17 00:00:00 2001 From: David McKnight Date: Fri, 21 Nov 2008 21:13:09 +0000 Subject: [PATCH] [250169] Problems with extending the menu's of results in Remote Search View --- .../ui/view/search/SystemSearchViewPart.java | 46 +++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/search/SystemSearchViewPart.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/search/SystemSearchViewPart.java index ce0cc0dc5a1..1ef52513395 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/search/SystemSearchViewPart.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/search/SystemSearchViewPart.java @@ -14,6 +14,7 @@ * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry * Kevin Doyle (IBM) - [242431] Register a new unique context menu id, so contributions can be made to all our views + * David McKnight (IBM) - [250169] Problems with extending the menu's of results in Remote Search View ********************************************************************************/ package org.eclipse.rse.internal.ui.view.search; @@ -35,6 +36,7 @@ import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredViewer; @@ -211,6 +213,37 @@ public class SystemSearchViewPart extends ViewPart super(); } + /** + * Creates a dummy selection provider. + * @return a dummy selection provider. + */ + private ISelectionProvider createDummySelectionProvider() { + + ISelectionProvider provider = new ISelectionProvider() { + + public void addSelectionChangedListener(ISelectionChangedListener listener) { + } + + public ISelection getSelection() { + if (currentViewer != null){ + return currentViewer.getSelection(); + } + return null; + } + + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + } + + public void setSelection(ISelection selection) { + if (currentViewer != null){ + currentViewer.setSelection(selection); + } + } + }; + + return provider; + } + /** * @see org.eclipse.ui.IWorkbenchPart#createPartControl(Composite) */ @@ -224,9 +257,12 @@ public class SystemSearchViewPart extends ViewPart // get view site IViewSite site = getViewSite(); - // set a dummy selection provider - // getSite().setSelectionProvider(createDummySelectionProvider()); - + // set a dummy selection provider + // because when the view is first created we don't have any real viewers (i.e. currentViewer) + // after addSearchResult() is called, the provider should defer to the selection from the + // current viewer + site.setSelectionProvider(createDummySelectionProvider()); + // get action bars actionBars = site.getActionBars(); @@ -421,11 +457,13 @@ public class SystemSearchViewPart extends ViewPart MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$ menuMgr.setRemoveAllWhenShown(true); menuMgr.addMenuListener(this); - Tree tree = (Tree)treeViewer.getControl(); + + Tree tree = (Tree)treeViewer.getControl(); Menu menu = menuMgr.createContextMenu(tree); tree.setMenu(menu); } + // set input currentViewer.setInput(resultSet);