📄 progressreportingmanager.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: ProgressReportingManager.java
package org.gudy.azureus2.ui.swt.progress;
import com.aelitis.azureus.core.util.CopyOnWriteList;
import java.util.*;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.config.ParameterListener;
import org.gudy.azureus2.core3.util.Debug;
// Referenced classes of package org.gudy.azureus2.ui.swt.progress:
// IProgressReport, IProgressReportConstants, IProgressReporter, IProgressReportingListener,
// ProgressReporter, ProgressReporterStack
public class ProgressReportingManager
implements IProgressReportConstants
{
private static ProgressReportingManager INSTANCE = null;
private ProgressReporterStack progressReporters;
private int reporterCounter;
public static final int COUNT_ALL = 0;
public static final int COUNT_ACTIVE = 1;
public static final int COUNT_ERROR = 2;
private CopyOnWriteList listeners;
private boolean isAutoRemove;
private ProgressReportingManager()
{
progressReporters = new ProgressReporterStack();
reporterCounter = 0x80000000;
listeners = new CopyOnWriteList();
isAutoRemove = false;
isAutoRemove = COConfigurationManager.getBooleanParameter("auto_remove_inactive_items");
COConfigurationManager.addParameterListener("auto_remove_inactive_items", new ParameterListener() {
final ProgressReportingManager this$0;
public void parameterChanged(String parameterName)
{
isAutoRemove = COConfigurationManager.getBooleanParameter("auto_remove_inactive_items");
}
{
this$0 = ProgressReportingManager.this;
super();
}
});
}
public static final synchronized ProgressReportingManager getInstance()
{
if (null == INSTANCE)
INSTANCE = new ProgressReportingManager();
return INSTANCE;
}
public IProgressReporter addReporter()
{
return new ProgressReporter(this);
}
public IProgressReporter addReporter(String name)
{
return new ProgressReporter(this, name);
}
public int getReporterCount(int whatToCount)
{
if (whatToCount == 2)
return progressReporters.getErrorCount();
if (whatToCount == 1)
return progressReporters.getActiveCount();
else
return progressReporters.size();
}
public boolean hasMultipleActive()
{
return progressReporters.hasMultipleActive();
}
public IProgressReporter getNextActiveReporter()
{
return progressReporters.getNextActiveReporter();
}
public IProgressReporter getCurrentReporter()
{
return progressReporters.peek();
}
public List getReporters(boolean onlyActive)
{
List reporters = progressReporters.getReporters(onlyActive);
Collections.sort(reporters);
return reporters;
}
public IProgressReporter[] getReportersArray(boolean onlyActive)
{
List rpList = progressReporters.getReporters(onlyActive);
IProgressReporter array[] = (IProgressReporter[])(IProgressReporter[])rpList.toArray(new IProgressReporter[rpList.size()]);
Arrays.sort(array);
return array;
}
public boolean remove(IProgressReporter reporter)
{
boolean value = progressReporters.remove(reporter);
notifyListeners(2, reporter);
return value;
}
public void addListener(IProgressReportingListener listener)
{
if (null != listener && !listeners.contains(listener))
listeners.add(listener);
}
public void removeListener(IProgressReportingListener listener)
{
if (null != listener && listeners.contains(listener))
listeners.remove(listener);
}
private void notifyListeners(int eventType, IProgressReporter reporter)
{
Iterator iterator = listeners.iterator();
do
{
if (!iterator.hasNext())
break;
IProgressReportingListener listener = (IProgressReportingListener)iterator.next();
if (null != listener)
try
{
listener.reporting(eventType, reporter);
}
catch (Throwable e)
{
Debug.out(e);
}
} while (true);
}
protected void notifyManager(IProgressReporter reporter)
{
IProgressReport pReport = reporter.getProgressReport();
if (isAutoRemove && !pReport.isActive() || pReport.isDisposed())
{
progressReporters.remove(reporter);
notifyListeners(2, reporter);
} else
if (progressReporters.contains(reporter))
{
progressReporters.push(reporter);
notifyListeners(3, reporter);
} else
{
progressReporters.push(reporter);
notifyListeners(1, reporter);
}
}
protected final synchronized int getNextAvailableID()
{
return reporterCounter++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -