X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/ICompilationUnit.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/ICompilationUnit.java index 4d44420..dd57c8f 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/ICompilationUnit.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/ICompilationUnit.java @@ -1,17 +1,23 @@ /******************************************************************************* - * Copyright (c) 2000, 2001, 2002 International Business Machines Corp. and others. + * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 + * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html + * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation - ******************************************************************************/ + *******************************************************************************/ package net.sourceforge.phpdt.core; +import java.util.HashMap; + +import net.sourceforge.phpdt.internal.core.ImportContainer; + import org.eclipse.core.runtime.IProgressMonitor; + + /** * Represents an entire Java compilation unit (.java source file). * Compilation unit elements need to be opened before they can be navigated or manipulated. @@ -24,8 +30,91 @@ import org.eclipse.core.runtime.IProgressMonitor; *

* This interface is not intended to be implemented by clients. *

- */ -public interface ICompilationUnit extends IJavaElement, ISourceReference, IParent, IOpenable, IWorkingCopy, ISourceManipulation, ICodeAssist { + */ +public interface ICompilationUnit extends IJavaElement, ISourceReference, IParent, IOpenable, IWorkingCopy, ISourceManipulation { +//extends IJavaElement, ISourceReference, IParent, IOpenable, IWorkingCopy, ISourceManipulation, ICodeAssist { + + /** + * Constant indicating that a reconcile operation should not return an AST. + * @since 3.0 + */ + public static final int NO_AST = 0; + + /** + * Changes this compilation unit handle into a working copy. A new IBuffer is + * created using this compilation unit handle's owner. Uses the primary owner is none was + * specified when this compilation unit handle was created. + *

+ * When switching to working copy mode, problems are reported to given + * IProblemRequestor. + *

+ *

+ * Once in working copy mode, changes to this compilation unit or its children are done in memory. + * Only the new buffer is affected. Using commitWorkingCopy(boolean, IProgressMonitor) + * will bring the underlying resource in sync with this compilation unit. + *

+ *

+ * If this compilation unit was already in working copy mode, an internal counter is incremented and no + * other action is taken on this compilation unit. To bring this compilation unit back into the original mode + * (where it reflects the underlying resource), discardWorkingCopy must be call as many + * times as becomeWorkingCopy. + *

+ * + * @param problemRequestor a requestor which will get notified of problems detected during + * reconciling as they are discovered. The requestor can be set to null indicating + * that the client is not interested in problems. + * @param monitor a progress monitor used to report progress while opening this compilation unit + * or null if no progress should be reported + * @throws JavaModelException if this compilation unit could not become a working copy. + * @see #discardWorkingCopy() + * @since 3.0 + */ + void becomeWorkingCopy(IProblemRequestor problemRequestor, IProgressMonitor monitor) throws JavaModelException; + /** + * Commits the contents of this working copy to its underlying resource. + * + *

It is possible that the contents of the original resource have changed + * since this working copy was created, in which case there is an update conflict. + * The value of the force parameter effects the resolution of + * such a conflict:

+ *

+ * Since 2.1, a working copy can be created on a not-yet existing compilation + * unit. In particular, such a working copy can then be committed in order to create + * the corresponding compilation unit. + *

+ * @param force a flag to handle the cases when the contents of the original resource have changed + * since this working copy was created + * @param monitor the given progress monitor + * @throws JavaModelException if this working copy could not commit. Reasons include: + * + * @since 3.0 + */ + void commitWorkingCopy(boolean force, IProgressMonitor monitor) throws JavaModelException; + /** + * Changes this compilation unit in working copy mode back to its original mode. + *

+ * This has no effect if this compilation unit was not in working copy mode. + *

+ *

+ * If becomeWorkingCopy was called several times on this + * compilation unit, discardWorkingCopy must be called as + * many times before it switches back to the original mode. + *

+ * + * @throws JavaModelException if this working copy could not return in its original mode. + * @see #becomeWorkingCopy(IProblemRequestor, IProgressMonitor) + * @since 3.0 + */ + void discardWorkingCopy() throws JavaModelException; /** * Creates and returns an import declaration in this compilation unit * with the given name. @@ -78,7 +167,7 @@ public interface ICompilationUnit extends IJavaElement, ISourceReference, IParen *
  • The name is not a valid package name (INVALID_NAME) * */ - //IPackageDeclaration createPackageDeclaration(String name, IProgressMonitor monitor) throws JavaModelException; +// IPackageDeclaration createPackageDeclaration(String name, IProgressMonitor monitor) throws JavaModelException; /** * Creates and returns a type in this compilation unit with the * given contents. If this compilation unit does not exist, one @@ -111,7 +200,7 @@ public interface ICompilationUnit extends IJavaElement, ISourceReference, IParen *
  • There was a naming collision with an existing type (NAME_COLLISION) * */ -IType createType(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws JavaModelException; +//IType createType(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws JavaModelException; /** * Returns all types declared in this compilation unit in the order * in which they appear in the source. @@ -147,7 +236,18 @@ IJavaElement getElementAt(int position) throws JavaModelException; * or "java.awt.*") * @return a handle onto the corresponding import declaration. The import declaration may or may not exist. */ -// IImportDeclaration getImport(String name) ; +IImportDeclaration getImport(String name) ; +/** + * Returns the import declarations in this compilation unit + * in the order in which they appear in the source. This is + * a convenience method - import declarations can also be + * accessed from a compilation unit's import container. + * + * @return the import declarations in this compilation unit + * @throws JavaModelException if this element does not exist or if an + * exception occurs while accessing its corresponding resource + */ +IImportDeclaration[] getImports() throws JavaModelException; /** * Returns the import container for this compilation unit. * This is a handle-only method. The import container may or @@ -156,7 +256,7 @@ IJavaElement getElementAt(int position) throws JavaModelException; * @return a handle onto the corresponding import container. The * import contain may or may not exist. */ -// IImportContainer getImportContainer(); +IImportContainer getImportContainer(); /** * Returns the import declarations in this compilation unit * in the order in which they appear in the source. This is @@ -166,7 +266,7 @@ IJavaElement getElementAt(int position) throws JavaModelException; * @exception JavaModelException if this element does not exist or if an * exception occurs while accessing its corresponding resource */ -// IImportDeclaration[] getImports() throws JavaModelException; +//IImportDeclaration[] getImports() throws JavaModelException; /** * Returns the first package declaration in this compilation unit with the given package name * (there normally is at most one package declaration). @@ -174,7 +274,7 @@ IJavaElement getElementAt(int position) throws JavaModelException; * * @param name the name of the package declaration as defined by JLS2 7.4. (For example, "java.lang") */ -// IPackageDeclaration getPackageDeclaration(String name); +IPackageDeclaration getPackageDeclaration(String name); /** * Returns the package declarations in this compilation unit * in the order in which they appear in the source. @@ -185,7 +285,20 @@ IJavaElement getElementAt(int position) throws JavaModelException; * @exception JavaModelException if this element does not exist or if an * exception occurs while accessing its corresponding resource */ -// IPackageDeclaration[] getPackageDeclarations() throws JavaModelException; +IPackageDeclaration[] getPackageDeclarations() throws JavaModelException; +/** + * Returns the primary compilation unit (whose owner is the primary owner) + * this working copy was created from, or this compilation unit if this a primary + * compilation unit. + *

    + * Note that the returned primary compilation unit can be in working copy mode. + *

    + * + * @return the primary compilation unit this working copy was created from, + * or this compilation unit if it is primary + * @since 3.0 + */ +ICompilationUnit getPrimary(); /** * Returns the top-level type declared in this compilation unit with the given simple type name. * The type name has to be a valid compilation unit name. @@ -195,7 +308,7 @@ IJavaElement getElementAt(int position) throws JavaModelException; * @return a handle onto the corresponding type. The type may or may not exist. * @see JavaConventions#validateCompilationUnitName(String name) */ -IType getType(String name); +IType getType(String name); /** * Returns the top-level types declared in this compilation unit * in the order in which they appear in the source.