diff options
author | Julian Ruppel | 2021-04-23 21:03:02 +0000 |
---|---|---|
committer | Mickael Istria | 2021-04-26 10:14:23 +0000 |
commit | 34b30bce9608a8fab1e06c12fe14e609c0ccb660 (patch) | |
tree | 42ce936c5d595221afff5a5f40e6abddae74c5d3 | |
parent | 5e36e41ff73134411ac12749d4566737b1880b89 (diff) | |
download | eclipse.platform.text-34b30bce9608a8fab1e06c12fe14e609c0ccb660.tar.gz eclipse.platform.text-34b30bce9608a8fab1e06c12fe14e609c0ccb660.tar.xz eclipse.platform.text-34b30bce9608a8fab1e06c12fe14e609c0ccb660.zip |
Bug 567062 - [Quicksearch] Configurable max results limit and label
Adds a preference option to configure the limit of results. If the
search dialog hits the limit a indication is shown.
Change-Id: I2e6b30da407561a6b3e562bdb15d8874bc225903
Signed-off-by: Julian Ruppel <julian.ruppel@sap.com>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.text/+/179768
Tested-by: Platform Bot <platform-bot@eclipse.org>
Reviewed-by: Mickael Istria <mistria@redhat.com>
6 files changed, 24 insertions, 2 deletions
diff --git a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/core/QuickTextSearcher.java b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/core/QuickTextSearcher.java index 0fc64840e19..880b1f4a9f4 100644 --- a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/core/QuickTextSearcher.java +++ b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/core/QuickTextSearcher.java @@ -56,13 +56,14 @@ public class QuickTextSearcher { */ private QuickTextQuery newQuery; + public static final int DEFAULT_MAX_RESULTS = 200; /** * If number of accumulated results reaches maxResults the search will be suspended. * <p> * Note that more results may still arrive beyond the limit since the searcher does not (yet) have the * capability to suspend/resume a search in the middle of a file. */ - private int maxResults = 200; + private int maxResults = DEFAULT_MAX_RESULTS; /** * If a line of text is encountered longer than this, the searcher will stop searching diff --git a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/core/preferences/QuickSearchPreferences.java b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/core/preferences/QuickSearchPreferences.java index 422d9b2b1e5..b10f3594bb3 100644 --- a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/core/preferences/QuickSearchPreferences.java +++ b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/core/preferences/QuickSearchPreferences.java @@ -16,6 +16,7 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.text.quicksearch.internal.core.QuickTextSearcher; import org.eclipse.text.quicksearch.internal.core.priority.DefaultPriorityFunction; import org.eclipse.text.quicksearch.internal.ui.QuickSearchActivator; import org.eclipse.text.quicksearch.internal.util.LineReader; @@ -32,6 +33,7 @@ public class QuickSearchPreferences { public static final String IGNORED_NAMES = "ignored.names"; //$NON-NLS-1$ public static final String IGNORED_PREFIXES = "ignored.prefixes"; //$NON-NLS-1$ public static final String MAX_LINE_LEN = "LineReader.MAX_LINE_LEN"; //$NON-NLS-1$ + public static final String MAX_RESULTS = "QuickTextSearcher.MAX_RESULTS"; //$NON-NLS-1$ private static boolean initializedDefaults; private IPreferenceStore store; @@ -57,6 +59,10 @@ public class QuickSearchPreferences { return store.getInt(MAX_LINE_LEN); } + public int getMaxResults() { + return store.getInt(MAX_RESULTS); + } + private String[] getAndParseStringList(String key) { String raw = store.getString(key); if (raw!=null) { @@ -89,6 +95,7 @@ public class QuickSearchPreferences { initializedDefaults = true; IPreferenceStore store = QuickSearchActivator.getDefault().getPreferenceStore(); store.setDefault(QuickSearchPreferences.MAX_LINE_LEN, LineReader.DEFAULT_MAX_LINE_LENGTH); + store.setDefault(QuickSearchPreferences.MAX_RESULTS, QuickTextSearcher.DEFAULT_MAX_RESULTS); DefaultPriorityFunction dpf = new DefaultPriorityFunction(); store.setDefault(QuickSearchPreferences.IGNORED_EXTENSIONS, encode(dpf.ignoredExtensions)); diff --git a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/Messages.java b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/Messages.java index 88b1c408a6b..67f236d94f8 100644 --- a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/Messages.java +++ b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/Messages.java @@ -21,6 +21,7 @@ public class Messages extends NLS { public static String QuickSearchPreferencesPage_Tooltip_Names; public static String QuickSearchPreferencesPage_MaxLineLength; public static String QuickSearchPreferencesPage_Tooltip_MaxLineLength; + public static String QuickSearchPreferencesPage_MaxResults; public static String QuickSearchPreferencesPage_Ignored_Extensions; public static String QuickSearchPreferencesPage_Ignored_Prefixes; public static String QuickSearchPreferencesPage_Ignored_Names; @@ -37,6 +38,7 @@ public class Messages extends NLS { public static String QuickSearchDialog_caseSensitive_toggle; public static String QuickSearchDialog_title; public static String QuickSearchDialog_listLabel; + public static String QuickSearchDialog_listLabel_limit_reached; public static String QuickSearchDialog_caseSensitive_label; public static String QuickSearchDialog_caseInsensitive_label; public static String QuickTextSearch_updateMatchesJob; diff --git a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java index 7d6aa7e5d89..873daad43f0 100644 --- a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java +++ b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java @@ -344,6 +344,7 @@ public class QuickSearchDialog extends SelectionStatusDialog { private static final String EMPTY_STRING = ""; //$NON-NLS-1$ private final int MAX_LINE_LEN; + private final int MAX_RESULTS; private IHandlerActivation showViewHandler; @@ -389,6 +390,7 @@ public class QuickSearchDialog extends SelectionStatusDialog { contentProvider = new ContentProvider(); selectionMode = NONE; MAX_LINE_LEN = QuickSearchActivator.getDefault().getPreferences().getMaxLineLen(); + MAX_RESULTS = QuickSearchActivator.getDefault().getPreferences().getMaxResults(); progressJob.setSystem(true); } @@ -1099,7 +1101,11 @@ public class QuickSearchDialog extends SelectionStatusDialog { if (list != null && !list.getTable().isDisposed()) { int itemCount = contentProvider.getNumberOfElements(); list.setItemCount(itemCount); - listLabel.setText(NLS.bind(Messages.QuickSearchDialog_listLabel, itemCount)); + if (itemCount < MAX_RESULTS) { + listLabel.setText(NLS.bind(Messages.QuickSearchDialog_listLabel, itemCount)); + } else { + listLabel.setText(NLS.bind(Messages.QuickSearchDialog_listLabel_limit_reached, itemCount)); + } listLabel.pack(); list.refresh(true, false); Button openButton = getButton(OPEN_BUTTON_ID); @@ -1295,6 +1301,7 @@ public class QuickSearchDialog extends SelectionStatusDialog { contentProvider.refresh(); } }); + this.searcher.setMaxResults(MAX_RESULTS); applyPathMatcher(); refreshWidgets(); } diff --git a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchPreferencesPage.java b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchPreferencesPage.java index 60a9cb9995a..04f51aec32e 100644 --- a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchPreferencesPage.java +++ b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchPreferencesPage.java @@ -59,6 +59,9 @@ public class QuickSearchPreferencesPage extends FieldEditorPreferencePage implem Messages.QuickSearchPreferencesPage_Tooltip_MaxLineLength); addField(fieldMaxLineLen); + IntegerFieldEditor fieldMaxResults = new IntegerFieldEditor(QuickSearchPreferences.MAX_RESULTS, Messages.QuickSearchPreferencesPage_MaxResults, getFieldEditorParent()); + addField(fieldMaxResults); + for (int i = 0; i < fieldLabels.length; i++) { final String tooltip = toolTips[i]; StringFieldEditor field = new StringFieldEditor(prefsKeys[i], fieldLabels[i], StringFieldEditor.UNLIMITED, 5, StringFieldEditor.VALIDATE_ON_FOCUS_LOST, getFieldEditorParent()) { diff --git a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/messages.properties b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/messages.properties index 8010e50bc98..8719f33e1b9 100644 --- a/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/messages.properties +++ b/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/messages.properties @@ -3,6 +3,7 @@ QuickSearchPreferencesPage_Tooltip_Prefixes=Enter a list of file prefixes. Eleme QuickSearchPreferencesPage_Tooltip_Names=Enter a list of file names. Elements in the list can be separated by commas or newlines. Any file or folder who's name equals one of the listed names will be ignored. QuickSearchPreferencesPage_MaxLineLength=Max Line Length QuickSearchPreferencesPage_Tooltip_MaxLineLength=When QuickSearch encounters a line of text longer than 'Max Line Length' it stops searching the current file. This is meant to avoid searching in machine generated text files, such as minified JavaScript. +QuickSearchPreferencesPage_MaxResults=Max Results QuickSearchPreferencesPage_Ignored_Extensions=Ignored Extensions QuickSearchPreferencesPage_Ignored_Prefixes=Ignored Prefixes QuickSearchPreferencesPage_Ignored_Names=Ignored Names @@ -19,6 +20,7 @@ QuickSearchDialog_keepOpen_toggle=Keep Open QuickSearchDialog_caseSensitive_toggle=Case sensitive QuickSearchDialog_title=Quick Search QuickSearchDialog_listLabel = &Matching items: {0} +QuickSearchDialog_listLabel_limit_reached = &Matching items: {0} (limit reached) QuickSearchDialog_caseSensitive_label=Case SENSITIVE &Pattern (? = any character, * = any string) QuickSearchDialog_caseInsensitive_label=Case INSENSITIVE &Pattern (? = any character, * = any string) QuickTextSearch_updateMatchesJob=Update matches |