From 4050371ec3c56720bd678581cd7dec87aed9311b Mon Sep 17 00:00:00 2001 From: Mickael ADAM Date: Wed, 19 Oct 2016 09:21:59 +0200 Subject: Bug 505797 - [Model Explorer] The validation of search field should allow ^ and $ wildcards https://bugs.eclipse.org/bugs/show_bug.cgi?id=505797 Change-Id: I2f6393a7c73e26f4020d97cd025340a8897ed157 Signed-off-by: Mickael ADAM --- .../widgets/providers/PatternViewerFilter.java | 25 ++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'plugins') diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/PatternViewerFilter.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/PatternViewerFilter.java index 571de9a043c..ed209dd9627 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/PatternViewerFilter.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/PatternViewerFilter.java @@ -9,6 +9,7 @@ * Contributors: * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation * Mickaël ADAM (ALL4TEC) - mickael.adam@all4tec.net - Bug 500290: add ignore case boolean and some refactore + * Mickaël ADAM (ALL4TEC) - mickael.adam@all4tec.net - Bug 505797 - The validation of search field should allow ^ and $ wildcards *****************************************************************************/ package org.eclipse.papyrus.infra.widgets.providers; @@ -32,6 +33,12 @@ import org.eclipse.ui.internal.misc.StringMatcher; */ public class PatternViewerFilter extends AbstractTreeFilter { + /** The wildcare to indicate that the end of a pattern is strict. */ + private static final String END_STRICT_WILDCARE = "$";//$NON-NLS-1$ + + /** The wildcare to indicate that the start of a pattern is strict. */ + private static final String START_STRICT_WILDCARE = "^";//$NON-NLS-1$ + /** the wilcard ? */ private static final String SEMI_COLON = ";";//$NON-NLS-1$ @@ -90,10 +97,24 @@ public class PatternViewerFilter extends AbstractTreeFilter { this.validPatterns = new StringMatcher[patterns.length]; int i = 0; for (String pattern : patterns) { + StringBuilder patternBuilder = new StringBuilder(); if (!strict) { - pattern = ASTERISK + pattern.trim() + ASTERISK; + if (pattern.startsWith(START_STRICT_WILDCARE)) { + patternBuilder.append(pattern.subSequence(1, pattern.length())); + } else { + patternBuilder.append(ASTERISK); + patternBuilder.append(pattern.trim()); + } + + if (pattern.endsWith(END_STRICT_WILDCARE)) { + patternBuilder.setLength(patternBuilder.length() - 1); + } else { + patternBuilder.append(ASTERISK); + } + } else { + patternBuilder.append(pattern); } - validPatterns[i++] = new StringMatcher(pattern, ignoreCase, false); + validPatterns[i++] = new StringMatcher(patternBuilder.toString(), ignoreCase, false); } clearCache(); -- cgit v1.2.3