1 11 12 package org.eclipse.ant.internal.ui.preferences; 13 14 import java.util.HashSet ; 15 import java.util.List ; 16 import java.util.Set ; 17 18 import org.eclipse.ant.internal.ui.AntUIPlugin; 19 import org.eclipse.core.resources.IContainer; 20 import org.eclipse.core.resources.IFile; 21 import org.eclipse.core.resources.IResource; 22 import org.eclipse.core.resources.ResourcesPlugin; 23 import org.eclipse.core.runtime.CoreException; 24 import org.eclipse.jface.viewers.Viewer; 25 import org.eclipse.jface.viewers.ViewerFilter; 26 import org.eclipse.swt.custom.BusyIndicator; 27 28 public class FileFilter extends ViewerFilter { 29 30 33 private List fFilter; 34 35 38 private Set fFiles; 39 40 private String fExtension; 41 42 private boolean fConsiderExtension= true; 43 44 49 public FileFilter(List objects, String extension) { 50 fFilter = objects; 51 fExtension= extension; 52 } 53 54 57 public boolean select(Viewer viewer, Object parentElement, Object element) { 58 return fFiles.contains(element) && !fFilter.contains(element); 59 } 60 61 64 private void init() { 65 BusyIndicator.showWhile(AntUIPlugin.getStandardDisplay(), new Runnable () { 66 public void run() { 67 fFiles = new HashSet (); 68 traverse(ResourcesPlugin.getWorkspace().getRoot(), fFiles); 69 } 70 }); 71 } 72 73 77 private boolean traverse(IContainer container, Set set) { 78 boolean added = false; 79 try { 80 IResource[] resources = container.members(); 81 for (int i = 0; i < resources.length; i++) { 82 IResource resource = resources[i]; 83 if (resource instanceof IFile) { 84 IFile file = (IFile) resource; 85 String ext = file.getFileExtension(); 86 if (!fConsiderExtension || (ext != null && ext.equalsIgnoreCase(fExtension))) { 87 set.add(file); 88 added = true; 89 } 90 } else if (resource instanceof IContainer) { 91 if (traverse((IContainer) resource, set)) { 92 set.add(resource); 93 added = true; 94 } 95 } 96 } 97 } catch (CoreException e) { 98 } 99 return added; 100 } 101 102 106 public void considerExtension(boolean considerExtension) { 107 fConsiderExtension= considerExtension; 108 init(); 109 } 110 } | Popular Tags |