1 11 package org.eclipse.debug.internal.ui.sourcelookup.browsers; 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.debug.internal.ui.DebugUIPlugin; 23 import org.eclipse.jface.viewers.Viewer; 24 import org.eclipse.jface.viewers.ViewerFilter; 25 import org.eclipse.swt.custom.BusyIndicator; 26 27 30 public class ArchiveFilter extends ViewerFilter { 31 32 35 private Set fArchives; 36 37 40 private List fExisting; 41 42 45 public boolean select(Viewer viewer, Object parentElement, Object element) { 46 return fArchives.contains(element) && !fExisting.contains(element); 47 } 48 49 55 public ArchiveFilter(List objects) { 56 fExisting = objects; 57 init(); 58 } 59 60 63 private void init() { 64 BusyIndicator.showWhile(DebugUIPlugin.getStandardDisplay(), new Runnable () { 65 public void run() { 66 fArchives = new HashSet (); 67 traverse(ResourcesPlugin.getWorkspace().getRoot(), fArchives); 68 } 69 }); 70 } 71 72 78 private boolean traverse(IContainer container, Set set) { 79 boolean added = false; 80 try { 81 IResource[] resources = container.members(); 82 for (int i = 0; i < resources.length; i++) { 83 IResource resource = resources[i]; 84 if (resource instanceof IFile) { 85 IFile file = (IFile)resource; 86 String ext = file.getFileExtension(); 87 if (ext != null && (ext.equalsIgnoreCase("jar") || ext.equalsIgnoreCase("zip"))) { set.add(file); 89 added = true; 90 } 91 } else if (resource instanceof IContainer) { 92 if (traverse((IContainer)resource, set)) { 93 set.add(resource); 94 added = true; 95 } 96 } 97 } 98 } catch (CoreException e) { 99 } 100 return added; 101 } 102 } 103 | Popular Tags |