Class CopyFilesAndFoldersOperation

  • Direct Known Subclasses:
    MoveFilesAndFoldersOperation

    public class CopyFilesAndFoldersOperation
    extends Object
    Perform the copy of file and folder resources from the clipboard when paste action is invoked.

    This class may be instantiated; it is not intended to be subclassed.

    Restriction:
    This class is not intended to be subclassed by clients.
    • Constructor Detail

      • CopyFilesAndFoldersOperation

        public CopyFilesAndFoldersOperation​(Shell shell)
        Creates a new operation initialized with a shell.
        Parameters:
        shell - parent shell for error dialogs
    • Method Detail

      • canPerformAutoRename

        protected boolean canPerformAutoRename()
        Returns whether this operation is able to perform on-the-fly auto-renaming of resources with name collisions.
        Returns:
        true if auto-rename is supported, and false otherwise
      • getDeepCheckQuestion

        protected String getDeepCheckQuestion​(IResource source)
        Returns the message for querying deep copy/move of a linked resource.
        Parameters:
        source - resource the query is made for
        Returns:
        the deep query message
      • copyResources

        public IResource[] copyResources​(IResource[] resources,
                                         IContainer destination)
        Copies the given resources to the destination. The current Thread is halted while the resources are copied using a WorkspaceModifyOperation. This method should be called from the UIThread.
        Parameters:
        resources - the resources to copy
        destination - destination to which resources will be copied
        Returns:
        the resources which actually got copied
        See Also:
        WorkspaceModifyOperation, Display.getThread(), Thread.currentThread()
      • copyResourcesInCurrentThread

        public IResource[] copyResourcesInCurrentThread​(IResource[] resources,
                                                        IContainer destination,
                                                        IProgressMonitor monitor)
        Copies the given resources to the destination in the current Thread without forking a new Thread or blocking using a WorkspaceModifyOperation. It recommended that this method only be called from a WorkspaceJob to avoid possible deadlock.
        Parameters:
        resources - the resources to copy
        destination - destination to which resources will be copied
        monitor - the monitor that information will be sent to.
        Returns:
        IResource[] the resulting IResource[]
        Since:
        3.2
        See Also:
        WorkspaceModifyOperation, WorkspaceJob
      • isMove

        protected boolean isMove()
        Return whether the operation is a move or a copy
        Returns:
        whether the operation is a move or a copy
        Since:
        3.2
      • copyFiles

        public void copyFiles​(URI[] uris,
                              IContainer destination)
        Copies the given URIS and folders to the destination. The current Thread is halted while the resources are copied using a WorkspaceModifyOperation. This method should be called from the UI Thread.
        Parameters:
        uris - the URIs to copy
        destination - destination to which files will be copied
        Since:
        3.2
        See Also:
        WorkspaceModifyOperation, Display.getThread(), Thread.currentThread()
      • copyFilesInCurrentThread

        public void copyFilesInCurrentThread​(URI[] uris,
                                             IContainer destination,
                                             IProgressMonitor monitor)
        Copies the given files and folders to the destination without forking a new Thread or blocking using a WorkspaceModifyOperation. It is recommended that this method only be called from a WorkspaceJob to avoid possible deadlock.
        Parameters:
        uris - the URIs to copy
        destination - destination to which URIS will be copied
        monitor - the monitor that information will be sent to.
        Since:
        3.2
        See Also:
        WorkspaceModifyOperation, WorkspaceJob
      • copyFiles

        public void copyFiles​(String[] fileNames,
                              IContainer destination)
        Copies the given files and folders to the destination. The current Thread is halted while the resources are copied using a WorkspaceModifyOperation. This method should be called from the UI Thread.
        Parameters:
        fileNames - names of the files to copy
        destination - destination to which files will be copied
        Since:
        3.2
        See Also:
        WorkspaceModifyOperation, Display.getThread(), Thread.currentThread()
      • copyFilesInCurrentThread

        public void copyFilesInCurrentThread​(String[] fileNames,
                                             IContainer destination,
                                             IProgressMonitor monitor)
        Copies the given files and folders to the destination without forking a new Thread or blocking using a WorkspaceModifyOperation. It is recommended that this method only be called from a WorkspaceJob to avoid possible deadlock.
        Parameters:
        fileNames - names of the files to copy
        destination - destination to which files will be copied
        monitor - the monitor that information will be sent to.
        Since:
        3.2
        See Also:
        WorkspaceModifyOperation, WorkspaceJob
      • getFile

        protected IFile getFile​(IResource resource)
        Returns the resource either casted to or adapted to an IFile.
        Parameters:
        resource - resource to cast/adapt
        Returns:
        the resource either casted to or adapted to an IFile. null if the resource does not adapt to IFile
      • getFiles

        @Deprecated
        protected File[] getFiles​(String[] fileNames)
        Deprecated.
        As of 3.3, this method is no longer in use anywhere in this class and is only provided for backwards compatability with subclasses of the receiver.
        Returns java.io.File objects for the given file names.
        Parameters:
        fileNames - files to return File object for.
        Returns:
        java.io.File objects for the given file names.
      • getFolder

        protected IFolder getFolder​(IResource resource)
        Returns the resource either casted to or adapted to an IFolder.
        Parameters:
        resource - resource to cast/adapt
        Returns:
        the resource either casted to or adapted to an IFolder. null if the resource does not adapt to IFolder
      • getOperationTitle

        protected String getOperationTitle()
        Returns the task title for this operation's progress dialog.
        Returns:
        the task title
      • getProblemsMessage

        protected String getProblemsMessage()
        Returns the message for this operation's problems dialog.
        Returns:
        the problems message
      • getProblemsTitle

        protected String getProblemsTitle()
        Returns the title for this operation's problems dialog.
        Returns:
        the problems dialog title
      • getValidateConflictSource

        protected boolean getValidateConflictSource()
        Returns whether the source file in a destination collision will be validateEdited together with the collision itself. Returns false. Should return true if the source file is to be deleted after the operation.
        Returns:
        boolean true if the source file in a destination collision should be validateEdited. false if only the destination should be validated.
      • homogenousResources

        protected boolean homogenousResources​(IResource source,
                                              IResource destination)
        Returns whether the given resources are either both linked or both unlinked.
        Parameters:
        source - source resource
        destination - destination resource
        Returns:
        boolean true if both resources are either linked or unlinked. false otherwise.
      • validateDestination

        public String validateDestination​(IContainer destination,
                                          IResource[] sourceResources)
        Checks whether the destination is valid for copying the source resources.

        Note this method is for internal use only. It is not API.

        Parameters:
        destination - the destination container
        sourceResources - the source resources
        Returns:
        an error message, or null if the path is valid
      • validateImportDestination

        public String validateImportDestination​(IContainer destination,
                                                String[] sourceNames)
        Checks whether the destination is valid for copying the source files.

        Note this method is for internal use only. It is not API.

        Parameters:
        destination - the destination container
        sourceNames - the source file names
        Returns:
        an error message, or null if the path is valid
      • getModelProviderIds

        public String[] getModelProviderIds()
        Returns the model provider ids that are known to the client that instantiated this operation.
        Returns:
        the model provider ids that are known to the client that instantiated this operation.
        Since:
        3.2
      • setModelProviderIds

        public void setModelProviderIds​(String[] modelProviderIds)
        Sets the model provider ids that are known to the client that instantiated this operation. Any potential side effects reported by these models during validation will be ignored.
        Parameters:
        modelProviderIds - the model providers known to the client who is using this operation.
        Since:
        3.2
      • createVirtualFoldersAndLinks

        public void createVirtualFoldersAndLinks​(String[] fileNames,
                                                 IContainer destination)
        Create virtual folders and links of the given files and folders to the destination. The current Thread is halted while the resources are copied using a WorkspaceModifyOperation. This method should be called from the UI Thread.
        Parameters:
        fileNames - names of the files to copy
        destination - destination to which files will be copied
        Since:
        3.6
        See Also:
        WorkspaceModifyOperation, Display.getThread(), Thread.currentThread()
      • linkFiles

        public void linkFiles​(String[] fileNames,
                              IContainer destination)
        Create links of the given files and folders to the destination. The current Thread is halted while the resources are copied using a WorkspaceModifyOperation. This method should be called from the UI Thread.
        Parameters:
        fileNames - names of the files to copy
        destination - destination to which files will be copied
        Since:
        3.6
        See Also:
        WorkspaceModifyOperation, Display.getThread(), Thread.currentThread()
      • setVirtualFolders

        public void setVirtualFolders​(boolean value)
        Set whether or not virtual folders and links will be created under the destination container.
        Parameters:
        value - true to create virtual folders and links under destination container
        Since:
        3.6
      • setCreateLinks

        public void setCreateLinks​(boolean value)
        Set whether or not links will be created under the destination container.
        Parameters:
        value - true to create links under destination container
        Since:
        3.6
      • setRelativeVariable

        public void setRelativeVariable​(String variable)
        Set a variable relative to which the links are created
        Parameters:
        variable - base for relative links
        Since:
        3.6
      • getUndoableCopyOrMoveOperation

        protected AbstractWorkspaceOperation getUndoableCopyOrMoveOperation​(IResource[] resources,
                                                                            IPath destinationPath)
        Returns an AbstractWorkspaceOperation suitable for performing the move or copy operation that will move or copy the given resources to the given destination path.
        Parameters:
        resources - the resources to be moved or copied
        destinationPath - the destination path to which the resources should be moved
        Returns:
        the operation that should be used to perform the move or cop
        Since:
        3.3