Bug 70046 No progress when copying project
Build: 3.0 final 1) Create a large project (I imported org.eclipse.jdt.ui as a source plugin) 2) In the Navigator view, select the project, and pick "Copy" 3) Right click again and select paste -> The copy operation occurs, but there is never any progress message, and the progress bar is stuck at 50% for the entire duration. Looking at CopyProjectOperation.performCopyOperation. It does the following: 1) beginTask on the monitor with 100 units of work 2) Create the project description 3) Report 50 units of progress 4) Call IProject.copy, passing in the 50% complete monitor 5) Report another 50 units of progress Problems: - Realistically creating the description represents a negligible amount of work, and shouldn't account for any progress, let alone 50%. - You should never pass a half used monitor to an API call. It should instead pass a new SubProgressMonitor
bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyProjectOperation.java
parentShell = shell;
    }
    /**
     * Paste a copy of the project on the clipboard to the workspace.
     */
    public void copyProject(IProject project) {
        errorStatus = null;
        
        ProjectLocationSelectionDialog dialog = new ProjectLocationSelectionDialog(
                parentShell, project);
        dialog.setTitle(IDEWorkbenchMessages
                .getString("CopyProjectOperation.copyProject")); 
        if (dialog.open() != Dialog.OK)
            return;
        Object[] destinationPaths = dialog.getResult();
        if (destinationPaths == null)
            return;
        String newName = (String) destinationPaths[0];
        IPath newLocation = new Path((String) destinationPaths[1]);
        boolean completed = performProjectCopy(project, newName, newLocation);
        if (!completed) 
            return; 
        
        if (errorStatus != null) {
            ErrorDialog.openError(parentShell, IDEWorkbenchMessages
                    .getString("CopyProjectOperation.copyFailedTitle"), 
                    null, errorStatus);
            errorStatus = null;
        }
    }