diff --git search/org/eclipse/search/internal/ui/SearchDialog.java search/org/eclipse/search/internal/ui/SearchDialog.java index fd12ea8..491421a 100644 --- search/org/eclipse/search/internal/ui/SearchDialog.java +++ search/org/eclipse/search/internal/ui/SearchDialog.java @@ -89,7 +89,12 @@ import org.eclipse.search.ui.ISearchPageScoreComputer; public class SearchDialog extends ExtendedDialogWindow implements ISearchPageContainer, IPageChangeProvider { - + + /** + * The id of the last search page that was opened in the search dialog + */ + public static final String PREVIOUS_SEARCH_PAGE = "org.eclipse.search.previousSearchPageId"; //$NON-NLS-1$ + private class TabFolderLayout extends Layout { protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache) { if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT) @@ -154,6 +159,14 @@ public class SearchDialog extends ExtendedDialogWindow implements ISearchPageCon fDescriptors= filterByActivities(SearchPlugin.getDefault().getEnabledSearchPageDescriptors(pageId)); fInitialPageId= pageId; + boolean useLastUsedSearchPage= SearchPlugin.getDefault().getPreferenceStore().getBoolean(SearchPreferencePage.USE_LAST_USED_SEARCHPAGE); + // if fInitialPageId != null then a specific search page shall be opened directly + // In this case do not consider the preference at all + if (fInitialPageId == null && useLastUsedSearchPage) { + String lastPageId = SearchPlugin.getDefault().getPreferenceStore().getString(PREVIOUS_SEARCH_PAGE); + fInitialPageId = lastPageId; + } + fPageChangeListeners= null; setUseEmbeddedProgressMonitorPart(false); } @@ -774,6 +787,12 @@ public class SearchDialog extends ExtendedDialogWindow implements ISearchPageCon * @see org.eclipse.jface.dialogs.Dialog#close() */ public boolean close() { + // Store used search page id + if (fDescriptors.size() > 0) { + SearchPageDescriptor descr = (SearchPageDescriptor)fDescriptors.get(fCurrentIndex); + String pageId = descr.getId(); + SearchPlugin.getDefault().getPreferenceStore().setValue(PREVIOUS_SEARCH_PAGE, pageId); + } for (int i= 0; i < fDescriptors.size(); i++) { SearchPageDescriptor desc= (SearchPageDescriptor) fDescriptors.get(i); desc.dispose(); diff --git search/org/eclipse/search/internal/ui/SearchMessages.java search/org/eclipse/search/internal/ui/SearchMessages.java index 2478aa4..1c7e552 100644 --- search/org/eclipse/search/internal/ui/SearchMessages.java +++ search/org/eclipse/search/internal/ui/SearchMessages.java @@ -185,6 +185,7 @@ public final class SearchMessages extends NLS { public static String SearchPreferencePage_defaultPerspective; public static String SearchPreferencePage_defaultPerspective_none; public static String SearchPreferencePage_ignorePotentialMatches; + public static String SearchPreferencePage_useLastUsedSearchPage; public static String ReplaceAction_label_all; public static String ReplaceAction_label_selected; public static String SelectAllAction_label; diff --git search/org/eclipse/search/internal/ui/SearchMessages.properties search/org/eclipse/search/internal/ui/SearchMessages.properties index eccd2fd..df26bf5 100644 --- search/org/eclipse/search/internal/ui/SearchMessages.properties +++ search/org/eclipse/search/internal/ui/SearchMessages.properties @@ -199,6 +199,7 @@ SearchPreferencePage_defaultPerspective= Default &perspective for the Search vie SearchPreferencePage_textSearchEngine=Text Search Engine to be used: SearchPreferencePage_defaultPerspective_none= None SearchPreferencePage_ignorePotentialMatches= &Ignore potential matches +SearchPreferencePage_useLastUsedSearchPage= &Focus on last used search page ReplaceAction_label_all= Re&place All... ReplaceAction_title_all=Replace Text Matches diff --git search/org/eclipse/search/internal/ui/SearchPreferencePage.java search/org/eclipse/search/internal/ui/SearchPreferencePage.java index 4062494..2123674 100644 --- search/org/eclipse/search/internal/ui/SearchPreferencePage.java +++ search/org/eclipse/search/internal/ui/SearchPreferencePage.java @@ -53,6 +53,11 @@ public class SearchPreferencePage extends FieldEditorPreferencePage implements I public static final String TEXT_SEARCH_ENGINE = "org.eclipse.search.textSearchEngine"; //$NON-NLS-1$ public static final String TEXT_SEARCH_QUERY_PROVIDER = "org.eclipse.search.textSearchQueryProvider"; //$NON-NLS-1$ public static final String LIMIT_HISTORY= "org.eclipse.search.limitHistory"; //$NON-NLS-1$ + /** + * Preference switch. If true then the last used search page is opened when the search dialog is opened + * instead of the page that is calculated to fit best the current selection/editor/... + */ + public static final String USE_LAST_USED_SEARCHPAGE= "org.eclipse.search.useLastUsedSearchPage"; //$NON-NLS-1$ private ColorFieldEditor fColorEditor; private BooleanFieldEditor fEmphasizedCheckbox; @@ -91,6 +96,7 @@ public class SearchPreferencePage extends FieldEditorPreferencePage implements I store.setDefault(TEXT_SEARCH_ENGINE, ""); //default search engine is empty string //$NON-NLS-1$ store.setDefault(TEXT_SEARCH_QUERY_PROVIDER, ""); // default query provider is empty string //$NON-NLS-1$ store.setDefault(LIMIT_HISTORY, 10); + store.setDefault(USE_LAST_USED_SEARCHPAGE, false); } @@ -102,6 +108,7 @@ public class SearchPreferencePage extends FieldEditorPreferencePage implements I protected void createFieldEditors() { addField(new BooleanFieldEditor(REUSE_EDITOR, SearchMessages.SearchPreferencePage_reuseEditor, getFieldEditorParent())); addField(new BooleanFieldEditor(BRING_VIEW_TO_FRONT, SearchMessages.SearchPreferencePage_bringToFront, getFieldEditorParent())); + addField(new BooleanFieldEditor(USE_LAST_USED_SEARCHPAGE, SearchMessages.SearchPreferencePage_useLastUsedSearchPage, getFieldEditorParent())); fIgnorePotentialMatchesCheckbox= new BooleanFieldEditor( IGNORE_POTENTIAL_MATCHES,