Package org.eclipse.ui.ide.undo
Class CopyProjectOperation
- java.lang.Object
-
- org.eclipse.core.commands.operations.AbstractOperation
-
- org.eclipse.ui.ide.undo.AbstractWorkspaceOperation
-
- org.eclipse.ui.ide.undo.CopyProjectOperation
-
- All Implemented Interfaces:
IAdvancedUndoableOperation
,IAdvancedUndoableOperation2
,IUndoableOperation
public class CopyProjectOperation extends AbstractWorkspaceOperation
A CopyProjectOperation represents an undoable operation for copying a project, also specifying the location of its contents. Clients may call the public API from a background thread.This class is intended to be instantiated and used by clients. It is not intended to be subclassed by clients.
- Since:
- 3.3
- Restriction:
- This class is not intended to be subclassed by clients.
-
-
Field Summary
Fields Modifier and Type Field Description protected IPath
destination
protected IPath[]
destinationPaths
protected boolean
fCreateGroups
protected boolean
fCreateLinks
protected String
fRelativeToVariable
protected ResourceDescription[]
resourceDescriptions
-
Fields inherited from class org.eclipse.ui.ide.undo.AbstractWorkspaceOperation
EXECUTE, quietCompute, REDO, resources, UNDO
-
-
Constructor Summary
Constructors Constructor Description CopyProjectOperation(IProject project, String name, URI location, String label)
Create a CopyProjectOperation that copies the specified project and sets its location to the specified location.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
appendDescriptiveText(StringBuffer text)
Append any descriptive text to the specified string buffer to be shown in the receiver'sAbstractWorkspaceOperation.toString()
text.protected ISchedulingRule
computeCreateSchedulingRule()
Compute a scheduling rule for creating resources.protected IStatus
computeCreateStatus(boolean allowOverwrite)
Compute the status for creating resources from the descriptions.protected ISchedulingRule
computeDeleteSchedulingRule()
Compute a scheduling rule for deleting resources.protected IStatus
computeDeleteStatus()
Compute the status for deleting resources.IStatus
computeExecutionStatus(IProgressMonitor monitor)
Return a status indicating the projected outcome of executing the receiver.protected IStatus
computeMoveOrCopyStatus()
Compute the status for moving or copying the resources.IStatus
computeRedoableStatus(IProgressMonitor monitor)
Return a status indicating the projected outcome of redoing the receiver.IStatus
computeUndoableStatus(IProgressMonitor monitor)
Return a status indicating the projected outcome of undoing the receiver.protected void
delete(IProgressMonitor monitor, IAdaptable uiInfo, boolean deleteContent)
Delete any resources known by this operation.protected void
doExecute(IProgressMonitor monitor, IAdaptable uiInfo)
Perform the specific work involved in executing this operation.protected void
doUndo(IProgressMonitor monitor, IAdaptable uiInfo)
Perform the specific work involved in undoing this operation.protected IPath
getDestinationPath(IResource resource, int index)
Return the destination path that should be used to move or copy the specified resource.protected String
getProposedName(IResource resource, int index)
Return a string indicating the proposed name for the resourceprotected boolean
isDestinationPathValid(IResource resource, int index)
Return a boolean indicating whether the proposed destination path for a resource is valid.protected void
recreate(IProgressMonitor monitor, IAdaptable uiInfo)
Recreate any resources known by this operation.void
setCreateLinks(boolean value)
void
setCreateVirtualFolders(boolean value)
void
setRelativeVariable(String value)
protected void
setResourceDescriptions(ResourceDescription[] descriptions)
Set the array of resource descriptions describing resources to be restored when undoing or redoing this operation.protected void
setTargetResources(IResource[] targetResources)
Set the resources which are affected by this operationprotected boolean
updateResourceChangeDescriptionFactory(IResourceChangeDescriptionFactory factory, int operation)
Update the provided resource change description factory so it can generate a resource delta describing the result of an undo or redo.-
Methods inherited from class org.eclipse.ui.ide.undo.AbstractWorkspaceOperation
aboutToNotify, canExecute, canRedo, canUndo, execute, getAffectedObjects, getErrorStatus, getExecuteSchedulingRule, getRedoSchedulingRule, getShell, getUndoSchedulingRule, getWarningStatus, getWorkspace, getWorkspaceRuleFactory, isValid, markInvalid, redo, resourcesExist, resourcesIncludesProjects, runInBackground, setModelProviderIds, setQuietCompute, toString, undo
-
Methods inherited from class org.eclipse.core.commands.operations.AbstractOperation
addContext, dispose, getContexts, getLabel, hasContext, removeContext, setLabel
-
-
-
-
Field Detail
-
destinationPaths
protected IPath[] destinationPaths
-
destination
protected IPath destination
-
fCreateGroups
protected boolean fCreateGroups
-
fCreateLinks
protected boolean fCreateLinks
-
fRelativeToVariable
protected String fRelativeToVariable
-
resourceDescriptions
protected ResourceDescription[] resourceDescriptions
-
-
Constructor Detail
-
CopyProjectOperation
public CopyProjectOperation(IProject project, String name, URI location, String label)
Create a CopyProjectOperation that copies the specified project and sets its location to the specified location.- Parameters:
project
- the project to be copiedname
- the name of the copylocation
- the location for the project's content, ornull
if the default project location should be used.label
- the label of the operation
-
-
Method Detail
-
computeMoveOrCopyStatus
protected IStatus computeMoveOrCopyStatus()
Compute the status for moving or copying the resources. A status severity ofOK
indicates that the copy or move is likely to be successful. A status severity ofERROR
indicates that the operation is no longer valid. Other status severities are open to interpretation by the caller. Note this method may be called on initial moving or copying of a resource, or when a move or copy is undone or redone. Therefore, this method should check conditions that can change over the life of the operation, such as whether the file to moved or copied exists, and whether the target location is still valid. One-time static checks should typically be done by the caller so that the user is not continually prompted or warned about conditions that were acceptable at the time of original execution and do not change over time.- Returns:
- the status indicating the projected outcome of moving or copying the resources.
-
doExecute
protected void doExecute(IProgressMonitor monitor, IAdaptable uiInfo) throws CoreException
Description copied from class:AbstractWorkspaceOperation
Perform the specific work involved in executing this operation.- Specified by:
doExecute
in classAbstractWorkspaceOperation
- Parameters:
monitor
- the progress monitor to use for the operationuiInfo
- the IAdaptable (ornull
) provided by the caller in order to supply UI information for prompting the user if necessary. When this parameter is notnull
, it contains an adapter for the org.eclipse.swt.widgets.Shell.class- Throws:
CoreException
- propagates any CoreExceptions thrown from the resources API
-
doUndo
protected void doUndo(IProgressMonitor monitor, IAdaptable uiInfo) throws CoreException
Description copied from class:AbstractWorkspaceOperation
Perform the specific work involved in undoing this operation.- Specified by:
doUndo
in classAbstractWorkspaceOperation
- Parameters:
monitor
- the progress monitor to use for the operationuiInfo
- the IAdaptable (ornull
) provided by the caller in order to supply UI information for prompting the user if necessary. When this parameter is notnull
, it contains an adapter for the org.eclipse.swt.widgets.Shell.class- Throws:
CoreException
- propagates any CoreExceptions thrown from the resources API
-
isDestinationPathValid
protected boolean isDestinationPathValid(IResource resource, int index)
Return a boolean indicating whether the proposed destination path for a resource is valid.- Parameters:
resource
- the resource whose path is to be checkedindex
- the integer index of the resource in the resource array- Returns:
- a boolean indicating whether the destination path is valid
-
getProposedName
protected String getProposedName(IResource resource, int index)
Return a string indicating the proposed name for the resource- Parameters:
resource
- the resource whose path is to be checkedindex
- the integer index of the resource in the resource array- Returns:
- the string name of the resource
-
updateResourceChangeDescriptionFactory
protected boolean updateResourceChangeDescriptionFactory(IResourceChangeDescriptionFactory factory, int operation)
Description copied from class:AbstractWorkspaceOperation
Update the provided resource change description factory so it can generate a resource delta describing the result of an undo or redo. Return a boolean indicating whether any update was done. The default implementation does not update the factory. Subclasses are expected to override this method to more specifically describe their modifications to the workspace.- Overrides:
updateResourceChangeDescriptionFactory
in classAbstractWorkspaceOperation
- Parameters:
factory
- the factory to updateoperation
- an integer indicating whether the change is part of an execute, undo, or redo- Returns:
- a boolean indicating whether the factory was updated.
-
computeUndoableStatus
public IStatus computeUndoableStatus(IProgressMonitor monitor)
Description copied from class:AbstractWorkspaceOperation
Return a status indicating the projected outcome of undoing the receiver. This method is not called by the operation history, but instead is used by clients (such as implementers ofIOperationApprover2
) who wish to perform advanced validation of an operation before attempting to undo it. If an ERROR status is returned, the undo will not proceed and the user notified if deemed necessary by the caller. The validity flag on the operation should be marked as invalid. If an OK status is returned, the undo will proceed. The caller must interpret any other returned status severity, and may choose to prompt the user as to how to proceed. If there are multiple conditions that result in an ambiguous status severity, it is best for the implementor of this method to consult the user as to how to proceed for each one, and return an OK or ERROR status that accurately reflects the user's wishes, or to return a multi-status that accurately describes all of the issues at hand, so that the caller may potentially consult the user. (Note that the user should not be consulted at all if a client has calledAbstractWorkspaceOperation.setQuietCompute(boolean)
with a value oftrue
.) This implementation computes the validity of undo by computing the resource delta that would be generated on undo, and checking whether any registered model providers are affected by the operation.- Specified by:
computeUndoableStatus
in interfaceIAdvancedUndoableOperation
- Overrides:
computeUndoableStatus
in classAbstractWorkspaceOperation
- Parameters:
monitor
- the progress monitor to be used for computing the status- Returns:
- the status indicating the projected outcome of undoing the receiver
- See Also:
IAdvancedUndoableOperation.computeUndoableStatus(org.eclipse.core.runtime.IProgressMonitor)
,AbstractWorkspaceOperation.setQuietCompute(boolean)
-
getDestinationPath
protected IPath getDestinationPath(IResource resource, int index)
Return the destination path that should be used to move or copy the specified resource. This path is relative to the workspace.- Parameters:
resource
- the resource being moved or copiedindex
- the integer index of the resource in the resource array- Returns:
- the path specifying the destination for the resource
-
appendDescriptiveText
protected void appendDescriptiveText(StringBuffer text)
Description copied from class:AbstractWorkspaceOperation
Append any descriptive text to the specified string buffer to be shown in the receiver'sAbstractWorkspaceOperation.toString()
text.Note that this method is not intend to be subclassed by clients.
- Parameters:
text
- the StringBuffer on which to append the text
-
computeExecutionStatus
public IStatus computeExecutionStatus(IProgressMonitor monitor)
Description copied from class:AbstractWorkspaceOperation
Return a status indicating the projected outcome of executing the receiver. This method is not called by the operation history, but instead is used by clients (such as implementers ofIOperationApprover2
) who wish to perform advanced validation of an operation before attempting to execute it. If an ERROR status is returned, the operation will not proceed and the user notified if deemed necessary by the caller. The validity flag on the operation should be marked as invalid. If an OK status is returned, the operation will proceed. The caller must interpret any other returned status severity, and may choose to prompt the user as to how to proceed. If there are multiple conditions that result in an ambiguous status severity, it is best for the implementor of this method to consult the user as to how to proceed for each one, and return an OK or ERROR status that accurately reflects the user's wishes, or to return a multi-status that accurately describes all of the issues at hand, so that the caller may potentially consult the user. (Note that the user should not be consulted at all if a client has calledAbstractWorkspaceOperation.setQuietCompute(boolean)
with a value oftrue
.) This implementation computes the validity of execution by computing the resource delta that would be generated on execution, and checking whether any registered model providers are affected by the operation.- Specified by:
computeExecutionStatus
in interfaceIAdvancedUndoableOperation2
- Overrides:
computeExecutionStatus
in classAbstractWorkspaceOperation
- Parameters:
monitor
- the progress monitor to be used for computing the status- Returns:
- the status indicating the projected outcome of executing the receiver
- See Also:
IAdvancedUndoableOperation.computeUndoableStatus(org.eclipse.core.runtime.IProgressMonitor)
,AbstractWorkspaceOperation.setQuietCompute(boolean)
-
computeRedoableStatus
public IStatus computeRedoableStatus(IProgressMonitor monitor)
Description copied from class:AbstractWorkspaceOperation
Return a status indicating the projected outcome of redoing the receiver. This method is not called by the operation history, but instead is used by clients (such as implementers ofIOperationApprover2
) who wish to perform advanced validation of an operation before attempting to redo it. If an ERROR status is returned, the redo will not proceed and the user notified if deemed necessary by the caller. The validity flag on the operation should be marked as invalid. If an OK status is returned, the redo will proceed. The caller must interpret any other returned status severity, and may choose to prompt the user as to how to proceed. If there are multiple conditions that result in an ambiguous status severity, it is best for the implementor of this method to consult the user as to how to proceed for each one, and return an OK or ERROR status that accurately reflects the user's wishes, or to return a multi-status that accurately describes all of the issues at hand, so that the caller may potentially consult the user. (Note that the user should not be consulted at all if a client has calledAbstractWorkspaceOperation.setQuietCompute(boolean)
with a value oftrue
.) This implementation computes the validity of redo by computing the resource delta that would be generated on redo, and checking whether any registered model providers are affected by the operation.- Specified by:
computeRedoableStatus
in interfaceIAdvancedUndoableOperation
- Overrides:
computeRedoableStatus
in classAbstractWorkspaceOperation
- Parameters:
monitor
- the progress monitor to be used for computing the status- Returns:
- the status indicating the projected outcome of redoing the receiver
- See Also:
IAdvancedUndoableOperation.computeUndoableStatus(org.eclipse.core.runtime.IProgressMonitor)
,AbstractWorkspaceOperation.setQuietCompute(boolean)
-
setCreateVirtualFolders
public void setCreateVirtualFolders(boolean value)
-
setCreateLinks
public void setCreateLinks(boolean value)
-
setRelativeVariable
public void setRelativeVariable(String value)
-
delete
protected void delete(IProgressMonitor monitor, IAdaptable uiInfo, boolean deleteContent) throws CoreException
Delete any resources known by this operation. Store enough information to undo and redo the operation.- Parameters:
monitor
- the progress monitor to use for the operationuiInfo
- the IAdaptable (ornull
) provided by the caller in order to supply UI information for prompting the user if necessary. When this parameter is notnull
, it contains an adapter for the org.eclipse.swt.widgets.Shell.classdeleteContent
-true
if the content of any known projects should be deleted along with the project.false
if project content should not be deleted.- Throws:
CoreException
- propagates any CoreExceptions thrown from the resources API
-
recreate
protected void recreate(IProgressMonitor monitor, IAdaptable uiInfo) throws CoreException
Recreate any resources known by this operation. Store enough information to undo and redo the operation.- Parameters:
monitor
- the progress monitor to use for the operationuiInfo
- the IAdaptable (ornull
) provided by the caller in order to supply UI information for prompting the user if necessary. When this parameter is notnull
, it contains an adapter for the org.eclipse.swt.widgets.Shell.class- Throws:
CoreException
- propagates any CoreExceptions thrown from the resources API
-
computeCreateStatus
protected IStatus computeCreateStatus(boolean allowOverwrite)
Compute the status for creating resources from the descriptions. A status severity ofOK
indicates that the create is likely to be successful. A status severity ofERROR
indicates that the operation is no longer valid. Other status severities are open to interpretation by the caller. Note this method may be called on initial creation of a resource, or when a create or delete operation is being undone or redone. Therefore, this method should check conditions that can change over the life of the operation, such as the existence of the information needed to carry out the operation. One-time static checks should typically be done by the caller (such as the action that creates the operation) so that the user is not continually prompted or warned about conditions that were acceptable at the time of original execution.- Parameters:
allowOverwrite
- a boolean that specifies whether resource creation should be allowed to overwrite an existent resource.
-
computeDeleteStatus
protected IStatus computeDeleteStatus()
Compute the status for deleting resources. A status severity ofOK
indicates that the delete is likely to be successful. A status severity ofERROR
indicates that the operation is no longer valid. Other status severities are open to interpretation by the caller. Note this method may be called on initial deletion of a resource, or when a create or delete operation is being undone or redone. Therefore, this method should check conditions that can change over the life of the operation, such as the existence of the resources to be deleted. One-time static checks should typically be done by the caller (such as the action that creates the operation) so that the user is not continually prompted or warned about conditions that were acceptable at the time of original execution.
-
setResourceDescriptions
protected void setResourceDescriptions(ResourceDescription[] descriptions)
Set the array of resource descriptions describing resources to be restored when undoing or redoing this operation.- Parameters:
descriptions
- the array of resource descriptions
-
computeCreateSchedulingRule
protected ISchedulingRule computeCreateSchedulingRule()
Compute a scheduling rule for creating resources.- Returns:
- a scheduling rule appropriate for creating the resources specified in the resource descriptions
-
computeDeleteSchedulingRule
protected ISchedulingRule computeDeleteSchedulingRule()
Compute a scheduling rule for deleting resources.- Returns:
- a scheduling rule appropriate for deleting the resources specified in the receiver.
-
setTargetResources
protected void setTargetResources(IResource[] targetResources)
Description copied from class:AbstractWorkspaceOperation
Set the resources which are affected by this operation- Overrides:
setTargetResources
in classAbstractWorkspaceOperation
- Parameters:
targetResources
- an array of resources
-
-