blob: 669142b3a8f1a302271a9223a977a00962b2f1ab [file] [log] [blame]
/*******************************************************************************
* 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;
}