/******************************************************************************* * Copyright (c) 2004, 2005 IBM Corporation and others. All rights reserved. This program and the * accompanying materials are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - Initial API and * implementation Jens Lukowski/Innoopract - initial renaming/restructuring *******************************************************************************/ package org.eclipse.wst.common.ui.internal.viewers; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import java.util.Collection; public class ResourceFilter extends ViewerFilter { protected String[] fExtensions; protected IFile[] fExcludedFiles; protected Collection fExcludes; public ResourceFilter(String[] extensions, Collection exclude) { fExtensions = extensions; fExcludes = exclude; fExcludedFiles = null; } public ResourceFilter(String[] extensions, IFile[] excludedFiles, Collection exclude) { fExtensions = extensions; fExcludes = exclude; fExcludedFiles = excludedFiles; } public boolean isFilterProperty(Object element, Object property) { return false; } public boolean select(Viewer viewer, Object parent, Object element) { if (element instanceof IFile) { if (fExcludes != null && fExcludes.contains(element)) { return false; } String name = ((IFile) element).getName(); if (fExcludedFiles != null) { for (int j = 0; j < fExcludedFiles.length; j++) { if (((IFile) element).getLocation().toOSString().compareTo( (fExcludedFiles[j]).getLocation().toOSString()) == 0) return false; } } if (fExtensions.length == 0) { // assume that we don't want to filter any files based on // extension return true; } for (int i = 0; i < fExtensions.length; i++) { if (name.endsWith(fExtensions[i])) { return true; } } return false; } else if (element instanceof IContainer) { // IProject, IFolder try { IResource[] resources = ((IContainer) element).members(); for (int i = 0; i < resources.length; i++) { // recursive! if (select(viewer, parent, resources[i])) { return true; } } } catch (CoreException e) { } } return false; } }