mytorrentsview.java
来自「Azureus is a powerful, full-featured, cr」· Java 代码 · 共 1,672 行 · 第 1/4 页
JAVA
1,672 行
};
itemsSpeed[1] = new MenuItem(menuSpeed,SWT.PUSH);
Messages.setLanguageText(itemsSpeed[1],"MyTorrentsView.menu.setSpeed.unlimit");
itemsSpeed[1].setData("maxul", new Integer(0));
itemsSpeed[1].addListener(SWT.Selection,itemsSpeedListener);
for(int i = 2 ; i < 12 ; i++) {
itemsSpeed[i] = new MenuItem(menuSpeed,SWT.PUSH);
itemsSpeed[i].addListener(SWT.Selection,itemsSpeedListener);
}
/* //TODO ensure that all limits combined don't go under the min 5kbs ?
//Disable at the end of the list, thus the first item of the array is instanciated last.
itemsSpeed[0] = new MenuItem(menuSpeed,SWT.PUSH);
Messages.setLanguageText(itemsSpeed[0],"MyTorrentsView.menu.setSpeed.disable");
itemsSpeed[0].setData("maxul", new Integer(-1));
itemsSpeed[0].addListener(SWT.Selection,itemsSpeedListener);
*/
// Category
menuCategory = new Menu(getComposite().getShell(), SWT.DROP_DOWN);
final MenuItem itemCategory = new MenuItem(menu, SWT.CASCADE);
Messages.setLanguageText(itemCategory, "MyTorrentsView.menu.setCategory"); //$NON-NLS-1$
//itemCategory.setImage(ImageRepository.getImage("speed"));
itemCategory.setMenu(menuCategory);
addCategorySubMenu();
// Tracker
final Menu menuTracker = new Menu(getComposite().getShell(), SWT.DROP_DOWN);
final MenuItem itemTracker = new MenuItem(menu, SWT.CASCADE);
Messages.setLanguageText(itemTracker, "MyTorrentsView.menu.tracker");
itemTracker.setMenu(menuTracker);
final MenuItem itemChangeTracker = new MenuItem(menuTracker, SWT.PUSH);
Messages.setLanguageText(itemChangeTracker, "MyTorrentsView.menu.changeTracker"); //$NON-NLS-1$
itemChangeTracker.setImage(ImageRepository.getImage("add_tracker"));
final MenuItem itemEditTracker = new MenuItem(menuTracker, SWT.PUSH);
Messages.setLanguageText(itemEditTracker, "MyTorrentsView.menu.editTracker"); //$NON-NLS-1$
itemEditTracker.setImage(ImageRepository.getImage("edit_trackers"));
final MenuItem itemManualUpdate = new MenuItem(menuTracker,SWT.PUSH);
Messages.setLanguageText(itemManualUpdate, "GeneralView.label.trackerurlupdate"); //$NON-NLS-1$
//itemManualUpdate.setImage(ImageRepository.getImage("edit_trackers"));
new MenuItem(menu, SWT.SEPARATOR);
final MenuItem itemQueue = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemQueue, "MyTorrentsView.menu.queue"); //$NON-NLS-1$
itemQueue.setImage(ImageRepository.getImage("start"));
final MenuItem itemForceStart = new MenuItem(menu, SWT.CHECK);
Messages.setLanguageText(itemForceStart, "MyTorrentsView.menu.forceStart");
itemForceStart.setImage(ImageRepository.getImage("forcestart"));
final MenuItem itemStop = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemStop, "MyTorrentsView.menu.stop"); //$NON-NLS-1$
itemStop.setImage(ImageRepository.getImage("stop"));
final MenuItem itemRemove = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemRemove, "MyTorrentsView.menu.remove"); //$NON-NLS-1$
itemRemove.setImage(ImageRepository.getImage("delete"));
final MenuItem itemRemoveAnd = new MenuItem(menu, SWT.CASCADE);
Messages.setLanguageText(itemRemoveAnd, "MyTorrentsView.menu.removeand"); //$NON-NLS-1$
itemRemoveAnd.setImage(ImageRepository.getImage("delete"));
final Menu menuRemove = new Menu(getComposite().getShell(), SWT.DROP_DOWN);
itemRemoveAnd.setMenu(menuRemove);
final MenuItem itemDeleteTorrent = new MenuItem(menuRemove, SWT.PUSH);
Messages.setLanguageText(itemDeleteTorrent, "MyTorrentsView.menu.removeand.deletetorrent"); //$NON-NLS-1$
final MenuItem itemDeleteData = new MenuItem(menuRemove, SWT.PUSH);
Messages.setLanguageText(itemDeleteData, "MyTorrentsView.menu.removeand.deletedata");
final MenuItem itemDeleteBoth = new MenuItem(menuRemove, SWT.PUSH);
Messages.setLanguageText(itemDeleteBoth, "MyTorrentsView.menu.removeand.deleteboth");
final MenuItem itemRecheck = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemRecheck, "MyTorrentsView.menu.recheck");
itemRecheck.setImage(ImageRepository.getImage("recheck"));
new MenuItem(menu, SWT.SEPARATOR);
super.fillMenu(menu);
menu.addListener(SWT.Show, new Listener() {
public void handleEvent(Event e) {
Object[] dms = getSelectedDataSources();
boolean hasSelection = (dms.length > 0);
itemDetails.setEnabled(hasSelection);
itemOpen.setEnabled(hasSelection);
itemExport.setEnabled(hasSelection);
itemHost.setEnabled(hasSelection);
itemPublish.setEnabled(hasSelection);
itemMove.setEnabled(hasSelection);
//itemSpeed.setEnabled(hasSelection); //TODO
itemBar.setEnabled(hasSelection);
itemManualUpdate.setEnabled(hasSelection);
boolean bChangeDir = false;
if (hasSelection) {
bChangeDir = true;
boolean moveUp, moveDown, start, stop, changeUrl, barsOpened,
forceStart, forceStartEnabled, recheck, manualUpdate, changeSpeed;
moveUp = moveDown = changeUrl = barsOpened = manualUpdate = changeSpeed = true;
forceStart = forceStartEnabled = recheck = start = stop = false;
long totalSpeed = 0;
boolean speedUnlimited = false;
boolean speedDisabled = false;
for (int i = 0; i < dms.length; i++) {
DownloadManager dm = (DownloadManager)dms[i];
try {
int maxul = dm.getStats().getUploadRateLimitBytesPerSecond();
if(maxul == 0) {speedUnlimited = true; }
if(maxul == -1) { maxul = 0; speedDisabled = true; }
totalSpeed += maxul;
} catch(NullPointerException ex) {
changeSpeed = false;;
} catch (Exception ex) {
Debug.printStackTrace( ex );
}
if (dm.getTrackerClient() == null){
changeUrl = false;
}
if (!downloadBars.containsKey(dm)){
barsOpened = false;
}
stop = stop || ManagerUtils.isStopable(dm);
start = start || ManagerUtils.isStartable(dm);
recheck = recheck || dm.canForceRecheck();
forceStartEnabled = forceStartEnabled || ManagerUtils.isForceStartable(dm);
forceStart = forceStart || dm.isForceStart();
if (!dm.isMoveableDown()){
moveDown = false;
}
if (!dm.isMoveableUp()){
moveUp = false;
}
TRTrackerClient trackerClient = dm.getTrackerClient();
if(trackerClient != null) {
boolean update_state = ((SystemTime.getCurrentTime()/1000 - trackerClient.getLastUpdateTime() >= TRTrackerClient.REFRESH_MINIMUM_SECS ));
manualUpdate = manualUpdate & update_state;
}
bChangeDir &= (dm.getState() == DownloadManager.STATE_ERROR && !dm.filesExist());
}
//itemCurrentSpeed.setText((float) ((int) (totalSpeed * 1000)) / 10 + " %"); //TODO
itemBar.setSelection(barsOpened);
itemMoveTop.setEnabled(moveUp);
itemMoveEnd.setEnabled(moveDown);
itemForceStart.setSelection(forceStart);
itemForceStart.setEnabled(forceStartEnabled);
itemQueue.setEnabled(start);
itemStop.setEnabled(stop);
itemRemove.setEnabled( true );
itemRemoveAnd.setEnabled( true );
StringBuffer speedText = new StringBuffer();
String separator = "";
//itemSpeed.
if(speedDisabled) {
speedText.append(MessageText.getString("MyTorrentsView.menu.setSpeed.disabled"));
separator = " / ";
}
if(speedUnlimited) {
speedText.append(separator);
speedText.append(MessageText.getString("MyTorrentsView.menu.setSpeed.unlimited"));
separator = " / ";
}
if(totalSpeed > 0) {
speedText.append(separator);
speedText.append(DisplayFormatters.formatByteCountToKiBEtcPerSec(totalSpeed));
}
itemCurrentSpeed.setText(speedText.toString());
int maxUpload = COConfigurationManager.getIntParameter("Max Upload Speed KBs",0) * 1024;
//using 1MB/s as the default limit when no limit set.
if(maxUpload == 0) maxUpload = 1024 * 1024;
if(dms.length > 0) {
for(int i = 2 ; i < 12 ; i++) {
int limit = maxUpload / (10 * dms.length) * (12 - i);
StringBuffer speed = new StringBuffer();
speed.append(DisplayFormatters.formatByteCountToKiBEtcPerSec(limit * dms.length));
if(dms.length > 1) {
speed.append(" ");
speed.append(MessageText.getString("MyTorrentsView.menu.setSpeed.in"));
speed.append(" ");
speed.append(dms.length);
speed.append(" ");
speed.append(MessageText.getString("MyTorrentsView.menu.setSpeed.slots"));
speed.append(" ");
speed.append( DisplayFormatters.formatByteCountToKiBEtcPerSec(limit));
}
itemsSpeed[i].setText(speed.toString());
itemsSpeed[i].setData("maxul", new Integer(limit));
}
}
itemEditTracker.setEnabled(true);
itemChangeTracker.setEnabled(changeUrl);
itemRecheck.setEnabled(recheck);
itemManualUpdate.setEnabled(manualUpdate);
} else {
itemBar.setSelection(false);
itemForceStart.setEnabled(false);
itemForceStart.setSelection(false);
itemQueue.setEnabled(false);
itemStop.setEnabled(false);
itemRemove.setEnabled(false);
itemRemoveAnd.setEnabled(false);
itemEditTracker.setEnabled(false);
itemChangeTracker.setEnabled(false);
itemRecheck.setEnabled(false);
}
if (menuItemChangeDir != null && !menuItemChangeDir.isDisposed()) {
menuItemChangeDir.dispose();
}
if (bChangeDir) {
menuItemChangeDir = new MenuItem(menu, SWT.PUSH, 0);
Messages.setLanguageText(menuItemChangeDir, "MyTorrentsView.menu.changeDirectory");
menuItemChangeDir.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
changeDirSelectedTorrents();
}
});
}
}
});
itemQueue.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
queueSelectedTorrents();
}
});
itemStop.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
stopSelectedTorrents();
}
});
itemRemove.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
removeTorrent((DownloadManager)row.getDataSource(true), false, false);
}
});
itemDeleteTorrent.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
removeTorrent((DownloadManager)row.getDataSource(true), true, false);
}
});
itemDeleteData.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
removeTorrent((DownloadManager)row.getDataSource(true), false, true);
}
});
itemDeleteBoth.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
removeTorrent((DownloadManager)row.getDataSource(true), true, true);
}
});
itemChangeTracker.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
TRTrackerClient tc = ((DownloadManager)row.getDataSource(true)).getTrackerClient();
if (tc != null)
new TrackerChangerWindow(MainWindow.getWindow().getDisplay(), tc);
}
});
itemEditTracker.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
final DownloadManager dm = (DownloadManager)row.getDataSource(true);
if (dm.getTorrent() != null) {
final TOTorrent torrent = dm.getTorrent();
java.util.List group = TorrentUtils.announceGroupsToList(torrent);
new MultiTrackerEditor(null, group, new TrackerEditorListener() {
public void trackersChanged(String str, String str2,
java.util.List group) {
TorrentUtils.listToAnnounceGroups(group, torrent);
try {
TorrentUtils.writeToFile(torrent);
} catch(Throwable e) {
Debug.printStackTrace( e );
}
if (dm.getTrackerClient() != null)
dm.getTrackerClient().resetTrackerUrl( true );
}
}, true);
}
} // run
});
itemManualUpdate.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
((DownloadManager)row.getDataSource(true)).checkTracker();
}
});
itemDetails.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
MainWindow.getWindow().openManagerView((DownloadManager)row.getDataSource(true));
}
});
itemOpen.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
runSelectedTorrents();
}
});
itemExport.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
DownloadManager dm = (DownloadManager)getFirstSelectedDataSource();
if (dm != null)
new ExportTorrentWizard(azureus_core, itemExport.getDisplay(), dm);
}
});
itemHost.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
hostSelectedTorrents();
}
});
itemPublish.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
publishSelectedTorrents();
}
});
itemBar.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
DownloadManager dm = (DownloadManager)row.getDataSource(true);
try{
downloadBars_mon.enter();
if (downloadBars.containsKey(dm)) {
MinimizedWindow mw = (MinimizedWindow) downloadBars.remove(dm);
mw.close();
} else {
MinimizedWindow mw = new MinimizedWindow(dm, cTablePanel.getShell());
downloadBars.put(dm, mw);
}
}finally{
downloadBars_mon.exit();
}
} // run
});
itemMoveDown.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
moveSelectedTorrentsDown();
}
});
itemMoveUp.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?