content: /*******************************************************************************
   * Copyright (c) 2000, 2008 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.wst.jsdt.internal.ui;
  
  import org.eclipse.core.resources.IResource;
  import org.eclipse.wst.jsdt.core.JavaScriptModelException;
  
  /**
   * This interface allows to locate different
   * resources which are related to an object
   */
  public interface IResourceLocator {
  	/**
  	 * Returns the underlying finest granularity resource that contains
  	 * the element, or <code>null</code> if the element is not contained
  	 * in a resource (for example, a working copy, or an element contained
  	 * in an external archive).
  	 *
  	 * @param	element	the element for which the resource is located
  	 * @return the underlying resource
  	 * @exception JavaScriptModelException if the element does not exist or if an
  	 *		exception occurs while accessing its underlying resource
  	 * @see org.eclipse.wst.jsdt.core.IJavaScriptElement#getUnderlyingResource()
  	 */
  	IResource getUnderlyingResource(Object element) throws JavaScriptModelException;
  	/**
  	 * Returns the resource that corresponds directly to the element,
  	 * or <code>null</code> if there is no resource that corresponds to
  	 * the element.
  	 *
  	 * <p>For example, the corresponding resource for an <code>IJavaScriptUnit</code>
  	 * is its underlying <code>IFile</code>. The corresponding resource for
  	 * an <code>IPackageFragment</code> that is not contained in an archive 
  	 * is its underlying <code>IFolder</code>. An <code>IPackageFragment</code>
  	 * contained in an archive has no corresponding resource. Similarly, there
  	 * are no corresponding resources for <code>IMethods</code>,
  	 * <code>IFields</code>, etc.
  	 *
  	 * @param	element	the element for which the resource is located
  	 * @return the corresponding resource
  	 * @exception JavaScriptModelException if the element does not exist or if an
  	 *		exception occurs while accessing its corresponding resource
  	 * @see org.eclipse.wst.jsdt.core.IJavaScriptElement#getCorrespondingResource()
  	 */
  	IResource getCorrespondingResource(Object element) throws JavaScriptModelException;
  	/**
  	 * Returns the resource that contains the element. If the element is not
  	 * directly contained by a resource then a helper resource or <code>null</code>
  	 * is returned. Clients define the helper resource as needed.
  	 *
  	 * @param	element	the element for which the resource is located
  	 * @return the containing resource
  	 * @exception JavaScriptModelException if the element does not exist or if an
  	 *		exception occurs while accessing its containing resource
  	 */
  	IResource getContainingResource(Object element) throws JavaScriptModelException;
  }
  