Implements
IResource.move(IPath,int,IProgressMonitor)
where the receiver is a file. Returns
true
to accept responsibility for implementing this operation as per the API contract.
On entry to this hook method, the following is guaranteed about the workspace resource tree: the source file exists; the destination file does not exist; the container of the destination file exists and is accessible. In broad terms, a full re-implementation should move the file in the local file system and then call tree.moveFile
to complete the updating of the workspace resource tree to reflect this fact. If unsuccessful in moving the file in the local file system, it should instead call tree.failed
to report the reason for the failure. In either case, it should return true
to indicate that the operation was attempted. The FORCE
update flag needs to be honored: unless FORCE
is specified, the implementation must use tree.isSynchronized
to determine whether the file is in sync before attempting to move it. The KEEP_HISTORY
update flag needs to be honored as well; use tree.addToLocalHistory
to capture the contents of the file (naturally, this must be before moving the file from the local file system).
An extending implementation should perform whatever pre-processing it needs to do and then call tree.standardMoveFile
to explicitly invoke the standard file moving behavior, which moves both the file in the local file system and updates the workspace resource tree. It should return true
to indicate that the operation was attempted.
Returning false
is the easy way for the implementation to say "pass". It is equivalent to calling tree.standardMoveFile
and returning true
.
The implementation of this method runs "below" the resources API and is therefore very restricted in what resource API method it can call. The list of useable methods includes most resource operations that read but do not update the resource tree; resource operations that modify resources and trigger deltas must not be called from within the dynamic scope of the invocation of this method.
@param tree the workspace resource tree; this object is only valid for the duration of the invocation of this method, and must not be used after this method has completed
@param source the handle of the file to move; the receiver of
IResource.move(IPath,int,IProgressMonitor)
@param destination the handle of where the file will move to; the handle equivalent of the first parameter to
IResource.move(IPath,int,IProgressMonitor)
@param updateFlags bit-wise or of update flag constants as per
IResource.move(IPath,int,IProgressMonitor)
@param monitor the progress monitor, or
null
as per
IResource.move(IPath,int,IProgressMonitor)
@return
false
if this method declined to assume responsibility for this operation, and
true
if this method attempted to carry out the operation
@exception OperationCanceledException if the operation is canceled. Cancelation can occur even if no progress monitor is provided.
@see IResource#move(org.eclipse.core.runtime.IPath,int,IProgressMonitor)