From 7ca7e02babfa60a80bc0417c087603e94451b9b0 Mon Sep 17 00:00:00 2001 From: Dani Megert Date: Thu, 19 Sep 2002 13:10:20 +0000 Subject: Fixed 23595: NPE searching in Hierarchy Perspective --- .../org/eclipse/search/internal/ui/SearchResultView.java | 5 +---- .../eclipse/search/internal/ui/SearchResultViewer.java | 16 +++++++++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultView.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultView.java index 6f4edadb750..5a2fe4d2d01 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultView.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultView.java @@ -82,10 +82,7 @@ public class SearchResultView extends ViewPart implements ISearchResultView { fViewer.restoreState(fMemento); fMemento= null; SearchManager.getDefault().addSearchChangeListener(fViewer); - Search search= SearchManager.getDefault().getCurrentSearch(); - if (search != null) - fViewer.setPageId(search.getPageId()); - fViewer.setInput(SearchManager.getDefault().getCurrentResults()); + fViewer.init(); fillToolBar(getViewSite().getActionBars().getToolBarManager()); // Add selectAll action handlers. diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java index 103bffe738e..a2584dd981f 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java @@ -163,15 +163,19 @@ public class SearchResultViewer extends TableViewer { } fOuterPart.getSite().setSelectionProvider(this); - + } + + void init() { Search search= SearchManager.getDefault().getCurrentSearch(); - if (search != null) { + if (search != null) { setGotoMarkerAction(search.getGotoMarkerAction()); setContextMenuTarget(search.getContextMenuContributor()); setActionGroupFactory(null); + // preserving selection since next call destroys it + ISelection selection= search.getSelection(); setInput(search.getResults()); setActionGroupFactory(search.getActionGroupFactory()); - setSelection(search.getSelection(), true); + setSelection(selection, true); setPageId(search.getPageId()); } } @@ -188,10 +192,12 @@ public class SearchResultViewer extends TableViewer { } private void handleSelectionChanged() { - int selectionCount= getSelectedEntriesCount(); boolean hasSingleSelection= selectionCount == 1; boolean hasElements= getItemCount() > 0; + Search search= SearchManager.getDefault().getCurrentSearch(); + if (search != null) + search.setSelection(fLastSelection); fShowNextResultAction.setEnabled(hasSingleSelection || (hasElements && selectionCount == 0)); fShowPreviousResultAction.setEnabled(hasSingleSelection || (hasElements && selectionCount == 0)); fGotoMarkerActionProxy.setEnabled(hasSingleSelection); @@ -356,10 +362,10 @@ public class SearchResultViewer extends TableViewer { } void setPageId(String pageId) { - fSortDropDownAction.setPageId(pageId); ILabelProvider labelProvider= fOuterPart.getLabelProvider(pageId); if (labelProvider != null) internalSetLabelProvider(labelProvider); + fSortDropDownAction.setPageId(pageId); } void fillToolBar(IToolBarManager tbm) { -- cgit v1.2.3