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)