/******************************************************************************* * Copyright (c) 2008, 2010 Freescale Semiconductor 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: * Serge Beauchamp (Freescale Semiconductor) - initial API and implementation * IBM - ongoing development *******************************************************************************/ package org.eclipse.core.resources; import org.eclipse.core.runtime.*; /** * A description of a resource filter. * * A filter determines which file system objects will be visible when a local refresh is performed * for an IContainer. * * @see IContainer#getFilters() * @noimplement This interface is not intended to be implemented by clients. * @noextend This interface is not intended to be extended by clients. * @since 3.6 */ public interface IResourceFilterDescription { /*==================================================================== * Constants defining which members are wanted: *====================================================================*/ /** * Flag for resource filters indicating that the filter list includes only the files matching * the filters. All INCLUDE_ONLY filters are applied to the resource list with an logical OR * operation. */ public static final int INCLUDE_ONLY= 1; /** * Flag for resource filters indicating that the filter list excludes all the files matching the * filters. All EXCLUDE_ALL filters are applied to the resource list with an logical AND * operation. */ public static final int EXCLUDE_ALL= 2; /** * Flag for resource filters indicating that this filter applies to files. */ public static final int FILES= 4; /** * Flag for resource filters indicating that this filter applies to folders. */ public static final int FOLDERS= 8; /** * Flag for resource filters indicating that the container children of the path inherit from * this filter as well. */ public static final int INHERITABLE= 16; /** * Returns the description of the file info matcher corresponding to this resource filter. * * @return the file info matcher description for this resource filter */ public FileInfoMatcherDescription getFileInfoMatcherDescription(); /** * Return the resource towards which this filter is set. * * @return the resource towards which this filter is set */ public IResource getResource(); /** * Return the filter type, either INCLUDE_ONLY or EXCLUDE_ALL * * @return (INCLUDE_ONLY or EXCLUDE_ALL) and/or INHERITABLE */ public int getType(); /** * Deletes this filter description from its associated resource. * <p> * The {@link IResource#BACKGROUND_REFRESH} update flag controls when changes to the resource * hierarchy under this container resulting from the filter removal take effect. If this flag is * specified, the resource hierarchy is updated in a separate thread after this method returns. * If the flag is not specified, any resource changes resulting from the filter removal will * occur before this method returns. * </p> * <p> * This operation changes resources; these changes will be reported in a subsequent resource * change event that will include an indication of any resources that have been added as a * result of the filter removal. * </p> * <p> * This operation is long-running; progress and cancellation are provided by the given progress * monitor. * </p> * * @param updateFlags bit-wise or of update flag constants ({@link IResource#BACKGROUND_REFRESH} * ) * @param monitor a progress monitor, or <code>null</code> if progress reporting is not desired * @exception CoreException if this filter could not be removed. Reasons include: * <ul> * <li>Resource changes are disallowed during certain types of resource change * event notification. See <code>IResourceChangeEvent</code> for more details.</li> * </ul> * @exception OperationCanceledException if the operation is canceled. Cancelation can occur * even if no progress monitor is provided. * @see IContainer#getFilters() * @see IContainer#createFilter(int, FileInfoMatcherDescription, int, IProgressMonitor) */ public void delete(int updateFlags, IProgressMonitor monitor) throws CoreException; }