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

📄 mainstatusbar.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
// 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:   MainStatusBar.java

package org.gudy.azureus2.ui.swt.mainwindow;

import com.aelitis.azureus.core.AzureusCore;
import com.aelitis.azureus.core.AzureusCoreFactory;
import com.aelitis.azureus.core.dht.DHT;
import com.aelitis.azureus.core.dht.control.DHTControl;
import com.aelitis.azureus.core.dht.control.DHTControlStats;
import com.aelitis.azureus.core.networkmanager.NetworkManager;
import com.aelitis.azureus.plugins.dht.DHTPlugin;
import com.aelitis.azureus.ui.*;
import com.aelitis.azureus.ui.common.updater.UIUpdatable;
import com.aelitis.azureus.ui.common.updater.UIUpdater;
import com.aelitis.azureus.ui.swt.UIFunctionsManagerSWT;
import com.aelitis.azureus.ui.swt.UIFunctionsSWT;
import com.aelitis.azureus.ui.swt.imageloader.ImageLoader;
import java.text.NumberFormat;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.config.ParameterListener;
import org.gudy.azureus2.core3.config.impl.TransferSpeedValidator;
import org.gudy.azureus2.core3.global.GlobalManager;
import org.gudy.azureus2.core3.global.GlobalManagerStats;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.ipfilter.*;
import org.gudy.azureus2.core3.stats.transfer.OverallStats;
import org.gudy.azureus2.core3.stats.transfer.StatsFactory;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.plugins.PluginInterface;
import org.gudy.azureus2.plugins.PluginManager;
import org.gudy.azureus2.plugins.network.ConnectionManager;
import org.gudy.azureus2.ui.swt.*;
import org.gudy.azureus2.ui.swt.progress.*;
import org.gudy.azureus2.ui.swt.update.UpdateWindow;

// Referenced classes of package org.gudy.azureus2.ui.swt.mainwindow:
//			Colors, Cursors, SelectableSpeedMenu

