📄 mytorrentsview.java
字号:
// Force Start
if (userMode > 0) {
final MenuItem itemForceStart = new MenuItem(menu, SWT.CHECK);
Messages.setLanguageText(itemForceStart, "MyTorrentsView.menu.forceStart");
Utils.setMenuItemImage(itemForceStart, "forcestart");
itemForceStart.addListener(SWT.Selection, new SelectedTableRowsListener() {
public void run(TableRowCore row) {
DownloadManager dm = (DownloadManager) row.getDataSource(true);
if (ManagerUtils.isForceStartable(dm)) {
dm.setForceStart(itemForceStart.getSelection());
}
}
});
itemForceStart.setSelection(forceStart);
itemForceStart.setEnabled(forceStartEnabled);
}
// Stop
final MenuItem itemStop = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemStop, "MyTorrentsView.menu.stop"); //$NON-NLS-1$
Utils.setMenuItemImage(itemStop, "stop");
itemStop.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
stopSelectedTorrents();
}
});
itemStop.setEnabled(stop);
// Remove
final MenuItem itemRemove = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemRemove, "MyTorrentsView.menu.remove"); //$NON-NLS-1$
Utils.setMenuItemImage(itemRemove, "delete");
itemRemove.addListener(SWT.Selection, new SelectedTableRowsListener() {
public void run(TableRowCore row) {
removeTorrent((DownloadManager) row.getDataSource(true), false, false);
}
});
itemRemove.setEnabled(hasSelection);
// === Remove And ===
// ==================
final MenuItem itemRemoveAnd = new MenuItem(menu, SWT.CASCADE);
Messages.setLanguageText(itemRemoveAnd, "MyTorrentsView.menu.removeand"); //$NON-NLS-1$
Utils.setMenuItemImage(itemRemoveAnd, "delete");
itemRemoveAnd.setEnabled(hasSelection);
final Menu menuRemove = new Menu(getComposite().getShell(), SWT.DROP_DOWN);
itemRemoveAnd.setMenu(menuRemove);
// Remove And > Delete Torrent
final MenuItem itemDeleteTorrent = new MenuItem(menuRemove, SWT.PUSH);
Messages.setLanguageText(itemDeleteTorrent,
"MyTorrentsView.menu.removeand.deletetorrent"); //$NON-NLS-1$
itemDeleteTorrent.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
removeTorrent((DownloadManager) row.getDataSource(true), true,
false);
}
});
// Remove And > Delete Data
final MenuItem itemDeleteData = new MenuItem(menuRemove, SWT.PUSH);
Messages.setLanguageText(itemDeleteData,
"MyTorrentsView.menu.removeand.deletedata");
itemDeleteData.addListener(SWT.Selection, new SelectedTableRowsListener() {
public void run(TableRowCore row) {
removeTorrent((DownloadManager) row.getDataSource(true), false, true);
}
});
// Remove And > Delete Both
final MenuItem itemDeleteBoth = new MenuItem(menuRemove, SWT.PUSH);
Messages.setLanguageText(itemDeleteBoth,
"MyTorrentsView.menu.removeand.deleteboth");
itemDeleteBoth.addListener(SWT.Selection, new SelectedTableRowsListener() {
public void run(TableRowCore row) {
removeTorrent((DownloadManager) row.getDataSource(true), true, true);
}
});
// Force Recheck
final MenuItem itemRecheck = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemRecheck, "MyTorrentsView.menu.recheck");
Utils.setMenuItemImage(itemRecheck, "recheck");
itemRecheck.addListener(SWT.Selection, new SelectedTableRowsListener() {
public void run(TableRowCore row) {
DownloadManager dm = (DownloadManager) row.getDataSource(true);
if (dm.canForceRecheck()) {
dm.forceRecheck();
}
}
});
itemRecheck.setEnabled(recheck);
// ---
new MenuItem(menu, SWT.SEPARATOR);
super.fillMenu(menu);
}
private void addCategorySubMenu() {
MenuItem[] items = menuCategory.getItems();
int i;
for (i = 0; i < items.length; i++) {
items[i].dispose();
}
Category[] categories = CategoryManager.getCategories();
Arrays.sort(categories);
if (categories.length > 0) {
Category catUncat = CategoryManager.getCategory(Category.TYPE_UNCATEGORIZED);
if (catUncat != null) {
final MenuItem itemCategory = new MenuItem(menuCategory, SWT.PUSH);
Messages.setLanguageText(itemCategory, catUncat.getName());
itemCategory.setData("Category", catUncat);
itemCategory.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
MenuItem item = (MenuItem)event.widget;
assignSelectedToCategory((Category)item.getData("Category"));
}
});
new MenuItem(menuCategory, SWT.SEPARATOR);
}
for (i = 0; i < categories.length; i++) {
if (categories[i].getType() == Category.TYPE_USER) {
final MenuItem itemCategory = new MenuItem(menuCategory, SWT.PUSH);
itemCategory.setText(categories[i].getName());
itemCategory.setData("Category", categories[i]);
itemCategory.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
MenuItem item = (MenuItem)event.widget;
assignSelectedToCategory((Category)item.getData("Category"));
}
});
}
}
new MenuItem(menuCategory, SWT.SEPARATOR);
}
final MenuItem itemAddCategory = new MenuItem(menuCategory, SWT.PUSH);
Messages.setLanguageText(itemAddCategory,
"MyTorrentsView.menu.setCategory.add");
itemAddCategory.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
addCategory();
}
});
}
/* SubMenu for column specific tasks.
*/
public void addThisColumnSubMenu(String sColumnName, Menu menuThisColumn) {
final Table table = getTable();
if (sColumnName.equals("health")) {
MenuItem item = new MenuItem(menuThisColumn, SWT.PUSH);
Messages.setLanguageText(item, "MyTorrentsView.menu.health");
Utils.setMenuItemImage(item, "st_explain");
item.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
HealthHelpWindow.show(table.getDisplay());
}
});
} else if (sColumnName.equals("maxuploads")) {
int iStart = COConfigurationManager.getIntParameter("Max Uploads") - 2;
if (iStart < 2) iStart = 2;
for (int i = iStart; i < iStart + 6; i++) {
MenuItem item = new MenuItem(menuThisColumn, SWT.PUSH);
item.setText(String.valueOf(i));
item.setData("MaxUploads", new Long(i));
item.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
DownloadManager dm = (DownloadManager)row.getDataSource(true);
MenuItem item = (MenuItem)event.widget;
if (item != null) {
int value = ((Long)item.getData("MaxUploads")).intValue();
dm.getStats().setMaxUploads(value);
}
} // run
}); // listener
} // for
}
}
private void createDragDrop() {
try{
Transfer[] types = new Transfer[] { TextTransfer.getInstance()};
if (dragSource != null && !dragSource.isDisposed()) {
dragSource.dispose();
}
if (dropTarget != null && !dropTarget.isDisposed()) {
dropTarget.dispose();
}
dragSource = new DragSource(getTable(), DND.DROP_MOVE);
dragSource.setTransfer(types);
dragSource.addDragListener(new DragSourceAdapter() {
public void dragStart(DragSourceEvent event) {
Table table = getTable();
if (table.getSelectionCount() != 0 &&
table.getSelectionCount() != table.getItemCount())
{
event.doit = true;
//System.out.println("DragStart");
drag_drop_line_start = table.getSelectionIndex();
} else {
event.doit = false;
drag_drop_line_start = -1;
}
}
public void dragSetData(DragSourceEvent event) {
//System.out.println("DragSetData");
event.data = "moveRow";
}
});
dropTarget = new DropTarget(getTable(),
DND.DROP_DEFAULT | DND.DROP_MOVE |
DND.DROP_COPY | DND.DROP_LINK |
DND.DROP_TARGET_MOVE);
dropTarget.setTransfer(new Transfer[] { URLTransfer.getInstance(),
FileTransfer.getInstance(),
TextTransfer.getInstance()});
dropTarget.addDropListener(new DropTargetAdapter() {
public void dropAccept(DropTargetEvent event) {
event.currentDataType = URLTransfer.pickBestType(event.dataTypes,
event.currentDataType);
}
public void dragEnter(DropTargetEvent event) {
//System.out.println("DragEnter " + event.operations);
// no event.data on dragOver, use drag_drop_line_start to determine if
// ours
if(drag_drop_line_start < 0) {
if(event.detail != DND.DROP_COPY) {
if ((event.operations & DND.DROP_LINK) > 0)
event.detail = DND.DROP_LINK;
else if ((event.operations & DND.DROP_COPY) > 0)
event.detail = DND.DROP_COPY;
}
} else if(TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
event.feedback = DND.FEEDBACK_EXPAND | DND.FEEDBACK_SCROLL | DND.FEEDBACK_SELECT | DND.FEEDBACK_INSERT_BEFORE | DND.FEEDBACK_INSERT_AFTER;
event.detail = event.item == null ? DND.DROP_NONE : DND.DROP_MOVE;
}
}
public void drop(DropTargetEvent event) {
if (!(event.data instanceof String) || !((String)event.data).equals("moveRow")) {
TorrentOpener.openDroppedTorrents(azureus_core, event);
return;
}
// Torrent file from shell dropped
if(drag_drop_line_start >= 0) { // event.data == null
event.detail = DND.DROP_NONE;
if(event.item == null)
return;
int drag_drop_line_end = getTable().indexOf((TableItem)event.item);
moveSelectedTorrents(drag_drop_line_start, drag_drop_line_end);
drag_drop_line_start = -1;
}
}
});
}
catch( Throwable t ) {
Logger.log(new LogEvent(LOGID, "failed to init drag-n-drop", t));
}
}
private void moveSelectedTorrents(int drag_drop_line_start, int drag_drop_line_end) {
if (drag_drop_line_end == drag_drop_line_start)
return;
TableItem ti = getTable().getItem(drag_drop_line_end);
TableRowCore row = (TableRowCore)ti.getData("TableRow");
DownloadManager dm = (DownloadManager)row.getDataSource(true);
moveSelectedTorrentsTo(dm.getPosition());
}
private void moveSelectedTorrentsTo(int iNewPos) {
java.util.List list = getSelectedRowsList();
if (list.size() == 0)
return;
for (Iterator iter = list.iterator(); iter.hasNext();) {
TableRowCore row = (TableRowCore)iter.next();
DownloadManager dm = (DownloadManager)row.getDataSource(true);
int iOldPos = dm.getPosition();
globalManager.moveTo(dm, iNewPos);
if (rowSorter.bAscending) {
if (iOldPos > iNewPos)
iNewPos++;
} else {
if (iOldPos < iNewPos)
iNewPos--;
}
}
boolean bForceSort = rowSorter.sColumnName.equals("#");
columnInvalidate("#");
refresh(bForceSort);
}
/* (non-Javadoc)
* @see org.gudy.azureus2.ui.swt.IView#refresh()
*/
public void refresh(boolean bForceSort) {
if (getComposite() == null || getComposite().isDisposed())
return;
userMode = COConfigurationManager.getIntParameter("User Mode");
isTrackerOn = TRTrackerUtils.isTrackerEnabled();
computePossibleActions();
MainWindow.getWindow().refreshIconBar();
super.refresh(bForceSort);
}
public void delete() {
super.delete();
if (dragSource != null && !dragSource.isDisposed()) {
dragSource.dispose();
dragSource = null;
}
if (dropTarget != null && !dropTarget.isDisposed()) {
dropTarget.dispose();
dropTarget = null;
}
if (fontButton != null && !fontButton.isDisposed()) {
fontButton.dispose();
fontButton = null;
}
CategoryManager.removeCategoryManagerListener(this);
globalManager.removeListener(this);
COConfigurationManager.removeParameterListener("Confirm Data Delete", this);
}
public void keyPressed(KeyEvent e) {
if (e.stateMask == (SWT.CTRL | SWT.SHIFT)) {
// CTRL+SHIFT+S stop all Torrents
if (e.character == 0x13) {
ManagerUtils.asyncStopAll();
e.doit = false;
return;
}
// Can't capture Ctrl-PGUP/DOWN for moving up/down in chunks
// (because those keys move through tabs), so use shift-ctrl-up/down
if (e.keyCode == SWT.ARROW_DOWN) {
moveSelectedTorrents(10);
e.doit = false
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -