1 11 package org.eclipse.jdt.internal.debug.ui.actions; 12 13 import java.util.HashSet ; 14 import java.util.List ; 15 import java.util.Set ; 16 17 import org.eclipse.core.resources.IContainer; 18 import org.eclipse.core.resources.IFile; 19 import org.eclipse.core.resources.IResource; 20 import org.eclipse.core.resources.ResourcesPlugin; 21 import org.eclipse.core.runtime.CoreException; 22 import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin; 23 import org.eclipse.jface.viewers.Viewer; 24 import org.eclipse.swt.custom.BusyIndicator; 25 26 29 public class ArchiveFilter extends ObjectFilter { 30 31 34 private Set fArchives; 35 36 39 public boolean select(Viewer viewer, Object parentElement, Object element) { 40 return fArchives.contains(element) && super.select(viewer, parentElement, element); 41 } 42 43 49 public ArchiveFilter(List objects) { 50 super(objects); 51 init(); 52 } 53 54 57 private void init() { 58 BusyIndicator.showWhile(JDIDebugUIPlugin.getStandardDisplay(), new Runnable () { 59 public void run() { 60 fArchives = new HashSet (); 61 traverse(ResourcesPlugin.getWorkspace().getRoot(), fArchives); 62 } 63 }); 64 } 65 66 72 private boolean traverse(IContainer container, Set set) { 73 boolean added = false; 74 try { 75 IResource[] resources = container.members(); 76 for (int i = 0; i < resources.length; i++) { 77 IResource resource = resources[i]; 78 if (resource instanceof IFile) { 79 IFile file = (IFile)resource; 80 String ext = file.getFileExtension(); 81 if (ext != null && (ext.equalsIgnoreCase("jar") || ext.equalsIgnoreCase("zip"))) { set.add(file); 83 added = true; 84 } 85 } else if (resource instanceof IContainer) { 86 if (traverse((IContainer)resource, set)) { 87 set.add(resource); 88 added = true; 89 } 90 } 91 } 92 } catch (CoreException e) { 93 } 94 return added; 95 } 96 } 97 | Popular Tags |