diff options
| author | Stefan Xenos | 2015-09-15 20:37:45 +0000 |
|---|---|---|
| committer | Stefan Xenos | 2015-09-15 20:41:25 +0000 |
| commit | 85b93c1e2053aa36564fe96be16b502e1944b683 (patch) | |
| tree | f69e6fc1f209d3da57cb11a10c87386871e7154c | |
| parent | 9468f370adbfd4af0d76c4ec6e6c22edb43162e4 (diff) | |
| download | eclipse.platform.ui-85b93c1e2053aa36564fe96be16b502e1944b683.tar.gz eclipse.platform.ui-85b93c1e2053aa36564fe96be16b502e1944b683.tar.xz eclipse.platform.ui-85b93c1e2053aa36564fe96be16b502e1944b683.zip | |
Bug 475785 - Remove usage of SubProgressMonitor in org.eclipse.ui.wizards.datatransferI20150916-0800I20150915-2000
Change-Id: I5d730d9aea06cabbcf3f25d62167ae39ea03c9e7
Signed-off-by: Stefan Xenos <sxenos@gmail.com>
2 files changed, 83 insertions, 108 deletions
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/ImportOperation.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/ImportOperation.java index 7d93b4ced65..bb242c47ac9 100644 --- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/ImportOperation.java +++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/ImportOperation.java @@ -39,7 +39,7 @@ import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.core.runtime.SubMonitor; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; @@ -77,8 +77,6 @@ public class ImportOperation extends WorkspaceModifyOperation { private IImportStructureProvider provider; - private IProgressMonitor monitor; - protected IOverwriteQuery overwriteCallback; private Shell context; @@ -231,9 +229,10 @@ public class ImportOperation extends WorkspaceModifyOperation { * @param policy on of the POLICY constants defined in the * class. */ - void collectExistingReadonlyFiles(IPath sourceStart, List sources, - ArrayList noOverwrite, ArrayList overwriteReadonly, int policy) { - IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); + void collectExistingReadonlyFiles(IPath sourceStart, List sources, ArrayList noOverwrite, + ArrayList overwriteReadonly, int policy, IProgressMonitor monitor) { + SubMonitor subMonitor = SubMonitor.convert(monitor, 100); + IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); Iterator sourceIter = sources.iterator(); IPath sourceRootPath = null; @@ -272,9 +271,8 @@ public class ImportOperation extends WorkspaceModifyOperation { } } if (provider.isFolder(nextSource)) { - collectExistingReadonlyFiles(newDestinationPath, provider - .getChildren(nextSource), noOverwrite, - overwriteReadonly, POLICY_FORCE_OVERWRITE); + collectExistingReadonlyFiles(newDestinationPath, provider.getChildren(nextSource), noOverwrite, + overwriteReadonly, POLICY_FORCE_OVERWRITE, subMonitor.newChild(100)); } } else { IFile file = getFile(newDestination); @@ -373,41 +371,24 @@ public class ImportOperation extends WorkspaceModifyOperation { @Override protected void execute(IProgressMonitor progressMonitor) { - - monitor = progressMonitor; - + SubMonitor subMonitor = SubMonitor.convert(progressMonitor, DataTransferMessages.DataTransfer_importTask, 100); try { if (selectedFiles == null) { - //Set the amount to 1000 as we have no idea of how long this will take - monitor.beginTask(DataTransferMessages.DataTransfer_importTask, 1000); - ContainerGenerator generator = new ContainerGenerator( - destinationPath); - monitor.worked(30); - validateFiles(Arrays.asList(new Object[] { source })); - monitor.worked(50); - destinationContainer = generator - .generateContainer(new SubProgressMonitor(monitor, 50)); - importRecursivelyFrom(source, POLICY_DEFAULT); - //Be sure it finishes - monitor.worked(90); + ContainerGenerator generator = new ContainerGenerator(destinationPath); + subMonitor.worked(3); + validateFiles(Arrays.asList(new Object[] { source }), subMonitor.newChild(3)); + destinationContainer = generator.generateContainer(subMonitor.newChild(4)); + importRecursivelyFrom(source, POLICY_DEFAULT, subMonitor.newChild(90)); } else { // Choose twice the selected files size to take folders into account - int creationCount = selectedFiles.size(); - monitor.beginTask(DataTransferMessages.DataTransfer_importTask, creationCount + 100); - ContainerGenerator generator = new ContainerGenerator( - destinationPath); - monitor.worked(30); - validateFiles(selectedFiles); - monitor.worked(50); - destinationContainer = generator - .generateContainer(new SubProgressMonitor(monitor, 50)); - importFileSystemObjects(selectedFiles); - monitor.done(); + ContainerGenerator generator = new ContainerGenerator(destinationPath); + subMonitor.worked(3); + validateFiles(selectedFiles, subMonitor.newChild(3)); + destinationContainer = generator.generateContainer(subMonitor.newChild(4)); + importFileSystemObjects(selectedFiles, subMonitor.newChild(90)); } } catch (CoreException e) { errorTable.add(e.getStatus()); - } finally { - monitor.done(); } } @@ -519,7 +500,8 @@ public class ImportOperation extends WorkspaceModifyOperation { * @param fileObject the file system object to be imported * @param policy determines how the file object is imported */ - void importFile(Object fileObject, int policy) { + void importFile(Object fileObject, int policy, IProgressMonitor mon) { + SubMonitor subMonitor = SubMonitor.convert(mon, 100); IContainer containerResource; try { containerResource = getDestinationContainerFor(fileObject); @@ -533,10 +515,9 @@ public class ImportOperation extends WorkspaceModifyOperation { } String fileObjectPath = provider.getFullPath(fileObject); - monitor.subTask(fileObjectPath); + subMonitor.subTask(fileObjectPath); IFile targetResource = containerResource.getFile(new Path(provider .getLabel(fileObject))); - monitor.worked(1); if (rejectedFiles.contains(targetResource.getFullPath())) { return; @@ -564,51 +545,44 @@ public class ImportOperation extends WorkspaceModifyOperation { return; } - try { - if (createVirtualFolder || createLinks || createLinkFilesOnly) { - if (targetResource.exists()) - targetResource.delete(true, null); - targetResource.createLink(createRelativePath( - new Path(provider - .getFullPath(fileObject)), targetResource), 0, null); - } else { - if (targetResource.exists()) { - if (targetResource.isLinked()) { - targetResource.delete(true, null); - targetResource.create(contentStream, false, null); - } - else - targetResource.setContents(contentStream, - IResource.KEEP_HISTORY, null); - } - else - targetResource.create(contentStream, false, null); - } - setResourceAttributes(targetResource, fileObject); - - if (provider instanceof TarLeveledStructureProvider) { - try { - targetResource.setResourceAttributes(((TarLeveledStructureProvider) provider).getResourceAttributes(fileObject)); - } catch (CoreException e) { - errorTable.add(e.getStatus()); - } - } - } catch (CoreException e) { - errorTable.add(e.getStatus()); - } finally { - try { - contentStream.close(); - } catch (IOException e) { - errorTable - .add(new Status( - IStatus.ERROR, - PlatformUI.PLUGIN_ID, - 0, - NLS.bind(DataTransferMessages.ImportOperation_closeStreamError, fileObjectPath), - e)); - } - } - } + try { + if (createVirtualFolder || createLinks || createLinkFilesOnly) { + if (targetResource.exists()) + targetResource.delete(true, subMonitor.newChild(50)); + targetResource.createLink( + createRelativePath(new Path(provider.getFullPath(fileObject)), targetResource), 0, + subMonitor.newChild(50)); + } else { + if (targetResource.exists()) { + if (targetResource.isLinked()) { + targetResource.delete(true, subMonitor.newChild(50)); + targetResource.create(contentStream, false, subMonitor.newChild(50)); + } else + targetResource.setContents(contentStream, IResource.KEEP_HISTORY, subMonitor.newChild(100)); + } else + targetResource.create(contentStream, false, subMonitor.newChild(100)); + } + setResourceAttributes(targetResource, fileObject); + + if (provider instanceof TarLeveledStructureProvider) { + try { + targetResource.setResourceAttributes( + ((TarLeveledStructureProvider) provider).getResourceAttributes(fileObject)); + } catch (CoreException e) { + errorTable.add(e.getStatus()); + } + } + } catch (CoreException e) { + errorTable.add(e.getStatus()); + } finally { + try { + contentStream.close(); + } catch (IOException e) { + errorTable.add(new Status(IStatus.ERROR, PlatformUI.PLUGIN_ID, 0, + NLS.bind(DataTransferMessages.ImportOperation_closeStreamError, fileObjectPath), e)); + } + } + } /** * Reuse the file attributes set in the import. @@ -657,9 +631,11 @@ public class ImportOperation extends WorkspaceModifyOperation { * @throws CoreException * @exception OperationCanceledException if canceled */ - void importFileSystemObjects(List filesToImport) throws CoreException { + void importFileSystemObjects(List filesToImport, IProgressMonitor monitor) throws CoreException { + SubMonitor subMonitor = SubMonitor.convert(monitor, filesToImport.size()); Iterator filesEnum = filesToImport.iterator(); while (filesEnum.hasNext()) { + SubMonitor iterationMonitor = subMonitor.newChild(1); Object fileSystemObject = filesEnum.next(); if (source == null) { // We just import what we are given into the destination @@ -676,7 +652,7 @@ public class ImportOperation extends WorkspaceModifyOperation { } source = sourcePath.toFile(); } - importRecursivelyFrom(fileSystemObject, POLICY_DEFAULT); + importRecursivelyFrom(fileSystemObject, POLICY_DEFAULT, iterationMonitor); } } @@ -690,7 +666,7 @@ public class ImportOperation extends WorkspaceModifyOperation { * @return the policy to use to import the folder's children * @throws CoreException */ - int importFolder(Object folderObject, int policy) throws CoreException { + int importFolder(Object folderObject, int policy, IProgressMonitor monitor) throws CoreException { IContainer containerResource; try { containerResource = getDestinationContainerFor(folderObject); @@ -778,22 +754,23 @@ public class ImportOperation extends WorkspaceModifyOperation { * @throws CoreException * @exception OperationCanceledException if canceled */ - void importRecursivelyFrom(Object fileSystemObject, int policy) throws CoreException { - if (monitor.isCanceled()) { + void importRecursivelyFrom(Object fileSystemObject, int policy, IProgressMonitor mon) throws CoreException { + SubMonitor subMonitor = SubMonitor.convert(mon, 100); + if (subMonitor.isCanceled()) { throw new OperationCanceledException(); } if (!provider.isFolder(fileSystemObject)) { - importFile(fileSystemObject, policy); + importFile(fileSystemObject, policy, subMonitor.newChild(100)); return; } - int childPolicy = importFolder(fileSystemObject, policy); + int childPolicy = importFolder(fileSystemObject, policy, subMonitor.newChild(10)); if (childPolicy != POLICY_SKIP_CHILDREN) { - Iterator children = provider.getChildren(fileSystemObject) - .iterator(); - while (children.hasNext()) { - importRecursivelyFrom(children.next(), childPolicy); + List children = provider.getChildren(fileSystemObject); + SubMonitor loopMonitor = subMonitor.newChild(90).setWorkRemaining(children.size()); + for (Object child : children) { + importRecursivelyFrom(child, childPolicy, loopMonitor.newChild(1)); } } } @@ -942,14 +919,14 @@ public class ImportOperation extends WorkspaceModifyOperation { * * @param sourceFiles files to validate */ - void validateFiles(List sourceFiles) { + void validateFiles(List sourceFiles, IProgressMonitor monitor) { ArrayList noOverwrite = new ArrayList(); ArrayList overwriteReadonly = new ArrayList(); - collectExistingReadonlyFiles(destinationPath, sourceFiles, noOverwrite, - overwriteReadonly, POLICY_DEFAULT); - rejectedFiles = validateEdit(overwriteReadonly); - rejectedFiles.addAll(noOverwrite); + collectExistingReadonlyFiles(destinationPath, sourceFiles, noOverwrite, overwriteReadonly, POLICY_DEFAULT, + monitor); + rejectedFiles = validateEdit(overwriteReadonly); + rejectedFiles.addAll(noOverwrite); } /** diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/WizardExternalProjectImportPage.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/WizardExternalProjectImportPage.java index bb4ebb27ad1..e07fa7328d4 100644 --- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/WizardExternalProjectImportPage.java +++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/WizardExternalProjectImportPage.java @@ -26,7 +26,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.core.runtime.SubMonitor; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.wizard.WizardPage; @@ -437,14 +437,12 @@ public class WizardExternalProjectImportPage extends WizardPage { @Override protected void execute(IProgressMonitor monitor) throws CoreException { - monitor.beginTask("", 2000); //$NON-NLS-1$ - project.create(description, new SubProgressMonitor(monitor, - 1000)); - if (monitor.isCanceled()) { + SubMonitor subMonitor = SubMonitor.convert(monitor, 100); + project.create(description, subMonitor.newChild(50)); + if (subMonitor.isCanceled()) { throw new OperationCanceledException(); } - project.open(IResource.BACKGROUND_REFRESH, new SubProgressMonitor(monitor, 1000)); - + project.open(IResource.BACKGROUND_REFRESH, subMonitor.newChild(50)); } }; |
