Package com.biglybt.ui.swt.progress
Class ProgressReportingManager
- java.lang.Object
-
- com.biglybt.ui.swt.progress.ProgressReportingManager
-
- All Implemented Interfaces:
IProgressReportConstants
public class ProgressReportingManager extends java.lang.Object implements IProgressReportConstants
A manager that aggregates and forward progress information for long running operationsThis is a non-intrusive implementation, such that, it does not directly manage any of the process; it simply receives and forwards information
The primary user of this class is the
MainStatusBar
where it is used to display progress information
-
-
Field Summary
Fields Modifier and Type Field Description private ParameterListener
configListenerAutoRemoveInactive
static int
COUNT_ACTIVE
static int
COUNT_ALL
static int
COUNT_ERROR
private static ProgressReportingManager
INSTANCE
private boolean
isAutoRemove
Convenience variable tied to the parameter "auto_remove_inactive_items"private CopyOnWriteList
listeners
ACopyOnWriteList
ofIProgressReportingListener
private ProgressReporterStack
progressReporters
A custom stack to keep track ofProgressReporter
private int
reporterCounter
Keeps count of allProgressReporter
created since this session started; is used as unique ID and hashCode for each instance ofProgressReporter
-
Fields inherited from interface com.biglybt.ui.swt.progress.IProgressReportConstants
AUTO_CLOSE, BORDER, MANAGER_EVENT_ADDED, MANAGER_EVENT_REMOVED, MANAGER_EVENT_UPDATED, MODAL, MSG_TYPE_ERROR, MSG_TYPE_INFO, MSG_TYPE_LOG, NONE, REPORT_TYPE_CANCEL, REPORT_TYPE_DISPOSED, REPORT_TYPE_DONE, REPORT_TYPE_ERROR, REPORT_TYPE_INIT, REPORT_TYPE_MODE_CHANGE, REPORT_TYPE_PROPERTY_CHANGED, REPORT_TYPE_RETRY, REPORTER_TYPE_DEFAULT, REPORTER_VISIBILITY_SYSTEM, REPORTER_VISIBILITY_USER, RETVAL_OK, RETVAL_OK_TO_DISPOSE, SHOW_TOOLBAR, STANDALONE
-
-
Constructor Summary
Constructors Modifier Constructor Description private
ProgressReportingManager()
Private constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addListener(IProgressReportingListener listener)
IProgressReporter
addReporter()
IProgressReporter
addReporter(java.lang.String name)
static void
destroyInstance()
private void
dispose()
IProgressReporter
getCurrentReporter()
Returns the current reporter, in other word, the last reporter to have reported anythingstatic ProgressReportingManager
getInstance()
IProgressReporter
getNextActiveReporter()
Returns the next active reporterprotected int
getNextAvailableID()
Returns the next available ID that can be assigned to aProgressReporter
int
getReporterCount(int whatToCount)
Returns the number of reporters that have sent any event to this manager and have not been removedCOUNT_ERROR
- count all reporters in error stateCOUNT_ACTIVE
- count all reporters that are still activeCOUNT_ALL
- count all reportersjava.util.List
getReporters(boolean onlyActive)
Returns a modifiable list ofProgressReporter
s; manipulating this list has no effect on the internal list of reporters maintained by this managerIProgressReporter[]
getReportersArray(boolean onlyActive)
Returns a modifiable array ofProgressReporter
s; manipulating this array has no effect on the internal list of reporters maintained by this managerboolean
hasMultipleActive()
A convenience method for quickly determining whether more than one reporter is still active.private void
notifyListeners(int eventType, IProgressReporter reporter)
Notifies listeners that the givenProgressReporter
has been modifiedprotected void
notifyManager(IProgressReporter reporter)
Push this reporter on top of the stack, and notifies any listeners that a state change has occurredboolean
remove(IProgressReporter reporter)
Removes the givenProgressReporter
from this manager.void
removeListener(IProgressReportingListener listener)
-
-
-
Field Detail
-
INSTANCE
private static ProgressReportingManager INSTANCE
-
configListenerAutoRemoveInactive
private final ParameterListener configListenerAutoRemoveInactive
-
progressReporters
private ProgressReporterStack progressReporters
A custom stack to keep track ofProgressReporter
-
reporterCounter
private int reporterCounter
Keeps count of allProgressReporter
created since this session started; is used as unique ID and hashCode for each instance ofProgressReporter
-
COUNT_ALL
public static final int COUNT_ALL
- See Also:
- Constant Field Values
-
COUNT_ACTIVE
public static final int COUNT_ACTIVE
- See Also:
- Constant Field Values
-
COUNT_ERROR
public static final int COUNT_ERROR
- See Also:
- Constant Field Values
-
listeners
private CopyOnWriteList listeners
ACopyOnWriteList
ofIProgressReportingListener
-
isAutoRemove
private boolean isAutoRemove
Convenience variable tied to the parameter "auto_remove_inactive_items"
-
-
Method Detail
-
getInstance
public static final ProgressReportingManager getInstance()
-
destroyInstance
public static void destroyInstance()
-
dispose
private void dispose()
-
addReporter
public IProgressReporter addReporter()
-
addReporter
public IProgressReporter addReporter(java.lang.String name)
-
getReporterCount
public int getReporterCount(int whatToCount)
Returns the number of reporters that have sent any event to this manager and have not been removedCOUNT_ERROR
- count all reporters in error stateCOUNT_ACTIVE
- count all reporters that are still activeCOUNT_ALL
- count all reporters
- Parameters:
whatToCount
- one of the above constants; will default toCOUNT_ALL
if the parameter is unrecognized- Returns:
-
hasMultipleActive
public boolean hasMultipleActive()
A convenience method for quickly determining whether more than one reporter is still active. This method can be much quicker than calling#getReporterCount()
and inspecting the returned value if the number of reporters is high since we may not have to go through the entire list before getting the result- Returns:
true
if there are at least 2 active reporters;false
otherwise
-
getNextActiveReporter
public IProgressReporter getNextActiveReporter()
Returns the next active reporter- Returns:
- the next reporter that is still active;
null
if none are active or no reporters are found
-
getCurrentReporter
public IProgressReporter getCurrentReporter()
Returns the current reporter, in other word, the last reporter to have reported anything- Returns:
- the last reporter;
null
if none are found
-
getReporters
public java.util.List getReporters(boolean onlyActive)
Returns a modifiable list ofProgressReporter
s; manipulating this list has no effect on the internal list of reporters maintained by this manager- Parameters:
onlyActive
-true
to filter the list to only include those reporters that are still active- Returns:
- a sorted List of
ProgressReporter
where the oldest reporter would be at position 0
-
getReportersArray
public IProgressReporter[] getReportersArray(boolean onlyActive)
Returns a modifiable array ofProgressReporter
s; manipulating this array has no effect on the internal list of reporters maintained by this manager- Parameters:
onlyActive
-true
to filter the array to only include those reporters that are still active- Returns:
- a sorted array of
ProgressReporter
where the oldest reporter would be at position 0
-
remove
public boolean remove(IProgressReporter reporter)
Removes the givenProgressReporter
from this manager. This has the effect that any subsequent event reported by the same reporter will not be captured nor forwarded by this manager- Parameters:
reporter
-- Returns:
-
addListener
public void addListener(IProgressReportingListener listener)
- Parameters:
listener
-
-
removeListener
public void removeListener(IProgressReportingListener listener)
- Parameters:
listener
-
-
notifyListeners
private void notifyListeners(int eventType, IProgressReporter reporter)
Notifies listeners that the givenProgressReporter
has been modified- Parameters:
eventType
-reporter
-
-
notifyManager
protected void notifyManager(IProgressReporter reporter)
Push this reporter on top of the stack, and notifies any listeners that a state change has occurred- Parameters:
reporter
-
-
getNextAvailableID
protected final int getNextAvailableID()
Returns the next available ID that can be assigned to aProgressReporter
- Returns:
- int the next available ID
-
-