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

📄 guiupdater.java

📁 基于JXTA开发平台的下载软件开发源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
						    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 + -