diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchDialog.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchDialog.java index b998cbb..ca68ec4 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchDialog.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchDialog.java @@ -12,2 +12,3 @@ * (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=45729) + * Marco Descher - http://bugs.eclipse.org/33710 *******************************************************************************/ @@ -53,2 +54,3 @@ import org.eclipse.jface.action.LegacyActionTools; +import org.eclipse.jface.dialogs.DialogSettings; import org.eclipse.jface.dialogs.IDialogConstants; @@ -91,2 +93,12 @@ public class SearchDialog extends ExtendedDialogWindow implements ISearchPageContainer, IPageChangeProvider { + + /** + * The id of the last search page that was opened in the search dialog, used as key in + * {@link DialogSettings} + */ + public static final String PREVIOUS_SEARCH_PAGE= "PreviousSearchPageId_SearchDialog"; //$NON-NLS-1$ + + public static final String SEARCH_TAB_SELECTION_MODE_KEY = "SearchTabSelectionMode_SearchDialog"; //$NON-NLS-1$ + public static final int SEARCH_TAB_OPENS_BEST_TAB = 0; + public static final int SEARCH_TAB_OPENS_LAST_TAB = 1; @@ -147,2 +159,3 @@ + private final IDialogSettings defaultDialogSettings= SearchPlugin.getDefault().getDialogSettings(); @@ -156,2 +169,14 @@ fInitialPageId= pageId; + + if (fInitialPageId == null) { + try { + if (defaultDialogSettings.getInt(SEARCH_TAB_SELECTION_MODE_KEY) == SEARCH_TAB_OPENS_LAST_TAB) { + fInitialPageId= defaultDialogSettings.get(PREVIOUS_SEARCH_PAGE); + } + } catch (NumberFormatException nfe) { + // will only happen once, set default behavior + defaultDialogSettings.put(SEARCH_TAB_SELECTION_MODE_KEY, SEARCH_TAB_OPENS_BEST_TAB); + } + } + fPageChangeListeners= null; @@ -330,2 +355,29 @@ this.getButton(IDialogConstants.DESELECT_ALL_ID).addSelectionListener(listener); + } + + protected Control createDialogArea(Composite parent) { + Composite ret= (Composite)super.createDialogArea(parent); + + Label l = new Label(ret, SWT.None); + l.setText("'Search...' opens"); + + Button b= new Button(ret, SWT.RADIO); +// b.setText(SearchMessages.RememberSelectedSearchTab_message); + b.setText("Last used tab"); + b.setSelection((defaultDialogSettings.getInt(SEARCH_TAB_SELECTION_MODE_KEY)==SEARCH_TAB_OPENS_LAST_TAB)); + b.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + defaultDialogSettings.put(SEARCH_TAB_SELECTION_MODE_KEY, SEARCH_TAB_OPENS_LAST_TAB); + } + }); + + b= new Button(ret, SWT.RADIO); + b.setSelection((defaultDialogSettings.getInt(SEARCH_TAB_SELECTION_MODE_KEY)==SEARCH_TAB_OPENS_BEST_TAB)); + b.setText("Best tab for selection"); + b.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + defaultDialogSettings.put(SEARCH_TAB_SELECTION_MODE_KEY, SEARCH_TAB_OPENS_BEST_TAB); + } + }); + return ret; } @@ -524,2 +576,4 @@ + defaultDialogSettings.put(PREVIOUS_SEARCH_PAGE, descriptor.getId()); + if (item.getControl() == null) { diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchMessages.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchMessages.java index 2478aa4..24e1b62 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchMessages.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchMessages.java @@ -56,3 +56,4 @@ public static String ReplaceRefactoring_result_update_name; - + public static String RememberSelectedSearchTab_message; + public static String SearchDialog_title; 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 2eac4b5..e6e80a1 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 @@ -202,2 +202,4 @@ +RememberSelectedSearchTab_message=Remember selected search tab + ReplaceAction_label_all= Re&place All...