/*******************************************************************************
 *  Copyright (c) 2000, 2009 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.core.resources;

import org.eclipse.core.runtime.CoreException;

/**
 * Interface for project nature runtime classes.
 * It can configure a project with the project nature, or de-configure it.
 * When a project is configured with a project nature, this is
 * recorded in the list of project natures on the project.
 * Individual project natures may expose a more specific runtime type,
 * with additional API for manipulating the project in a
 * nature-specific way.
 * <p>
 * Clients may implement this interface.
 * </p>
 *
 * @see IProject#getNature(String)
 * @see IProject#hasNature(String)
 * @see IProjectDescription#getNatureIds()
 * @see IProjectDescription#hasNature(String)
 * @see IProjectDescription#setNatureIds(String[])
 */
public interface IProjectNature {
	/**
	 * Configures this nature for its project. This is called by the workspace
	 * when natures are added to the project using <code>IProject.setDescription</code>
	 * and should not be called directly by clients.  The nature extension
	 * id is added to the list of natures before this method is called,
	 * and need not be added here.
	 *
	 * Exceptions thrown by this method will be propagated back to the caller
	 * of <code>IProject.setDescription</code>, but the nature will remain in
	 * the project description.
	 *
	 * @exception CoreException if this method fails.
	 */
	public void configure() throws CoreException;

	/**
	 * De-configures this nature for its project.  This is called by the workspace
	 * when natures are removed from the project using
	 * <code>IProject.setDescription</code> and should not be called directly by
	 * clients.  The nature extension id is removed from the list of natures before
	 * this method is called, and need not be removed here.
	 *
	 * Exceptions thrown by this method will be propagated back to the caller
	 * of <code>IProject.setDescription</code>, but the nature will still be
	 * removed from the project description.
	 * *
	 * @exception CoreException if this method fails.
	 */
	public void deconfigure() throws CoreException;

	/**
	 * Returns the project to which this project nature applies.
	 *
	 * @return the project handle
	 */
	public IProject getProject();

	/**
	 * Sets the project to which this nature applies.
	 * Used when instantiating this project nature runtime.
	 * This is called by <code>IProject.create()</code> or
	 * <code>IProject.setDescription()</code>
	 * and should not be called directly by clients.
	 *
	 * @param project the project to which this nature applies
	 */
	public void setProject(IProject project);
}
