X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IJavaElementDelta.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IJavaElementDelta.java index f13308f..c506cd8 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IJavaElementDelta.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/IJavaElementDelta.java @@ -14,89 +14,107 @@ import org.eclipse.core.resources.IResourceDelta; /** * A Java element delta describes changes in Java element between two discrete - * points in time. Given a delta, clients can access the element that has + * points in time. Given a delta, clients can access the element that has * changed, and any children that have changed. *

- * Deltas have a different status depending on the kind of change they represent. - * The list below summarizes each status (as returned by getKind) - * and its meaning (see individual constants for a more detailled description): + * Deltas have a different status depending on the kind of change they + * represent. The list below summarizes each status (as returned by + * getKind) and its meaning (see individual constants for a more + * detailled description): *

*

*

- * Move operations are indicated by other change flags, layered on top - * of the change flags described above. If element A is moved to become B, - * the delta for the change in A will have status REMOVED, - * with change flag F_MOVED_TO. In this case, - * getMovedToElement on delta A will return the handle for B. - * The delta for B will have status ADDED, with change flag - * F_MOVED_FROM, and getMovedFromElement on delta - * B will return the handle for A. (Note, the handle to A in this case represents - * an element that no longer exists). + * Move operations are indicated by other change flags, layered on top of the + * change flags described above. If element A is moved to become B, the delta + * for the change in A will have status REMOVED, with change + * flag F_MOVED_TO. In this case, getMovedToElement + * on delta A will return the handle for B. The delta for B will have status + * ADDED, with change flag F_MOVED_FROM, and + * getMovedFromElement on delta B will return the handle for A. + * (Note, the handle to A in this case represents an element that no longer + * exists). *

*

- * Note that the move change flags only describe the changes to a single element, they - * do not imply anything about the parent or children of the element. + * Note that the move change flags only describe the changes to a single + * element, they do not imply anything about the parent or children of the + * element. *

*

- * The F_ADDED_TO_CLASSPATH, F_REMOVED_FROM_CLASSPATH and - * F_CLASSPATH_REORDER flags are triggered by changes to a project's classpath. They do not mean that - * the underlying resource was added, removed or changed. For example, if a project P already contains a folder src, then - * adding a classpath entry with the 'P/src' path to the project's classpath will result in an IJavaElementDelta - * with the F_ADDED_TO_CLASSPATH flag for the IPackageFragmentRoot P/src. - * On the contrary, if a resource is physically added, removed or changed and this resource corresponds to a classpath - * entry of the project, then an IJavaElementDelta with the ADDED, + * The F_ADDED_TO_CLASSPATH, + * F_REMOVED_FROM_CLASSPATH and F_CLASSPATH_REORDER + * flags are triggered by changes to a project's classpath. They do not mean + * that the underlying resource was added, removed or changed. For example, if a + * project P already contains a folder src, then adding a classpath entry with + * the 'P/src' path to the project's classpath will result in an + * IJavaElementDelta with the F_ADDED_TO_CLASSPATH + * flag for the IPackageFragmentRoot P/src. On the contrary, if a + * resource is physically added, removed or changed and this resource + * corresponds to a classpath entry of the project, then an + * IJavaElementDelta with the ADDED, * REMOVED, or CHANGED kind will be fired. *

*

- * Note that when a source attachment path or a source attachment root path is changed, then the flags of the delta contain - * both F_SOURCEATTACHED and F_SOURCEDETTACHED. + * Note that when a source attachment path or a source attachment root path is + * changed, then the flags of the delta contain both + * F_SOURCEATTACHED and F_SOURCEDETTACHED. *

*

- * No assumptions should be made on whether the java element delta tree is rooted at the IJavaModel - * level or not. + * No assumptions should be made on whether the java element delta tree is + * rooted at the IJavaModel level or not. *

*

- * IJavaElementDelta object are not valid outside the dynamic scope - * of the notification. + * IJavaElementDelta object are not valid outside the dynamic + * scope of the notification. *

*

* This interface is not intended to be implemented by clients. @@ -105,133 +123,148 @@ import org.eclipse.core.resources.IResourceDelta; public interface IJavaElementDelta { /** - * Status constant indicating that the element has been added. - * Note that an added java element delta has no children, as they are all implicitely added. + * Status constant indicating that the element has been added. Note that an + * added java element delta has no children, as they are all implicitely + * added. */ public int ADDED = 1; /** - * Status constant indicating that the element has been removed. - * Note that a removed java element delta has no children, as they are all implicitely removed. + * Status constant indicating that the element has been removed. Note that a + * removed java element delta has no children, as they are all implicitely + * removed. */ public int REMOVED = 2; /** - * Status constant indicating that the element has been changed, - * as described by the change flags. + * Status constant indicating that the element has been changed, as + * described by the change flags. * * @see #getFlags */ public int CHANGED = 4; /** - * Change flag indicating that the content of the element has changed. - * This flag is only valid for elements which correspond to files. + * Change flag indicating that the content of the element has changed. This + * flag is only valid for elements which correspond to files. */ public int F_CONTENT = 0x0001; /** * Change flag indicating that the modifiers of the element have changed. - * This flag is only valid if the element is an IMember. + * This flag is only valid if the element is an IMember. */ public int F_MODIFIERS = 0x0002; /** - * Change flag indicating that there are changes to the children of the element. - * This flag is only valid if the element is an IParent. + * Change flag indicating that there are changes to the children of the + * element. This flag is only valid if the element is an + * IParent. */ public int F_CHILDREN = 0x0008; /** * Change flag indicating that the element was moved from another location. - * The location of the old element can be retrieved using getMovedFromElement. + * The location of the old element can be retrieved using + * getMovedFromElement. */ public int F_MOVED_FROM = 0x0010; /** * Change flag indicating that the element was moved to another location. - * The location of the new element can be retrieved using getMovedToElement. + * The location of the new element can be retrieved using + * getMovedToElement. */ public int F_MOVED_TO = 0x0020; /** - * Change flag indicating that a classpath entry corresponding to the element has been added to the project's classpath. - * This flag is only valid if the element is an IPackageFragmentRoot. + * Change flag indicating that a classpath entry corresponding to the + * element has been added to the project's classpath. This flag is only + * valid if the element is an IPackageFragmentRoot. */ public int F_ADDED_TO_CLASSPATH = 0x0040; /** - * Change flag indicating that a classpath entry corresponding to the element has been removed from the project's - * classpath. This flag is only valid if the element is an IPackageFragmentRoot. + * Change flag indicating that a classpath entry corresponding to the + * element has been removed from the project's classpath. This flag is only + * valid if the element is an IPackageFragmentRoot. */ public int F_REMOVED_FROM_CLASSPATH = 0x0080; /** - * Change flag indicating that a classpath entry corresponding to the element has changed position in the project's - * classpath. This flag is only valid if the element is an IPackageFragmentRoot. + * Change flag indicating that a classpath entry corresponding to the + * element has changed position in the project's classpath. This flag is + * only valid if the element is an IPackageFragmentRoot. + * * @deprecated Use F_REORDER instead. */ public int F_CLASSPATH_REORDER = 0x0100; + /** - * Change flag indicating that the element has changed position relatively to its siblings. - * If the element is an IPackageFragmentRoot, a classpath entry corresponding - * to the element has changed position in the project's classpath. + * Change flag indicating that the element has changed position relatively + * to its siblings. If the element is an IPackageFragmentRoot, + * a classpath entry corresponding to the element has changed position in + * the project's classpath. * * @since 2.1 */ public int F_REORDER = 0x0100; /** - * Change flag indicating that the underlying IProject has been - * opened. This flag is only valid if the element is an IJavaProject. + * Change flag indicating that the underlying IProject has + * been opened. This flag is only valid if the element is an + * IJavaProject. */ public int F_OPENED = 0x0200; /** - * Change flag indicating that the underlying IProject has been - * closed. This flag is only valid if the element is an IJavaProject. + * Change flag indicating that the underlying IProject has + * been closed. This flag is only valid if the element is an + * IJavaProject. */ public int F_CLOSED = 0x0400; /** - * Change flag indicating that one of the supertypes of an IType - * has changed. + * Change flag indicating that one of the supertypes of an + * IType has changed. */ public int F_SUPER_TYPES = 0x0800; /** - * Change flag indicating that the source attachment path or the source attachment root path of a classpath entry - * corresponding to the element was added. This flag is only valid if the element is an + * Change flag indicating that the source attachment path or the source + * attachment root path of a classpath entry corresponding to the element + * was added. This flag is only valid if the element is an * IPackageFragmentRoot. */ - public int F_SOURCEATTACHED = 0x1000; + public int F_SOURCEATTACHED = 0x1000; /** - * Change flag indicating that the source attachment path or the source attachment root path of a classpath entry - * corresponding to the element was removed. This flag is only valid if the element is an + * Change flag indicating that the source attachment path or the source + * attachment root path of a classpath entry corresponding to the element + * was removed. This flag is only valid if the element is an * IPackageFragmentRoot. */ - public int F_SOURCEDETACHED = 0x2000; - + public int F_SOURCEDETACHED = 0x2000; + /** - * Change flag indicating that this is a fine-grained delta, that is, an analysis down - * to the members level was done to determine if there were structural changes to - * members. + * Change flag indicating that this is a fine-grained delta, that is, an + * analysis down to the members level was done to determine if there were + * structural changes to members. *

- * Clients can use this flag to find out if a compilation unit - * that have a F_CONTENT change should assume that there are - * no finer grained changes (F_FINE_GRAINED is set) or if - * finer grained changes were not considered (F_FINE_GRAINED - * is not set). - * - * @since 2.0 + * Clients can use this flag to find out if a compilation unit that have a + * F_CONTENT change should assume that there are no finer + * grained changes (F_FINE_GRAINED is set) or if finer + * grained changes were not considered (F_FINE_GRAINED is + * not set). + * + * @since 2.0 */ public int F_FINE_GRAINED = 0x4000; /** - * Change flag indicating that the element's archive content on the classpath has changed. - * This flag is only valid if the element is an IPackageFragmentRoot - * which is an archive. + * Change flag indicating that the element's archive content on the + * classpath has changed. This flag is only valid if the element is an + * IPackageFragmentRoot which is an archive. * * @see IPackageFragmentRoot#isArchive * @since 2.0 @@ -239,69 +272,102 @@ public interface IJavaElementDelta { public int F_ARCHIVE_CONTENT_CHANGED = 0x8000; /** + * Change flag indicating that a compilation unit has become a primary + * working copy, or that a primary working copy has reverted to a + * compilation unit. This flag is only valid if the element is an + * ICompilationUnit. + * + * @since 3.0 + */ + public int F_PRIMARY_WORKING_COPY = 0x10000; + + /** + * Change flag indicating that the raw classpath (or the output folder) of a + * project has changed. This flag is only valid if the element is an + * IJavaProject. + * + * @since 3.0 + */ + public int F_CLASSPATH_CHANGED = 0x20000; + + /** + * Change flag indicating that the resource of a primary compilation unit + * has changed. This flag is only valid if the element is a primary + * ICompilationUnit. + * + * @since 3.0 + */ + public int F_PRIMARY_RESOURCE = 0x40000; + + /** * Returns deltas for the children that have been added. + * * @return deltas for the children that have been added */ public IJavaElementDelta[] getAddedChildren(); /** * Returns deltas for the affected (added, removed, or changed) children. + * * @return deltas for the affected (added, removed, or changed) children */ public IJavaElementDelta[] getAffectedChildren(); /** * Returns deltas for the children which have changed. + * * @return deltas for the children which have changed */ public IJavaElementDelta[] getChangedChildren(); /** * Returns the element that this delta describes a change to. + * * @return the element that this delta describes a change to */ public IJavaElement getElement(); /** - * Returns flags that describe how an element has changed. - * Such flags should be tested using the & operand. For example: + * Returns flags that describe how an element has changed. Such flags should + * be tested using the & operand. For example: + * *

-	 * if ((delta.getFlags() & IJavaElementDelta.F_CONTENT) != 0) {
+	 * if ((delta.getFlags() & IJavaElementDelta.F_CONTENT) != 0) {
 	 * 	// the delta indicates a content change
 	 * }
 	 * 
- * + * * @return flags that describe how an element has changed */ public int getFlags(); /** - * Returns the kind of this delta - one of ADDED, REMOVED, - * or CHANGED. + * Returns the kind of this delta - one of ADDED, + * REMOVED, or CHANGED. * * @return the kind of this delta */ public int getKind(); /** - * Returns an element describing this element before it was moved - * to its current location, or null if the - * F_MOVED_FROM change flag is not set. + * Returns an element describing this element before it was moved to its + * current location, or null if the F_MOVED_FROM + * change flag is not set. * - * @return an element describing this element before it was moved - * to its current location, or null if the - * F_MOVED_FROM change flag is not set + * @return an element describing this element before it was moved to its + * current location, or null if the + * F_MOVED_FROM change flag is not set */ public IJavaElement getMovedFromElement(); /** - * Returns an element describing this element in its new location, - * or null if the F_MOVED_TO change - * flag is not set. + * Returns an element describing this element in its new location, or + * null if the F_MOVED_TO change flag is not + * set. * - * @return an element describing this element in its new location, - * or null if the F_MOVED_TO change - * flag is not set + * @return an element describing this element in its new location, or + * null if the F_MOVED_TO change flag + * is not set */ public IJavaElement getMovedToElement(); @@ -315,11 +381,11 @@ public interface IJavaElementDelta { /** * Returns the collection of resource deltas. *

- * Note that resource deltas, like Java element deltas, are generally only valid - * for the dynamic scope of an event notification. Clients must not hang on to - * these objects. + * Note that resource deltas, like Java element deltas, are generally only + * valid for the dynamic scope of an event notification. Clients must not + * hang on to these objects. *

- * + * * @return the underlying resource deltas, or null if none */ public IResourceDelta[] getResourceDeltas();