diff options
4 files changed, 70 insertions, 43 deletions
diff --git a/org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/manipulation/ContainerCreator.java b/org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/manipulation/ContainerCreator.java index b57a918bf00..4dfbaaf1d00 100644 --- a/org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/manipulation/ContainerCreator.java +++ b/org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/manipulation/ContainerCreator.java @@ -20,7 +20,7 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFolder; @@ -68,7 +68,7 @@ public class ContainerCreator { IWorkspaceRunnable runnable= new IWorkspaceRunnable() { @Override public void run(IProgressMonitor monitor) throws CoreException { - SubMonitor subMonitor = SubMonitor.convert(monitor, FileBuffersMessages.ContainerCreator_task_creatingContainer, fContainerFullPath.segmentCount()); + monitor.beginTask(FileBuffersMessages.ContainerCreator_task_creatingContainer, fContainerFullPath.segmentCount()); if (fContainer != null) return; @@ -91,7 +91,7 @@ public class ContainerCreator { if (resource != null) { if (resource instanceof IContainer) { fContainer= (IContainer) resource; - subMonitor.worked(1); + monitor.worked(1); } else { // fContainerFullPath specifies a file as directory throw new CoreException(new Status(IStatus.ERROR, FileBuffersPlugin.PLUGIN_ID, IStatus.OK, NLSUtility.format(FileBuffersMessages.ContainerCreator_destinationMustBeAContainer, resource.getFullPath()), null)); @@ -100,11 +100,15 @@ public class ContainerCreator { else { if (i == 0) { IProject projectHandle= createProjectHandle(root, currentSegment); - fContainer= createProject(projectHandle, subMonitor.newChild(1)); + IProgressMonitor subMonitor= new SubProgressMonitor(monitor, 1); + fContainer= createProject(projectHandle, subMonitor); + subMonitor.done(); } else { IFolder folderHandle= createFolderHandle(fContainer, currentSegment); - fContainer= createFolder(folderHandle, subMonitor.newChild(1)); + IProgressMonitor subMonitor= new SubProgressMonitor(monitor, 1); + fContainer= createFolder(folderHandle, subMonitor); + subMonitor.done(); } } } @@ -134,16 +138,26 @@ public class ContainerCreator { } private IProject createProject(IProject projectHandle, IProgressMonitor monitor) throws CoreException { - SubMonitor subMonitor= SubMonitor.convert(monitor, 2); - projectHandle.create(subMonitor.newChild(1)); + monitor.beginTask("", 100);//$NON-NLS-1$ + try { - if (monitor.isCanceled()) - throw new OperationCanceledException(); + IProgressMonitor subMonitor= new SubProgressMonitor(monitor, 50); + projectHandle.create(subMonitor); + subMonitor.done(); - projectHandle.open(subMonitor.newChild(1)); + if (monitor.isCanceled()) + throw new OperationCanceledException(); - if (monitor.isCanceled()) - throw new OperationCanceledException(); + subMonitor= new SubProgressMonitor(monitor, 50); + projectHandle.open(subMonitor); + subMonitor.done(); + + if (monitor.isCanceled()) + throw new OperationCanceledException(); + + } finally { + monitor.done(); + } return projectHandle; } diff --git a/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileBufferOperationAction.java b/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileBufferOperationAction.java index 47d1a874403..0efd803137f 100644 --- a/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileBufferOperationAction.java +++ b/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileBufferOperationAction.java @@ -24,7 +24,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.resources.IFile; @@ -172,19 +172,23 @@ public class FileBufferOperationAction extends Action implements IWorkbenchWindo try { int ticks= 100; - SubMonitor subMonitor= SubMonitor.convert(monitor, fFileBufferOperation.getOperationName(), ticks); - IPath[] locations; - if (files != null) { - ticks-= 30; - locations= generateLocations(files, subMonitor.newChild(30)); - } else - locations= new IPath[] { location }; - - if (locations != null && locations.length > 0) { - FileBufferOperationRunner runner= new FileBufferOperationRunner(FileBuffers.getTextFileBufferManager(), getShell()); - runner.execute(locations, fileBufferOperation, subMonitor.newChild(ticks)); + monitor.beginTask(fFileBufferOperation.getOperationName(), ticks); + try { + IPath[] locations; + if (files != null) { + ticks -= 30; + locations= generateLocations(files, new SubProgressMonitor(monitor, 30)); + } else + locations= new IPath[] { location }; + + if (locations != null && locations.length > 0) { + FileBufferOperationRunner runner= new FileBufferOperationRunner(FileBuffers.getTextFileBufferManager(), getShell()); + runner.execute(locations, fileBufferOperation, new SubProgressMonitor(monitor, ticks)); + } + status= Status.OK_STATUS; + } finally { + monitor.done(); } - status= Status.OK_STATUS; } catch (OperationCanceledException e) { status= new Status(IStatus.CANCEL, EditorsUI.PLUGIN_ID, IStatus.OK, "", null); //$NON-NLS-1$ diff --git a/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileBufferOperationHandler.java b/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileBufferOperationHandler.java index f9da142aa4b..63ee227c408 100644 --- a/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileBufferOperationHandler.java +++ b/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileBufferOperationHandler.java @@ -28,7 +28,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.resources.IFile; @@ -195,19 +195,23 @@ public class FileBufferOperationHandler extends AbstractHandler { try { int ticks= 100; - SubMonitor subMonitor= SubMonitor.convert(monitor, fFileBufferOperation.getOperationName(), ticks); - IPath[] locations; - if (files != null) { - ticks-= 30; - locations= generateLocations(files, subMonitor.newChild(30)); - } else - locations= new IPath[] { location }; - - if (locations != null && locations.length > 0) { - FileBufferOperationRunner runner= new FileBufferOperationRunner(FileBuffers.getTextFileBufferManager(), getShell()); - runner.execute(locations, fileBufferOperation, subMonitor.newChild(ticks)); + monitor.beginTask(fFileBufferOperation.getOperationName(), ticks); + try { + IPath[] locations; + if (files != null) { + ticks -= 30; + locations= generateLocations(files, new SubProgressMonitor(monitor, 30)); + } else + locations= new IPath[] { location }; + + if (locations != null && locations.length > 0) { + FileBufferOperationRunner runner= new FileBufferOperationRunner(FileBuffers.getTextFileBufferManager(), getShell()); + runner.execute(locations, fileBufferOperation, new SubProgressMonitor(monitor, ticks)); + } + status= Status.OK_STATUS; + } finally { + monitor.done(); } - status= Status.OK_STATUS; } catch (OperationCanceledException e) { status= new Status(IStatus.CANCEL, EditorsUI.PLUGIN_ID, IStatus.OK, "", null); //$NON-NLS-1$ diff --git a/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileDocumentProvider.java b/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileDocumentProvider.java index cbf28075663..61e86952eab 100644 --- a/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileDocumentProvider.java +++ b/org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileDocumentProvider.java @@ -37,7 +37,7 @@ import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.QualifiedName; import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.core.runtime.content.IContentDescription; import org.eclipse.core.runtime.content.IContentType; import org.eclipse.core.runtime.jobs.ISchedulingRule; @@ -639,10 +639,15 @@ public class FileDocumentProvider extends StorageDocumentProvider { } } else { - SubMonitor subMonitor= SubMonitor.convert(monitor, TextEditorMessages.FileDocumentProvider_task_saving, 2); - ContainerCreator creator= new ContainerCreator(file.getWorkspace(), file.getParent().getFullPath()); - creator.createContainer(subMonitor.newChild(1)); - file.create(stream, false, subMonitor.newChild(1)); + try { + monitor.beginTask(TextEditorMessages.FileDocumentProvider_task_saving, 2000); + ContainerCreator creator = new ContainerCreator(file.getWorkspace(), file.getParent().getFullPath()); + creator.createContainer(new SubProgressMonitor(monitor, 1000)); + file.create(stream, false, new SubProgressMonitor(monitor, 1000)); + } + finally { + monitor.done(); + } } } else { |