| /******************************************************************************* |
| * 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 org.eclipse.core.resources.IResourceDelta; |
| |
| public interface IModelElementDelta { |
| |
| /** |
| * Status constant indicating that the element has been added. Note that an |
| * added model 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 model 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. |
| * |
| * @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. |
| */ |
| public int F_CONTENT = 0x00001; |
| |
| /** |
| * Change flag indicating that the modifiers of the element have changed. |
| * This flag is only valid if the element is an <code>IMember</code>. |
| */ |
| public int F_MODIFIERS = 0x00002; |
| |
| /** |
| * Change flag indicating that there are changes to the children of the |
| * element. This flag is only valid if the element is an |
| * <code>IParent</code>. |
| */ |
| public int F_CHILDREN = 0x00008; |
| |
| /** |
| * Change flag indicating that the element was moved from another location. |
| * The location of the old element can be retrieved using |
| * <code>getMovedFromElement</code>. |
| */ |
| public int F_MOVED_FROM = 0x00010; |
| |
| /** |
| * Change flag indicating that the element was moved to another location. |
| * The location of the new element can be retrieved using |
| * <code>getMovedToElement</code>. |
| */ |
| public int F_MOVED_TO = 0x00020; |
| |
| /** |
| * Change flag indicating that a buildpath entry corresponding to the |
| * element has been added to the project's buildpath. This flag is only |
| * valid if the element is an <code>IProjectFragment</code>. |
| */ |
| public int F_ADDED_TO_BUILDPATH = 0x00040; |
| |
| /** |
| * Change flag indicating that a buildpath entry corresponding to the |
| * element has been removed from the project's buildpath. This flag is only |
| * valid if the element is an <code>IProjectFragment</code>. |
| */ |
| public int F_REMOVED_FROM_BUILDPATH = 0x00080; |
| |
| /** |
| * Change flag indicating that the element has changed position relatively |
| * to its siblings. If the element is an <code>IProjectFragment</code>, a |
| * buildpath entry corresponding to the element has changed position in the |
| * project's buildpath. |
| */ |
| public int F_REORDER = 0x00100; |
| |
| /** |
| * Change flag indicating that the underlying <code>IProject</code> has been |
| * opened. This flag is only valid if the element is an |
| * <code>IScriptProject</code>. |
| */ |
| public int F_OPENED = 0x000200; |
| |
| /** |
| * Change flag indicating that the underlying <code>IProject</code> has been |
| * closed. This flag is only valid if the element is an |
| * <code>IScriptProject</code>. |
| */ |
| public int F_CLOSED = 0x000400; |
| |
| /** |
| * Change flag indicating that one of the supertypes of an |
| * <code>IType</code> has changed. |
| */ |
| public int F_SUPER_TYPES = 0x00800; |
| |
| /** |
| * 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. |
| * <p> |
| * Clients can use this flag to find out if a compilation unit that have a |
| * <code>F_CONTENT</code> change should assume that there are no finer |
| * grained changes (<code>F_FINE_GRAINED</code> is set) or if finer grained |
| * changes were not considered (<code>F_FINE_GRAINED</code> is not set). |
| */ |
| public int F_FINE_GRAINED = 0x04000; |
| |
| /** |
| * Change flag indicating that the element's archive content on the |
| * buildpath has changed. This flag is only valid if the element is an |
| * <code>IProjectFragment</code> which is an archive. |
| * |
| * @see IProjectFragment#isArchive() |
| */ |
| public int F_ARCHIVE_CONTENT_CHANGED = 0x008000; |
| |
| /** |
| * 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 |
| * <code>ISourceModule</code>. |
| */ |
| public int F_PRIMARY_WORKING_COPY = 0x10000; |
| |
| /** |
| * Change flag indicating that the raw buildpath of a project has changed. |
| * This flag is only valid if the element is an <code>IScriptProject</code>. |
| */ |
| public int F_BUILDPATH_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 |
| * <code>ISourceModule</code>. |
| */ |
| public int F_PRIMARY_RESOURCE = 0x040000; |
| |
| /** |
| * Change flag indicating that the |
| * {@link IScriptProject#getResolvedBuildpath(boolean) resolved buildpath} |
| * of a project has changed. This flag is only valid if the element is an |
| * {@link IScriptProject}. Also see {@link #F_BUILDPATH_CHANGED}, which |
| * indicates that there is a change to the |
| * {@link IScriptProject#getRawBuildpath() raw class path}. The resolved |
| * buildpath can change without the raw buildpath changing (e.g. if a |
| * container resolves to a different set of buildpath entries). And |
| * conversely, it is possible to construct a case where the raw buildpath |
| * can change without the resolved buildpath changing. |
| * |
| * @since 3.4 |
| */ |
| public int F_RESOLVED_BUILDPATH_CHANGED = 0x200000; |
| |
| /** |
| * Returns the element that this delta describes a change to. |
| * |
| * @return the element that this delta describes a change to |
| */ |
| public IModelElement getElement(); |
| |
| /** |
| * Returns deltas for the children that have been added. |
| * |
| * @return deltas for the children that have been added |
| */ |
| public IModelElementDelta[] getAddedChildren(); |
| |
| /** |
| * Returns deltas for the affected (added, removed, or changed) children. |
| * |
| * @return deltas for the affected (added, removed, or changed) children |
| */ |
| public IModelElementDelta[] getAffectedChildren(); |
| |
| /** |
| * Returns the kind of this delta - one of <code>ADDED</code>, |
| * <code>REMOVED</code>, or <code>CHANGED</code>. |
| * |
| * @return the kind of this delta |
| */ |
| public int getKind(); |
| |
| /** |
| * Returns flags that describe how an element has changed. Such flags should |
| * be tested using the <code>&</code> operand. For example: |
| * |
| * <pre> |
| * if ((delta.getFlags() & IModelElementDelta.F_CONTENT) != 0) { |
| * // the delta indicates a content change |
| * } |
| * </pre> |
| * |
| * @return flags that describe how an element has changed |
| */ |
| public int getFlags(); |
| |
| /** |
| * Returns the collection of resource deltas. |
| * <p> |
| * Note that resource deltas, like Model element deltas, are generally only |
| * valid for the dynamic scope of an event notification. Clients must not |
| * hang on to these objects. |
| * </p> |
| * |
| * @return the underlying resource deltas, or <code>null</code> if none |
| */ |
| public IResourceDelta[] getResourceDeltas(); |
| |
| /** |
| * Returns an element describing this element before it was moved to its |
| * current location, or <code>null</code> if the <code>F_MOVED_FROM</code> |
| * change flag is not set. |
| * |
| * @return an element describing this element before it was moved to its |
| * current location, or <code>null</code> if the |
| * <code>F_MOVED_FROM</code> change flag is not set |
| */ |
| public IModelElement getMovedFromElement(); |
| |
| /** |
| * Returns an element describing this element in its new location, or |
| * <code>null</code> if the <code>F_MOVED_TO</code> change flag is not set. |
| * |
| * @return an element describing this element in its new location, or |
| * <code>null</code> if the <code>F_MOVED_TO</code> change flag is |
| * not set |
| */ |
| public IModelElement getMovedToElement(); |
| } |