Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Xenos2015-09-15 15:55:22 +0000
committerStefan Xenos2015-09-15 16:47:24 +0000
commite1fb21c161e6f9188ad46cb4aebf2c4a6984f90c (patch)
treeb71d1c26d1556b6e3737a90f63045f0a4a42dfc2
parent9030b39b10c8df7a53aacb45437b92be765b8566 (diff)
downloadeclipse.platform.ui-e1fb21c161e6f9188ad46cb4aebf2c4a6984f90c.tar.gz
eclipse.platform.ui-e1fb21c161e6f9188ad46cb4aebf2c4a6984f90c.tar.xz
eclipse.platform.ui-e1fb21c161e6f9188ad46cb4aebf2c4a6984f90c.zip
Bug 475785 - Remove usage of SubProgressMonitor in org.eclipse.ui.actions
Change-Id: Ib9af592aed4a204d52ab8cb2685d3a408e26905d Signed-off-by: Stefan Xenos <sxenos@gmail.com>
-rw-r--r--bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/BuildAction.java9
-rw-r--r--bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java110
-rw-r--r--bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/GlobalBuildAction.java7
-rw-r--r--bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/MoveFilesAndFoldersOperation.java45
-rw-r--r--bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/OpenResourceAction.java35
-rw-r--r--bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/RefreshAction.java34
-rw-r--r--bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/WorkspaceAction.java35
-rw-r--r--bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/ContainerGenerator.java38
-rw-r--r--bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java19
9 files changed, 147 insertions, 185 deletions
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/BuildAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/BuildAction.java
index 2c9fa27a256..18a97b182fd 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/BuildAction.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/BuildAction.java
@@ -30,7 +30,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.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -278,12 +278,13 @@ public class BuildAction extends WorkspaceAction {
@Override
public IStatus runInWorkspace(IProgressMonitor monitor) {
IStatus status = null;
- monitor.beginTask("", 10000); //$NON-NLS-1$
- monitor.setTaskName(getOperationMessage());
+ SubMonitor progress = SubMonitor.convert(monitor, 10000);
+ progress.setTaskName(getOperationMessage());
try {
// Backwards compatibility: check shouldPerformResourcePruning().
// Previously if this returned true, the full reference graph is built, otherwise just build the selected configurations
- ResourcesPlugin.getWorkspace().build(configs, kind, shouldPerformResourcePruning(), new SubProgressMonitor(monitor, 10000));
+ ResourcesPlugin.getWorkspace().build(configs, kind, shouldPerformResourcePruning(),
+ progress.newChild(10000));
} catch (CoreException e) {
status = e.getStatus();
}
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java
index 3972803ca8b..ca6e2bb26c5 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CopyFilesAndFoldersOperation.java
@@ -44,7 +44,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.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IInputValidator;
@@ -424,7 +424,7 @@ public class CopyFilesAndFoldersOperation {
* the resources to copy
* @param destination
* destination to which resources will be copied
- * @param subMonitor
+ * @param monitor
* a progress monitor for showing progress and for cancelation
*
* @deprecated As of 3.3, the work is performed in the undoable operation
@@ -432,15 +432,12 @@ public class CopyFilesAndFoldersOperation {
* {@link #getUndoableCopyOrMoveOperation(IResource[], IPath)}
*/
@Deprecated
- protected void copy(IResource[] resources, IPath destination,
- IProgressMonitor subMonitor) throws CoreException {
-
- subMonitor
- .beginTask(
- IDEWorkbenchMessages.CopyFilesAndFoldersOperation_CopyResourcesTask,
- resources.length);
+ protected void copy(IResource[] resources, IPath destination, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMonitor = SubMonitor.convert(monitor,
+ IDEWorkbenchMessages.CopyFilesAndFoldersOperation_CopyResourcesTask, resources.length);
for (int i = 0; i < resources.length; i++) {
+ SubMonitor iterationProgress = subMonitor.newChild(1).setWorkRemaining(100);
IResource source = resources[i];
IPath destinationPath = destination.append(source.getName());
IWorkspace workspace = source.getWorkspace();
@@ -452,55 +449,45 @@ public class CopyFilesAndFoldersOperation {
// children of the folder.
if (homogenousResources(source, existing)) {
IResource[] children = ((IContainer) source).members();
- copy(children, destinationPath, new SubProgressMonitor(
- subMonitor, 1));
+ copy(children, destinationPath, iterationProgress.newChild(100));
} else {
// delete the destination folder, copying a linked folder
// over an unlinked one or vice versa. Fixes bug 28772.
- delete(existing, new SubProgressMonitor(subMonitor, 0));
- source.copy(destinationPath, IResource.SHALLOW,
- new SubProgressMonitor(subMonitor, 1));
+ delete(existing, iterationProgress.newChild(10));
+ source.copy(destinationPath, IResource.SHALLOW, iterationProgress.newChild(90));
}
} else {
if (existing != null) {
if (homogenousResources(source, existing)) {
- copyExisting(source, existing, new SubProgressMonitor(
- subMonitor, 1));
+ copyExisting(source, existing, iterationProgress.newChild(100));
} else {
- if (existing != null) {
- // Copying a linked resource over unlinked or vice
- // versa.
- // Can't use setContents here. Fixes bug 28772.
- delete(existing, new SubProgressMonitor(subMonitor, 0));
- }
-
- if ((createLinks || createVirtualFoldersAndLinks)
- && (source.isLinked() == false)
- && (source.isVirtual() == false)) {
- if (source.getType() == IResource.FILE) {
- IFile file = workspaceRoot.getFile(destinationPath);
- file.createLink(createRelativePath(source.getLocationURI(), file), 0,
- new SubProgressMonitor(subMonitor, 1));
- } else {
- IFolder folder = workspaceRoot
- .getFolder(destinationPath);
- if (createVirtualFoldersAndLinks) {
- folder.create(IResource.VIRTUAL, true,
- new SubProgressMonitor(subMonitor,
- 1));
- IResource[] members = ((IContainer) source)
- .members();
- if (members.length > 0)
- copy(members, destinationPath,
- new SubProgressMonitor(subMonitor,
- 1));
- } else
- folder.createLink(createRelativePath(source.getLocationURI(), folder), 0,
- new SubProgressMonitor(subMonitor, 1));
+ if (existing != null) {
+ // Copying a linked resource over unlinked or vice
+ // versa.
+ // Can't use setContents here. Fixes bug 28772.
+ delete(existing, iterationProgress.newChild(10));
}
- } else
- source.copy(destinationPath, IResource.SHALLOW,
- new SubProgressMonitor(subMonitor, 1));
+ iterationProgress.setWorkRemaining(100);
+
+ if ((createLinks || createVirtualFoldersAndLinks) && (source.isLinked() == false)
+ && (source.isVirtual() == false)) {
+ if (source.getType() == IResource.FILE) {
+ IFile file = workspaceRoot.getFile(destinationPath);
+ file.createLink(createRelativePath(source.getLocationURI(), file), 0,
+ iterationProgress.newChild(100));
+ } else {
+ IFolder folder = workspaceRoot.getFolder(destinationPath);
+ if (createVirtualFoldersAndLinks) {
+ folder.create(IResource.VIRTUAL, true, subMonitor.newChild(1));
+ IResource[] members = ((IContainer) source).members();
+ if (members.length > 0)
+ copy(members, destinationPath, iterationProgress.newChild(100));
+ } else
+ folder.createLink(createRelativePath(source.getLocationURI(), folder), 0,
+ iterationProgress.newChild(100));
+ }
+ } else
+ source.copy(destinationPath, IResource.SHALLOW, iterationProgress.newChild(100));
}
if (subMonitor.isCanceled()) {
@@ -544,17 +531,15 @@ public class CopyFilesAndFoldersOperation {
* @throws CoreException
* setContents failed
*/
- private void copyExisting(IResource source, IResource existing,
- IProgressMonitor subMonitor) throws CoreException {
+ private void copyExisting(IResource source, IResource existing, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 1);
IFile existingFile = getFile(existing);
if (existingFile != null) {
IFile sourceFile = getFile(source);
if (sourceFile != null) {
- existingFile.setContents(sourceFile.getContents(),
- IResource.KEEP_HISTORY, new SubProgressMonitor(
- subMonitor, 0));
+ existingFile.setContents(sourceFile.getContents(), IResource.KEEP_HISTORY, subMonitor.newChild(1));
}
}
}
@@ -1802,16 +1787,15 @@ public class CopyFilesAndFoldersOperation {
return (IResource[]) copyItems.toArray(new IResource[copyItems.size()]);
}
- private void copyResources(final IResource[] resources,
- final IPath destinationPath, final IResource[][] copiedResources,
- IProgressMonitor monitor) {
+ private void copyResources(final IResource[] resources, final IPath destinationPath,
+ final IResource[][] copiedResources, IProgressMonitor mon) {
IResource[] copyResources = resources;
// Fix for bug 31116. Do not provide a task name when
// creating the task.
- monitor.beginTask("", 100); //$NON-NLS-1$
- monitor.setTaskName(getOperationTitle());
- monitor.worked(10); // show some initial progress
+ SubMonitor subMonitor = SubMonitor.convert(mon, 100);
+ subMonitor.setTaskName(getOperationTitle());
+ subMonitor.worked(10); // show some initial progress
// Checks only required if this is an exisiting container path.
boolean copyWithAutoRename = false;
@@ -1845,13 +1829,11 @@ public class CopyFilesAndFoldersOperation {
errorStatus = null;
if (copyResources.length > 0) {
if (copyWithAutoRename) {
- performCopyWithAutoRename(copyResources, destinationPath,
- new SubProgressMonitor(monitor, 90));
+ performCopyWithAutoRename(copyResources, destinationPath, subMonitor.newChild(90));
} else {
- performCopy(copyResources, destinationPath, new SubProgressMonitor(monitor, 90));
+ performCopy(copyResources, destinationPath, subMonitor.newChild(90));
}
}
- monitor.done();
copiedResources[0] = copyResources;
}
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/GlobalBuildAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/GlobalBuildAction.java
index 5eeda86021a..4acbaa2b804 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/GlobalBuildAction.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/GlobalBuildAction.java
@@ -19,7 +19,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.ErrorDialog;
@@ -172,10 +172,9 @@ public class GlobalBuildAction extends Action implements
Job buildJob = new Job(IDEWorkbenchMessages.GlobalBuildAction_jobTitle) {
@Override
protected IStatus run(IProgressMonitor monitor) {
- monitor.beginTask(getOperationMessage(), 100);
+ SubMonitor subMonitor = SubMonitor.convert(monitor, getOperationMessage(), 100);
try {
- ResourcesPlugin.getWorkspace().build(buildType,
- new SubProgressMonitor(monitor, 100));
+ ResourcesPlugin.getWorkspace().build(buildType, subMonitor.newChild(100));
} catch (CoreException e) {
return e.getStatus();
} finally {
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/MoveFilesAndFoldersOperation.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/MoveFilesAndFoldersOperation.java
index e79be2f8d6c..4371b568ef6 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/MoveFilesAndFoldersOperation.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/MoveFilesAndFoldersOperation.java
@@ -19,7 +19,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
-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.ide.undo.AbstractWorkspaceOperation;
@@ -67,7 +67,7 @@ public class MoveFilesAndFoldersOperation extends CopyFilesAndFoldersOperation {
* the resources to move
* @param destination
* destination to which resources will be moved
- * @param subMonitor
+ * @param monitor
* a progress monitor for showing progress and for cancelation
*
* @deprecated As of 3.3, the work is performed in the undoable operation
@@ -76,9 +76,10 @@ public class MoveFilesAndFoldersOperation extends CopyFilesAndFoldersOperation {
*/
@Deprecated
@Override
- protected void copy(IResource[] resources, IPath destination,
- IProgressMonitor subMonitor) throws CoreException {
+ protected void copy(IResource[] resources, IPath destination, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMonitor = SubMonitor.convert(monitor, resources.length);
for (int i = 0; i < resources.length; i++) {
+ SubMonitor iterationMonitor = subMonitor.newChild(1).setWorkRemaining(100);
IResource source = resources[i];
IPath destinationPath = destination.append(source.getName());
IWorkspace workspace = source.getWorkspace();
@@ -89,36 +90,32 @@ public class MoveFilesAndFoldersOperation extends CopyFilesAndFoldersOperation {
// move the children of the folder.
if (homogenousResources(source, existing)) {
IResource[] children = ((IContainer) source).members();
- copy(children, destinationPath, subMonitor);
+ copy(children, destinationPath, iterationMonitor.newChild(100));
delete(source, subMonitor);
} else {
// delete the destination folder, moving a linked folder
// over an unlinked one or vice versa. Fixes bug 28772.
- delete(existing, new SubProgressMonitor(subMonitor, 0));
- source.move(destinationPath, IResource.SHALLOW
- | IResource.KEEP_HISTORY, new SubProgressMonitor(
- subMonitor, 0));
+ delete(existing, iterationMonitor.newChild(50));
+ source.move(destinationPath, IResource.SHALLOW | IResource.KEEP_HISTORY,
+ iterationMonitor.newChild(50));
}
} else {
// if we're merging folders, we could be overwriting an existing
// file
if (existing != null) {
if (homogenousResources(source, existing)) {
- moveExisting(source, existing, subMonitor);
+ moveExisting(source, existing, iterationMonitor.newChild(100));
} else {
// Moving a linked resource over unlinked or vice versa.
// Can't use setContents here. Fixes bug 28772.
- delete(existing, new SubProgressMonitor(subMonitor, 0));
- source.move(destinationPath, IResource.SHALLOW
- | IResource.KEEP_HISTORY,
- new SubProgressMonitor(subMonitor, 0));
+ delete(existing, iterationMonitor.newChild(50));
+ source.move(destinationPath, IResource.SHALLOW | IResource.KEEP_HISTORY,
+ iterationMonitor.newChild(50));
}
} else {
- source.move(destinationPath, IResource.SHALLOW
- | IResource.KEEP_HISTORY, new SubProgressMonitor(
- subMonitor, 0));
+ source.move(destinationPath, IResource.SHALLOW | IResource.KEEP_HISTORY,
+ iterationMonitor.newChild(100));
}
- subMonitor.worked(1);
if (subMonitor.isCanceled()) {
throw new OperationCanceledException();
}
@@ -191,25 +188,23 @@ public class MoveFilesAndFoldersOperation extends CopyFilesAndFoldersOperation {
* source file to move
* @param existing
* existing file to set the source content in
- * @param subMonitor
+ * @param monitor
* a progress monitor for showing progress and for cancelation
* @throws CoreException
* setContents failed
* @deprecated As of 3.3, this method is not called.
*/
@Deprecated
- private void moveExisting(IResource source, IResource existing,
- IProgressMonitor subMonitor) throws CoreException {
+ private void moveExisting(IResource source, IResource existing, IProgressMonitor monitor) throws CoreException {
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 2);
IFile existingFile = getFile(existing);
if (existingFile != null) {
IFile sourceFile = getFile(source);
if (sourceFile != null) {
- existingFile.setContents(sourceFile.getContents(),
- IResource.KEEP_HISTORY, new SubProgressMonitor(
- subMonitor, 0));
- delete(sourceFile, subMonitor);
+ existingFile.setContents(sourceFile.getContents(), IResource.KEEP_HISTORY, subMonitor.newChild(1));
+ delete(sourceFile, subMonitor.newChild(1));
}
}
}
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/OpenResourceAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/OpenResourceAction.java
index 05362217593..7c8d9cc7475 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/OpenResourceAction.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/OpenResourceAction.java
@@ -27,7 +27,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.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
@@ -215,7 +215,7 @@ public class OpenResourceAction extends WorkspaceAction implements IResourceChan
* Opens the selected projects, and all related projects, in the background.
*/
private void runOpenWithReferences() {
- final List resources = new ArrayList(getActionResources());
+ final List<IResource> resources = new ArrayList<>(getActionResources());
Job job = new WorkspaceJob(removeMnemonics(getText())) {
private boolean openProjectReferences = true;
private boolean hasPrompted = false;
@@ -223,11 +223,9 @@ public class OpenResourceAction extends WorkspaceAction implements IResourceChan
/**
* Opens a project along with all projects it references
*/
- private void doOpenWithReferences(IProject project, IProgressMonitor monitor) throws CoreException {
- if (!project.exists() || project.isOpen()) {
- return;
- }
- project.open(new SubProgressMonitor(monitor, 1000));
+ private void doOpenWithReferences(IProject project, IProgressMonitor mon) throws CoreException {
+ SubMonitor subMonitor = SubMonitor.convert(mon, openProjectReferences ? 2 : 1);
+ project.open(subMonitor.newChild(1));
final IProject[] references = project.getReferencedProjects();
if (!hasPrompted) {
openProjectReferences = false;
@@ -252,23 +250,28 @@ public class OpenResourceAction extends WorkspaceAction implements IResourceChan
}
}
if (openProjectReferences) {
+ SubMonitor loopMonitor = subMonitor.newChild(1).setWorkRemaining(references.length);
for (int i = 0; i < references.length; i++) {
- doOpenWithReferences(references[i], monitor);
+ doOpenWithReferences(references[i], loopMonitor.newChild(1));
}
}
}
@Override
public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
- try {
- // at most we can only open all projects currently closed
- monitor.beginTask("", countClosedProjects() * 1000); //$NON-NLS-1$
- monitor.setTaskName(getOperationMessage());
- for (Iterator it = resources.iterator(); it.hasNext();) {
- doOpenWithReferences((IProject) it.next(), monitor);
+ SubMonitor subMonitor = SubMonitor.convert(monitor, countClosedProjects());
+ // at most we can only open all projects currently closed
+ subMonitor.setTaskName(getOperationMessage());
+ for (IResource resource : resources) {
+ if (!(resource instanceof IProject)) {
+ continue;
+ }
+
+ IProject project = (IProject) resource;
+ if (!project.exists() || project.isOpen()) {
+ continue;
}
- } finally {
- monitor.done();
+ doOpenWithReferences(project, subMonitor.newChild(1));
}
return Status.OK_STATUS;
}
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/RefreshAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/RefreshAction.java
index 54f1208def9..eacad7c4e57 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/RefreshAction.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/RefreshAction.java
@@ -30,7 +30,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.core.runtime.jobs.MultiRule;
import org.eclipse.jface.dialogs.IDialogConstants;
@@ -221,28 +221,24 @@ public class RefreshAction extends WorkspaceAction {
}
return new WorkspaceModifyOperation(rule) {
@Override
- public void execute(IProgressMonitor monitor) {
+ public void execute(IProgressMonitor mon) {
+ SubMonitor subMonitor = SubMonitor.convert(mon, resources.size());
MultiStatus errors = null;
- monitor.beginTask("", resources.size() * 1000); //$NON-NLS-1$
- monitor.setTaskName(getOperationMessage());
+ subMonitor.setTaskName(getOperationMessage());
Iterator<? extends IResource> resourcesEnum = resources.iterator();
- try {
- while (resourcesEnum.hasNext()) {
- try {
- IResource resource = resourcesEnum.next();
- refreshResource(resource, new SubProgressMonitor(monitor, 1000));
- } catch (CoreException e) {
- errors = recordError(errors, e);
- }
- if (monitor.isCanceled()) {
- throw new OperationCanceledException();
- }
+ while (resourcesEnum.hasNext()) {
+ try {
+ IResource resource = resourcesEnum.next();
+ refreshResource(resource, subMonitor.newChild(1));
+ } catch (CoreException e) {
+ errors = recordError(errors, e);
}
- if (errors != null) {
- errorStatus[0] = errors;
+ if (subMonitor.isCanceled()) {
+ throw new OperationCanceledException();
}
- } finally {
- monitor.done();
+ }
+ if (errors != null) {
+ errorStatus[0] = errors;
}
}
};
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/WorkspaceAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/WorkspaceAction.java
index 006319878f0..fb2c590b045 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/WorkspaceAction.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/WorkspaceAction.java
@@ -26,7 +26,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.ErrorDialog;
@@ -140,38 +140,29 @@ public abstract class WorkspaceAction extends SelectionListenerAction {
* a progress monitor
* @return The result of the execution
*/
- final IStatus execute(List<? extends IResource> resources, IProgressMonitor monitor) {
+ final IStatus execute(List<? extends IResource> resources, IProgressMonitor mon) {
MultiStatus errors = null;
// 1FTIMQN: ITPCORE:WIN - clients required to do too much iteration work
if (shouldPerformResourcePruning()) {
resources = pruneResources(resources);
}
- // 1FV0B3Y: ITPUI:ALL - sub progress monitors granularity issues
- monitor.beginTask("", resources.size() * 1000); //$NON-NLS-1$
+ SubMonitor subMonitor = SubMonitor.convert(mon, resources.size());
// Fix for bug 31768 - Don't provide a task name in beginTask
// as it will be appended to each subTask message. Need to
// call setTaskName as its the only was to assure the task name is
// set in the monitor (see bug 31824)
- monitor.setTaskName(getOperationMessage());
- Iterator<? extends IResource> resourcesEnum = resources.iterator();
- try {
- while (resourcesEnum.hasNext()) {
- IResource resource = resourcesEnum.next();
- try {
- // 1FV0B3Y: ITPUI:ALL - sub progress monitors granularity
- // issues
- invokeOperation(resource, new SubProgressMonitor(monitor, 1000));
- } catch (CoreException e) {
- errors = recordError(errors, e);
- }
- if (monitor.isCanceled()) {
- throw new OperationCanceledException();
- }
+ subMonitor.setTaskName(getOperationMessage());
+ for (IResource resource : resources) {
+ try {
+ invokeOperation(resource, subMonitor.newChild(1));
+ } catch (CoreException e) {
+ errors = recordError(errors, e);
+ }
+ if (subMonitor.isCanceled()) {
+ throw new OperationCanceledException();
}
- return errors == null ? Status.OK_STATUS : errors;
- } finally {
- monitor.done();
}
+ return errors == null ? Status.OK_STATUS : errors;
}
/**
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/ContainerGenerator.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/ContainerGenerator.java
index 29afc51711a..889c5433779 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/ContainerGenerator.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/ContainerGenerator.java
@@ -22,7 +22,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.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
@@ -113,21 +113,16 @@ public class ContainerGenerator {
*/
private IProject createProject(IProject projectHandle,
IProgressMonitor monitor) throws CoreException {
- try {
- monitor.beginTask("", 2000);//$NON-NLS-1$
-
- projectHandle.create(new SubProgressMonitor(monitor, 1000));
- if (monitor.isCanceled()) {
- throw new OperationCanceledException();
- }
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 2);
+ projectHandle.create(subMonitor.newChild(1));
+ if (monitor.isCanceled()) {
+ throw new OperationCanceledException();
+ }
- projectHandle.open(new SubProgressMonitor(monitor, 1000));
- if (monitor.isCanceled()) {
- throw new OperationCanceledException();
- }
- } finally {
- monitor.done();
- }
+ projectHandle.open(subMonitor.newChild(1));
+ if (monitor.isCanceled()) {
+ throw new OperationCanceledException();
+ }
return projectHandle;
}
@@ -162,9 +157,8 @@ public class ContainerGenerator {
public IContainer generateContainer(IProgressMonitor monitor)
throws CoreException {
IDEWorkbenchPlugin.getPluginWorkspace().run(monitor1 -> {
- monitor1
- .beginTask(
- IDEWorkbenchMessages.ContainerGenerator_progressMessage, 1000 * containerFullPath.segmentCount());
+ SubMonitor subMonitor = SubMonitor.convert(monitor1,
+ IDEWorkbenchMessages.ContainerGenerator_progressMessage, containerFullPath.segmentCount());
if (container != null) {
return;
}
@@ -187,18 +181,16 @@ public class ContainerGenerator {
throw new CoreException(new Status(IStatus.ERROR, IDEWorkbenchPlugin.IDE_WORKBENCH, 1, msg, null));
}
container = (IContainer) resource;
- monitor1.worked(1000);
+ subMonitor.worked(1);
} else {
if (i == 0) {
IProject projectHandle = createProjectHandle(root,
currentSegment);
- container = createProject(projectHandle,
- new SubProgressMonitor(monitor1, 1000));
+ container = createProject(projectHandle, subMonitor.newChild(1));
} else {
IFolder folderHandle = createFolderHandle(
container, currentSegment);
- container = createFolder(folderHandle,
- new SubProgressMonitor(monitor1, 1000));
+ container = createFolder(folderHandle, subMonitor.newChild(1));
}
}
}
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java
index fe601583021..495e7e91827 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFolderMainPage.java
@@ -37,7 +37,7 @@ import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IMessageProvider;
@@ -299,14 +299,15 @@ public class WizardNewFolderMainPage extends WizardPage implements Listener {
@Deprecated
protected void createFolder(IFolder folderHandle, IProgressMonitor monitor)
throws CoreException {
+ SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
+
try {
// Create the folder resource in the workspace
// Update: Recursive to create any folders which do not exist
// already
if (!folderHandle.exists()) {
if (linkTargetPath != null) {
- folderHandle.createLink(linkTargetPath,
- IResource.ALLOW_MISSING_LOCAL, monitor);
+ folderHandle.createLink(linkTargetPath, IResource.ALLOW_MISSING_LOCAL, subMonitor.newChild(100));
} else {
IPath path = folderHandle.getFullPath();
IWorkspaceRoot root = ResourcesPlugin.getWorkspace()
@@ -315,6 +316,8 @@ public class WizardNewFolderMainPage extends WizardPage implements Listener {
if (numSegments > 2
&& !root.getFolder(path.removeLastSegments(1))
.exists()) {
+
+ SubMonitor loopProgress = subMonitor.newChild(90).setWorkRemaining(numSegments - 3);
// If the direct parent of the path doesn't exist, try
// to create the
// necessary directories.
@@ -322,25 +325,25 @@ public class WizardNewFolderMainPage extends WizardPage implements Listener {
IFolder folder = root.getFolder(path
.removeLastSegments(i));
if (!folder.exists()) {
- folder.create(false, true, monitor);
+ folder.create(false, true, loopProgress.newChild(1));
}
}
}
- folderHandle.create(false, true, monitor);
+ subMonitor.setWorkRemaining(10);
+ folderHandle.create(false, true, subMonitor.newChild(10));
}
}
} catch (CoreException e) {
// If the folder already existed locally, just refresh to get
// contents
if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED) {
- folderHandle.refreshLocal(IResource.DEPTH_INFINITE,
- new SubProgressMonitor(monitor, 500));
+ folderHandle.refreshLocal(IResource.DEPTH_INFINITE, subMonitor.setWorkRemaining(1).newChild(1));
} else {
throw e;
}
}
- if (monitor.isCanceled()) {
+ if (subMonitor.isCanceled()) {
throw new OperationCanceledException();
}
}

Back to the top