diff options
Diffstat (limited to 'plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/monitor/EclipseMonitor.java')
-rw-r--r-- | plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/monitor/EclipseMonitor.java | 64 |
1 files changed, 62 insertions, 2 deletions
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/monitor/EclipseMonitor.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/monitor/EclipseMonitor.java index 236ae6eda4..9bda495a86 100644 --- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/monitor/EclipseMonitor.java +++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/monitor/EclipseMonitor.java @@ -28,13 +28,14 @@ public class EclipseMonitor extends Monitor throw new IllegalArgumentException("progressMonitor == null"); } - this.progressMonitor = progressMonitor; + this.progressMonitor = new DelegatingProgressMonitor(progressMonitor); } private EclipseMonitor(EclipseMonitor parent, int workFromParent) { super(parent, workFromParent); - progressMonitor = new SubProgressMonitor(parent.getProgressMonitor(), workFromParent); + progressMonitor = new SubProgressMonitor(new SubProgressMonitor(parent.getProgressMonitor(), workFromParent), + workFromParent); } public IProgressMonitor getProgressMonitor() @@ -86,4 +87,63 @@ public class EclipseMonitor extends Monitor { return new EclipseMonitor(this, workFromParent); } + + /** + * @author Eike Stepper + */ + private final class DelegatingProgressMonitor implements IProgressMonitor + { + private IProgressMonitor delegate; + + public DelegatingProgressMonitor(IProgressMonitor delegate) + { + this.delegate = delegate; + } + + public IProgressMonitor getDelegate() + { + return delegate; + } + + public void beginTask(String name, int totalWork) + { + delegate.beginTask(name, totalWork); + } + + public void done() + { + delegate.done(); + } + + public void internalWorked(double work) + { + delegate.internalWorked(work); + } + + public boolean isCanceled() + { + return delegate.isCanceled(); + } + + public void setCanceled(boolean value) + { + EclipseMonitor.this.setCanceled(value); + delegate.setCanceled(value); + } + + public void setTaskName(String name) + { + delegate.setTaskName(name); + } + + public void subTask(String name) + { + delegate.subTask(name); + } + + public void worked(int work) + { + delegate.worked(work); + } + } } |