diff options
Diffstat (limited to 'org.eclipse.search/search/org/eclipse/search/internal')
4 files changed, 74 insertions, 19 deletions
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 be1bddff3d9..00a82d50bec 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 @@ -152,6 +152,7 @@ CopyToClipboardAction.error.message= There was a problem when accessing the syst ExceptionDialog.seeErrorLogMessage= See error log for more details
+SearchPreferencePage.emphasizePotentialMatches= &Emphasize inexact matches
SearchPreferencePage.potentialMatchFgColor= &Foreground color for inexact matches:
SearchPreferencePage.reuseEditor= &Reuse editors to show matches
diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPreferencePage.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPreferencePage.java index 4bcb4b3a656..c3f6d3278f5 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPreferencePage.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPreferencePage.java @@ -4,6 +4,9 @@ */ package org.eclipse.search.internal.ui; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Composite; @@ -22,18 +25,48 @@ import org.eclipse.ui.help.WorkbenchHelp; */ public class SearchPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + /* + * XXX: Need to subclass due to bug: 18183: setEnabled(...) for FieldEditors + */ + private class ColorEditor extends ColorFieldEditor { + public ColorEditor(String name, String labelText, Composite parent) { + super(name, labelText, parent); + } + void setEnabled(boolean state) { + getLabelControl().setEnabled(state); + getChangeControl(getFieldEditorParent()).setEnabled(state); + } + } + + /* + * XXX: Need to subclass due to bug 18182: BooleanFieldEditor gets out of synch after restoring defaults + */ + private class BooleanEditor extends BooleanFieldEditor { + public BooleanEditor(String name, String labelText, Composite parent) { + super(name, labelText, parent); + } + void addSelectionListener(SelectionListener listener) { + getChangeControl(getFieldEditorParent()).addSelectionListener(listener); + } + } + + + public static final String EMPHASIZE_POTENTIAL_MATCHES= "org.eclipse.search.potentialMatch.emphasize"; //$NON-NLS-1$ public static final String POTENTIAL_MATCH_FG_COLOR= "org.eclipse.search.potentialMatch.fgColor"; //$NON-NLS-1$ public static final String REUSE_EDITOR= "org.eclipse.search.reuseEditor"; //$NON-NLS-1$ + private ColorEditor fColorEditor; + private BooleanEditor fEmphasizedCheckbox; + private Composite fParent; public SearchPreferencePage() { super(GRID); - setPreferenceStore(SearchPlugin.getDefault().getPreferenceStore()); } public static void initDefaults(IPreferenceStore store) { RGB gray= new RGB(85, 85, 85); + store.setDefault(EMPHASIZE_POTENTIAL_MATCHES, true); PreferenceConverter.setDefault(store, POTENTIAL_MATCH_FG_COLOR, gray); store.setDefault(REUSE_EDITOR, false); } @@ -43,14 +76,16 @@ public class SearchPreferencePage extends FieldEditorPreferencePage implements I return store.getBoolean(REUSE_EDITOR); } + public static boolean arePotentialMatchesEmphasized() { + IPreferenceStore store= SearchPlugin.getDefault().getPreferenceStore(); + return store.getBoolean(EMPHASIZE_POTENTIAL_MATCHES); + } + public static RGB getPotentialMatchBackgroundColor() { IPreferenceStore store= SearchPlugin.getDefault().getPreferenceStore(); return PreferenceConverter.getColor(store, POTENTIAL_MATCH_FG_COLOR); } - /* - * Method declared on PreferencePage - */ public void createControl(Composite parent) { super.createControl(parent); WorkbenchHelp.setHelp(getControl(), ISearchHelpContextIds.SEARCH_PREFERENCE_PAGE); @@ -59,24 +94,38 @@ public class SearchPreferencePage extends FieldEditorPreferencePage implements I protected void createFieldEditors() { Composite parent= getFieldEditorParent(); - ColorFieldEditor colorEditor= new ColorFieldEditor( - POTENTIAL_MATCH_FG_COLOR, - SearchMessages.getString("SearchPreferencePage.potentialMatchFgColor"), //$NON-NLS-1$ - parent - ); - addField(colorEditor); - BooleanFieldEditor boolEditor= new BooleanFieldEditor( REUSE_EDITOR, SearchMessages.getString("SearchPreferencePage.reuseEditor"), //$NON-NLS-1$ parent ); addField(boolEditor); + + fEmphasizedCheckbox= new BooleanEditor( + EMPHASIZE_POTENTIAL_MATCHES, + SearchMessages.getString("SearchPreferencePage.emphasizePotentialMatches"), //$NON-NLS-1$ + parent); + addField(fEmphasizedCheckbox); + fEmphasizedCheckbox.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + fColorEditor.setEnabled(fEmphasizedCheckbox.getBooleanValue()); + } + }); + + fColorEditor= new ColorEditor( + POTENTIAL_MATCH_FG_COLOR, + SearchMessages.getString("SearchPreferencePage.potentialMatchFgColor"), //$NON-NLS-1$ + parent + ); + addField(fColorEditor); + fColorEditor.setEnabled(arePotentialMatchesEmphasized()); } - /* - * Method declared on IWorkbenchPreferencePage - */ public void init(IWorkbench workbench) { } + + protected void performDefaults() { + super.performDefaults(); + fColorEditor.setEnabled(fEmphasizedCheckbox.getBooleanValue()); + } } 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 68a8a25f36b..e4f29958aae 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 @@ -85,7 +85,7 @@ public class SearchResultView extends ViewPart implements ISearchResultView { fPropertyChangeListener= new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty() == SearchPreferencePage.POTENTIAL_MATCH_FG_COLOR)
+ if (event.getProperty() == SearchPreferencePage.POTENTIAL_MATCH_FG_COLOR || event.getProperty() == SearchPreferencePage.EMPHASIZE_POTENTIAL_MATCHES)
if (fViewer != null)
fViewer.updatedPotentialMatchBgColor();
}
diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java index 4cc265fd20d..bda034e40f8 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java @@ -89,7 +89,8 @@ public class SearchResultViewer extends TableViewer { fOuterPart= outerPart;
Assert.isNotNull(fOuterPart);
- fPotentialMatchFgColor= new Color(SearchPlugin.getDefault().getActiveWorkbenchShell().getDisplay(), SearchPreferencePage.getPotentialMatchBackgroundColor());
+ if (SearchPreferencePage.arePotentialMatchesEmphasized())
+ fPotentialMatchFgColor= new Color(SearchPlugin.getDefault().getActiveWorkbenchShell().getDisplay(), SearchPreferencePage.getPotentialMatchBackgroundColor());
setUseHashlookup(true);
setContentProvider(new SearchResultContentProvider());
@@ -482,8 +483,11 @@ public class SearchResultViewer extends TableViewer { * Updates the background color for potential matches.
*/
void updatedPotentialMatchBgColor() {
- fPotentialMatchFgColor.dispose();
- fPotentialMatchFgColor= new Color(SearchPlugin.getDefault().getActiveWorkbenchShell().getDisplay(), SearchPreferencePage.getPotentialMatchBackgroundColor());
+ if (fPotentialMatchFgColor != null)
+ fPotentialMatchFgColor.dispose();
+ fPotentialMatchFgColor= null;
+ if (SearchPreferencePage.arePotentialMatchesEmphasized())
+ fPotentialMatchFgColor= new Color(SearchPlugin.getDefault().getActiveWorkbenchShell().getDisplay(), SearchPreferencePage.getPotentialMatchBackgroundColor());
refresh();
}
@@ -524,7 +528,8 @@ public class SearchResultViewer extends TableViewer { Menu menu= getTable().getMenu();
if (menu != null)
menu.dispose();
- fPotentialMatchFgColor.dispose();
+ if (fPotentialMatchFgColor != null)
+ fPotentialMatchFgColor.dispose();
if (fActionGroup != null) {
fActionGroup.dispose();
fActionGroup= null;
|