📄 transferstatsview.java
字号:
}
gc.setForeground(Colors.black);
}
SpeedManagerLimitEstimate bad_down[] = mapper.getBadDownloadHistory();
if (bad_down.length > 0)
{
gc.setForeground(Colors.red);
gc.setLineWidth(3);
for (int i = 0; i < bad_down.length; i++)
{
int speed = bad_down[i].getBytesPerSec();
int y = max_y != 0 ? (speed * usable_height) / max_y : 0;
gc.drawLine(y_axis_bottom_x + 0, y_axis_bottom_y - y, y_axis_bottom_x + 10, y_axis_bottom_y - y);
}
gc.setForeground(Colors.black);
gc.setLineWidth(1);
}
String y_text = (new StringBuilder()).append(labels[1]).append(" - ").append(formatters[1].format(max_y + 1)).toString();
gc.drawText(y_text, y_axis_top_x + 4, y_axis_top_y + 2, 1);
gc.drawText(title, (bounds.width - title.length() * char_width) / 2, 1, 1);
gc.dispose();
return image;
}
protected void dispose()
{
if (buffer_image != null && !buffer_image.isDisposed())
buffer_image.dispose();
COConfigurationManager.removeParameterListener("Graphics Update", this);
}
protected zoneView(SpeedManagerPingMapper _mapper, Canvas _canvas, String _labels[], ValueFormater _formatters[])
{
this$0 = TransferStatsView.this;
super();
zones = new SpeedManagerPingZone[0];
title = "";
mapper = _mapper;
canvas = _canvas;
labels = _labels;
formatters = _formatters;
COConfigurationManager.addAndFireParameterListener("Graphics Update", this);
}
}
GlobalManager manager;
AzureusCore core;
GlobalManagerStats stats;
SpeedManager speedManager;
OverallStats totalStats;
Composite mainPanel;
Composite blahPanel;
BufferedLabel asn;
BufferedLabel estUpCap;
BufferedLabel estDownCap;
Composite generalPanel;
BufferedLabel nowUp;
BufferedLabel nowDown;
BufferedLabel sessionDown;
BufferedLabel sessionUp;
BufferedLabel session_ratio;
BufferedLabel sessionTime;
BufferedLabel totalDown;
BufferedLabel totalUp;
BufferedLabel total_ratio;
BufferedLabel totalTime;
Group autoSpeedPanel;
StackLayout autoSpeedPanelLayout;
Composite autoSpeedInfoPanel;
Composite autoSpeedDisabledPanel;
PingGraphic pingGraph;
plotView plot_views[];
zoneView zone_views[];
limitToTextHelper limit_to_text;
private final DecimalFormat formatter = new DecimalFormat("##.#");
public TransferStatsView(GlobalManager manager, AzureusCore core)
{
limit_to_text = new limitToTextHelper();
this.core = core;
this.manager = manager;
stats = manager.getStats();
totalStats = StatsFactory.getStats();
speedManager = core.getSpeedManager();
}
public void initialize(Composite composite)
{
mainPanel = new Composite(composite, 0);
GridLayout mainLayout = new GridLayout();
mainPanel.setLayout(mainLayout);
createGeneralPanel();
createBlahPanel();
createAutoSpeedPanel();
}
private void createGeneralPanel()
{
generalPanel = new Composite(mainPanel, 2048);
GridData generalPanelData = new GridData(768);
generalPanel.setLayoutData(generalPanelData);
GridLayout panelLayout = new GridLayout();
panelLayout.numColumns = 5;
panelLayout.makeColumnsEqualWidth = true;
generalPanel.setLayout(panelLayout);
Label lbl = new Label(generalPanel, 0);
lbl = new Label(generalPanel, 0);
Messages.setLanguageText(lbl, "SpeedView.stats.downloaded");
lbl = new Label(generalPanel, 0);
Messages.setLanguageText(lbl, "SpeedView.stats.uploaded");
lbl = new Label(generalPanel, 0);
Messages.setLanguageText(lbl, "SpeedView.stats.ratio");
lbl = new Label(generalPanel, 0);
Messages.setLanguageText(lbl, "SpeedView.stats.uptime");
lbl = new Label(generalPanel, 0);
lbl = new Label(generalPanel, 0);
lbl = new Label(generalPanel, 0);
lbl = new Label(generalPanel, 0);
lbl = new Label(generalPanel, 0);
lbl = new Label(generalPanel, 0);
Messages.setLanguageText(lbl, "SpeedView.stats.now");
nowDown = new BufferedLabel(generalPanel, 0);
GridData gridData = new GridData(768);
nowDown.setLayoutData(gridData);
nowUp = new BufferedLabel(generalPanel, 0);
gridData = new GridData(768);
nowUp.setLayoutData(gridData);
lbl = new Label(generalPanel, 0);
lbl = new Label(generalPanel, 0);
lbl = new Label(generalPanel, 0);
Messages.setLanguageText(lbl, "SpeedView.stats.session");
sessionDown = new BufferedLabel(generalPanel, 0);
gridData = new GridData(768);
sessionDown.setLayoutData(gridData);
sessionUp = new BufferedLabel(generalPanel, 0);
gridData = new GridData(768);
sessionUp.setLayoutData(gridData);
session_ratio = new BufferedLabel(generalPanel, 0);
gridData = new GridData(768);
session_ratio.setLayoutData(gridData);
sessionTime = new BufferedLabel(generalPanel, 0);
gridData = new GridData(768);
sessionTime.setLayoutData(gridData);
lbl = new Label(generalPanel, 0);
Messages.setLanguageText(lbl, "SpeedView.stats.total");
totalDown = new BufferedLabel(generalPanel, 0);
gridData = new GridData(768);
totalDown.setLayoutData(gridData);
totalUp = new BufferedLabel(generalPanel, 0);
gridData = new GridData(768);
totalUp.setLayoutData(gridData);
total_ratio = new BufferedLabel(generalPanel, 0);
gridData = new GridData(768);
total_ratio.setLayoutData(gridData);
totalTime = new BufferedLabel(generalPanel, 0);
gridData = new GridData(768);
totalTime.setLayoutData(gridData);
}
private void createBlahPanel()
{
blahPanel = new Composite(mainPanel, 0);
GridData blahPanelData = new GridData(768);
blahPanel.setLayoutData(blahPanelData);
GridLayout panelLayout = new GridLayout();
panelLayout.numColumns = 8;
blahPanel.setLayout(panelLayout);
Label label = new Label(blahPanel, 0);
Messages.setLanguageText(label, "SpeedView.stats.asn");
asn = new BufferedLabel(blahPanel, 0);
GridData gridData = new GridData(768);
asn.setLayoutData(gridData);
label = new Label(blahPanel, 0);
Messages.setLanguageText(label, "SpeedView.stats.estupcap");
estUpCap = new BufferedLabel(blahPanel, 0);
gridData = new GridData(768);
estUpCap.setLayoutData(gridData);
label = new Label(blahPanel, 0);
Messages.setLanguageText(label, "SpeedView.stats.estdowncap");
estDownCap = new BufferedLabel(blahPanel, 0);
gridData = new GridData(768);
estDownCap.setLayoutData(gridData);
label = new Label(blahPanel, 0);
label = new Label(blahPanel, 0);
}
private void createAutoSpeedPanel()
{
autoSpeedPanel = new Group(mainPanel, 0);
GridData generalPanelData = new GridData(1808);
autoSpeedPanel.setLayoutData(generalPanelData);
Messages.setLanguageText(autoSpeedPanel, "SpeedView.stats.autospeed");
autoSpeedPanelLayout = new StackLayout();
autoSpeedPanel.setLayout(autoSpeedPanelLayout);
autoSpeedInfoPanel = new Composite(autoSpeedPanel, 0);
autoSpeedInfoPanel.setLayoutData(new GridData(1808));
GridLayout layout = new GridLayout();
layout.numColumns = 8;
layout.makeColumnsEqualWidth = true;
autoSpeedInfoPanel.setLayout(layout);
Canvas pingCanvas = new Canvas(autoSpeedInfoPanel, 0x40000);
GridData gridData = new GridData(1808);
gridData.horizontalSpan = 4;
pingCanvas.setLayoutData(gridData);
pingGraph = PingGraphic.getInstance();
pingGraph.initialize(pingCanvas);
TabFolder folder = new TabFolder(autoSpeedInfoPanel, 16384);
gridData = new GridData(1808);
gridData.horizontalSpan = 4;
folder.setLayoutData(gridData);
folder.setBackground(Colors.background);
ValueFormater speed_formatter = new ValueFormater() {
final TransferStatsView this$0;
public String format(int value)
{
return DisplayFormatters.formatByteCountToKiBEtc(value);
}
{
this$0 = TransferStatsView.this;
super();
}
};
ValueFormater time_formatter = new ValueFormater() {
final TransferStatsView this$0;
public String format(int value)
{
return (new StringBuilder()).append(value).append(" ms").toString();
}
{
this$0 = TransferStatsView.this;
super();
}
};
ValueFormater formatters[] = {
speed_formatter, speed_formatter, time_formatter
};
String labels[] = {
"up", "down", "ping"
};
SpeedManagerPingMapper mappers[] = this.speedManager.getMappers();
plot_views = new plotView[mappers.length];
zone_views = new zoneView[mappers.length];
for (int i = 0; i < mappers.length; i++)
{
SpeedManagerPingMapper mapper = mappers[i];
TabItem plot_item = new TabItem(folder, 0);
plot_item.setText((new StringBuilder()).append("Plot ").append(mapper.getName()).toString());
Canvas plotCanvas = new Canvas(folder, 0x40000);
gridData = new GridData(1808);
plotCanvas.setLayoutData(gridData);
plot_views[i] = new plotView(mapper, plotCanvas, labels, formatters);
plot_item.setControl(plotCanvas);
TabItem zones_item = new TabItem(folder, 0);
zones_item.setText((new StringBuilder()).append("Zones ").append(mapper.getName()).toString());
Canvas zoneCanvas = new Canvas(folder, 0x40000);
gridData = new GridData(1808);
zoneCanvas.setLayoutData(gridData);
zone_views[i] = new zoneView(mapper, zoneCanvas, labels, formatters);
zones_item.setControl(zoneCanvas);
}
autoSpeedDisabledPanel = new Composite(autoSpeedPanel, 0);
autoSpeedDisabledPanel.setLayout(new GridLayout());
Label disabled = new Label(autoSpeedDisabledPanel, 0);
disabled.setEnabled(false);
Messages.setLanguageText(disabled, "SpeedView.stats.autospeed.disabled");
disabled.setLayoutData(new GridData(832));
SpeedManager speedManager = core.getSpeedManager();
autoSpeedPanelLayout.topControl = speedManager.isAvailable() ? ((org.eclipse.swt.widgets.Control) (autoSpeedInfoPanel)) : ((org.eclipse.swt.widgets.Control) (autoSpeedDisabledPanel));
gridData = new GridData(768);
gridData.horizontalSpan = 8;
Legend.createLegendComposite(autoSpeedInfoPanel, PingGraphic.colors, new String[] {
"TransferStatsView.legend.pingaverage", "TransferStatsView.legend.ping1", "TransferStatsView.legend.ping2", "TransferStatsView.legend.ping3"
}, gridData);
}
public void delete()
{
Utils.disposeComposite(generalPanel);
Utils.disposeComposite(blahPanel);
pingGraph.dispose();
for (int i = 0; i < plot_views.length; i++)
plot_views[i].dispose();
for (int i = 0; i < zone_views.length; i++)
zone_views[i].dispose();
}
public String getFullTitle()
{
return MessageText.getString("SpeedView.title.full");
}
public Composite getComposite()
{
return mainPanel;
}
public void refresh()
{
refreshGeneral();
refreshBlahPanel();
refreshPingPanel();
}
private void refreshGeneral()
{
int now_prot_down_rate = stats.getProtocolReceiveRate();
int now_prot_up_rate = stats.getProtocolSendRate();
int now_total_down_rate = stats.getDataReceiveRate() + now_prot_down_rate;
int now_total_up_rate = stats.getDataSendRate() + now_prot_up_rate;
float now_perc_down = (float)(now_prot_down_rate * 100) / (float)(now_total_down_rate != 0 ? now_total_down_rate : 1);
float now_perc_up = (float)(now_prot_up_rate * 100) / (float)(now_total_up_rate != 0 ? now_total_up_rate : 1);
nowDown.setText((new StringBuilder()).append(DisplayFormatters.formatByteCountToKiBEtcPerSec(now_total_down_rate)).append(" (").append(DisplayFormatters.formatByteCountToKiBEtcPerSec(now_prot_down_rate)).append(", ").append(formatter.format(now_perc_down)).append("%)").toString());
nowUp.setText((new StringBuilder()).append(DisplayFormatters.formatByteCountToKiBEtcPerSec(now_total_up_rate)).append(" (").append(DisplayFormatters.formatByteCountToKiBEtcPerSec(now_prot_up_rate)).append(", ").append(formatter.format(now_perc_up)).append("%)").toString());
long session_prot_received = stats.getTotalProtocolBytesReceived();
long session_prot_sent = stats.getTotalProtocolBytesSent();
long session_total_received = stats.getTotalDataBytesReceived() + session_prot_received;
long session_total_sent = stats.getTotalDataBytesSent() + session_prot_sent;
float session_perc_received = (float)(session_prot_received * 100L) / (float)(session_total_received != 0L ? session_total_received : 1L);
float session_perc_sent = (float)(session_prot_sent * 100L) / (float)(session_total_sent != 0L ? session_total_sent : 1L);
sessionDown.setText((new StringBuilder()).append(DisplayFormatters.formatByteCountToKiBEtc(session_total_received)).append(" (").append(DisplayFormatters.formatByteCountToKiBEtc(session_prot_received)).append(", ").append(formatter.format(session_perc_received)).append("%)").toString());
sessionUp.setText((new StringBuilder()).append(DisplayFormatters.formatByteCountToKiBEtc(session_total_sent)).append(" (").append(DisplayFormatters.formatByteCountToKiBEtc(session_prot_sent)).append(", ").append(formatter.format(session_perc_sent)).append("%)").toString());
totalDown.setText(DisplayFormatters.formatByteCountToKiBEtc(totalStats.getDownloadedBytes()));
totalUp.setText(DisplayFormatters.formatByteCountToKiBEtc(totalStats.getUploadedBytes()));
sessionTime.setText(DisplayFormatters.formatETA(totalStats.getSessionUpTime()));
totalTime.setText(DisplayFormatters.formatETA(totalStats.getTotalUpTime()));
long dl_bytes = totalStats.getDownloadedBytes();
long t_ratio_raw = (1000L * totalStats.getUploadedBytes()) / (dl_bytes != 0L ? dl_bytes : 1L);
long s_ratio_raw = (1000L * session_total_sent) / (session_total_received != 0L ? session_total_received : 1L);
String t_ratio = "";
String s_ratio = "";
String partial;
for (partial = String.valueOf(t_ratio_raw % 1000L); partial.length() < 3; partial = (new StringBuilder()).append("0").append(partial).toString());
t_ratio = (new StringBuilder()).append(t_ratio_raw / 1000L).append(".").append(partial).toString();
for (partial = String.valueOf(s_ratio_raw % 1000L); partial.length() < 3; partial = (new StringBuilder()).append("0").append(partial).toString());
s_ratio = (new StringBuilder()).append(s_ratio_raw / 1000L).append(".").append(partial).toString();
total_ratio.setText(t_ratio);
session_ratio.setText(s_ratio);
}
private void refreshBlahPanel()
{
asn.setText(speedManager.getASN());
estUpCap.setText(limit_to_text.getLimitText(speedManager.getEstimatedUploadCapacityBytesPerSec()));
estDownCap.setText(limit_to_text.getLimitText(speedManager.getEstimatedDownloadCapacityBytesPerSec()));
}
private void refreshPingPanel()
{
SpeedManager speedManager = core.getSpeedManager();
if (speedManager.isAvailable() && speedManager.isEnabled())
{
autoSpeedPanelLayout.topControl = autoSpeedInfoPanel;
autoSpeedPanel.layout();
pingGraph.refresh();
for (int i = 0; i < plot_views.length; i++)
plot_views[i].refresh();
for (int i = 0; i < zone_views.length; i++)
zone_views[i].refresh();
} else
{
autoSpeedPanelLayout.topControl = autoSpeedDisabledPanel;
autoSpeedPanel.layout();
}
}
public void periodicUpdate()
{
if (speedManager.isAvailable() && speedManager.isEnabled())
{
SpeedManagerPingSource sources[] = speedManager.getPingSources();
if (sources.length > 0)
{
int pings[] = new int[sources.length];
for (int i = 0; i < sources.length; i++)
pings[i] = sources[i].getPingTime();
pingGraph.addIntsValue(pings);
for (int i = 0; i < plot_views.length; i++)
plot_views[i].update();
for (int i = 0; i < zone_views.length; i++)
zone_views[i].update();
}
}
}
public String getData()
{
return "TransferStatsView.title.full";
}
protected String getMapperTitle(SpeedManagerPingMapper mapper)
{
if (mapper.isActive())
{
SpeedManagerLimitEstimate up_1 = mapper.getEstimatedUploadLimit(false);
SpeedManagerLimitEstimate up_2 = mapper.getEstimatedUploadLimit(true);
SpeedManagerLimitEstimate down_1 = mapper.getEstimatedDownloadLimit(false);
SpeedManagerLimitEstimate down_2 = mapper.getEstimatedDownloadLimit(true);
return (new StringBuilder()).append("ul=").append(DisplayFormatters.formatByteCountToKiBEtc(up_1.getBytesPerSec())).append(":").append(DisplayFormatters.formatByteCountToKiBEtc(up_2.getBytesPerSec())).append(",dl=").append(DisplayFormatters.formatByteCountToKiBEtc(down_1.getBytesPerSec())).append(":").append(DisplayFormatters.formatByteCountToKiBEtc(down_2.getBytesPerSec())).append(",mr=").append(DisplayFormatters.formatDecimal(mapper.getCurrentMetricRating(), 2)).toString();
} else
{
return "";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -