Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java64
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);
+ }
+ }
}

Back to the top