| /******************************************************************************* |
| * Copyright (c) 2005, 2007 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 |
| * |
| |
| *******************************************************************************/ |
| package org.eclipse.dltk.core; |
| |
| import java.util.Map; |
| |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| |
| /** |
| * A script project represents a view of a project resource in terms of DLTK |
| * elements such as script folders, types, methods and fields. A project may |
| * contain several project fragments, which contain script folders. A project |
| * fragment corresponds to an underlying folder or an archive (like JAR). |
| * <p> |
| * Each script project has a buildpath, defining which folders contain source |
| * code and where required libraries are located. <s>Each script project also |
| * has an output location, defining where the builder writes output files.</s> A |
| * project that references folders in another project can access the folders by |
| * including the required project in a buildpath entry. The DLTK model will |
| * present the source elements in the required project; <s>when building, the |
| * compiler will use the corresponding generated class files from the required |
| * project's output location(s))</s>. The buildpath format is a sequence of |
| * buildpath entries describing the location and contents of project fragments . |
| * </p> |
| * Script project elements need to be opened before they can be navigated or |
| * manipulated. The children of a script project are the project fragments that |
| * are defined by the buildpath and contained in this project (in other words, |
| * it does not include project fragments for other projects). |
| * |
| * The children (i.e. the project fragments) appear in the order they are |
| * defined by the buildpath. </p> |
| * <p> |
| * An instance of one of these handles can be created via |
| * <code>DLTKCore.create(project)</code>. |
| * </p> |
| * |
| * @see DLTKCore#create(org.eclipse.core.resources.IProject) |
| * @see IBuildpathEntry |
| * @noimplement This interface is not intended to be implemented by clients. |
| */ |
| public interface IScriptProject extends IModelElement, IOpenable, IParent { |
| |
| /** |
| * Returns the <code>IProject</code> on which this |
| * <code>IScriptProject</code> was created. This is handle-only method. |
| * |
| * @return the <code>IProject</code> on which this |
| * <code>IScriptProject</code> was created |
| */ |
| IProject getProject(); |
| |
| /** |
| * Returns all of the project fragments contained in this project, |
| * identified on this project's resolved buildpath. The result does not |
| * include project fragments in other projects referenced on this project's |
| * buildpath. |
| * |
| * <p> |
| * NOTE: This is equivalent to <code>getChildren()</code>. |
| * |
| * @return all of the project fragments contained in this project, |
| * identified on this project's resolved buildpath |
| * @exception ModelException |
| * if this element does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| */ |
| IProjectFragment[] getProjectFragments() throws ModelException; |
| |
| /** |
| * Helper method for returning one option value only. Equivalent to |
| * <code>(String)this.getOptions(inheritDLTKCoreOptions).get(optionName)</code> |
| * Note that it may answer <code>null</code> if this option does not exist, |
| * or if there is no custom value for it. |
| * <p> |
| * For a complete description of the configurable options, see |
| * <code>DLTKCore#getDefaultOptions</code>. |
| * </p> |
| * |
| * @param optionName |
| * the name of an option |
| * @param inheritDLTKCoreOptions |
| * - boolean indicating whether DLTKCore options should be |
| * inherited as well |
| * @return the String value of a given option |
| * @see DLTKCore#getDefaultOptions() |
| */ |
| String getOption(String optionName, boolean inheritDLTKCoreOptions); |
| |
| /** |
| * Returns the table of the current custom options for this project. |
| * Projects remember their custom options, in other words, only the options |
| * different from the the DLTKCore global options for the workspace. A |
| * boolean argument allows to directly merge the project options with global |
| * ones from <code>DLTKCore</code>. |
| * <p> |
| * For a complete description of the configurable options, see |
| * <code>DLTKCore#getDefaultOptions</code>. |
| * </p> |
| * |
| * @param inheritDLTKCoreOptions |
| * - boolean indicating whether DLTKCore options should be |
| * inherited as well |
| * @return table of current settings of all options (key type: |
| * <code>String</code>; value type: <code>String</code>) |
| * @see DLTKCore#getDefaultOptions() |
| * |
| */ |
| Map<String, String> getOptions(boolean inheritDLTKCoreOptions); |
| |
| /** |
| * Helper method for setting one option value only. Equivalent to |
| * |
| * <code>Map options = this.getOptions(false); map.put(optionName, optionValue); this.setOptions(map)</code> |
| * <p> |
| * For a complete description of the configurable options, see |
| * <code>DLTKCore#getDefaultOptions</code>. |
| * </p> |
| * |
| * @param optionName |
| * the name of an option |
| * @param optionValue |
| * the value of the option to set |
| * @see DLTKCore#getDefaultOptions() |
| * |
| */ |
| void setOption(String optionName, String optionValue); |
| |
| /** |
| * Sets the project custom options. All and only the options explicitly |
| * included in the given table are remembered; all previous option settings |
| * are forgotten, including ones not explicitly mentioned. |
| * <p> |
| * For a complete description of the configurable options, see |
| * <code>DLTKCore#getDefaultOptions</code>. |
| * </p> |
| * |
| * @param newOptions |
| * the new options (key type: <code>String</code>; value type: |
| * <code>String</code>), or <code>null</code> to flush all custom |
| * options (clients will automatically get the global DLTKCore |
| * options). |
| * @see DLTKCore#getDefaultOptions() |
| * |
| */ |
| void setOptions(Map newOptions); |
| |
| /** |
| * Returns a project fragment for the given resource, which must either be a |
| * folder representing the root of source folders, or <code>.zip</code> |
| * file. This is a handle-only method. The underlying resource may or may |
| * not exist. |
| * |
| * @param resource |
| * the given resource |
| * @return a project fragment for the given resource, which must either be a |
| * folder representing the top of source folders, or a |
| * <code>.zip</code> file |
| */ |
| IProjectFragment getProjectFragment(IResource resource); |
| |
| /** |
| * Returns a package fragment root for the ZIP at the specified file system |
| * path. This is a handle-only method. The underlying |
| * <code>java.io.File</code> may or may not exist. No resource is associated |
| * with this local ZIP package fragment root. |
| * |
| * @param zipPath |
| * the jars's file system path |
| * @return a package fragment root for the JAR at the specified file system |
| * path |
| */ |
| IProjectFragment getProjectFragment(String zipPath); |
| |
| /** |
| * Returns a project fragment for an external library or a source folder at |
| * the specified file system path. This is a handle-only method. The |
| * underlying <code>java.io.File</code> may or may not exist. No resource is |
| * associated with this local library package fragment root. |
| * |
| * @param path |
| * the library's file system path |
| * @return a package fragment root for the external library at the specified |
| * file system path |
| * @since 3.0 |
| */ |
| IProjectFragment getProjectFragment(IPath path); |
| |
| /** |
| * Sets the buildpath of this project using a list of buildpath entries. |
| * |
| * Setting the buildpath to <code>null</code> specifies a default buildpath |
| * (the project root). Setting the buildpath to an empty array specifies an |
| * empty buildpath. |
| * <p> |
| * If a cycle is detected while setting this buildpath, an error marker will |
| * be added to the project closing the cycle. To avoid this problem, use |
| * <code>hasBuildpathCycle(IBuildpathEntry[] entries)</code> before setting |
| * the buildpath. |
| * <p> |
| * This operation acquires a lock on the workspace's root. |
| * |
| * @param entries |
| * a list of buildpath entries |
| * @param monitor |
| * the given progress monitor |
| * @exception ModelException |
| * if the buildpath could not be set. Reasons include: |
| * <ul> |
| * <li> This model element does not exist |
| * (ELEMENT_DOES_NOT_EXIST)</li> <li> The buildpath is being |
| * modified during resource change event notification |
| * (CORE_EXCEPTION) <li> The buildpath failed the validation |
| * check |
| * </ul> |
| * @see IBuildpathEntry |
| */ |
| void setRawBuildpath(IBuildpathEntry[] entries, IProgressMonitor monitor) |
| throws ModelException; |
| |
| /** |
| * Returns true if this is valid DLTK Project. |
| * |
| */ |
| public boolean isValid(); |
| |
| /** |
| * Decodes the buildpath entry that has been encoded in the given string in |
| * the context of this project. Returns null if the encoded entry is |
| * malformed. |
| * |
| * @param encodedEntry |
| * the encoded buildpath entry |
| * @return the decoded buildpath entry, or <code>null</code> if unable to |
| * decode it |
| * |
| */ |
| IBuildpathEntry decodeBuildpathEntry(String encodedEntry); |
| |
| /** |
| * Encodes the given buildpath entry into a string in the context of this |
| * project. |
| * |
| * @param buildpathEntry |
| * the buildpath entry to encode |
| * @return the encoded buildpath entry |
| * |
| */ |
| public String encodeBuildpathEntry(IBuildpathEntry buildpathEntry); |
| |
| IBuildpathEntry[] getRawBuildpath() throws ModelException; |
| |
| /** |
| * This is a helper method returning the resolved buildpath for the project |
| * as a list of simple (non-variable, non-container) buildpath entries. All |
| * buildpath variable and buildpath container entries in the project's raw |
| * buildpath will be replaced by the simple buildpath entries they resolve |
| * to. |
| * <p> |
| * The resulting resolved buildpath is accurate for the given point in time. |
| * If the project's raw buildpath is later modified, or if buildpath |
| * variables are changed, the resolved buildpath can become out of date. |
| * Because of this, hanging on resolved buildpath is not recommended. |
| * </p> |
| * |
| * @param ignoreUnresolvedEntry |
| * indicates how to handle unresolvable variables and containers; |
| * <code>true</code> indicates that missing variables and |
| * unresolvable buildpath containers should be silently ignored, |
| * and that the resulting list should consist only of the entries |
| * that could be successfully resolved; <code>false</code> |
| * indicates that a <code>ModelException</code> should be thrown |
| * for the first unresolved variable or container |
| * @return the resolved buildpath for the project as a list of simple |
| * buildpath entries, where all buildpath variable and container |
| * entries have been resolved and substituted with their final |
| * target entries |
| * @exception ModelException |
| * in one of the corresponding situation: |
| * <ul> |
| * <li>this element does not exist</li> |
| * <li>an exception occurs while accessing its corresponding |
| * resource</li> |
| * <li>a buildpath variable or buildpath container was not |
| * resolvable and <code>ignoreUnresolvedEntry</code> is |
| * <code>false</code>.</li> |
| * </ul> |
| * @see IBuildpathEntry |
| */ |
| IBuildpathEntry[] getResolvedBuildpath(boolean ignoreUnresolvedEntry) |
| throws ModelException; |
| |
| /** |
| * Returns the <code>IModelElement</code> corresponding to the given |
| * buildpath-relative path, or <code>null</code> if no such |
| * <code>IModelElement</code> is found. The result is one of an |
| * <code>ISourceModule</code>, <code>IClassFile</code>, or |
| * <code>IScriptFolder</code>. |
| * <p> |
| * When looking for a package fragment, there might be several potential |
| * matches; only one of them is returned. |
| * |
| * <p> |
| * For example, the path "java/lang/Object.java", would result in the |
| * <code>ISourceModule</code> corresponding to "java.lang.Object". The path |
| * "java/lang" would result in the <code>IScriptFolder</code> for |
| * "java.lang". |
| * |
| * @param path |
| * the given buildpath-relative path |
| * @exception ModelException |
| * if the given path is <code>null</code> or absolute |
| * @return the <code>IModelElement</code> corresponding to the given |
| * buildpath-relative path, or <code>null</code> if no such |
| * <code>IModelElement</code> is found |
| */ |
| IModelElement findElement(IPath path) throws ModelException; |
| |
| /** |
| * Returns the <code>IModelElement</code> corresponding to the given |
| * buildpath-relative path, or <code>null</code> if no such |
| * <code>IModelElement</code> is found. The result is one of an |
| * <code>ISourceModule</code>, <code>IClassFile</code>, or |
| * <code>IScriptFolder</code>. If it is an <code>ISourceModule</code>, its |
| * owner is the given owner. |
| * <p> |
| * When looking for a package fragment, there might be several potential |
| * matches; only one of them is returned. |
| * |
| * <p> |
| * For example, the path "java/lang/Object.java", would result in the |
| * <code>ISourceModule</code> corresponding to "java.lang.Object". The path |
| * "java/lang" would result in the <code>IScriptFolder</code> for |
| * "java.lang". |
| * |
| * @param path |
| * the given buildpath-relative path |
| * @param owner |
| * the owner of the returned compilation unit, ignored if it is |
| * not a compilation unit. |
| * @exception ModelException |
| * if the given path is <code>null</code> or absolute |
| * @return the <code>IModelElement</code> corresponding to the given |
| * buildpath-relative path, or <code>null</code> if no such |
| * <code>IModelElement</code> is found |
| * |
| */ |
| IModelElement findElement(IPath path, WorkingCopyOwner owner) |
| throws ModelException; |
| |
| /** |
| * Returns the first existing package fragment on this project's buildpath |
| * whose path matches the given (absolute) path, or <code>null</code> if |
| * none exist. The path can be: - internal to the workbench: "/Project/src" |
| * - external to the workbench: "c:/jdk/classes.zip/java/lang" |
| * |
| * @param path |
| * the given absolute path |
| * @exception ModelException |
| * if this project does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @return the first existing package fragment on this project's buildpath |
| * whose path matches the given (absolute) path, or |
| * <code>null</code> if none exist |
| */ |
| IScriptFolder findScriptFolder(IPath path) throws ModelException; |
| |
| /** |
| * Returns the existing package fragment root on this project's buildpath |
| * whose path matches the given (absolute) path, or <code>null</code> if one |
| * does not exist. The path can be: - internal to the workbench: |
| * "/Compiler/src" - external to the workbench: "c:/jdk/classes.zip" |
| * |
| * @param path |
| * the given absolute path |
| * @exception ModelException |
| * if this project does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @return the existing package fragment root on this project's buildpath |
| * whose path matches the given (absolute) path, or |
| * <code>null</code> if one does not exist |
| */ |
| IProjectFragment findProjectFragment(IPath path) throws ModelException; |
| |
| /** |
| * Returns the existing package fragment roots identified by the given |
| * entry. Note that a buildpath entry that refers to another project may |
| * have more than one root (if that project has more than on root containing |
| * source), and buildpath entries within the current project identify a |
| * single root. |
| * <p> |
| * If the buildpath entry denotes a variable, it will be resolved and return |
| * the roots of the target entry (empty if not resolvable). |
| * <p> |
| * If the buildpath entry denotes a container, it will be resolved and |
| * return the roots corresponding to the set of container entries (empty if |
| * not resolvable). |
| * |
| * @param entry |
| * the given entry |
| * @return the existing package fragment roots identified by the given entry |
| * @see IBuildpathContainer |
| * |
| */ |
| IProjectFragment[] findProjectFragments(IBuildpathEntry entry); |
| |
| /** |
| * Returns the first type found following this project's buildpath with the |
| * given fully qualified name or <code>null</code> if none is found. The |
| * fully qualified name is a dot-separated name. For example, a class B |
| * defined as a member type of a class A in package x.y should have a the |
| * fully qualified name "x.y.A.B". |
| * |
| * Note that in order to be found, a type name (or its toplevel enclosing |
| * type name) must match its corresponding compilation unit name. As a |
| * consequence, secondary types cannot be found using this functionality. To |
| * find secondary types use {@link #findType(String, IProgressMonitor)} |
| * instead. |
| * |
| * @param fullyQualifiedName |
| * the given fully qualified name |
| * @exception ModelException |
| * if this project does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @return the first type found following this project's buildpath with the |
| * given fully qualified name or <code>null</code> if none is found |
| * @see IType#getFullyQualifiedName(char) |
| * |
| */ |
| IType findType(String fullyQualifiedName) throws ModelException; |
| |
| /** |
| * Same functionality as {@link #findType(String)} but also look for |
| * secondary types if given name does not match a compilation unit name. |
| * |
| * @param fullyQualifiedName |
| * the given fully qualified name |
| * @param progressMonitor |
| * the progress monitor to report progress to, or |
| * <code>null</code> if no progress monitor is provided |
| * @exception ModelException |
| * if this project does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @return the first type found following this project's buildpath with the |
| * given fully qualified name or <code>null</code> if none is found |
| * @see IType#getFullyQualifiedName(char) |
| * |
| */ |
| IType findType(String fullyQualifiedName, IProgressMonitor progressMonitor) |
| throws ModelException; |
| |
| /** |
| * Returns the first type found following this project's buildpath with the |
| * given fully qualified name or <code>null</code> if none is found. The |
| * fully qualified name is a dot-separated name. For example, a class B |
| * defined as a member type of a class A in package x.y should have a the |
| * fully qualified name "x.y.A.B". If the returned type is part of a |
| * compilation unit, its owner is the given owner. |
| * |
| * Note that in order to be found, a type name (or its toplevel enclosing |
| * type name) must match its corresponding compilation unit name. As a |
| * consequence, secondary types cannot be found using this functionality. To |
| * find secondary types use |
| * {@link #findType(String, WorkingCopyOwner, IProgressMonitor)} instead. |
| * |
| * @param fullyQualifiedName |
| * the given fully qualified name |
| * @param owner |
| * the owner of the returned type's compilation unit |
| * @exception ModelException |
| * if this project does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @return the first type found following this project's buildpath with the |
| * given fully qualified name or <code>null</code> if none is found |
| * @see IType#getFullyQualifiedName(char) |
| * |
| */ |
| IType findType(String fullyQualifiedName, WorkingCopyOwner owner) |
| throws ModelException; |
| |
| /** |
| * Same functionality as {@link #findType(String, WorkingCopyOwner)} but |
| * also look for secondary types if given name does not match a compilation |
| * unit name. |
| * |
| * @param fullyQualifiedName |
| * the given fully qualified name |
| * @param owner |
| * the owner of the returned type's compilation unit |
| * @param progressMonitor |
| * the progress monitor to report progress to, or |
| * <code>null</code> if no progress monitor is provided |
| * @exception ModelException |
| * if this project does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @return the first type found following this project's buildpath with the |
| * given fully qualified name or <code>null</code> if none is found |
| * @see IType#getFullyQualifiedName(char) |
| * |
| */ |
| IType findType(String fullyQualifiedName, WorkingCopyOwner owner, |
| IProgressMonitor progressMonitor) throws ModelException; |
| |
| /** |
| * Returns the first type found following this project's buildpath with the |
| * given package name and type qualified name or <code>null</code> if none |
| * is found. The package name is a dot-separated name. The type qualified |
| * name is also a dot-separated name. For example, a class B defined as a |
| * member type of a class A should have the type qualified name "A.B". |
| * |
| * Note that in order to be found, a type name (or its toplevel enclosing |
| * type name) must match its corresponding compilation unit name. As a |
| * consequence, secondary types cannot be found using this functionality. To |
| * find secondary types use |
| * {@link #findType(String, String, IProgressMonitor)} instead. |
| * |
| * @param packageName |
| * the given package name |
| * @param typeQualifiedName |
| * the given type qualified name |
| * @exception ModelException |
| * if this project does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @return the first type found following this project's buildpath with the |
| * given package name and type qualified name or <code>null</code> |
| * if none is found |
| * @see IType#getTypeQualifiedName(char) |
| * |
| */ |
| IType findType(String packageName, String typeQualifiedName) |
| throws ModelException; |
| |
| /** |
| * Same functionality as {@link #findType(String, String)} but also look for |
| * secondary types if given name does not match a compilation unit name. |
| * |
| * @param packageName |
| * the given package name |
| * @param typeQualifiedName |
| * the given type qualified name |
| * @param progressMonitor |
| * the progress monitor to report progress to, or |
| * <code>null</code> if no progress monitor is provided |
| * @exception ModelException |
| * if this project does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @return the first type found following this project's buildpath with the |
| * given fully qualified name or <code>null</code> if none is found |
| * @see IType#getFullyQualifiedName(char) |
| * |
| */ |
| IType findType(String packageName, String typeQualifiedName, |
| IProgressMonitor progressMonitor) throws ModelException; |
| |
| /** |
| * Returns the first type found following this project's buildpath with the |
| * given package name and type qualified name or <code>null</code> if none |
| * is found. The package name is a dot-separated name. The type qualified |
| * name is also a dot-separated name. For example, a class B defined as a |
| * member type of a class A should have the type qualified name "A.B". If |
| * the returned type is part of a compilation unit, its owner is the given |
| * owner. |
| * |
| * Note that in order to be found, a type name (or its toplevel enclosing |
| * type name) must match its corresponding compilation unit name. As a |
| * consequence, secondary types cannot be found using this functionality. To |
| * find secondary types use |
| * {@link #findType(String, String, WorkingCopyOwner, IProgressMonitor)} |
| * instead. |
| * |
| * @param packageName |
| * the given package name |
| * @param typeQualifiedName |
| * the given type qualified name |
| * @param owner |
| * the owner of the returned type's compilation unit |
| * @exception ModelException |
| * if this project does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @return the first type found following this project's buildpath with the |
| * given package name and type qualified name or <code>null</code> |
| * if none is found |
| * @see IType#getTypeQualifiedName(char) |
| * |
| */ |
| IType findType(String packageName, String typeQualifiedName, |
| WorkingCopyOwner owner) throws ModelException; |
| |
| /** |
| * Same functionality as {@link #findType(String, String, WorkingCopyOwner)} |
| * but also look for secondary types if given name does not match a |
| * compilation unit name. |
| * |
| * @param packageName |
| * the given package name |
| * @param typeQualifiedName |
| * the given type qualified name |
| * @param owner |
| * the owner of the returned type's compilation unit |
| * @param progressMonitor |
| * the progress monitor to report progress to, or |
| * <code>null</code> if no progress monitor is provided |
| * @exception ModelException |
| * if this project does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @return the first type found following this project's buildpath with the |
| * given fully qualified name or <code>null</code> if none is found |
| * @see IType#getFullyQualifiedName(char) |
| * |
| */ |
| IType findType(String packageName, String typeQualifiedName, |
| WorkingCopyOwner owner, IProgressMonitor progressMonitor) |
| throws ModelException; |
| |
| /** |
| * Returns the raw buildpath for the project as defined by its |
| * <code>.buildpath</code> file from disk, or <code>null</code> if unable to |
| * read the file. |
| * <p> |
| * This buildpath may differ from the in-memory buildpath returned by |
| * <code>getRawBuildpath</code>, in case the automatic reconciliation |
| * mechanism has not been performed yet. Usually, any change to the |
| * <code>.buildpath</code> file is automatically noticed and reconciled at |
| * the next resource change notification event. However, if the file is |
| * modified within an operation, where this change needs to be taken into |
| * account before the operation ends, then the buildpath from disk can be |
| * read using this method, and further assigned to the project using |
| * <code>setRawBuildpath(...)</code>. |
| * </p> |
| * <p> |
| * Buildpath variable and buildpath container entries can be resolved using |
| * the helper method <code>getResolvedBuildpath</code>; buildpath variable |
| * entries also can be resolved individually using |
| * <code>DLTKCore#getBuildpathVariable</code>). |
| * </p> |
| * <p> |
| * Note that no check is performed whether the project has the script nature |
| * set, allowing an existing <code>.buildpath</code> file to be considered |
| * independantly (unlike <code>getRawBuildpath</code> which requires the |
| * script nature to be associated with the project). |
| * </p> |
| * <p> |
| * In order to manually force a project buildpath refresh, one can simply |
| * assign the project buildpath using the result of this method, as follows: |
| * |
| * <code>proj.setRawBuildpath(proj.readRawBuildpath(), proj.readOutputLocation(), monitor)</code> |
| * (note that the <code>readRawBuildpath/readOutputLocation</code> methods |
| * could return <code>null</code>). |
| * </p> |
| * |
| * @return the raw buildpath from disk for the project, as a list of |
| * buildpath entries |
| * @see #getRawBuildpath() |
| * @see IBuildpathEntry |
| * |
| */ |
| IBuildpathEntry[] readRawBuildpath(); |
| |
| /** |
| * Returns all of the existing project fragments that exist on the |
| * buildpath, in the order they are defined by the buildpath. |
| * |
| * @return all of the existing project fragments that exist on the buildpath |
| * @exception ModelException |
| * if this element does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| */ |
| IProjectFragment[] getAllProjectFragments() throws ModelException; |
| |
| public Object[] getForeignResources() throws ModelException; |
| |
| /** |
| * Returns whether the given element is on the buildpath of this project, |
| * that is, referenced from a buildpath entry and not explicitly excluded |
| * using an exclusion pattern. |
| * |
| * @param element |
| * the given element |
| * @return <code>true</code> if the given element is on the buildpath of |
| * this project, <code>false</code> otherwise |
| * @see IBuildpathEntry#getInclusionPatterns() |
| * @see IBuildpathEntry#getExclusionPatterns() |
| * |
| */ |
| boolean isOnBuildpath(IModelElement element); |
| |
| /** |
| * Returns whether the given resource is on the buildpath of this project, |
| * that is, referenced from a buildpath entry and not explicitly excluded |
| * using an exclusion pattern. |
| * |
| * @param resource |
| * the given resource |
| * @return <code>true</code> if the given resource is on the buildpath of |
| * this project, <code>false</code> otherwise |
| * @see IBuildpathEntry#getInclusionPatterns() |
| * @see IBuildpathEntry#getExclusionPatterns() |
| * |
| */ |
| boolean isOnBuildpath(IResource resource); |
| |
| /** |
| * Creates and returns a type hierarchy for all types in the given region, |
| * considering subtypes within that region. |
| * |
| * @param monitor |
| * the given progress monitor |
| * @param region |
| * the given region |
| * @exception JavaModelException |
| * if this element does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @exception IllegalArgumentException |
| * if region is <code>null</code> |
| * @return a type hierarchy for all types in the given region, considering |
| * subtypes within that region |
| */ |
| ITypeHierarchy newTypeHierarchy(IRegion region, IProgressMonitor monitor) |
| throws ModelException; |
| |
| /** |
| * Creates and returns a type hierarchy for all types in the given region, |
| * considering subtypes within that region and considering types in the |
| * working copies with the given owner. In other words, the owner's working |
| * copies will take precedence over their original compilation units in the |
| * workspace. |
| * <p> |
| * Note that if a working copy is empty, it will be as if the original |
| * compilation unit had been deleted. |
| * <p> |
| * |
| * @param monitor |
| * the given progress monitor |
| * @param region |
| * the given region |
| * @param owner |
| * the owner of working copies that take precedence over their |
| * original compilation units |
| * @exception JavaModelException |
| * if this element does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * @exception IllegalArgumentException |
| * if region is <code>null</code> |
| * @return a type hierarchy for all types in the given region, considering |
| * subtypes within that region |
| * @since 3.0 |
| */ |
| ITypeHierarchy newTypeHierarchy(IRegion region, WorkingCopyOwner owner, |
| IProgressMonitor monitor) throws ModelException; |
| |
| /** |
| * Creates and returns a type hierarchy for the given type considering |
| * subtypes in the specified region. |
| * |
| * @param type |
| * the given type |
| * @param region |
| * the given region |
| * @param monitor |
| * the given monitor |
| * |
| * @exception JavaModelException |
| * if this element does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * |
| * @exception IllegalArgumentException |
| * if type or region is <code>null</code> |
| * @return a type hierarchy for the given type considering subtypes in the |
| * specified region |
| */ |
| ITypeHierarchy newTypeHierarchy(IType type, IRegion region, |
| IProgressMonitor monitor) throws ModelException; |
| |
| /** |
| * Creates and returns a type hierarchy for the given type considering |
| * subtypes in the specified region and considering types in the working |
| * copies with the given owner. In other words, the owner's working copies |
| * will take precedence over their original compilation units in the |
| * workspace. |
| * <p> |
| * Note that if a working copy is empty, it will be as if the original |
| * compilation unit had been deleted. |
| * <p> |
| * |
| * @param type |
| * the given type |
| * @param region |
| * the given region |
| * @param monitor |
| * the given monitor |
| * @param owner |
| * the owner of working copies that take precedence over their |
| * original compilation units |
| * |
| * @exception JavaModelException |
| * if this element does not exist or if an exception occurs |
| * while accessing its corresponding resource |
| * |
| * @exception IllegalArgumentException |
| * if type or region is <code>null</code> |
| * @return a type hierarchy for the given type considering subtypes in the |
| * specified region |
| * @since 3.0 |
| */ |
| ITypeHierarchy newTypeHierarchy(IType type, IRegion region, |
| WorkingCopyOwner owner, IProgressMonitor monitor) |
| throws ModelException; |
| |
| public IScriptFolder[] getScriptFolders() throws ModelException; |
| |
| public IDLTKLanguageToolkit getLanguageToolkit(); |
| } |