/** * This method passes through all the java packages and calls the filter callback passed on each * package found. * * <p>If true is returned on the callback, the children of each package (classes) will also be * visited, otherwise, they'll be skipped. */ private void filterJavaPackages(IFilter filter) { IClasspathEntry[] rawClasspath; try { rawClasspath = this.javaProject.getRawClasspath(); FastStringBuffer buffer = new FastStringBuffer(); for (IClasspathEntry entry : rawClasspath) { int entryKind = entry.getEntryKind(); IClasspathEntry resolvedClasspathEntry = JavaCore.getResolvedClasspathEntry(entry); if (entryKind != IClasspathEntry.CPE_CONTAINER) { // ignore if it's in the system classpath... IPackageFragmentRoot[] roots = javaProject.findPackageFragmentRoots(resolvedClasspathEntry); // get the package roots for (IPackageFragmentRoot root : roots) { IJavaElement[] children = root.getChildren(); // get the actual packages for (IJavaElement child : children) { IPackageFragment childPackage = (IPackageFragment) child; String elementName = childPackage.getElementName(); // and if the java package is 'accepted' if (filter.accept(elementName, root, childPackage)) { buffer.clear(); buffer.append(elementName); int packageNameLen = buffer.length(); if (packageNameLen > 0) { buffer.append('.'); packageNameLen++; } // traverse its classes for (IJavaElement class_ : childPackage.getChildren()) { buffer.append(FullRepIterable.getFirstPart(class_.getElementName())); filter.accept(buffer.toString(), root, class_); buffer.setCount( packageNameLen); // leave only the package part for the next append } } } } } } } catch (Exception e) { throw new RuntimeException(e); } }
@Override public boolean accept(T value) { for (IFilter<T> filter : innerFilters) { if (!filter.accept(value)) return false; } return true; }
protected void setSelection(IResource[] input, IFilter filter) { Map selectionMap = new Hashtable(); for (int i = 0; i < input.length; i++) { IResource resource = input[i]; if ((resource.getType() & IResource.FILE) > 0) { if (filter.accept(resource)) { List files = null; IContainer parent = resource.getParent(); if (selectionMap.containsKey(parent)) files = (List) selectionMap.get(parent); else files = new ArrayList(); files.add(resource); selectionMap.put(parent, files); } } else setSelection(selectionMap, (IContainer) resource, filter); } fResourceGroup.updateSelections(selectionMap); updateSelectionCount(); }
private void setSelection(Map selectionMap, IContainer parent, IFilter filter) { try { IResource[] resources = parent.members(); List selections = new ArrayList(); for (int i = 0; i < resources.length; i++) { IResource resource = resources[i]; if ((resource.getType() & IResource.FILE) > 0) { if (filter.accept(resource)) selections.add(resource); } else { setSelection(selectionMap, (IContainer) resource, filter); } } if (!selections.isEmpty()) selectionMap.put(parent, selections); } catch (CoreException x) { // Just return if we can't get any info return; } }
private boolean resourceMatches(final IFilter filter, IResource member) { return filter == null || filter.accept(member); }