📄 generalview.java
字号:
try{
gcImage.setForeground(Colors.grey);
gcImage.drawRectangle(0, 0, bounds.width-1, bounds.height-1);
int allMin = 0;
int allMax = 0;
int total = 0;
String sTotal = "000";
if (available != null) {
allMin = available.length==0?0:available[0];
allMax = available.length==0?0:available[0];
int nbPieces = available.length;
for (int i = 0; i < nbPieces; i++) {
if (available[i] < allMin)
allMin = available[i];
if (available[i] > allMax)
allMax = available[i];
}
int maxAboveMin = allMax - allMin;
if (maxAboveMin == 0) {
// all the same.. easy paint
gcImage.setBackground(Colors.blues[allMin == 0 ? Colors.BLUES_LIGHTEST : Colors.BLUES_DARKEST]);
gcImage.fillRectangle(1, 1, xMax, yMax);
} else {
for (int i = 0; i < nbPieces; i++) {
if (available[i] > allMin)
total++;
}
total = (total * 1000) / nbPieces;
sTotal = "" + total;
if (total < 10) sTotal = "0" + sTotal;
if (total < 100) sTotal = "0" + sTotal;
for (int i = 0; i < xMax; i++) {
int a0 = (i * nbPieces) / xMax;
int a1 = ((i + 1) * nbPieces) / xMax;
if (a1 == a0)
a1++;
if (a1 > nbPieces)
a1 = nbPieces;
int max = 0;
int min = available[a0];
int Pi = 1000;
for (int j = a0; j < a1; j++) {
if (available[j] > max)
max = available[j];
if (available[j] < min)
min = available[j];
Pi *= available[j];
Pi /= (available[j] + 1);
}
int pond = Pi;
if (max == 0)
pond = 0;
else {
int PiM = 1000;
for (int j = a0; j < a1; j++) {
PiM *= (max + 1);
PiM /= max;
}
pond *= PiM;
pond /= 1000;
pond *= (max - min);
pond /= 1000;
pond += min;
}
int index;
if (pond <= 0 || allMax == 0) {
index = 0;
} else {
// we will always have allMin, so subtract that
index = (pond - allMin) * (Colors.BLUES_DARKEST - 1) / maxAboveMin + 1;
// just in case?
if (index > Colors.BLUES_DARKEST) {
index = Colors.BLUES_DARKEST;
}
}
gcImage.setBackground(Colors.blues[index]);
gcImage.fillRectangle(i+1, 1, 1, yMax);
}
}
}
if (availabilityPercent == null || availabilityPercent.isDisposed()) {
return;
}
availabilityPercent.setText(allMin + "." + sTotal);
gc.drawImage(aImage, bounds.x, bounds.y);
}finally{
gcImage.dispose();
gc.dispose();
}
}finally{
this_mon.exit();
}
}
private void updatePiecesInfo(boolean bForce) {
if (manager == null)
return;
try{
this_mon.enter();
if (display == null || display.isDisposed())
return;
if (piecesImage == null || piecesImage.isDisposed())
return;
DiskManager dm = manager.getDiskManager();
boolean valid = !bForce;
boolean[] new_pieces = new boolean[manager.getNbPieces()];
if ( dm != null ){
DiskManagerPiece[] dm_pieces = dm.getPieces();
for (int i=0;i<pieces.length;i++){
new_pieces[i] = dm_pieces[i].isDone();
}
}
if ( pieces == null ){
valid = false;
}else{
for (int i = 0; i < pieces.length; i++) {
if (pieces[i] != new_pieces[i]){
valid = false;
break;
}
}
}
pieces = new_pieces;
if (!valid) {
Rectangle bounds = piecesImage.getClientArea();
int xMax = bounds.width - 2;
int yMax = bounds.height - 2 - 6;
if (xMax < 10 || yMax < 5){
return;
}
int total = manager.getStats().getDownloadCompleted(true);
if (pImage != null && !pImage.isDisposed()){
pImage.dispose();
}
pImage = new Image(display, bounds.width, bounds.height);
GC gcImage = new GC(pImage);
try{
gcImage.setForeground(Colors.grey);
gcImage.drawRectangle(0, 0, bounds.width-1, bounds.height-1);
gcImage.drawLine(1,6,xMax,6);
if (pieces != null && pieces.length != 0) {
int nbPieces = pieces.length;
for (int i = 0; i < xMax; i++) {
int a0 = (i * nbPieces) / xMax;
int a1 = ((i + 1) * nbPieces) / xMax;
if (a1 == a0)
a1++;
if (a1 > nbPieces)
a1 = nbPieces;
int nbAvailable = 0;
for (int j = a0; j < a1; j++) {
if (pieces[j]) {
nbAvailable++;
}
int index = (nbAvailable * Colors.BLUES_DARKEST) / (a1 - a0);
gcImage.setBackground(Colors.blues[index]);
gcImage.fillRectangle(i+1,7,1,yMax);
}
}
}
// draw file % bar above
int limit = (xMax * total) / 1000;
gcImage.setBackground(Colors.colorProgressBar);
gcImage.fillRectangle(1,1,limit,5);
if (limit < xMax) {
gcImage.setBackground(Colors.blues[Colors.BLUES_LIGHTEST]);
gcImage.fillRectangle(limit+1,1,xMax-limit,5);
}
}finally{
gcImage.dispose();
}
if (piecesPercent != null && !piecesPercent.isDisposed())
piecesPercent.setText(DisplayFormatters.formatPercentFromThousands(total));
if (pImage == null || pImage.isDisposed()) {
return;
}
GC gc = new GC(piecesImage);
gc.drawImage(pImage, bounds.x, bounds.y);
gc.dispose();
}
}finally{
this_mon.exit();
}
}
private void setTime(String elapsed, String remaining) {
timeElapsed.setText( elapsed );
timeRemaining.setText( remaining);
}
private void
setStats(
String dl, String ul,
String dls, String uls,
String ts,
String dl_speed, String ul_speed,
String s,
String p,
String hash_fails,
String share_ratio,
String ave_comp )
{
if (display == null || display.isDisposed())
return;
download.setText( dl );
downloadSpeed.setText( dls );
upload.setText( ul );
uploadSpeed.setText( uls );
totalSpeed.setText( ts );
ave_completion.setText( ave_comp );
/*
if ( !maxDLSpeed.getText().equals( dl_speed )){
maxDLSpeed.setText( dl_speed );
}
if ( !maxULSpeed.getText().equals( ul_speed )){
maxULSpeed.setText( ul_speed );
}
*/
seeds.setText( s);
peers.setText( p);
hashFails.setText( hash_fails);
shareRatio.setText( share_ratio);
}
private void setTracker( DownloadManager _manager ){
if (display == null || display.isDisposed())
return;
String status = _manager.getTrackerStatus();
int time = _manager.getTrackerTime();
TRTrackerAnnouncer trackerClient = _manager.getTrackerClient();
tracker_status.setText( status );
if ( time < 0 ){
trackerUpdateIn.setText( MessageText.getString("GeneralView.label.updatein.querying"));
}else{
trackerUpdateIn.setText( TimeFormatter.formatColon( time ));
}
boolean update_state;
String trackerURL = null;
if ( trackerClient != null ){
URL temp = trackerClient.getTrackerUrl();
if ( temp != null ){
trackerURL = temp.toString();
}
}
if ( trackerURL == null ){
TOTorrent torrent = _manager.getTorrent();
if( torrent != null ){
trackerURL = torrent.getAnnounceURL().toString();
}
}
if ( trackerURL != null ){
trackerUrlValue.setText( trackerURL );
if((trackerURL.startsWith("http://")||trackerURL.startsWith("https://"))) {
trackerUrlValue.setForeground(Colors.blue);
trackerUrlValue.setCursor(Cursors.handCursor);
Messages.setLanguageText(trackerUrlValue.getWidget(), "GeneralView.label.trackerurlopen.tooltip", true);
} else {
trackerUrlValue.setForeground(null);
trackerUrlValue.setCursor(null);
Messages.setLanguageText(trackerUrlValue.getWidget(), null);
trackerUrlValue.setToolTipText(null);
}
}
if ( trackerClient != null ){
update_state = ((SystemTime.getCurrentTime()/1000 - trackerClient.getLastUpdateTime() >= TRTrackerAnnouncer.REFRESH_MINIMUM_SECS ));
}else{
update_state = false;
}
if ( updateButton.getEnabled() != update_state ){
updateButton.setEnabled( update_state );
}
}
private void setInfos(
final String _fileName,
final String _fileSize,
final String _path,
final String _hash,
final int _pieceNumber,
final String _pieceLength,
final String _comment,
final String _creation_date,
final String _user_comment) {
if (display == null || display.isDisposed())
return;
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
fileName.setText(_fileName );
fileSize.setText(_fileSize);
saveIn.setText(_path);
hash.setText(_hash);
pieceNumber.setText("" + _pieceNumber); //$NON-NLS-1$
pieceSize.setText(_pieceLength);
String sOldComment = (String) lblComment.getData("comment");
if (!_comment.equals(sOldComment)) {
if (lblComment instanceof Label) {
((Label) lblComment).setText(_comment);
} else if (lblComment instanceof Link) {
String sNewComment;
sNewComment = _comment.replaceAll(
"([^=\">][\\s]+|^)(http://[\\S]+)", "$1<A HREF=\"$2\">$2</A>");
// need quotes around url
sNewComment = sNewComment.replaceAll("(href=)(htt[^\\s>]+)",
"$1\"$2\"");
// Examples:
// http://cowbow.com/fsdjl&sdfkj=34.sk9391 moo
// <A HREF=http://cowbow.com/fsdjl&sdfkj=34.sk9391>moo</a>
// <A HREF="http://cowbow.com/fsdjl&sdfkj=34.sk9391">moo</a>
// <A HREF="http://cowbow.com/fsdjl&sdfkj=34.sk9391">http://moo.com</a>
((Link) lblComment).setText(sNewComment);
}
}
creation_date.setText(_creation_date);
user_comment.setText(_user_comment);
}
});
}
public void parameterChanged(String parameterName) {
graphicsUpdate = COConfigurationManager.getIntParameter("Graphics Update");
}
public Image obfusticatedImage(Image image, Point shellOffset) {
UIDebugGenerator.obfusticateArea(image, (Control) fileName.getWidget(),
shellOffset, manager.toString());
UIDebugGenerator.obfusticateArea(image, (Control) saveIn.getWidget(),
shellOffset, Debug.secretFileName(saveIn.getText()));
return image;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -