📄 generalview.java
字号:
/*
* Created on 2 juil. 2003
*
*/
package org.gudy.azureus2.ui.swt.views;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.program.Program;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.config.ParameterListener;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.core3.disk.*;
import org.gudy.azureus2.core3.peer.PEPeerManager;
import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.download.DownloadManagerStats;
import org.gudy.azureus2.core3.internat.*;
import org.gudy.azureus2.core3.torrent.*;
import org.gudy.azureus2.core3.tracker.client.TRTrackerClient;
import org.gudy.azureus2.core3.tracker.client.TRTrackerScraperResponse;
import org.gudy.azureus2.ui.swt.Messages;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.mainwindow.Colors;
import org.gudy.azureus2.ui.swt.mainwindow.Cursors;
import org.gudy.azureus2.ui.swt.mainwindow.MainWindow;
import org.gudy.azureus2.ui.swt.maketorrent.*;
import org.gudy.azureus2.ui.swt.components.*;
/**
* @author Olivier
*
*/
public class GeneralView extends AbstractIView implements ParameterListener {
private Display display;
private DownloadManager manager;
boolean pieces[];
int loopFactor;
Composite genComposite;
Group gFile;
Canvas piecesImage;
Image pImage;
BufferedLabel piecesPercent;
Canvas availabilityImage;
Image aImage;
BufferedLabel availabilityPercent;
Group gTransfer;
BufferedLabel timeElapsed;
BufferedLabel timeRemaining;
BufferedLabel download;
BufferedLabel downloadSpeed;
Text maxDLSpeed;
BufferedLabel upload;
BufferedLabel uploadSpeed;
Text maxULSpeed;
Text maxUploads;
BufferedLabel totalSpeed;
BufferedLabel seeds;
BufferedLabel peers;
Group gInfo;
BufferedLabel fileName;
BufferedLabel fileSize;
BufferedLabel saveIn;
BufferedLabel hash;
BufferedLabel tracker;
BufferedLabel trackerUpdateIn;
Menu menuTracker;
MenuItem itemSelect;
BufferedLabel trackerUrlValue;
BufferedLabel pieceNumber;
BufferedLabel pieceSize;
BufferedLabel comment;
BufferedLabel creation_date;
BufferedLabel hashFails;
BufferedLabel shareRatio;
Button updateButton;
private int graphicsUpdate = COConfigurationManager.getIntParameter("Graphics Update");
public GeneralView(DownloadManager _manager) {
this.manager = _manager;
pieces = new boolean[manager.getNbPieces()];
}
/* (non-Javadoc)
* @see org.gudy.azureus2.ui.swt.IView#initialize(org.eclipse.swt.widgets.Composite)
*/
public void initialize(Composite composite) {
this.display = composite.getDisplay();
genComposite = new Canvas(composite, SWT.NULL);
GridLayout genLayout = new GridLayout();
genLayout.marginHeight = 0;
genLayout.marginWidth = 2;
genLayout.numColumns = 1;
genComposite.setLayout(genLayout);
gFile = new Group(genComposite, SWT.SHADOW_OUT);
GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gFile.setLayoutData(gridData);
GridLayout fileLayout = new GridLayout();
fileLayout.marginHeight = 2;
fileLayout.numColumns = 3;
gFile.setLayout(fileLayout);
Label piecesInfo = new Label(gFile, SWT.LEFT);
Messages.setLanguageText(piecesInfo, "GeneralView.section.downloaded");
gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
piecesInfo.setLayoutData(gridData);
piecesImage = new Canvas(gFile, SWT.NULL);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.widthHint = 150;
gridData.heightHint = 25;
piecesImage.setLayoutData(gridData);
piecesPercent = new BufferedLabel(gFile, SWT.RIGHT);
gridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
gridData.widthHint = 50;
piecesPercent.setLayoutData(gridData);
Label availabilityInfo = new Label(gFile, SWT.LEFT);
Messages.setLanguageText(availabilityInfo, "GeneralView.section.availability");
gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
availabilityInfo.setLayoutData(gridData);
availabilityImage = new Canvas(gFile, SWT.NULL);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.widthHint = 150;
gridData.heightHint = 25;
availabilityImage.setLayoutData(gridData);
Messages.setLanguageText(availabilityImage, "GeneralView.label.status.pieces_available.tooltip");
availabilityPercent = new BufferedLabel(gFile, SWT.RIGHT);
gridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
gridData.widthHint = 50;
availabilityPercent.setLayoutData(gridData);
Messages.setLanguageText(availabilityPercent, "GeneralView.label.status.pieces_available.tooltip");
gTransfer = new Group(genComposite, SWT.SHADOW_OUT);
Messages.setLanguageText(gTransfer, "GeneralView.section.transfer"); //$NON-NLS-1$
gridData = new GridData(GridData.FILL_HORIZONTAL);
gTransfer.setLayoutData(gridData);
GridLayout layoutTransfer = new GridLayout();
layoutTransfer.numColumns = 6;
gTransfer.setLayout(layoutTransfer);
Label label = new Label(gTransfer, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.timeelapsed"); //$NON-NLS-1$
timeElapsed = new BufferedLabel(gTransfer, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
timeElapsed.setLayoutData(gridData);
label = new Label(gTransfer, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.remaining"); //$NON-NLS-1$
timeRemaining = new BufferedLabel(gTransfer, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
timeRemaining.setLayoutData(gridData);
label = new Label(gTransfer, SWT.LEFT); //$NON-NLS-1$
Messages.setLanguageText(label, "GeneralView.label.shareRatio");
shareRatio = new BufferedLabel(gTransfer, SWT.LEFT); //$NON-NLS-1$
gridData = new GridData(GridData.FILL_HORIZONTAL);
shareRatio.setLayoutData(gridData);
label = new Label(gTransfer, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.downloaded"); //$NON-NLS-1$
download = new BufferedLabel(gTransfer, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
download.setLayoutData(gridData);
label = new Label(gTransfer, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.downloadspeed"); //$NON-NLS-1$
downloadSpeed = new BufferedLabel(gTransfer, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
downloadSpeed.setLayoutData(gridData);
label = new Label(gTransfer, SWT.LEFT); //$NON-NLS-1$
Messages.setLanguageText(label, "GeneralView.label.hashfails");
hashFails = new BufferedLabel(gTransfer, SWT.LEFT); //$NON-NLS-1$
gridData = new GridData(GridData.FILL_HORIZONTAL);
hashFails.setLayoutData(gridData);
label = new Label(gTransfer, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.uploaded"); //$NON-NLS-1$
upload = new BufferedLabel(gTransfer, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
upload.setLayoutData(gridData);
label = new Label(gTransfer, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.uploadspeed"); //$NON-NLS-1$
uploadSpeed = new BufferedLabel(gTransfer, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
uploadSpeed.setLayoutData(gridData);
// editable bit
Composite culdl = new Composite(gTransfer, SWT.NULL);
gridData = new GridData(GridData.FILL_BOTH);
gridData.horizontalSpan = 2;
gridData.verticalSpan = 2;
culdl.setLayoutData(gridData);
GridLayout layoutInfo = new GridLayout();
layoutInfo.numColumns = 4;
layoutInfo.horizontalSpacing = 3;
layoutInfo.marginHeight = 0;
layoutInfo.marginWidth = 0;
culdl.setLayout(layoutInfo);
label = new Label(culdl, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.maxuploads");
maxUploads = new Text(culdl, SWT.BORDER);
gridData = new GridData();
if( Constants.isLinux ) gridData.widthHint = 40;
else gridData.widthHint = 35;
maxUploads.setLayoutData(gridData);
maxUploads.setText(String.valueOf(manager.getStats().getMaxUploads()));
maxUploads.addListener(SWT.Verify, new Listener() {
public void handleEvent(Event e) {
String text = e.text;
char[] chars = new char[text.length()];
text.getChars(0, chars.length, chars, 0);
for (int i = 0; i < chars.length; i++) {
if (!('0' <= chars[i] && chars[i] <= '9')) {
e.doit = false;
return;
}
}
}
});
maxUploads.addListener(SWT.Modify, new Listener() {
public void handleEvent(Event event) {
try {
int value = Integer.parseInt(maxUploads.getText());
if (value < 2)
value = 2;
manager.getStats().setMaxUploads(value);
}
catch (Exception e) {}
}
});
maxUploads.addListener(SWT.FocusOut, new Listener() {
public void handleEvent(Event event) {
try {
int value = Integer.parseInt(maxUploads.getText());
if (value < 2) {
maxUploads.setText("2");
}
}
catch (Exception e) {}
}
});
// ul speed
label = new Label(culdl, SWT.LEFT);
label.setText( MessageText.getString( "GeneralView.label.maxuploadspeed" ) + " " + DisplayFormatters.getRateUnit(DisplayFormatters.UNIT_KB)+":");
Messages.setLanguageText(label, "GeneralView.label.maxuploadspeed.tooltip", true);
maxULSpeed = new Text(culdl, SWT.BORDER);
gridData = new GridData();
if( Constants.isLinux ) gridData.widthHint = 40;
else gridData.widthHint = 35;
maxULSpeed.setLayoutData(gridData);
maxULSpeed.setText(String.valueOf(manager.getStats().getUploadRateLimitBytesPerSecond() / 1024));
maxULSpeed.addListener(SWT.Verify, new Listener() {
public void handleEvent(Event e) {
String text = e.text;
char[] chars = new char[text.length()];
text.getChars(0, chars.length, chars, 0);
for (int i = 0; i < chars.length; i++) {
if (!('0' <= chars[i] && chars[i] <= '9')) {
e.doit = false;
return;
}
}
}
});
Listener maxULSpeedListener = new Listener() {
public void handleEvent(Event event) {
try {
int value = Integer.parseInt(maxULSpeed.getText());
manager.getStats().setUploadRateLimitBytesPerSecond(value * 1024);
}
catch (Exception e) {}
}
};
maxULSpeed.addListener(SWT.Modify, maxULSpeedListener);
maxULSpeed.addListener(SWT.FocusOut, maxULSpeedListener);
label = new Label(culdl, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.totalspeed"); //$NON-NLS-1$
totalSpeed = new BufferedLabel(culdl, SWT.LEFT);
gridData = new GridData();
if( Constants.isLinux ) gridData.widthHint = 70;
else gridData.widthHint = 65;
totalSpeed.setLayoutData(gridData);
// dl speed
label = new Label(culdl, SWT.LEFT);
label.setText( MessageText.getString( "GeneralView.label.maxdownloadspeed" ) + " " + DisplayFormatters.getRateUnit(DisplayFormatters.UNIT_KB)+":");
Messages.setLanguageText(label, "GeneralView.label.maxdownloadspeed.tooltip", true);
maxDLSpeed = new Text(culdl, SWT.BORDER);
gridData = new GridData();
if( Constants.isLinux ) gridData.widthHint = 40;
else gridData.widthHint = 35;
maxDLSpeed.setLayoutData(gridData);
maxDLSpeed.setText(String.valueOf(manager.getStats().getMaxDownloadKBSpeed()));
maxDLSpeed.addListener(SWT.Verify, new Listener() {
public void handleEvent(Event e) {
String text = e.text;
char[] chars = new char[text.length()];
text.getChars(0, chars.length, chars, 0);
for (int i = 0; i < chars.length; i++) {
if (!('0' <= chars[i] && chars[i] <= '9')) {
e.doit = false;
return;
}
}
}
});
Listener maxDLSpeedListener = new Listener() {
public void handleEvent(Event event) {
try {
int value = Integer.parseInt(maxDLSpeed.getText());
manager.getStats().setMaxDownloadKBSpeed(value);
}
catch (Exception e) {}
}
};
maxDLSpeed.addListener(SWT.Modify, maxDLSpeedListener);
maxDLSpeed.addListener(SWT.FocusOut, maxDLSpeedListener);
// blah
label = new Label(gTransfer, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.seeds"); //$NON-NLS-1$
seeds = new BufferedLabel(gTransfer, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
seeds.setLayoutData(gridData);
label = new Label(gTransfer, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.peers"); //$NON-NLS-1$
peers = new BufferedLabel(gTransfer, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
peers.setLayoutData(gridData);
gInfo = new Group(genComposite, SWT.SHADOW_OUT);
Messages.setLanguageText(gInfo, "GeneralView.section.info"); //$NON-NLS-1$
gridData = new GridData(GridData.FILL_BOTH);
gInfo.setLayoutData(gridData);
layoutInfo = new GridLayout();
layoutInfo.numColumns = 4;
gInfo.setLayout(layoutInfo);
label = new Label(gInfo, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.filename"); //$NON-NLS-1$
fileName = new BufferedLabel(gInfo, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
fileName.setLayoutData(gridData);
label = new Label(gInfo, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.totalsize"); //$NON-NLS-1$
fileSize = new BufferedLabel(gInfo, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
fileSize.setLayoutData(gridData);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -