org.gudy.azureus2.ui.swt.progress
Class ProgressReportingManager

java.lang.Object
  extended by org.gudy.azureus2.ui.swt.progress.ProgressReportingManager
All Implemented Interfaces:
IProgressReportConstants

public class ProgressReportingManager
extends Object
implements IProgressReportConstants

A manager that aggregates and forward progress information for long running operations

This 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

Author:
knguyen

Field Summary
static int COUNT_ACTIVE
           
static int COUNT_ALL
           
static int COUNT_ERROR
           
 
Fields inherited from interface org.gudy.azureus2.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
 
Method Summary
 void addListener(IProgressReportingListener listener)
           
 IProgressReporter addReporter()
           
 IProgressReporter addReporter(String name)
           
 IProgressReporter getCurrentReporter()
          Returns the current reporter, in other word, the last reporter to have reported anything
static ProgressReportingManager getInstance()
           
 IProgressReporter getNextActiveReporter()
          Returns the next active reporter
protected  int getNextAvailableID()
          Returns the next available ID that can be assigned to a ProgressReporter
 int getReporterCount(int whatToCount)
          Returns the number of reporters that have sent any event to this manager and have not been removed COUNT_ERROR - count all reporters in error state COUNT_ACTIVE - count all reporters that are still active COUNT_ALL - count all reporters
 List getReporters(boolean onlyActive)
          Returns a modifiable list of ProgressReporters; manipulating this list has no effect on the internal list of reporters maintained by this manager
 IProgressReporter[] getReportersArray(boolean onlyActive)
          Returns a modifiable array of ProgressReporters; manipulating this array has no effect on the internal list of reporters maintained by this manager
 boolean hasMultipleActive()
          A convenience method for quickly determining whether more than one reporter is still active.
protected  void notifyManager(IProgressReporter reporter)
          Push this reporter on top of the stack, and notifies any listeners that a state change has occurred
 boolean remove(IProgressReporter reporter)
          Removes the given ProgressReporter from this manager.
 void removeListener(IProgressReportingListener listener)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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
Method Detail

getInstance

public static final ProgressReportingManager getInstance()

addReporter

public IProgressReporter addReporter()

addReporter

public IProgressReporter addReporter(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 removed

Parameters:
whatToCount - one of the above constants; will default to COUNT_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 List getReporters(boolean onlyActive)
Returns a modifiable list of ProgressReporters; 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 of ProgressReporters; 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 given ProgressReporter 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 -

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 a ProgressReporter

Returns:
int the next available ID