Class CopyElementsOperation
java.lang.Object
org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation
org.aspectj.org.eclipse.jdt.internal.core.MultiOperation
org.aspectj.org.eclipse.jdt.internal.core.CopyElementsOperation
- All Implemented Interfaces:
SuffixConstants
,org.eclipse.core.resources.IWorkspaceRunnable
,org.eclipse.core.runtime.ICoreRunnable
,org.eclipse.core.runtime.IProgressMonitor
- Direct Known Subclasses:
MoveElementsOperation
This operation copies/moves a collection of elements from their current
container to a new container, optionally renaming the
elements.
Notes:
- If there is already an element with the same name in the new container, the operation either overwrites or aborts, depending on the collision policy setting. The default setting is abort.
- When constructors are copied to a type, the constructors are automatically renamed to the name of the destination type.
- When main types are renamed (move within the same parent), the compilation unit and constructors are automatically renamed
- The collection of elements being copied must all share the same type of container (for example, must all be type members).
- The elements are inserted in the new container in the order given.
- The elements can be positioned in the new container - see #setInsertBefore. By default, the elements are inserted based on the default positions as specified in the creation operation for that element type.
- This operation can be used to copy and rename elements within the same container.
- This operation only copies elements contained within compilation units.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation
JavaModelOperation.IPostAction
-
Field Summary
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.core.MultiOperation
insertBeforeElements, newParents, renamings, renamingsList
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation
actions, actionsEnd, actionsStart, APPEND, attributes, elementsToProcess, force, HAS_MODIFIED_RESOURCE_ATTR, isNested, KEEP_EXISTING, NO_ELEMENTS, OPERATION_STACKS, parentElements, POST_ACTION_VERBOSE, progressMonitor, REMOVEALL_APPEND, resultElements, TRUE
Fields inherited from interface org.eclipse.core.runtime.IProgressMonitor
UNKNOWN
Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants
EXTENSION_aj, EXTENSION_AJ, EXTENSION_class, EXTENSION_CLASS, EXTENSION_java, EXTENSION_JAVA, EXTENSION_jmod, EXTENSION_JMOD, SUFFIX_aj, SUFFIX_AJ, SUFFIX_class, SUFFIX_CLASS, SUFFIX_java, SUFFIX_JAVA, SUFFIX_STRING_aj, SUFFIX_STRING_AJ, SUFFIX_STRING_class, SUFFIX_STRING_CLASS, SUFFIX_STRING_java, SUFFIX_STRING_JAVA
-
Constructor Summary
ConstructorDescriptionCopyElementsOperation(IJavaElement[] elementsToCopy, IJavaElement[] destContainers, boolean force)
When executed, this operation will copy the given elements to the given containers.CopyElementsOperation(IJavaElement[] elementsToCopy, IJavaElement destContainer, boolean force)
When executed, this operation will copy the given elements to the given container. -
Method Summary
Modifier and TypeMethodDescriptionprotected String
Returns theString
to use as the main task name for progress monitoring.protected JavaModelOperation
getNestedOperation(IJavaElement element)
Returns the nested operation to use for processing this elementprotected boolean
isRenamingMainType(IJavaElement element, IJavaElement dest)
Returnstrue
if this element is the main type of its compilation unit.protected void
processElement(IJavaElement element)
Copy/move the element from the source to destination, renaming the elements as specified, honoring the collision policy.protected IJavaModelStatus
verify()
Possible failures: NO_ELEMENTS_TO_PROCESS - no elements supplied to the operation INDEX_OUT_OF_BOUNDS - the number of renamings supplied to the operation does not match the number of elements that were supplied.protected void
verify(IJavaElement element)
This method is called for eachIJavaElement
beforeprocessElement
.Methods inherited from class org.aspectj.org.eclipse.jdt.internal.core.MultiOperation
error, executeOperation, getDestinationParent, getNewNameFor, isMove, isRename, processElements, setInsertBefore, setRenamings, verifyDestination, verifyRenaming, verifySibling
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation
addAction, addDelta, addReconcileDelta, applyTextEdit, beginTask, canModifyRoots, checkCanceled, commonVerify, copyResources, createFile, createFolder, deleteEmptyPackageFragment, deleteResource, deleteResources, done, equalsOneOf, executeNestedOperation, firstActionWithID, getAttribute, getCompilationUnitFor, getCurrentOperationStack, getDocument, getElementToProcess, getJavaModel, getLatestASTLevel, getNestedFolders, getParentElement, getParentElements, getResultElements, getSchedulingRule, getSubProgressMonitor, hasModifiedResource, internalWorked, isCanceled, isReadOnly, isTopLevelOperation, moveResources, newJavaElementDelta, popOperation, postAction, prefixesOneOf, pushOperation, removeAllPostAction, removeReconcileDelta, run, runOperation, runPostActions, setAttribute, setCanceled, setNested, setTaskName, subTask, worked
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.eclipse.core.runtime.IProgressMonitor
clearBlocked, setBlocked, slice
-
Constructor Details
-
CopyElementsOperation
public CopyElementsOperation(IJavaElement[] elementsToCopy, IJavaElement[] destContainers, boolean force)When executed, this operation will copy the given elements to the given containers. The elements and destination containers must be in the correct order. If there is > 1 destination, the number of destinations must be the same as the number of elements being copied/moved/renamed. -
CopyElementsOperation
public CopyElementsOperation(IJavaElement[] elementsToCopy, IJavaElement destContainer, boolean force)When executed, this operation will copy the given elements to the given container.
-
-
Method Details
-
getMainTaskName
Returns theString
to use as the main task name for progress monitoring.- Specified by:
getMainTaskName
in classMultiOperation
-
getNestedOperation
Returns the nested operation to use for processing this element -
isRenamingMainType
protected boolean isRenamingMainType(IJavaElement element, IJavaElement dest) throws JavaModelExceptionReturnstrue
if this element is the main type of its compilation unit.- Throws:
JavaModelException
-
processElement
Copy/move the element from the source to destination, renaming the elements as specified, honoring the collision policy.- Specified by:
processElement
in classMultiOperation
- Throws:
JavaModelException
- if the operation is unable to be completed
-
verify
Possible failures:- NO_ELEMENTS_TO_PROCESS - no elements supplied to the operation
- INDEX_OUT_OF_BOUNDS - the number of renamings supplied to the operation does not match the number of elements that were supplied.
- Overrides:
verify
in classJavaModelOperation
- See Also:
IJavaModelStatus
-
verify
Description copied from class:MultiOperation
This method is called for eachIJavaElement
beforeprocessElement
. It should check that thiselement
can be processed.- Specified by:
verify
in classMultiOperation
- Throws:
JavaModelException
- See Also:
Possible failure codes: ELEMENT_DOES_NOT_EXIST - element or its specified destination is is null or does not exist. If a null element is supplied, no element is provided in the status, otherwise, the non-existant element is supplied in the status. INVALID_ELEMENT_TYPES - element is not contained within a compilation unit. This operation only operates on elements contained within compilation units. READ_ONLY - element is read only. INVALID_DESTINATION - The destination parent specified for element is of an incompatible type. The destination for a package declaration or import declaration must be a compilation unit; the destination for a type must be a type or compilation unit; the destination for any type member (other than a type) must be a type. When this error occurs, the element provided in the operation status is the element. INVALID_NAME - the new name for element does not have valid syntax. In this case the element and name are provided in the status.
-