📄 mainstatusbar.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: 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 + -