Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Xenos2015-09-15 20:37:45 +0000
committerStefan Xenos2015-09-15 20:41:25 +0000
commit85b93c1e2053aa36564fe96be16b502e1944b683 (patch)
treef69e6fc1f209d3da57cb11a10c87386871e7154c
parent9468f370adbfd4af0d76c4ec6e6c22edb43162e4 (diff)
downloadeclipse.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>
-rw-r--r--bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/ImportOperation.java179
-rw-r--r--bundles/org.eclipse.ui.ide/src/org/eclipse/ui/wizards/datatransfer/WizardExternalProjectImportPage.java12
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));
}
};

Back to the top