/*******************************************************************************
* 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;
}