1 11 package org.eclipse.ui.views.navigator; 12 13 import java.util.ArrayList ; 14 import java.util.List ; 15 import java.util.StringTokenizer ; 16 17 import org.eclipse.core.resources.IResource; 18 import org.eclipse.core.runtime.IAdaptable; 19 import org.eclipse.jface.preference.IPreferenceStore; 20 import org.eclipse.jface.viewers.Viewer; 21 import org.eclipse.jface.viewers.ViewerFilter; 22 import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; 23 import org.eclipse.ui.internal.util.PrefUtil; 24 25 30 public class ResourcePatternFilter extends ViewerFilter { 31 private String [] patterns; 32 33 private StringMatcher[] matchers; 34 35 static final String COMMA_SEPARATOR = ","; 37 static final String FILTERS_TAG = "resourceFilters"; 39 42 public ResourcePatternFilter() { 43 super(); 44 } 45 46 50 private StringMatcher[] getMatchers() { 51 52 if (this.matchers == null) { 53 initializeFromPreferences(); 54 } 55 56 return this.matchers; 57 } 58 59 63 public String [] getPatterns() { 64 65 if (this.patterns == null) { 66 initializeFromPreferences(); 67 } 68 69 return this.patterns; 70 71 } 72 73 76 private void initializeFromPreferences() { 77 IPreferenceStore viewsPrefs = IDEWorkbenchPlugin.getDefault() 79 .getPreferenceStore(); 80 String storedPatterns = viewsPrefs.getString(FILTERS_TAG); 81 82 if (storedPatterns.length() == 0) { 83 IPreferenceStore workbenchPrefs = PrefUtil.getInternalPreferenceStore(); 85 storedPatterns = workbenchPrefs.getString(FILTERS_TAG); 86 if (storedPatterns.length() > 0) { 87 viewsPrefs.setValue(FILTERS_TAG, storedPatterns); 88 workbenchPrefs.setValue(FILTERS_TAG, ""); } 90 } 91 92 if (storedPatterns.length() == 0) { 93 List defaultFilters = FiltersContentProvider.getDefaultFilters(); 96 String [] patterns = new String [defaultFilters.size()]; 97 defaultFilters.toArray(patterns); 98 setPatterns(patterns); 99 return; 100 } 101 102 List definedFilters = FiltersContentProvider.getDefinedFilters(); 105 StringTokenizer entries = new StringTokenizer (storedPatterns, 106 COMMA_SEPARATOR); 107 List patterns = new ArrayList (); 108 109 while (entries.hasMoreElements()) { 110 String nextToken = entries.nextToken(); 111 if (definedFilters.indexOf(nextToken) > -1) { 112 patterns.add(nextToken); 113 } 114 } 115 116 String [] patternArray = new String [patterns.size()]; 118 patterns.toArray(patternArray); 119 setPatterns(patternArray); 120 121 } 122 123 126 public boolean select(Viewer viewer, Object parentElement, Object element) { 127 IResource resource = null; 128 if (element instanceof IResource) { 129 resource = (IResource) element; 130 } else if (element instanceof IAdaptable) { 131 IAdaptable adaptable = (IAdaptable) element; 132 resource = (IResource) adaptable.getAdapter(IResource.class); 133 } 134 if (resource != null) { 135 String name = resource.getName(); 136 StringMatcher[] testMatchers = getMatchers(); 137 for (int i = 0; i < testMatchers.length; i++) { 138 if (testMatchers[i].match(name)) { 139 return false; 140 } 141 } 142 return true; 143 } 144 return true; 145 } 146 147 150 public void setPatterns(String [] newPatterns) { 151 152 this.patterns = newPatterns; 153 this.matchers = new StringMatcher[newPatterns.length]; 154 for (int i = 0; i < newPatterns.length; i++) { 155 matchers[i] = new StringMatcher(newPatterns[i], true, false); 157 } 158 } 159 } 160 | Popular Tags |