/*******************************************************************************
 * Copyright (c) 2000, 2006 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
 *******************************************************************************/
package org.eclipse.ui;

/**
 * Describes the public attributes for a resource and the acceptable values
 * each may have.  
 * <p>
 * A popup menu extension may use these constants to describe its object target.  
 * Each identifies an attribute name or possible value.  
 * <p>
 * Clients are not expected to implement this interface.
 * </p>
 *
 * @see org.eclipse.ui.IActionFilter
 */
public interface IResourceActionFilter extends IActionFilter {
    /**
     * An attribute indicating the file name (value <code>"name"</code>).  
     * The attribute value in xml is unconstrained.  "*" may be used at the start or
     * the end to represent "one or more characters".
     */
    public static final String NAME = "name"; //$NON-NLS-1$

    /**
     * An attribute indicating the file extension (value <code>"extension"</code>).
     * The attribute value in xml is unconstrained.
     */
    public static final String EXTENSION = "extension"; //$NON-NLS-1$

    /**
     * An attribute indicating the file path (value <code>"path"</code>).
     * The attribute value in xml is unconstrained.  "*" may be used at the start or
     * the end to represent "one or more characters".
     */
    public static final String PATH = "path"; //$NON-NLS-1$

    /**
     * An attribute indicating whether the file is read only (value <code>"readOnly"</code>).
     * The attribute value in xml must be one of <code>"true" or "false"</code>.
     */
    public static final String READ_ONLY = "readOnly"; //$NON-NLS-1$

    /**
     * An attribute indicating the project nature (value <code>"projectNature"</code>).
     * The attribute value in xml is unconstrained.
     */
    public static final String PROJECT_NATURE = "projectNature"; //$NON-NLS-1$

    /**
     * An attribute indicating a persistent property on the selected resource 
     * (value <code>"persistentProperty"</code>).
     * If the value is a simple string, then this simply tests for existence of the property on the resource.
     * If it has the format <code>"propertyName=propertyValue" this obtains the value of the property
     * with the specified name and tests it for equality with the specified value.
     */
    public static final String PERSISTENT_PROPERTY = "persistentProperty"; //$NON-NLS-1$

    /**
     * An attribute indicating a persistent property on the selected resource's project. 
     * (value <code>"projectPersistentProperty"</code>).
     * If the value is a simple string, then this simply tests for existence of the property on the resource.
     * If it has the format <code>"propertyName=propertyValue" this obtains the value of the property
     * with the specified name and tests it for equality with the specified value.
     */
    public static final String PROJECT_PERSISTENT_PROPERTY = "projectPersistentProperty"; //$NON-NLS-1$

    /**
     * An attribute indicating a session property on the selected resource 
     * (value <code>"sessionProperty"</code>).
     * If the value is a simple string, then this simply tests for existence of the property on the resource.
     * If it has the format <code>"propertyName=propertyValue" this obtains the value of the property
     * with the specified name and tests it for equality with the specified value.
     */
    public static final String SESSION_PROPERTY = "sessionProperty"; //$NON-NLS-1$

    /**
     * An attribute indicating a session property on the selected resource's project. 
     * (value <code>"projectSessionProperty"</code>).
     * If the value is a simple string, then this simply tests for existence of the property on the resource.
     * If it has the format <code>"propertyName=propertyValue" this obtains the value of the property
     * with the specified name and tests it for equality with the specified value.
     */
    public static final String PROJECT_SESSION_PROPERTY = "projectSessionProperty"; //$NON-NLS-1$

    /**
     * An attribute indicating that this is an xml file
     * and we should ensure that the first tag (or top-level
     * tag) has this name.
     * @since 3.0
     * @deprecated Please use content types instead.
     */
    public static final String XML_FIRST_TAG = "xmlFirstTag"; //$NON-NLS-1$

    /**
     * An attribute indicating that this is an xml file and we should ensure that the DTD
     * definition in this xml file is the value supplied with this attribute.
     * @since 3.0
     * @deprecated Please use content types instead.
     */
    public static final String XML_DTD_NAME = "xmlDTDName"; //$NON-NLS-1$

    /**
     * An attribute indicating that this is a file, and we are looking to verify
     * that the file matches the content type matching the given identifier.
     * The identifier is provided in the value.
     * @since 3.0
     */
    public static final String CONTENT_TYPE_ID = "contentTypeId"; //$NON-NLS-1$
}
