# Class SubProgressMonitor

java.lang.Object
org.eclipse.core.runtime.ProgressMonitorWrapper
org.eclipse.core.runtime.SubProgressMonitor

All Implemented Interfaces:
  `IProgressMonitor, IProgressMonitorWithBlocking`

@Deprecated public class SubProgressMonitor extends ProgressMonitorWrapper
Deprecated.
use `SubMonitor` instead
A progress monitor that uses a given amount of work ticks from a parent monitor. Code that currently uses this utility should be rewritten to use `SubMonitor` instead. Consider the following example:

    void someMethod(IProgressMonitor pm) {
            pm.beginTask("Main Task", 100);
            SubProgressMonitor subMonitor1 = new SubProgressMonitor(pm, 60);
            try {
                    doSomeWork(subMonitor1);
            } finally {
                    subMonitor1.done();
            }
            SubProgressMonitor subMonitor2 = new SubProgressMonitor(pm, 40);
            try {
                    doSomeMoreWork(subMonitor2);
            } finally {
                    subMonitor2.done();
            }
    }

The above code should be refactored to this:

    void someMethod(IProgressMonitor pm) {
            SubMonitor subMonitor = SubMonitor.convert(pm, "Main Task", 100);
            doSomeWork(subMonitor.split(60));
            doSomeMoreWork(subMonitor.split(40));
    }

The process for converting code which used SubProgressMonitor into SubMonitor is:

- Calls to `IProgressMonitor.beginTask(String, int)` on the root monitor should be replaced by a call to `SubMonitor.convert(IProgressMonitor)`. Keep the returned SubMonitor around as a local variable and refer to it instead of the root monitor for the remainder of the method.
- All calls to `SubProgressMonitor(IProgressMonitor, int)` should be replaced by calls to `SubMonitor.split(int)`.
- If a SubProgressMonitor is constructed using the SUPPRESS_SUBTASK_LABEL flag, replace it with the two-argument version of `SubMonitor.split(int, int)` using `SubMonitor.SUPPRESS_SUBTASK` as the second argument.
- It is not necessary to call done on an instance of `SubMonitor`.

Please see the `SubMonitor` documentation for further examples.

This class can be used without OSGi running.

This class may be instantiated or subclassed by clients.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`PREPEND_MAIN_LABEL_TO_SUBTASK`
Deprecated.
`static final int`
`SUPPRESS_SUBTASK_LABEL`
Deprecated.

### Fields inherited from interface IProgressMonitor

`UNKNOWN`

## Constructor Summary

Constructors
Constructor
Description
`SubProgressMonitor(IProgressMonitor monitor, int ticks)`
Deprecated.
`SubProgressMonitor(IProgressMonitor monitor, int ticks, int style)`
Deprecated.

## Method Summary

Modifier and Type
Method
Description
`void`
`beginTask(String name, int totalWork)`
Deprecated.
`void`
`done()`
Deprecated.
`void`
`internalWorked(double work)`
Deprecated.
`void`
`subTask(String name)`
Deprecated.
`void`
`worked(int work)`
Deprecated.

### Methods inherited from class ProgressMonitorWrapper

`clearBlocked, getWrappedProgressMonitor, isCanceled, setBlocked, setCanceled, setTaskName`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface IProgressMonitor

`slice`

## Field Details

### SUPPRESS_SUBTASK_LABEL

@Deprecated public static final int SUPPRESS_SUBTASK_LABEL
Deprecated.
Style constant indicating that calls to `subTask` should not have any effect. This is equivalent to `SubMonitor.SUPPRESS_SUBTASK`

See Also:
  - `SubProgressMonitor(IProgressMonitor,int,int)`
  - Constant Field Values

### PREPEND_MAIN_LABEL_TO_SUBTASK

@Deprecated public static final int PREPEND_MAIN_LABEL_TO_SUBTASK
Deprecated.
Style constant indicating that the main task label should be prepended to the subtask label.

See Also:
  - `SubProgressMonitor(IProgressMonitor,int,int)`
  - Constant Field Values

## Constructor Details

### SubProgressMonitor

@Deprecated public SubProgressMonitor(IProgressMonitor monitor, int ticks)
Deprecated.
Creates a new sub-progress monitor for the given monitor. The sub progress monitor uses the given number of work ticks from its parent monitor.

Parameters:
  `monitor` - the parent progress monitor
  `ticks` - the number of work ticks allocated from the parent monitor

### SubProgressMonitor

@Deprecated public SubProgressMonitor(IProgressMonitor monitor, int ticks, int style)
Deprecated.
Creates a new sub-progress monitor for the given monitor. The sub progress monitor uses the given number of work ticks from its parent monitor.

Parameters:
  `monitor` - the parent progress monitor
  `ticks` - the number of work ticks allocated from the parent monitor
  `style` - one of
  - `SUPPRESS_SUBTASK_LABEL`
  - `PREPEND_MAIN_LABEL_TO_SUBTASK`
See Also:
  - `SUPPRESS_SUBTASK_LABEL`
  - `PREPEND_MAIN_LABEL_TO_SUBTASK`

## Method Details

### beginTask

@Deprecated public void beginTask(String name, int totalWork)
Deprecated.
Starts a new main task. Since this progress monitor is a sub progress monitor, the given name will NOT be used to update the progress bar's main task label. That means the given string will be ignored. If style `PREPEND_MAIN_LABEL_TO_SUBTASK` is specified, then the given string will be prepended to every string passed to `subTask(String)`.

Specified by:
  `beginTask` in interface `IProgressMonitor`
Overrides:
  `beginTask` in class `ProgressMonitorWrapper`
Parameters:
  `name` - the name (or description) of the main task
  `totalWork` - the total number of work units into which the main task is been subdivided. If the value is `UNKNOWN` the implementation is free to indicate progress in a way which doesn't require the total number of work units in advance.
See Also:
  - `IProgressMonitor.beginTask(String, int)`

### done

@Deprecated public void done()
Deprecated.
Description copied from class: `ProgressMonitorWrapper`
This implementation of a `IProgressMonitor` method forwards to the wrapped progress monitor. Clients may override this method to do additional processing.

Specified by:
  `done` in interface `IProgressMonitor`
Overrides:
  `done` in class `ProgressMonitorWrapper`
See Also:
  - `IProgressMonitor.done()`

### internalWorked

@Deprecated public void internalWorked(double work)
Deprecated.
Description copied from class: `ProgressMonitorWrapper`
This implementation of a `IProgressMonitor` method forwards to the wrapped progress monitor. Clients may override this method to do additional processing.

Specified by:
  `internalWorked` in interface `IProgressMonitor`
Overrides:
  `internalWorked` in class `ProgressMonitorWrapper`
Parameters:
  `work` - the amount of work done
See Also:
  - `IProgressMonitor.internalWorked(double)`

### subTask

@Deprecated public void subTask(String name)
Deprecated.
Description copied from class: `ProgressMonitorWrapper`
This implementation of a `IProgressMonitor` method forwards to the wrapped progress monitor. Clients may override this method to do additional processing.

Specified by:
  `subTask` in interface `IProgressMonitor`
Overrides:
  `subTask` in class `ProgressMonitorWrapper`
Parameters:
  `name` - the name (or description) of the subtask
See Also:
  - `IProgressMonitor.subTask(String)`

### worked

@Deprecated public void worked(int work)
Deprecated.
Description copied from class: `ProgressMonitorWrapper`
This implementation of a `IProgressMonitor` method forwards to the wrapped progress monitor. Clients may override this method to do additional processing.

Specified by:
  `worked` in interface `IProgressMonitor`
Overrides:
  `worked` in class `ProgressMonitorWrapper`
Parameters:
  `work` - a non-negative number of work units just completed
See Also:
  - `IProgressMonitor.worked(int)`