public class MainStatusBar
	implements UIUpdatable
{
	private class CLabelPadding extends CLabel
	{

		private int lastWidth;
		private long widthSetOn;
		private static final int KEEPWIDTHFOR_MS = 30000;
		final MainStatusBar this$0;

		public Point computeSize(int wHint, int hHint, boolean changed)
		{
			if (!isVisible())
				return new Point(0, 0);
			Point pt;
			pt = super.computeSize(wHint, hHint, changed);
			pt.x += 4;
			long now = System.currentTimeMillis();
			if (lastWidth > pt.x && now - widthSetOn < 30000L)
			{
				pt.x = lastWidth;
			} else
			{
				if (lastWidth != pt.x)
					lastWidth = pt.x;
				widthSetOn = now;
			}
			return pt;
			Throwable t;
			t;
			Debug.out((new StringBuilder()).append("Error while computing size for CLabel with text:").append(getText()).toString());
			return new Point(0, 0);
		}

		public CLabelPadding(Composite parent, int style)
		{
			this$0 = MainStatusBar.this;
			super(parent, style | 0x1000000);
			lastWidth = 0;
			widthSetOn = 0L;
			GridData gridData = new GridData(80);
			setLayoutData(gridData);
			setForeground(parent.getForeground());
		}
	}

	public static interface CLabelUpdater
	{

		public abstract void update(CLabel clabel);
	}

	private class ProgressListener
		implements IProgressReportingListener, IProgressReportConstants
	{

		final MainStatusBar this$0;

		public int reporting(int eventType, IProgressReporter reporter)
		{
			setProgressImage();
			if (null == reporter)
				return 0;
			if (2 == eventType)
				updateFromPrevious();
			else
			if (1 == eventType || 3 == eventType)
			{
				IProgressReport pReport = reporter.getProgressReport();
				if (pReport.isInErrorState())
				{
					if ("reporterType_updater".equals(pReport.getReporterType()))
						return 0;
					final IProgressReporter final_reporter = reporter;
					if (!ProgressReporterWindow.isOpened(final_reporter))
						Utils.execSWTThread(new AERunnable() {

							final IProgressReporter val$final_reporter;
							final ProgressListener this$1;

							public void runSupport()
							{
								if (!ProgressReporterWindow.isOpened(final_reporter))
									ProgressReporterWindow.open(final_reporter, 0);
							}

				
				{
					this$1 = ProgressListener.this;
					final_reporter = iprogressreporter;
					super();
				}
						}, true);
				}
				if (!pReport.isActive())
					updateFromPrevious();
				else
					update(pReport);
			}
			return 0;
		}

		private void update(final IProgressReport pReport)
		{
			if (null == pReport)
			{
				updateProgressBarDisplay(null);
				return;
			}
			if (PRManager.hasMultipleActive())
				Utils.execSWTThread(new AERunnable() {

					final IProgressReport val$pReport;
					final ProgressListener this$1;

					public void runSupport()
					{
						setStatusText(pReport.getName());
						progressBar.setIndeterminate(true);
						showProgressBar(true);
					}

				
				{
					this$1 = ProgressListener.this;
					pReport = iprogressreport;
					super();
				}
				}, true);
			else
				updateProgressBarDisplay(pReport);
		}

		private void updateFromPrevious()
		{
			IProgressReporter previousReporter = PRManager.getNextActiveReporter();
			if (null != previousReporter)
				update(previousReporter.getProgressReport());
			else
				update(null);
		}

		private ProgressListener()
		{
			this$0 = MainStatusBar.this;
			super();
		}

	}

	private class UpdateableCLabel extends CLabelPadding
	{

		private CLabelUpdater updater;
		final MainStatusBar this$0;

		private void checkForRefresh()
		{
			updater.update(this);
		}


		public UpdateableCLabel(Composite parent, int style, CLabelUpdater updater)
		{
			this$0 = MainStatusBar.this;
			super(parent, style);
			this.updater = updater;
		}
	}


	private static final String STATUS_ICON_WARN = "sb_warning";
	private static final String ID = "MainStatusBar";
	private AEMonitor this_mon;
	private UpdateWindow updateWindow;
	private Composite statusBar;
	private CLabel statusText;
	private String statusTextKey;
	private String statusImageKey;
	private Image statusImage;
	private AZProgressBar progressBar;
	private CLabel ipBlocked;
	private CLabel srStatus;
	private CLabel natStatus;
	private CLabel dhtStatus;
	private CLabel statusDown;
	private CLabel statusUp;
	private Composite plugin_label_composite;
	private Display display;
	private long last_sr_ratio;
	private int last_sr_status;
	private int lastNATstatus;
	private String lastNATimageID;
	private int lastDHTstatus;
	private long lastDHTcount;
	private NumberFormat numberFormat;
	private OverallStats overall_stats;
	private ConnectionManager connection_manager;
	private DHTPlugin dhtPlugin;
	private GlobalManager globalManager;
	private AzureusCore azureusCore;
	private UIFunctions uiFunctions;
	private UIStatusTextClickListener clickListener;
	private static final int borderFlag = 32;
	private boolean isAZ3;
	private ProgressReportingManager PRManager;
	private GridData progressGridData;
	private CLabelPadding progressViewerImageLabel;
	private Image progress_error_img;
	private Image progress_info_img;
	private Image progress_viewer_img;
	private Image currentProgressImage;
	private boolean updateProgressBarDisplayQueued;
	protected IProgressReport latestReport;
	protected AEMonitor latestReport_mon;
	private String lastSRimageID;

	public MainStatusBar()
	{
		this_mon = new AEMonitor("MainStatusBar");
		statusTextKey = "";
		statusImageKey = null;
		statusImage = null;
		last_sr_ratio = -1L;
		last_sr_status = -1;
		lastNATstatus = -1;
		lastNATimageID = null;
		lastDHTstatus = -1;
		lastDHTcount = -1L;
		isAZ3 = false;
		PRManager = ProgressReportingManager.getInstance();
		progressGridData = new GridData(0x20000, 0x1000000, false, false);
		progress_error_img = null;
		progress_info_img = null;
		progress_viewer_img = null;
		currentProgressImage = null;
		updateProgressBarDisplayQueued = false;
		latestReport = null;
		latestReport_mon = new AEMonitor("latestReport");
		lastSRimageID = null;
		numberFormat = NumberFormat.getInstance();
		overall_stats = StatsFactory.getStats();
		PluginManager pm = AzureusCoreFactory.getSingleton().getPluginManager();
		connection_manager = pm.getDefaultPluginInterface().getConnectionManager();
		PluginInterface dht_pi = pm.getPluginInterfaceByClass(com/aelitis/azureus/plugins/dht/DHTPlugin);
		if (dht_pi != null)
			dhtPlugin = (DHTPlugin)dht_pi.getPlugin();
	}

	public Composite initStatusBar(final AzureusCore core, final GlobalManager globalManager, Display display, final Composite parent)
	{
		this.display = display;
		this.globalManager = globalManager;
		azureusCore = core;
		uiFunctions = UIFunctionsManager.getUIFunctions();
		ImageLoader imageLoader = ImageLoader.getInstance();
		org.eclipse.swt.graphics.Color fgColor = parent.getForeground();
		statusBar = new Composite(parent, 0);
		statusBar.setForeground(fgColor);
		isAZ3 = "az3".equalsIgnoreCase(COConfigurationManager.getStringParameter("ui"));
		GridLayout layout_status = new GridLayout();
		layout_status.numColumns = 20;
		layout_status.horizontalSpacing = 0;
		layout_status.verticalSpacing = 0;
		layout_status.marginHeight = 0;
		if (Constants.isOSX)
			try
			{
				layout_status.marginRight = 15;
			}
			catch (NoSuchFieldError e)
			{
				layout_status.marginWidth = 15;
			}
		else
			layout_status.marginWidth = 0;
		statusBar.setLayout(layout_status);
		statusText = new CLabel(statusBar, 32);
		statusText.setForeground(fgColor);
		statusText.setLayoutData(new GridData(784));
		addStatusBarMenu(statusText);
		GC gc = new GC(statusText);
		int height = Math.max(16, gc.getFontMetrics().getHeight()) + 6;
		gc.dispose();
		FormData formData = new FormData();
		formData.height = height;
		formData.bottom = new FormAttachment(100, 0);
		formData.left = new FormAttachment(0, 0);
		formData.right = new FormAttachment(100, 0);
		statusBar.setLayoutData(formData);
		Listener listener = new Listener() {

			final MainStatusBar this$0;

			public void handleEvent(Event e)
			{
				if (clickListener == null)
				{
					if (updateWindow != null)
						updateWindow.show();
				} else
				{
					clickListener.UIStatusTextClicked();
				}
			}

			
			{
				this$0 = MainStatusBar.this;
				super();
			}
		};
		statusText.addListener(4, listener);
		statusText.addListener(8, listener);
		if (Constants.isOSX)
			progressBar = new AZProgressBar(statusBar, true);
		else
			progressBar = new AZProgressBar(statusBar, false);
		progressBar.setVisible(false);
		progressGridData = new GridData(0x1000000, 0x1000000, false, false);
		progressGridData.widthHint = 5;
		progressBar.setLayoutData(progressGridData);
		if (isAZ3)
			try
			{
				OverallStats stats = StatsFactory.getStats();
				long secs_uptime = stats.getTotalUpTime();
				long last_uptime = COConfigurationManager.getLongParameter("statusbar.feedback.uptime", 0L);
				if (last_uptime == 0L)
					COConfigurationManager.setParameter("statusbar.feedback.uptime", secs_uptime);
				else
				if (secs_uptime - last_uptime > 900L)
				{
					CLabelPadding feedback = new CLabelPadding(statusBar, 32);
					feedback.setText(MessageText.getString("statusbar.feedback"));
					Listener feedback_listener = new Listener() {

						final MainStatusBar this$0;

						public void handleEvent(Event e)
						{
							String url = (new StringBuilder()).append("feedback?").append(Utils.getWidgetBGColorURLParam()).append("&fromWeb=false&os.name=").append(UrlUtils.encode(Constants.OSName)).append("&os.version=").append(UrlUtils.encode(System.getProperty("os.version"))).append("&java.version=").append(UrlUtils.encode(Constants.JAVA_VERSION)).toString();
							UIFunctionsManagerSWT.getUIFunctionsSWT().viewURL(url, null, 600, 520, true, false);
						}

			
			{
				this$0 = MainStatusBar.this;
				super();
			}
					};
					feedback.setToolTipText(MessageText.getString("statusbar.feedback.tooltip"));
					feedback.setCursor(Cursors.handCursor);
					feedback.setForeground(Colors.blue);
					feedback.addListener(4, feedback_listener);
					feedback.addListener(8, feedback_listener);
				}
			}
			catch (Throwable e)
			{
				Debug.printStackTrace(e);
			}
		progress_error_img = imageLoader.getImage("progress_error");
		progress_info_img = imageLoader.getImage("progress_info");
		progress_viewer_img = imageLoader.getImage("progress_viewer");
		progressViewerImageLabel = new CLabelPadding(statusBar, 0);
		progressViewerImageLabel.setToolTipText(MessageText.getString("Progress.reporting.statusbar.button.tooltip"));
		progressViewerImageLabel.addMouseListener(new MouseAdapter() {

			final MainStatusBar this$0;

			public void mouseDown(MouseEvent e)
			{
				IProgressReporter reporters[] = PRManager.getReportersArray(false);
				if (reporters.length == 0)
				{
					if (!ProgressReporterWindow.isShowingEmpty())
						ProgressReporterWindow.open(reporters, 32);
				} else
				{
					int i = 0;
					do
					{
						if (i >= reporters.length)
							break;
						if (!ProgressReporterWindow.isOpened(reporters[i]))
						{
							ProgressReporterWindow.open(reporters, 32);
							break;
						}
						i++;
					} while (true);
				}
			}

			
			{
				this$0 = MainStatusBar.this;
				super();
			}
		});
		progressViewerImageLabel.addDisposeListener(new DisposeListener() {

			final MainStatusBar this$0;

			public void widgetDisposed(DisposeEvent e)
			{
				ImageLoader imageLoader = ImageLoader.getInstance();
				imageLoader.releaseImage("progress_error");
				imageLoader.releaseImage("progress_info");
				imageLoader.releaseImage("progress_viewer");
			}

			
			{
				this$0 = MainStatusBar.this;
				super();
			}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -