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..e1ab544 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 @@ -11,4 +11,5 @@ * o Search dialog not respecting activity enablement * (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=45729) + * Marco Descher - http://bugs.eclipse.org/33710 *******************************************************************************/ package org.eclipse.search.internal.ui; @@ -52,4 +53,5 @@ import org.eclipse.jface.action.LegacyActionTools; +import org.eclipse.jface.dialogs.DialogSettings; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogSettings; @@ -91,4 +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_OPENS_LAST_USED_PAGE= "SearchTabSelectionMode_LastUsedPage"; //$NON-NLS-1$ + private class TabFolderLayout extends Layout { protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache) { @@ -115,4 +125,5 @@ return new Point(x, y); } + protected void layout(Composite composite, boolean flushCache) { Rectangle rect= composite.getClientArea(); @@ -127,23 +138,36 @@ private static final int SEARCH_ID= IDialogConstants.CLIENT_ID + 1; + private static final int REPLACE_ID= SEARCH_ID + 1; + private static final int CUSTOMIZE_ID= REPLACE_ID + 1; private ISearchPage fCurrentPage; + private String fInitialPageId; + private int fCurrentIndex; private List fDescriptors; + private Point fMinSize; + private ScopePart[] fScopeParts; + private boolean fLastEnableState; + private Button fCustomizeButton; + private Button fReplaceButton; + private ListenerList fPageChangeListeners; private final IWorkbenchWindow fWorkbenchWindow; + private final ISelection fCurrentSelection; + private final String[] fCurrentEnclosingProject; + private final IDialogSettings defaultDialogSettings= SearchPlugin.getDefault().getDialogSettings(); public SearchDialog(IWorkbenchWindow window, String pageId) { @@ -155,4 +179,10 @@ fDescriptors= filterByActivities(SearchPlugin.getDefault().getEnabledSearchPageDescriptors(pageId)); fInitialPageId= pageId; + + if (fInitialPageId == null) { + if (defaultDialogSettings.getBoolean(SEARCH_TAB_OPENS_LAST_USED_PAGE)) + fInitialPageId= defaultDialogSettings.get(PREVIOUS_SEARCH_PAGE); + } + fPageChangeListeners= null; setUseEmbeddedProgressMonitorPart(false); @@ -160,7 +190,7 @@ public static String evaluateEnclosingProject(IAdaptable adaptable) { - IProject project= (IProject) adaptable.getAdapter(IProject.class); + IProject project= (IProject)adaptable.getAdapter(IProject.class); if (project == null) { - IResource resource= (IResource) adaptable.getAdapter(IResource.class); + IResource resource= (IResource)adaptable.getAdapter(IResource.class); if (resource != null) { project= resource.getProject(); @@ -182,8 +212,8 @@ } else if (selection instanceof IStructuredSelection) { HashSet res= new HashSet(); - for (Iterator iter= ((IStructuredSelection) selection).iterator(); iter.hasNext();) { + for (Iterator iter= ((IStructuredSelection)selection).iterator(); iter.hasNext();) { Object curr= iter.next(); if (curr instanceof IWorkingSet) { - IWorkingSet workingSet= (IWorkingSet) curr; + IWorkingSet workingSet= (IWorkingSet)curr; if (workingSet.isAggregateWorkingSet() && workingSet.isEmpty()) { IProject[] projects= ResourcesPlugin.getWorkspace().getRoot().getProjects(); @@ -204,5 +234,5 @@ } } else if (curr instanceof IAdaptable) { - String name= evaluateEnclosingProject((IAdaptable) curr); + String name= evaluateEnclosingProject((IAdaptable)curr); if (name != null) { res.add(name); @@ -211,5 +241,5 @@ } if (!res.isEmpty()) { - return (String[]) res.toArray(new String[res.size()]); + return (String[])res.toArray(new String[res.size()]); } } @@ -296,4 +326,5 @@ return null; } + public Image getImage(Object element) { if (element instanceof SearchPageDescriptor) { @@ -322,5 +353,5 @@ } }); - SelectionListener listener = new SelectionAdapter() { + SelectionListener listener= new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { okButton.setEnabled(viewer.getCheckedElements().length > 0); @@ -329,4 +360,19 @@ this.getButton(IDialogConstants.SELECT_ALL_ID).addSelectionListener(listener); this.getButton(IDialogConstants.DESELECT_ALL_ID).addSelectionListener(listener); + } + + protected Control createDialogArea(Composite parent) { + Composite ret= (Composite)super.createDialogArea(parent); + + final Button b= new Button(ret, SWT.CHECK); + b.setText(SearchMessages.RememberLastUsedPage_message); + b.setSelection(defaultDialogSettings.getBoolean(SEARCH_TAB_OPENS_LAST_USED_PAGE)); + b.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + defaultDialogSettings.put(SEARCH_TAB_OPENS_LAST_USED_PAGE, b.getSelection()); + } + }); + + return ret; } }; @@ -352,7 +398,7 @@ ArrayList filteredList= new ArrayList(input.size()); for (Iterator descriptors= input.iterator(); descriptors.hasNext();) { - SearchPageDescriptor descriptor= (SearchPageDescriptor) descriptors.next(); + SearchPageDescriptor descriptor= (SearchPageDescriptor)descriptors.next(); if (!WorkbenchActivityHelper.filterItem(descriptor)) - filteredList.add(descriptor); + filteredList.add(descriptor); } @@ -385,7 +431,7 @@ composite.setFont(parent.getFont()); - GridLayout layout = new GridLayout(); - layout.marginHeight = 0; - layout.marginWidth = 0; + GridLayout layout= new GridLayout(); + layout.marginHeight= 0; + layout.marginWidth= 0; composite.setLayout(layout); composite.setLayoutData(new GridData(GridData.FILL_BOTH)); @@ -399,5 +445,5 @@ SearchPageDescriptor descriptor= getDescriptorAt(i); if (WorkbenchActivityHelper.filterItem(descriptor)) - continue; + continue; final TabItem item= new TabItem(folder, SWT.NONE); @@ -437,9 +483,9 @@ Composite composite= new Composite(parent, SWT.NONE); GridLayout layout= new GridLayout(); - layout.numColumns= 0; // create - layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); - layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); - layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); - layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); + layout.numColumns= 0; // create + layout.marginHeight= convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); + layout.marginWidth= convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); + layout.verticalSpacing= convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); + layout.horizontalSpacing= convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); composite.setLayout(layout); @@ -447,7 +493,7 @@ // create help control if needed - if (isHelpAvailable()) { - createHelpControl(composite); - } + if (isHelpAvailable()) { + createHelpControl(composite); + } fCustomizeButton= createButton(composite, CUSTOMIZE_ID, SearchMessages.SearchDialog_customize, true); @@ -460,5 +506,5 @@ Button searchButton= createActionButton(composite, SEARCH_ID, SearchMessages.SearchDialog_searchAction, true); searchButton.setEnabled(fDescriptors.size() > 0); - super.createButtonsForButtonBar(composite); // cancel button + super.createButtonsForButtonBar(composite); // cancel button return composite; @@ -495,5 +541,5 @@ private SearchPageDescriptor getDescriptorAt(int index) { - return (SearchPageDescriptor) fDescriptors.get(index); + return (SearchPageDescriptor)fDescriptors.get(index); } @@ -518,8 +564,10 @@ private void turnToPage(SelectionEvent event) { - final TabItem item= (TabItem) event.item; + final TabItem item= (TabItem)event.item; TabFolder folder= item.getParent(); - SearchPageDescriptor descriptor= (SearchPageDescriptor) item.getData("descriptor"); //$NON-NLS-1$ + SearchPageDescriptor descriptor= (SearchPageDescriptor)item.getData("descriptor"); //$NON-NLS-1$ + + defaultDialogSettings.put(PREVIOUS_SEARCH_PAGE, descriptor.getId()); if (item.getControl() == null) { @@ -556,5 +604,5 @@ ISelection selection= getSelection(); if (selection instanceof IStructuredSelection) - element= ((IStructuredSelection) selection).getFirstElement(); + element= ((IStructuredSelection)selection).getFirstElement(); if (element == null) @@ -565,5 +613,5 @@ int size= fDescriptors.size(); for (int i= 0; i < size; i++) { - SearchPageDescriptor descriptor= (SearchPageDescriptor) fDescriptors.get(i); + SearchPageDescriptor descriptor= (SearchPageDescriptor)fDescriptors.get(i); if (fInitialPageId != null && fInitialPageId.equals(descriptor.getId())) return i; @@ -711,9 +759,12 @@ } } + public void handleException(Throwable ex) { if (ex instanceof CoreException) { - ExceptionHandler.handle((CoreException) ex, getShell(), SearchMessages.Search_Error_createSearchPage_title, Messages.format(SearchMessages.Search_Error_createSearchPage_message, descriptor.getLabel())); + ExceptionHandler.handle((CoreException)ex, getShell(), SearchMessages.Search_Error_createSearchPage_title, + Messages.format(SearchMessages.Search_Error_createSearchPage_message, descriptor.getLabel())); } else { - ExceptionHandler.displayMessageDialog(ex, getShell(), SearchMessages.Search_Error_createSearchPage_title, Messages.format(SearchMessages.Search_Error_createSearchPage_message, descriptor.getLabel())); + ExceptionHandler.displayMessageDialog(ex, getShell(), SearchMessages.Search_Error_createSearchPage_title, + Messages.format(SearchMessages.Search_Error_createSearchPage_message, descriptor.getLabel())); } } @@ -755,13 +806,13 @@ if (oldSize == null || newSize == null) return; - Shell shell= getShell(); + Shell shell= getShell(); Point shellSize= shell.getSize(); if (mustResize(oldSize, newSize)) { if (newSize.x > oldSize.x) - shellSize.x+= (newSize.x-oldSize.x); + shellSize.x+= (newSize.x - oldSize.x); if (newSize.y > oldSize.y) - shellSize.y+= (newSize.y-oldSize.y); + shellSize.y+= (newSize.y - oldSize.y); shell.setSize(shellSize); - shell.layout(true); + shell.layout(true); } } @@ -776,5 +827,5 @@ public boolean close() { for (int i= 0; i < fDescriptors.size(); i++) { - SearchPageDescriptor desc= (SearchPageDescriptor) fDescriptors.get(i); + SearchPageDescriptor desc= (SearchPageDescriptor)fDescriptors.get(i); desc.dispose(); } @@ -812,5 +863,5 @@ Object[] listeners= fPageChangeListeners.getListeners(); for (int i= 0; i < listeners.length; ++i) { - final IPageChangedListener l= (IPageChangedListener) listeners[i]; + final IPageChangedListener l= (IPageChangedListener)listeners[i]; SafeRunner.run(new SafeRunnable() { public void run() { 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..18b973b 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 @@ -23,177 +23,349 @@ public static String FileSearchPage_open_file_dialog_title; + public static String FileSearchPage_open_file_failed; + public static String FileTextSearchScope_scope_empty; + public static String FileTextSearchScope_scope_single; + public static String FileTextSearchScope_scope_double; + public static String FileTextSearchScope_scope_multiple; public static String FileTextSearchScope_ws_scope_empty; + public static String FileTextSearchScope_ws_scope_single; + public static String FileTextSearchScope_ws_scope_double; + public static String FileTextSearchScope_ws_scope_multiple; + public static String ReplaceAction_description_operation; + public static String ReplaceAction_title_all; + public static String ReplaceAction_title_selected; + public static String ReplaceConfigurationPage_description_many_in_many; + public static String ReplaceConfigurationPage_description_many_in_one; + public static String ReplaceConfigurationPage_description_one_in_one; + public static String ReplaceConfigurationPage_isRegex_label; + public static String ReplaceConfigurationPage_replace_label; + public static String ReplaceConfigurationPage_with_label; + public static String ReplaceRefactoring_composite_change_name; + public static String ReplaceRefactoring_error_access_file; + public static String ReplaceRefactoring_error_accessing_file_buffer; + public static String ReplaceRefactoring_error_illegal_search_string; + public static String ReplaceRefactoring_error_match_content_changed; + public static String ReplaceRefactoring_error_no_changes; + public static String ReplaceRefactoring_error_no_matches; + public static String ReplaceRefactoring_error_no_replace_string; + public static String ReplaceRefactoring_error_replacement_expression; + public static String ReplaceRefactoring_group_label_change_for_file; + public static String ReplaceRefactoring_group_label_match_replace; + public static String ReplaceRefactoring_refactoring_name; + public static String ReplaceRefactoring_result_update_name; + public static String RememberLastUsedPage_message; + public static String SearchDialog_title; + public static String SearchDialog_searchAction; + public static String SearchDialog_replaceAction; + public static String SearchDialog_customize; + public static String SearchDialog_noSearchExtension; + public static String SearchPageSelectionDialog_title; + public static String SearchPageSelectionDialog_message; + public static String SearchManager_resourceChangedWarning; + public static String SearchManager_resourceChanged; + public static String SearchManager_resourceDeleted; + public static String SearchManager_updating; + public static String SearchResultView_title; + public static String SearchResultView_titleWithDescription; + public static String SearchResultView_matches; + public static String SearchResultView_removed_resource; + public static String SearchResultView_removeAllResults_text; + public static String SearchResultView_removeAllResults_tooltip; + public static String SearchResultView_removeAllSearches_text; + public static String SearchResultView_removeAllSearches_tooltip; + public static String SearchResultView_searchAgain_text; + public static String SearchResultView_searchAgain_tooltip; + public static String SearchResultView_previousSearches_text; + public static String SearchResultView_previousSearches_tooltip; + public static String SearchResultView_removeEntry_text; + public static String SearchResultView_removeEntry_tooltip; + public static String SearchResultView_removeEntries_text; + public static String SearchResultView_removeEntries_tooltip; + public static String SearchResultView_removeMatch_text; + public static String SearchResultView_removeMatch_tooltip; + public static String SearchResultView_gotoMarker_text; + public static String SearchResultView_gotoMarker_tooltip; + public static String SearchResultView_showNext_text; + public static String SearchResultView_showNext_tooltip; + public static String SearchResultView_showPrev_text; + public static String SearchResultView_showPrev_tooltip; + public static String SearchDialogClosingDialog_title; + public static String SearchDialogClosingDialog_message; + public static String SearchDialog_error_pageCreationFailed; + public static String SearchPlugin_internal_error; + public static String Search_Error_search_title; + public static String Search_Error_search_message; + public static String Search_Error_setDescription_title; + public static String Search_Error_setDescription_message; + public static String Search_Error_openResultView_title; + public static String Search_Error_openResultView_message; + public static String Search_Error_deleteMarkers_title; + public static String Search_Error_deleteMarkers_message; + public static String Search_Error_createMarker_title; + public static String Search_Error_createMarker_message; + public static String Search_Error_markerAttributeAccess_title; + public static String Search_Error_markerAttributeAccess_message; + public static String Search_Error_switchSearch_title; + public static String Search_Error_switchSearch_message; + public static String Search_Error_createSearchPage_title; + public static String Search_Error_createSearchPage_message; + public static String Search_Error_createSorter_title; + public static String Search_Error_createSorter_message; + public static String SearchPage_containingText_text; + public static String SearchPage_containingText_hint; + public static String SearchPage_browse; + public static String SearchPage_fileNamePatterns_text; + public static String SearchPage_fileNamePatterns_hint; + public static String SearchPage_caseSensitive; + public static String SearchPage_regularExpression; + public static String TextSearchEngine_statusMessage; + public static String TextSearchPage_replace_querycreationproblem_message; + public static String TextSearchPage_replace_runproblem_message; + public static String TextSearchPage_searchDerived_label; + public static String TextSearchVisitor_filesearch_task_label; + public static String TextSearchVisitor_patterntoocomplex0; + public static String TextSearchVisitor_progress_updating_job; + public static String TextSearchVisitor_scanning; + public static String TextSearchVisitor_error; + public static String TextSearchVisitor_canceled; + public static String TextSearchVisitor_textsearch_task_label; + public static String TextSearchVisitor_unsupportedcharset; + public static String TextSearchVisitor_illegalcharset; + public static String SortDropDownAction_label; + public static String SortDropDownAction_tooltip; + public static String ShowOtherSearchesAction_label; + public static String ShowOtherSearchesAction_tooltip; + public static String OtherSearchesDialog_title; + public static String OtherSearchesDialog_message; + public static String PatternConstructor_error_escape_sequence; + public static String PatternConstructor_error_hex_escape_sequence; + public static String PatternConstructor_error_line_delim_position; + public static String PatternConstructor_error_unicode_escape_sequence; + public static String PreviousSearchesDialog_title; + public static String PreviousSearchesDialog_message; + public static String TextSearchPage_replace_searchproblems_title; + public static String TextSearchPage_replace_searchproblems_message; + public static String FileSearchQuery_label; + public static String FileSearchQuery_pluralPattern; + public static String FileSearchQuery_singularLabel; + public static String FileSearchQuery_singularLabel_fileNameSearch; + public static String FileSearchQuery_pluralPattern_fileNameSearch; + public static String OpenSearchDialogAction_label; + public static String OpenSearchDialogAction_tooltip; + public static String FileTypeEditor_typeDelimiter; + public static String FileLabelProvider_dashSeparated; + public static String FileLabelProvider_count_format; + public static String FileLabelProvider_line_number; + public static String FileLabelProvider_removed_resource_label; + public static String FileSearchPage_sort_name_label; + public static String FileSearchPage_sort_path_label; + public static String FileSearchPage_error_marker; + public static String FileSearchPage_sort_by_label; + public static String FileSearchPage_limited_format_files; + public static String FileSearchPage_limited_format_matches; + public static String WorkspaceScope; + public static String ScopePart_group_text; + public static String ScopePart_selectedResourcesScope_text; + public static String ScopePart_enclosingProjectsScope_text; + public static String ScopePart_workingSetChooseButton_text; + public static String ScopePart_workingSetText_accessible_label; + public static String ScopePart_workingSetScope_text; + public static String ScopePart_workspaceScope_text; + public static String ScopePart_workingSetConcatenation; + public static String CopyToClipboardAction_label; + public static String CopyToClipboardAction_tooltip; + public static String CopyToClipboardAction_error_title; + public static String CopyToClipboardAction_error_message; + public static String ExceptionDialog_seeErrorLogMessage; + public static String SearchPreferencePage_emphasizePotentialMatches; + public static String SearchPreferencePage_potentialMatchFgColor; + public static String SearchPreferencePage_reuseEditor; + public static String SearchPreferencePage_bringToFront; + public static String SearchPreferencePage_defaultPerspective; + public static String SearchPreferencePage_defaultPerspective_none; + public static String SearchPreferencePage_ignorePotentialMatches; + public static String ReplaceAction_label_all; + public static String ReplaceAction_label_selected; + public static String SelectAllAction_label; + public static String SelectAllAction_tooltip; + public static String RemovePotentialMatchesAction_removePotentialMatch_text; + public static String RemovePotentialMatchesAction_removePotentialMatch_tooltip; + public static String RemovePotentialMatchesAction_removePotentialMatches_text; + public static String RemovePotentialMatchesAction_removePotentialMatches_tooltip; + public static String RemovePotentialMatchesAction_dialog_title; + public static String RemovePotentialMatchesAction_dialog_message; + public static String OpenWithMenu_label; static { @@ -202,7 +374,10 @@ // public static String ReplaceDialog2_nomatches_error; - public static String SearchPreferencePage_textSearchEngine; + public static String SearchPreferencePage_textSearchEngine; + public static String TextSearchEngineRegistry_defaulttextsearch_label; + public static String FileSearchQuery_singularPatternWithFileExt; + public static String FileSearchQuery_pluralPatternWithFileExt; } 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..3cdbbef 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 @@ -201,4 +201,6 @@ SearchPreferencePage_ignorePotentialMatches= &Ignore potential matches +RememberLastUsedPage_message=&Remember last used page + ReplaceAction_label_all= Re&place All... ReplaceAction_title_all=Replace Text Matches