⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 progressreportingmanager.java

📁 java 文件下载器。可自定义
💻 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 + -