Package uk.ac.starlink.table.join

# Class RangeModelProgressIndicator

java.lang.Object
javax.swing.DefaultBoundedRangeModel
uk.ac.starlink.table.join.RangeModelProgressIndicator

All Implemented Interfaces:
  `Serializable`, `Runnable`, `BoundedRangeModel`, `ProgressIndicator`

public class RangeModelProgressIndicator extends DefaultBoundedRangeModel implements ProgressIndicator, Runnable
ProgressIndicator implementation that can serve as the model for a `JProgressBar`. Calls to `startStage`, `setLevel` and `endStage` cause the state of the `BoundedRangeModel` that this implements to be updated accordingly (asynchronously of course). The string messages passed to `startStage` and `logMessage` are ignored - subclasses should override these methods (calling the superclass implementations as well) to do something with these strings.

Since:
  24 Mar 2004
Author:
  Mark Taylor (Starlink)
See Also:
  - Serialized Form

## Field Summary

### Fields inherited from class javax.swing.DefaultBoundedRangeModel

`changeEvent, listenerList`

## Constructor Summary

Constructors
Constructor
Description
`RangeModelProgressIndicator(boolean profile)`

## Method Summary

Modifier and Type
Method
Description
`void`
`endStage()`
Indicates that no more `ProgressIndicator.setLevel(double)` calls will be made until the next `ProgressIndicator.startStage(java.lang.String)`.
`void`
`logMessage(String msg)`
Registers a comment about the progress of the algorithm.
`void`
`run()`
Updates the state of the `BoundedRangeModel` - should only be called from the event dispatch thread.
`void`
`setLevel(double lev)`
Specifies that the work of the most recently-started stage is a certain proportion complete.
`void`
`startStage(String stage)`
Indicates that a number of `ProgressIndicator.setLevel(double)` calls may follow, followed by a `ProgressIndicator.endStage()` call.

### Methods inherited from class javax.swing.DefaultBoundedRangeModel

`addChangeListener, fireStateChanged, getChangeListeners, getExtent, getListeners, getMaximum, getMinimum, getValue, getValueIsAdjusting, removeChangeListener, setExtent, setMaximum, setMinimum, setRangeProperties, setValue, setValueIsAdjusting, toString`

### Methods inherited from class java.lang.Object

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

## Constructor Details

### RangeModelProgressIndicator

public RangeModelProgressIndicator(boolean profile)

## Method Details

### startStage

public void startStage(String stage)
Description copied from interface: `ProgressIndicator`
Indicates that a number of `ProgressIndicator.setLevel(double)` calls may follow, followed by a `ProgressIndicator.endStage()` call.

Specified by:
  `startStage` in interface `ProgressIndicator`
Parameters:
  `stage` - name/description of the processing stage

### setLevel

public void setLevel(double lev) throws InterruptedException
Description copied from interface: `ProgressIndicator`
Specifies that the work of the most recently-started stage is a certain proportion complete. Calls to this method must take place between paired calls to `ProgressIndicator.startStage(java.lang.String)` and `ProgressIndicator.endStage()`, preferably with non-decreasing values of `level`.

The method may throw an InterruptedException as a message to the caller that the work should be interrupted. A caller which receives such an exception should stop using resources and tidy up as soon as is convenient.

Specified by:
  `setLevel` in interface `ProgressIndicator`
Parameters:
  `lev` - value between 0. and 1. indicating amount of completion
Throws:
  `InterruptedException` - as a message to the caller that the work is no longer required Is this abuse of InterruptedException??

### endStage

public void endStage()
Description copied from interface: `ProgressIndicator`
Indicates that no more `ProgressIndicator.setLevel(double)` calls will be made until the next `ProgressIndicator.startStage(java.lang.String)`.

Specified by:
  `endStage` in interface `ProgressIndicator`

### logMessage

public void logMessage(String msg)
Description copied from interface: `ProgressIndicator`
Registers a comment about the progress of the algorithm. This should not be called between calls to `ProgressIndicator.startStage(java.lang.String)` and `ProgressIndicator.endStage()`.

Specified by:
  `logMessage` in interface `ProgressIndicator`
Parameters:
  `msg` - message

### run

public void run()
Updates the state of the `BoundedRangeModel` - should only be called from the event dispatch thread.

Specified by:
  `run` in interface `Runnable`