📄 guiupdater.java
字号:
ratio_str = (ratio/1000) + "." + partial;
mainWindow.srStatus.setToolTipText( MessageText.getString(tooltipID,new String[]{ratio_str}));
last_sr_ratio = ratio;
}
// NAT status Section
int nat_status = connection_manager.getNATStatus();
if (lastNATstatus != nat_status) {
String imgID;
String tooltipID;
String statusID;
switch (nat_status) {
case ConnectionManager.NAT_UNKNOWN:
imgID = "grayled";
tooltipID = "MainWindow.nat.status.tooltip.unknown";
statusID = "MainWindow.nat.status.unknown";
break;
case ConnectionManager.NAT_OK:
imgID = "greenled";
tooltipID = "MainWindow.nat.status.tooltip.ok";
statusID = "MainWindow.nat.status.ok";
break;
case ConnectionManager.NAT_PROBABLY_OK:
imgID = "yellowled";
tooltipID = "MainWindow.nat.status.tooltip.probok";
statusID = "MainWindow.nat.status.probok";
break;
default:
imgID = "redled";
tooltipID = "MainWindow.nat.status.tooltip.bad";
statusID = "MainWindow.nat.status.bad";
break;
}
mainWindow.natStatus.setImage( ImageRepository.getImage(imgID) );
mainWindow.natStatus.setToolTipText( MessageText.getString(tooltipID) );
mainWindow.natStatus.setText( MessageText.getString(statusID) );
lastNATstatus = nat_status;
}
// DHT Status Section
int dht_status = (dhtPlugin == null) ? DHTPlugin.STATUS_DISABLED : dhtPlugin.getStatus();
long dht_count = -1;
if (dht_status == DHTPlugin.STATUS_RUNNING) {
DHT[] dhts = dhtPlugin.getDHTs();
if( dhts.length > 0 && dhts[0].getTransport().isReachable() ) {
dht_count = dhts[0].getControl().getStats().getEstimatedDHTSize();
}
}
if (lastDHTstatus != dht_status || lastDHTcount != dht_count) {
switch (dht_status) {
case DHTPlugin.STATUS_RUNNING:
if (dht_count > 100*1000 ) { //release dht has at least a half million users
mainWindow.dhtStatus.setImage(ImageRepository.getImage( "greenled" ));
mainWindow.dhtStatus.setToolTipText(MessageText.getString( "MainWindow.dht.status.tooltip" ));
mainWindow.dhtStatus.setText(numberFormat.format(dht_count)+ " " +MessageText.getString("MainWindow.dht.status.users"));
}
else {
mainWindow.dhtStatus.setImage(ImageRepository.getImage( "yellowled" ));
mainWindow.dhtStatus.setToolTipText(MessageText.getString( "MainWindow.dht.status.unreachabletooltip" ));
mainWindow.dhtStatus.setText( MessageText.getString( "MainWindow.dht.status.unreachable" ));
}
break;
case DHTPlugin.STATUS_DISABLED:
mainWindow.dhtStatus.setImage(ImageRepository.getImage( "grayled" ));
mainWindow.dhtStatus.setText( MessageText.getString( "MainWindow.dht.status.disabled" ));
break;
case DHTPlugin.STATUS_INITALISING:
mainWindow.dhtStatus.setImage(ImageRepository.getImage( "yellowled" ));
mainWindow.dhtStatus.setText( MessageText.getString( "MainWindow.dht.status.initializing" ));
break;
case DHTPlugin.STATUS_FAILED:
mainWindow.dhtStatus.setImage(ImageRepository.getImage( "redled" ));
mainWindow.dhtStatus.setText( MessageText.getString( "MainWindow.dht.status.failed" ));
break;
default:
mainWindow.dhtStatus.setImage(null);
break;
}
lastDHTstatus = dht_status;
lastDHTcount = dht_count;
}
// UL/DL Status Sections
int ul_limit_norm = NetworkManager.getMaxUploadRateBPSNormal() / 1024;
int dl_limit = NetworkManager.getMaxDownloadRateBPS() / 1024;
String seeding_only;
if (NetworkManager.isSeedingOnlyUploadRate()) {
int ul_limit_seed = NetworkManager
.getMaxUploadRateBPSSeedingOnly() / 1024;
if (ul_limit_seed == 0) {
seeding_only = "+" + Constants.INFINITY_STRING + "K";
} else {
int diff = ul_limit_seed - ul_limit_norm;
seeding_only = (diff >= 0 ? "+" : "") + diff + "K";
}
} else {
seeding_only = "";
}
mainWindow.statusDown.setText(
(dl_limit == 0 ? "" : "[" + dl_limit + "K] ")
+ DisplayFormatters
.formatByteCountToKiBEtcPerSec(mainWindow.globalManager
.getStats().getDataReceiveRate()
+ mainWindow.globalManager.getStats()
.getProtocolReceiveRate()));
mainWindow.statusUp.setText(
(ul_limit_norm == 0 ? "" : "[" + ul_limit_norm + "K"
+ seeding_only + "] ")
+ DisplayFormatters
.formatByteCountToKiBEtcPerSec(mainWindow.globalManager
.getStats().getDataSendRate()
+ mainWindow.globalManager.getStats()
.getProtocolSendRate()));
// End of Status Sections
mainWindow.statusBar.layout();
}
if (DEBUG_TIMER)
timeMap.put("Status Bar", new Long(System.currentTimeMillis()));
if (mainWindow.systemTraySWT != null)
mainWindow.systemTraySWT.update();
if (DEBUG_TIMER)
timeMap.put("SysTray", new Long(System.currentTimeMillis()));
try {
mainWindow.downloadBars_mon.enter();
Iterator iter = mainWindow.downloadBars.values().iterator();
while (iter.hasNext()) {
MinimizedWindow mw = (MinimizedWindow) iter.next();
mw.refresh();
}
} finally {
mainWindow.downloadBars_mon.exit();
}
if (DEBUG_TIMER) {
timeMap.put("DLBars", new Long(System.currentTimeMillis()));
makeDebugToolTip(lTimeStart, timeMap);
}
} catch (Exception e) {
Logger.log(new LogEvent(LOGID, "Error while trying to update GUI", e));
} finally {
refreshed = true;
}
}
});
}
public void stopIt() {
finished = true;
COConfigurationManager.removeParameterListener("GUI Refresh", this);
COConfigurationManager.removeParameterListener("config.style.refreshMT", this);
}
private void makeDebugToolTip(long lTimeStart, Map timeMap) {
final int IDX_AVG = 0;
final int IDX_SIZE = 1;
final int IDX_MAX = 2;
final int IDX_LAST = 3;
final int IDX_TIME = 4;
long lastTime = lTimeStart;
for (Iterator iter = timeMap.keySet().iterator(); iter.hasNext();) {
String key = (String) iter.next();
if (!averageTimes.containsKey(key))
averageTimes.put(key, new Object[] { new Long(0), new Long(0),
new Long(0), new Long(0), new Long(System.currentTimeMillis()) });
Object[] average = (Object[]) averageTimes.get(key);
long l = ((Long) timeMap.get(key)).longValue();
long diff = l - lastTime;
if (diff > 0) {
long count = ((Long) average[IDX_SIZE]).longValue();
// Limit to 20. Gives slightly scewed averages, but doesn't
// require storing all 20 values and averaging them each time
if (count >= 20)
count = 19;
long lNewAverage = ((((Long) average[IDX_AVG]).longValue() * count) + diff)
/ (count + 1);
average[IDX_AVG] = new Long(lNewAverage);
average[IDX_SIZE] = new Long(count + 1);
if (diff > ((Long) average[IDX_MAX]).longValue())
average[IDX_MAX] = new Long(diff);
average[IDX_LAST] = new Long(diff);
average[IDX_TIME] = new Long(System.currentTimeMillis());
} else {
average[IDX_LAST] = new Long(diff);
}
averageTimes.put(key, average);
lastTime = l;
}
StringBuffer sb = new StringBuffer();
for (Iterator iter = averageTimes.keySet().iterator(); iter.hasNext();) {
String key = (String) iter.next();
Object[] average = (Object[]) averageTimes.get(key);
long lLastUpdated = ((Long) average[IDX_TIME]).longValue();
if (System.currentTimeMillis() - lLastUpdated > 10000) {
iter.remove();
continue;
}
long lTime = ((Long) average[IDX_AVG]).longValue();
if (lTime > 0) {
if (sb.length() > 0)
sb.append("\n");
sb.append(average[IDX_AVG] + "ms avg: ");
sb.append("[" + key + "]");
sb.append(average[IDX_SIZE] + " samples");
sb.append("; max:" + average[IDX_MAX]);
sb.append("; last:" + average[IDX_LAST]);
}
}
if (!mainWindow.getShell().isDisposed())
mainWindow.statusText.setToolTipText(sb.toString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -