diff options
author | Christoph Stanik | 2017-07-17 16:50:58 +0000 |
---|---|---|
committer | Lars Vogel | 2017-07-17 19:38:51 +0000 |
commit | 131c5e405cd7923cc7c3177c46fa2a473f059290 (patch) | |
tree | 68cd44666d8c2c8c5a44c357adbdde22f108673e | |
parent | fd8110c87e4310b8ea49e461078c5d907978b005 (diff) | |
download | eclipse.platform.ui-131c5e405cd7923cc7c3177c46fa2a473f059290.tar.gz eclipse.platform.ui-131c5e405cd7923cc7c3177c46fa2a473f059290.tar.xz eclipse.platform.ui-131c5e405cd7923cc7c3177c46fa2a473f059290.zip |
Bug 519525 - Open resource should use highlight matches similar to OpenI20170718-0355I20170717-2000
Type
Change-Id: I49fb0f5933840c0af608667b5835756c891e49a8
Signed-off-by: Christoph Stanik <stanik@informatik.uni-hamburg.de>
-rw-r--r-- | bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java index 180123459ef..276b073131a 100644 --- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java +++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java @@ -21,6 +21,8 @@ import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IResource; @@ -39,6 +41,7 @@ import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; @@ -47,12 +50,15 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.LabelProviderChangedEvent; import org.eclipse.jface.viewers.StyledString; +import org.eclipse.jface.viewers.StyledString.Styler; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.TextStyle; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IMemento; @@ -629,8 +635,21 @@ public class FilteredResourcesSelectionDialog extends } IResource res = (IResource) element; - - StyledString str = new StyledString(res.getName()); + StyledString str = new StyledString(res.getName().trim()); + + String searchFieldString = ((Text) getPatternControl()).getText(); + searchFieldString = searchFieldString.replaceAll("\\*", ""); //$NON-NLS-1$//$NON-NLS-2$ + searchFieldString = searchFieldString.replaceAll("\\?", ""); //$NON-NLS-1$//$NON-NLS-2$ + Pattern p = Pattern.compile(searchFieldString, Pattern.CASE_INSENSITIVE); // $NON-NLS-1$ + Matcher m = p.matcher(str); + if (m.find()) { + str.setStyle(m.start(), m.end() - m.start(), new Styler() { + @Override + public void applyStyles(TextStyle textStyle) { + textStyle.font = JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT); + } + }); + } // extra info for duplicates if (isDuplicateElement(element)) { @@ -638,6 +657,7 @@ public class FilteredResourcesSelectionDialog extends str.append(res.getParent().getFullPath().makeRelative().toString(), StyledString.QUALIFIER_STYLER); } + //Debugging: // int pathDistance = pathDistance(res.getParent()); // if (pathDistance != Integer.MAX_VALUE / 2) { |