1 11 package org.eclipse.jdt.internal.ui.wizards.buildpaths; 12 13 import java.util.Arrays ; 14 import java.util.List ; 15 16 import org.eclipse.core.resources.IContainer; 17 import org.eclipse.core.resources.IFile; 18 import org.eclipse.core.resources.IProject; 19 import org.eclipse.core.resources.IResource; 20 import org.eclipse.core.runtime.CoreException; 21 import org.eclipse.core.runtime.IPath; 22 23 import org.eclipse.jface.viewers.Viewer; 24 import org.eclipse.jface.viewers.ViewerFilter; 25 26 import org.eclipse.jdt.internal.ui.JavaPlugin; 27 28 33 public class ArchiveFileFilter extends ViewerFilter { 34 35 public static final String [] FILTER_EXTENSIONS= new String [] {"*.jar;*.zip"}; 37 private static final String [] fgArchiveExtensions= { "jar", "zip" }; 39 private List fExcludes; 40 private boolean fRecursive; 41 42 48 public ArchiveFileFilter(IFile[] excludedFiles, boolean recusive) { 49 if (excludedFiles != null) { 50 fExcludes= Arrays.asList(excludedFiles); 51 } else { 52 fExcludes= null; 53 } 54 fRecursive= recusive; 55 } 56 57 public ArchiveFileFilter(List excludedFiles, boolean recusive) { 58 fExcludes= excludedFiles; 59 fRecursive= recusive; 60 } 61 62 65 public boolean select(Viewer viewer, Object parent, Object element) { 66 if (element instanceof IFile) { 67 if (fExcludes != null && fExcludes.contains(element)) { 68 return false; 69 } 70 return isArchivePath(((IFile)element).getFullPath()); 71 } else if (element instanceof IContainer) { if (!fRecursive) { 73 return true; 74 } 75 if (element instanceof IProject && !((IProject)element).isOpen()) 77 return false; 78 try { 79 IResource[] resources= ((IContainer)element).members(); 80 for (int i= 0; i < resources.length; i++) { 81 if (select(viewer, parent, resources[i])) { 83 return true; 84 } 85 } 86 } catch (CoreException e) { 87 JavaPlugin.log(e.getStatus()); 88 } 89 } 90 return false; 91 } 92 93 public static boolean isArchivePath(IPath path) { 94 String ext= path.getFileExtension(); 95 if (ext != null && ext.length() != 0) { 96 return isArchiveFileExtension(ext); 97 } 98 return false; 99 } 100 101 public static boolean isArchiveFileExtension(String ext) { 102 for (int i= 0; i < fgArchiveExtensions.length; i++) { 103 if (ext.equalsIgnoreCase(fgArchiveExtensions[i])) { 104 return true; 105 } 106 } 107 return false; 108 } 109 110 111 112 } 113 | Popular Tags |