1 11 package org.eclipse.jdt.internal.corext.util; 12 13 import java.util.StringTokenizer ; 14 15 import org.eclipse.jface.util.IPropertyChangeListener; 16 import org.eclipse.jface.util.PropertyChangeEvent; 17 18 import org.eclipse.jdt.core.IType; 19 import org.eclipse.jdt.core.search.TypeNameMatch; 20 21 import org.eclipse.jdt.ui.PreferenceConstants; 22 23 import org.eclipse.jdt.internal.ui.JavaPlugin; 24 import org.eclipse.jdt.internal.ui.util.StringMatcher; 25 26 29 public class TypeFilter implements IPropertyChangeListener { 30 31 public static TypeFilter getDefault() { 32 return JavaPlugin.getDefault().getTypeFilter(); 33 } 34 35 public static boolean isFiltered(String fullTypeName) { 36 return getDefault().filter(fullTypeName); 37 } 38 39 public static boolean isFiltered(char[] fullTypeName) { 40 return getDefault().filter(new String (fullTypeName)); 41 } 42 43 public static boolean isFiltered(char[] packageName, char[] typeName) { 44 return getDefault().filter(JavaModelUtil.concatenateName(packageName, typeName)); 45 } 46 47 public static boolean isFiltered(IType type) { 48 TypeFilter typeFilter = getDefault(); 49 if (typeFilter.hasFilters()) { 50 return typeFilter.filter(JavaModelUtil.getFullyQualifiedName(type)); 51 } 52 return false; 53 } 54 55 public static boolean isFiltered(TypeNameMatch match) { 56 return getDefault().filter(match.getFullyQualifiedName()); 57 } 58 59 private StringMatcher[] fStringMatchers; 60 61 64 public TypeFilter() { 65 fStringMatchers= null; 66 PreferenceConstants.getPreferenceStore().addPropertyChangeListener(this); 67 } 68 69 private synchronized StringMatcher[] getStringMatchers() { 70 if (fStringMatchers == null) { 71 String str= PreferenceConstants.getPreferenceStore().getString(PreferenceConstants.TYPEFILTER_ENABLED); 72 StringTokenizer tok= new StringTokenizer (str, ";"); int nTokens= tok.countTokens(); 74 75 fStringMatchers= new StringMatcher[nTokens]; 76 for (int i= 0; i < nTokens; i++) { 77 String curr= tok.nextToken(); 78 if (curr.length() > 0) { 79 fStringMatchers[i]= new StringMatcher(curr, false, false); 80 } 81 } 82 } 83 return fStringMatchers; 84 } 85 86 public void dispose() { 87 PreferenceConstants.getPreferenceStore().removePropertyChangeListener(this); 88 fStringMatchers= null; 89 } 90 91 92 public boolean hasFilters() { 93 return getStringMatchers().length > 0; 94 } 95 96 public boolean filter(String fullTypeName) { 97 StringMatcher[] matchers= getStringMatchers(); 98 for (int i= 0; i < matchers.length; i++) { 99 StringMatcher curr= matchers[i]; 100 if (curr.match(fullTypeName)) { 101 return true; 102 } 103 } 104 return false; 105 } 106 107 110 public synchronized void propertyChange(PropertyChangeEvent event) { 111 if (PreferenceConstants.TYPEFILTER_ENABLED.equals(event.getProperty())) { 112 fStringMatchers= null; 113 } 114 } 115 116 117 } 118 | Popular Tags |