📄 generalview.java
字号:
{
public void
trackersChanged(
String str,
String str2,
List _group )
{
TorrentUtils.listToAnnounceGroups( _group, torrent );
try{
TorrentUtils.writeToFile( torrent );
}catch( Throwable e2 ){
Debug.printStackTrace( e2 );
}
TRTrackerAnnouncer tc = manager.getTrackerClient();
if ( tc != null ){
tc.resetTrackerUrl( true );
}
}
}, true);
}
});
final Listener menuListener = new Listener()
{
public void
handleEvent(Event e)
{
if( e.widget instanceof MenuItem) {
String text = ((MenuItem)e.widget).getText();
TOTorrent torrent = manager.getTorrent();
TorrentUtils.announceGroupsSetFirst(torrent,text);
try{
TorrentUtils.writeToFile(torrent);
}catch( TOTorrentException f){
Debug.printStackTrace( f );
}
TRTrackerAnnouncer tc = manager.getTrackerClient();
if ( tc != null ){
tc.resetTrackerUrl( false );
}
}
}
};
menuTracker.addListener(SWT.Show,new Listener() {
public void handleEvent(Event e) {
Menu menuSelect = itemSelect.getMenu();
if(menuSelect != null && ! menuSelect.isDisposed()) {
menuSelect.dispose();
}
if(manager == null || genComposite == null || genComposite.isDisposed())
return;
List groups = TorrentUtils.announceGroupsToList(manager.getTorrent());
menuSelect = new Menu(genComposite.getShell(),SWT.DROP_DOWN);
itemSelect.setMenu(menuSelect);
Iterator iterGroups = groups.iterator();
while(iterGroups.hasNext()) {
List trackers = (List) iterGroups.next();
MenuItem menuItem = new MenuItem(menuSelect,SWT.CASCADE);
Messages.setLanguageText(menuItem,"wizard.multitracker.group");
Menu menu = new Menu(genComposite.getShell(),SWT.DROP_DOWN);
menuItem.setMenu(menu);
Iterator iterTrackers = trackers.iterator();
while(iterTrackers.hasNext()) {
String url = (String) iterTrackers.next();
MenuItem menuItemTracker = new MenuItem(menu,SWT.CASCADE);
menuItemTracker.setText(url);
menuItemTracker.addListener(SWT.Selection,menuListener);
}
}
}
});
trackerUrlValue = new BufferedTruncatedLabel(gInfo, SWT.LEFT,70);
trackerUrlValue.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent event) {
if (event.button == 3
|| (event.button == 1 && event.stateMask == SWT.CONTROL)) {
menuTracker.setVisible(true);
} else if (event.button == 1) {
String url = trackerUrlValue.getText();
if (url.startsWith("http://") || url.startsWith("https://")) {
int pos = -1;
if ((pos = url.indexOf("/announce")) != -1) {
url = url.substring(0, pos + 1);
}
Utils.launch(url);
}
}
}
});
label = new Label(gInfo, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.creationdate"); //$NON-NLS-1$
creation_date = new BufferedLabel(gInfo, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 1;
creation_date.setLayoutData(gridData);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 1;
trackerUrlValue.setLayoutData(gridData);
label = new Label(gInfo, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.tracker"); //$NON-NLS-1$
tracker_status = new BufferedTruncatedLabel(gInfo, SWT.LEFT,150);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 3;
tracker_status.setLayoutData(gridData);
label = new Label(gInfo, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.updatein"); //$NON-NLS-1$
trackerUpdateIn = new BufferedLabel(gInfo, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
trackerUpdateIn.setLayoutData(gridData);
updateButton = new Button(gInfo, SWT.PUSH);
Messages.setLanguageText(updateButton, "GeneralView.label.trackerurlupdate"); //$NON-NLS-1$
gridData = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
updateButton.setLayoutData(gridData);
updateButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
manager.requestTrackerAnnounce(false);
}
});
label = new Label(gInfo, SWT.LEFT);
// row
label = new Label(gInfo, SWT.LEFT);
Messages.setLanguageText(label, "GeneralView.label.user_comment"); //$NON-NLS-1$
user_comment = new BufferedLabel(gInfo, SWT.LEFT);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 3;
user_comment.setLayoutData(gridData);
label = new Label(gInfo, SWT.LEFT);
gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
label.setLayoutData(gridData);
Messages.setLanguageText(label, "GeneralView.label.comment"); //$NON-NLS-1$
try {
lblComment = new Link(gInfo, SWT.LEFT | SWT.WRAP);
((Link)lblComment).addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Utils.launch(e.text);
}
});
} catch (Throwable e) {
lblComment = new Label(gInfo, SWT.LEFT | SWT.WRAP);
}
gridData = new GridData(GridData.FILL_BOTH);
gridData.horizontalSpan = 3;
lblComment.setLayoutData(gridData);
piecesImage.addListener(SWT.Paint, new Listener() {
public void handleEvent(Event e) {
if (e.count == 0 && e.width > 0 && e.height > 0) {
updatePiecesInfo(true);
}
}
});
availabilityImage.addListener(SWT.Paint, new Listener() {
public void handleEvent(Event e) {
if (e.count == 0 && e.width > 0 && e.height > 0) {
updateAvailability();
}
}
});
if( Constants.isOSX ) {
Shell shell = genComposite.getShell();
Point size = shell.getSize();
shell.setSize(size.x-1,size.y-1);
shell.setSize(size);
}
genComposite.layout();
//Utils.changeBackgroundComposite(genComposite,MainWindow.getWindow().getBackground());
COConfigurationManager.addParameterListener("Graphics Update", this);
}
/* (non-Javadoc)
* @see org.gudy.azureus2.ui.swt.IView#getComposite()
*/
public Composite getComposite() {
return genComposite;
}
/* (non-Javadoc)
* @see org.gudy.azureus2.ui.swt.IView#refresh()
*/
public void refresh() {
if(getComposite() == null || getComposite().isDisposed() || manager == null)
return;
loopFactor++;
if ((loopFactor % graphicsUpdate) == 0) {
updateAvailability();
updatePiecesInfo(false);
}
DiskManager dm = manager.getDiskManager();
String remaining;
String eta = DisplayFormatters.formatETA(manager.getStats().getETA());
if ( dm != null ){
long rem = dm.getRemainingExcludingDND();
String data_rem = DisplayFormatters.formatByteCountToKiBEtc( rem );
// append data length unless we have an eta value and none left
if ( rem > 0 ){
remaining = eta + (eta.length()==0?"":" ") + data_rem;
}else{
// no bytes left, don't show remaining bytes unless no eta
if ( eta.length() == 0 ){
remaining = data_rem;
}else{
remaining = eta;
}
}
}else{
// only got eta value, just use that
remaining = eta;
}
setTime(manager.getStats().getElapsedTime(), remaining );
TRTrackerScraperResponse hd = manager.getTrackerScrapeResponse();
String seeds_str = manager.getNbSeeds() +" "+ MessageText.getString("GeneralView.label.connected");
String peers_str = manager.getNbPeers() +" "+ MessageText.getString("GeneralView.label.connected");
if(hd != null && hd.isValid()) {
seeds_str += " ( " + hd.getSeeds() +" "+ MessageText.getString("GeneralView.label.in_swarm") + " )";
peers_str += " ( " + hd.getPeers() +" "+ MessageText.getString("GeneralView.label.in_swarm") + " )";
} else {
//seeds += " (?)";
//peers += " (?)";
}
String _shareRatio = "";
int sr = manager.getStats().getShareRatio();
if(sr == -1) _shareRatio = Constants.INFINITY_STRING;
if(sr > 0){
String partial = "" + sr%1000;
while(partial.length() < 3) partial = "0" + partial;
_shareRatio = (sr/1000) + "." + partial;
}
DownloadManagerStats stats = manager.getStats();
String swarm_speed = DisplayFormatters.formatByteCountToKiBEtcPerSec( stats.getTotalAverage() ) + " ( " +DisplayFormatters.formatByteCountToKiBEtcPerSec( stats.getTotalAveragePerPeer())+ " " +MessageText.getString("GeneralView.label.averagespeed") + " )";
String swarm_completion = "";
PEPeerManager pm = manager.getPeerManager();
if( pm != null ) {
int comp = pm.getAverageCompletionInThousandNotation();
if( comp >= 0 ) {
swarm_completion = DisplayFormatters.formatPercentFromThousands( comp );
}
}
setStats(
DisplayFormatters.formatDownloaded(stats),
DisplayFormatters.formatByteCountToKiBEtc(stats.getTotalDataBytesSent()),
DisplayFormatters.formatByteCountToKiBEtcPerSec(stats.getDataReceiveRate()),
DisplayFormatters.formatByteCountToKiBEtcPerSec(stats.getDataSendRate()),
swarm_speed,
""+manager.getStats().getDownloadRateLimitBytesPerSecond() /1024,
""+(manager.getStats().getUploadRateLimitBytesPerSecond() /1024),
seeds_str,
peers_str,
DisplayFormatters.formatHashFails(manager),
_shareRatio,
swarm_completion
);
setTracker(manager);
TOTorrent torrent = manager.getTorrent();
setInfos(
manager.getDisplayName(),
DisplayFormatters.formatByteCountToKiBEtc(manager.getSize()),
manager.getSaveLocation().toString(),
TorrentUtils.nicePrintTorrentHash(torrent),
manager.getNbPieces(),
manager.getPieceLength(),
manager.getTorrentComment(),
DisplayFormatters.formatDate(manager.getTorrentCreationDate()*1000),
manager.getDownloadState().getUserComment());
//A special layout, for OS X and Linux, on which for some unknown reason
//the initial layout fails.
if (loopFactor == 2) {
getComposite().layout(true);
}
}
/* (non-Javadoc)
* @see org.gudy.azureus2.ui.swt.IView#delete()
*/
public void delete() {
if (aImage != null)
aImage.dispose();
aImage = null;
if (pImage != null)
pImage.dispose();
pImage = null;
Utils.disposeComposite(genComposite);
COConfigurationManager.removeParameterListener("Graphics Update", this);
}
public String getData() {
return "GeneralView.title.short"; //$NON-NLS-1$
}
/* (non-Javadoc)
* @see org.gudy.azureus2.ui.swt.IView#getFullTitle()
*/
public String getFullTitle() {
return MessageText.getString("GeneralView.title.full"); //$NON-NLS-1$
}
private void updateAvailability() {
if (manager == null)
return;
try{
this_mon.enter();
final int[] available;
PEPeerManager pm = manager.getPeerManager();
if (manager.getPeerManager() == null) {
if (availabilityPercent.getText() != "")
availabilityPercent.setText("");
available = new int[manager.getNbPieces()];
}else{
available = pm.getAvailability();
}
if (display == null || display.isDisposed())
return;
if (availabilityImage == null || availabilityImage.isDisposed()) {
return;
}
Rectangle bounds = availabilityImage.getClientArea();
int xMax = bounds.width - 2;
int yMax = bounds.height - 2;
if (xMax < 10 || yMax < 5){
return;
}
if (aImage != null && !aImage.isDisposed()){
aImage.dispose();
}
aImage = new Image(display, bounds.width, bounds.height);
GC gc = new GC(availabilityImage);
GC gcImage = new GC(aImage);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -