1 11 12 package org.eclipse.pde.internal.ui.editor.outline; 13 14 import org.eclipse.jface.viewers.ILabelProvider; 15 import org.eclipse.jface.viewers.ITreeContentProvider; 16 import org.eclipse.jface.viewers.TreeViewer; 17 import org.eclipse.jface.viewers.Viewer; 18 import org.eclipse.jface.viewers.ViewerFilter; 19 import org.eclipse.pde.internal.ui.util.StringMatcher; 20 21 25 public class QuickOutlineNamePatternFilter extends ViewerFilter { 26 27 private StringMatcher fStringMatcher; 28 29 32 public QuickOutlineNamePatternFilter() { 33 fStringMatcher = null; 34 } 35 36 39 public boolean select(Viewer viewer, Object parentElement, Object element) { 40 if ((fStringMatcher == null) || 43 ((viewer instanceof TreeViewer) == false)) { 44 return true; 45 } 46 TreeViewer treeViewer = (TreeViewer)viewer; 47 String matchName = 49 ((ILabelProvider) treeViewer.getLabelProvider()).getText(element); 50 if ((matchName != null) && 52 fStringMatcher.match(matchName)) { 53 return true; 54 } 55 return hasUnfilteredChild(treeViewer, element); 57 } 58 59 64 private boolean hasUnfilteredChild(TreeViewer viewer, Object element) { 65 Object [] children = 70 ((ITreeContentProvider) viewer.getContentProvider()).getChildren(element); 71 for (int i = 0; i < children.length; i++) { 72 if (select(viewer, element, children[i])) { 73 return true; 74 } 75 } 76 return false; 78 } 79 80 83 public void setStringMatcher(StringMatcher stringMatcher) { 84 fStringMatcher = stringMatcher; 85 } 86 87 } 88 | Popular Tags |