1 8 9 package org.eclipse.ant.internal.ui.preferences; 10 11 import java.util.HashSet ; 12 import java.util.List ; 13 import java.util.Set ; 14 15 import org.eclipse.ant.internal.ui.model.AntUIPlugin; 16 import org.eclipse.core.resources.IContainer; 17 import org.eclipse.core.resources.IFile; 18 import org.eclipse.core.resources.IResource; 19 import org.eclipse.core.resources.ResourcesPlugin; 20 import org.eclipse.core.runtime.CoreException; 21 import org.eclipse.jface.viewers.Viewer; 22 import org.eclipse.jface.viewers.ViewerFilter; 23 import org.eclipse.swt.custom.BusyIndicator; 24 25 public class PropertyFileFilter extends ViewerFilter { 26 27 30 protected List fFilter; 31 32 35 private Set fPropertyFiles; 36 37 41 public PropertyFileFilter(List objects) { 42 fFilter = objects; 43 init(); 44 } 45 46 49 public boolean select(Viewer viewer, Object parentElement, Object element) { 50 return fPropertyFiles.contains(element) && !fFilter.contains(element); 51 } 52 53 56 private void init() { 57 BusyIndicator.showWhile(AntUIPlugin.getStandardDisplay(), new Runnable () { 58 public void run() { 59 fPropertyFiles = new HashSet (); 60 traverse(ResourcesPlugin.getWorkspace().getRoot(), fPropertyFiles); 61 } 62 }); 63 } 64 65 69 private boolean traverse(IContainer container, Set set) { 70 boolean added = false; 71 try { 72 IResource[] resources = container.members(); 73 for (int i = 0; i < resources.length; i++) { 74 IResource resource = resources[i]; 75 if (resource instanceof IFile) { 76 IFile file = (IFile) resource; 77 String ext = file.getFileExtension(); 78 if (ext != null && ext.equalsIgnoreCase("properties")) { set.add(file); 80 added = true; 81 } 82 } else if (resource instanceof IContainer) { 83 if (traverse((IContainer) resource, set)) { 84 set.add(resource); 85 added = true; 86 } 87 } 88 } 89 } catch (CoreException e) { 90 } 91 return added; 92 } 93 } | Popular Tags |