From 79102ed4ba9e853441a62deeabab9df7908b4ecb Mon Sep 17 00:00:00 2001 From: Dani Megert Date: Thu, 8 Nov 2001 17:12:16 +0000 Subject: Fixed 5356: Search Result descriptions don't use singular --- .../org/eclipse/search/internal/ui/Search.java | 25 +++++++----- .../search/internal/ui/SearchMessages.properties | 5 ++- .../search/internal/ui/SearchResultView.java | 46 ++++++++++++++++------ .../internal/ui/text/TextSearchOperation.java | 10 +++-- .../ui/text/TextSearchResultCollector.java | 3 +- .../org/eclipse/search/ui/ISearchResultView.java | 45 +++++++++++++++++++-- 6 files changed, 102 insertions(+), 32 deletions(-) diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/Search.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/Search.java index bf807a93d9c..9189eed8e39 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/Search.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/Search.java @@ -27,7 +27,8 @@ import org.eclipse.search.ui.ISearchResultViewEntry; class Search extends Object { private String fPageId; - private String fDescription; + private String fSingularLabel; + private String fPluralLabelPattern; private ImageDescriptor fImageDescriptor; private ILabelProvider fLabelProvider; private ArrayList fResults; @@ -37,32 +38,38 @@ class Search extends Object { private IRunnableWithProgress fOperation; - public Search(String pageId, String description, ILabelProvider labelProvider, ImageDescriptor imageDescriptor, IAction gotoMarkerAction, IContextMenuContributor contextMenuContributor, IGroupByKeyComputer groupByKeyComputer, IRunnableWithProgress operation) { + public Search(String pageId, String singularLabel, String pluralLabelPattern, ILabelProvider labelProvider, ImageDescriptor imageDescriptor, IAction gotoMarkerAction, IContextMenuContributor contextMenuContributor, IGroupByKeyComputer groupByKeyComputer, IRunnableWithProgress operation) { fPageId= pageId; - fDescription= description; + fSingularLabel= singularLabel; + fPluralLabelPattern= pluralLabelPattern; fImageDescriptor= imageDescriptor; fLabelProvider= labelProvider; fGotoMarkerAction= gotoMarkerAction; fContextMenuContributor= contextMenuContributor; fGroupByKeyComputer= groupByKeyComputer; fOperation= operation; + + if (fPluralLabelPattern == null) + fPluralLabelPattern= ""; //$NON-NLS-1$ } + /** * Returns the full description of the search. * The description set by the client where * {0} will be replaced by the match count. */ String getFullDescription() { - if (fDescription == null) - return ""; //$NON-NLS-1$ + if (fSingularLabel != null && getItemCount() == 1) + return fSingularLabel; // try to replace "{0}" with the match count - int i= fDescription.lastIndexOf("{0}"); //$NON-NLS-1$ + int i= fPluralLabelPattern.lastIndexOf("{0}"); //$NON-NLS-1$ if (i < 0) - return fDescription; + return fPluralLabelPattern; else - return fDescription.substring(0, i) + getItemCount()+ fDescription.substring(Math.min(i + 3, fDescription.length())); + return fPluralLabelPattern.substring(0, i) + getItemCount()+ fPluralLabelPattern.substring(Math.min(i + 3, fPluralLabelPattern.length())); } + /** * Returns a short description of the search. * Cuts off after 30 characters and adds ... @@ -70,8 +77,6 @@ class Search extends Object { * {0} will be replaced by the match count. */ String getShortDescription() { - if (fDescription == null) - return ""; //$NON-NLS-1$ String text= getFullDescription(); int separatorPos= text.indexOf(" - "); //$NON-NLS-1$ if (separatorPos < 1) diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchMessages.properties b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchMessages.properties index d73695b9ce5..16a7d2ea8a7 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchMessages.properties +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchMessages.properties @@ -101,7 +101,10 @@ PreviousSearchesDialog.title= Previous Searches PreviousSearchesDialog.message= &Select one of the searches # The first argument will be replaced by the pattern, the second by the count and the last by the scope -TextSearchOperation.descriptionPostfix= "{0}" - {1} Occurrences in {2} +TextSearchOperation.singularLabelPostfix= "{0}" - 1 Occurrence in {1} +TextSearchOperation.pluralLabelPatternPostfix= "{0}" - {1} Occurrences in {2} + +TypedResourceVisitor.unknownResourceType= Unknown resource type OpenSearchDialogAction.label= Search OpenSearchDialogAction.tooltip= Search 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 caffbf06a64..2327e3d4ebc 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 @@ -163,32 +163,52 @@ public class SearchResultView extends ViewPart implements ISearchResultView { return fViewer.getSelection(); } + /** + * Implements method from ISearchResultView + * @deprecated As of build > 20011107, replaced by the new version with additonal parameter + */ + public void searchStarted( + String pageId, + String label, + ImageDescriptor imageDescriptor, + IContextMenuContributor contributor, + ILabelProvider labelProvider, + IAction gotoAction, + IGroupByKeyComputer groupByKeyComputer, + IRunnableWithProgress operation) { + + searchStarted(pageId, null, label, imageDescriptor, contributor, labelProvider, gotoAction, groupByKeyComputer, operation); + }; + /* * Implements method from ISearchResultView */ public void searchStarted( - String pageId, - String label, - ImageDescriptor imageDescriptor, + String pageId, + String singularLabel, + String pluralLabelPattern, + ImageDescriptor imageDescriptor, IContextMenuContributor contributor, - ILabelProvider labelProvider, - IAction gotoAction, - IGroupByKeyComputer groupByKeyComputer, + ILabelProvider labelProvider, + IAction gotoAction, + IGroupByKeyComputer groupByKeyComputer, IRunnableWithProgress operation) { - + + Assert.isNotNull(pageId); - Assert.isNotNull(label); + Assert.isNotNull(pluralLabelPattern); Assert.isNotNull(gotoAction); - + fResponse= new HashMap(500); setGotoMarkerAction(gotoAction); - + fgLabelProviders.put(pageId, labelProvider); - + SearchManager.getDefault().addNewSearch( new Search( pageId, - label, + singularLabel, + pluralLabelPattern, null, imageDescriptor, fViewer.getGotoMarkerAction(), @@ -196,7 +216,7 @@ public class SearchResultView extends ViewPart implements ISearchResultView { groupByKeyComputer, operation)); }; - + /* * Implements method from ISearchResultView */ diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchOperation.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchOperation.java index 479ecb2107f..4c33134c348 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchOperation.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchOperation.java @@ -53,9 +53,13 @@ public class TextSearchOperation extends WorkspaceModifyOperation { TextSearchEngine engine= new TextSearchEngine(); engine.search(fWorkspace, fPattern, fOptions, fScope, fCollector); } - - String getDescription() { - return SearchMessages.getFormattedString("TextSearchOperation.descriptionPostfix", new String[] {fPattern, "{0}", fScope.getDescription()}); //$NON-NLS-2$ //$NON-NLS-1$ + + String getSingularLabel() { + return SearchMessages.getFormattedString("TextSearchOperation.singularLabelPostfix", new String[] {fPattern, fScope.getDescription()}); //$NON-NLS-2$ //$NON-NLS-1$ + } + + String getPluralLabelPattern() { + return SearchMessages.getFormattedString("TextSearchOperation.pluralLabelPatternPostfix", new String[] {fPattern, "{0}", fScope.getDescription()}); //$NON-NLS-2$ //$NON-NLS-1$ } ImageDescriptor getImageDescriptor() { diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchResultCollector.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchResultCollector.java index 7823f871bc8..17ddcb3e028 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchResultCollector.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchResultCollector.java @@ -51,7 +51,8 @@ public class TextSearchResultCollector implements ITextSearchResultCollector { if (fView != null) { fView.searchStarted( TextSearchPage.EXTENSION_POINT_ID, - fOperation.getDescription(), + fOperation.getSingularLabel(), + fOperation.getPluralLabelPattern(), fOperation.getImageDescriptor(), null, new FileLabelProvider(FileLabelProvider.SHOW_LABEL_PATH), diff --git a/org.eclipse.search/search/org/eclipse/search/ui/ISearchResultView.java b/org.eclipse.search/search/org/eclipse/search/ui/ISearchResultView.java index 2d3e22fd586..b744089da8e 100644 --- a/org.eclipse.search/search/org/eclipse/search/ui/ISearchResultView.java +++ b/org.eclipse.search/search/org/eclipse/search/ui/ISearchResultView.java @@ -48,15 +48,16 @@ public interface ISearchResultView extends IViewPart { * @param pageId the id of the search page which started the search * @param label the label to be used for this search occurrence * @param imageDescriptor the image descriptor to be used for this search occurrence, - * or null if this search should not have an image + * or null if this search should not have an image * @param contributor the context menu contributor - * or null if no context menu is contributed + * or null if no context menu is contributed * @param labelProvider the label provider used by this search result view - * or null if the default provider should be used. - * The default label provider shows the resource name and the corresponding image. + * or null if the default provider should be used. + * The default label provider shows the resource name and the corresponding image. * @param gotoAction the action used by the view to go to a marker * @param groupByKeyComputer the computer used by the view to compute the key for a marker * @param operation the runnable used by the view to repeat the search + * @deprecated As of build > 20011107, replaced by the new version with additonal parameter */ public void searchStarted( String pageId, @@ -68,6 +69,42 @@ public interface ISearchResultView extends IViewPart { IGroupByKeyComputer groupByKeyComputer, IRunnableWithProgress operation); + /** + * Informs the view that a search has started. + * Provides all necessary information to create an entry in the search result + * view. + * If every match should show up in the search result view then the match + * itself can be used as key. + * + * @param pageId the id of the search page which started the search + * @param singularLabel the label to be used for this search occurrence + * if there is one match + * or null if the pluralLabelPattern should be used + * @param pluralLabelPattern the label pattern to be used for this search occurrence + * if there are more than one matches or none. + * This string may contain {0} which will be replace by the match count + * @param imageDescriptor the image descriptor to be used for this search occurrence, + * or null if this search should not have an image + * @param contributor the context menu contributor + * or null if no context menu is contributed + * @param labelProvider the label provider used by this search result view + * or null if the default provider should be used. + * The default label provider shows the resource name and the corresponding image. + * @param gotoAction the action used by the view to go to a marker + * @param groupByKeyComputer the computer used by the view to compute the key for a marker + * @param operation the runnable used by the view to repeat the search + */ + public void searchStarted( + String pageId, + String singularLabel, + String pluralLabelPattern, + ImageDescriptor imageDescriptor, + IContextMenuContributor contributor, + ILabelProvider labelProvider, + IAction gotoAction, + IGroupByKeyComputer groupByKeyComputer, + IRunnableWithProgress operation); + /** * Informs the view that the search has finished. * This method must also be called in case of the search -- cgit v1.2.3