1 11 package org.eclipse.team.internal.ccvs.ui.tags; 12 13 import java.util.ArrayList ; 14 import java.util.List ; 15 16 import org.eclipse.core.runtime.IAdaptable; 17 import org.eclipse.jface.resource.ImageDescriptor; 18 import org.eclipse.team.internal.ccvs.core.CVSTag; 19 import org.eclipse.team.internal.ccvs.core.util.StringMatcher; 20 import org.eclipse.ui.model.IWorkbenchAdapter; 21 22 25 public class FilteredTagList implements IWorkbenchAdapter, IAdaptable { 26 27 private final TagSource tagSource; 28 private final int[] types; 29 private StringMatcher matcher; 30 31 public FilteredTagList(TagSource tagSource, int[] types) { 32 this.tagSource = tagSource; 33 this.types = types; 34 } 35 36 39 public Object [] getChildren(Object o) { 40 CVSTag[] tags = getTags(); 41 List filtered = new ArrayList (); 42 for (int i = 0; i < tags.length; i++) { 43 CVSTag tag = tags[i]; 44 if (select(tag)) { 45 filtered.add(new TagElement(this, tag)); 46 } 47 } 48 return filtered.toArray(new Object [filtered.size()]); 49 } 50 51 private boolean select(CVSTag tag) { 52 if (matcher == null) return true; 53 return matcher.match(tag.getName()); 54 } 55 56 private CVSTag[] getTags() { 57 return tagSource.getTags(types); 58 } 59 60 63 public ImageDescriptor getImageDescriptor(Object object) { 64 return null; 65 } 66 67 70 public String getLabel(Object o) { 71 return null; 72 } 73 74 77 public Object getParent(Object o) { 78 return null; 79 } 80 81 84 public Object getAdapter(Class adapter) { 85 if (adapter == IWorkbenchAdapter.class) return this; 86 return null; 87 } 88 89 public void setPattern(String pattern) { 90 if (!pattern.endsWith("*")) { pattern += "*"; } 93 matcher = new StringMatcher(pattern, true, false); 94 } 95 96 public CVSTag[] getMatchingTags() { 97 CVSTag[] tags = getTags(); 98 List filtered = new ArrayList (); 99 for (int i = 0; i < tags.length; i++) { 100 CVSTag tag = tags[i]; 101 if (select(tag)) { 102 filtered.add(tag); 103 } 104 } 105 return (CVSTag[])filtered.toArray(new CVSTag[filtered.size()]); 106 } 107 108 } 109 | Popular Tags |