Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Stanik2017-07-17 16:50:58 +0000
committerLars Vogel2017-07-17 19:38:51 +0000
commit131c5e405cd7923cc7c3177c46fa2a473f059290 (patch)
tree68cd44666d8c2c8c5a44c357adbdde22f108673e
parentfd8110c87e4310b8ea49e461078c5d907978b005 (diff)
downloadeclipse.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.java24
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) {

Back to the top