mytorrentsview.java
来自「Azureus is a powerful, full-featured, cr」· Java 代码 · 共 1,672 行 · 第 1/4 页
JAVA
1,672 行
moveSelectedTorrentsUp();
}
});
itemMoveTop.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
moveSelectedTorrentsTop();
}
});
itemMoveEnd.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
moveSelectedTorrentsEnd();
}
});
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());
}
}
});
itemRecheck.addListener(SWT.Selection,
new SelectedTableRowsListener() {
public void run(TableRowCore row) {
DownloadManager dm = (DownloadManager)row.getDataSource(true);
if ( dm.canForceRecheck()){
dm.forceRecheck();
}
}
});
} // fillMenu
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");
item.setImage(ImageRepository.getImage("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() {
Transfer[] types = new Transfer[] { TextTransfer.getInstance()};
DragSource 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;
drag_drop_line_start = table.getSelectionIndex();
} else {
event.doit = false;
drag_drop_line_start = -1;
}
}
});
DropTarget 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 dragEnter(DropTargetEvent event) {
System.out.print("dragEnter typ id: " + event.currentDataType.type + ",types count: " + event.dataTypes.length + " = ");
for (int i = 0; i < event.dataTypes.length; i++) {
System.out.print(event.dataTypes[i].type + ",");
}
System.out.println();
}
public void dropAccept(DropTargetEvent event) {
System.out.print("dropAccept typ id: " + event.currentDataType.type + ",types count: " + event.dataTypes.length + " = ");
for (int i = 0; i < event.dataTypes.length; i++) {
System.out.print(event.dataTypes[i].type + ",");
}
System.out.println();
}
public void dragOperationChanged(DropTargetEvent event) {
System.out.print("dragOperationChanged typ id: " + event.currentDataType.type + ",types count: " + event.dataTypes.length + " = ");
for (int i = 0; i < event.dataTypes.length; i++) {
System.out.print(event.dataTypes[i].type + ",");
}
System.out.println();
}
public void dragLeave(DropTargetEvent event) {
System.out.print("dragLeave typ id: " + event.currentDataType.type + ",types count: " + event.dataTypes.length + " = ");
for (int i = 0; i < event.dataTypes.length; i++) {
System.out.print(event.dataTypes[i].type + ",");
}
System.out.println();
}
//*/
public void dragOver(DropTargetEvent event) {
/*
System.out.print("dragOver typ id: " + event.currentDataType.type + ",types count: " + event.dataTypes.length + " = ");
for (int i = 0; i < event.dataTypes.length; i++) {
System.out.print(event.dataTypes[i].type + ",");
}
System.out.println();
//*/
if(drag_drop_line_start < 0) {
if(event.detail != DND.DROP_COPY)
event.detail = DND.DROP_LINK;
} 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) {
// 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;
} else {
TorrentOpener.openDroppedTorrents(azureus_core, event);
}
}
});
}
private void moveSelectedTorrents(int drag_drop_line_start, int drag_drop_line_end) {
if (drag_drop_line_end == drag_drop_line_start)
return;
java.util.List list = getSelectedRowsList();
if (list.size() == 0)
return;
TableItem ti = getTable().getItem(drag_drop_line_end);
TableRowCore row = (TableRowCore)ti.getData("TableRow");
DownloadManager dm = (DownloadManager)row.getDataSource(true);
int iNewPos = dm.getPosition();
for (Iterator iter = list.iterator(); iter.hasNext();) {
row = (TableRowCore)iter.next();
dm = (DownloadManager)row.getDataSource(true);
int iOldPos = dm.getPosition();
globalManager.moveTo(dm, iNewPos);
if (sorter.isAscending()) {
if (iOldPos > iNewPos)
iNewPos++;
} else {
if (iOldPos < iNewPos)
iNewPos--;
}
}
if (sorter.getLastField().equals("#"))
sorter.sortColumn(true);
}
/* (non-Javadoc)
* @see org.gudy.azureus2.ui.swt.IView#refresh()
*/
public void refresh() {
if (getComposite() == null || getComposite().isDisposed())
return;
computePossibleActions();
MainWindow.getWindow().refreshIconBar();
super.refresh();
}
public void delete() {
super.delete();
if (fontButton != null && !fontButton.isDisposed()) {
fontButton.dispose();
fontButton = null;
}
CategoryManager.removeCategoryManagerListener(this);
globalManager.removeListener(this);
COConfigurationManager.removeParameterListener("Confirm Data Delete", this);
}
private KeyListener createKeyListener() {
return new KeyAdapter() {
public void keyPressed(KeyEvent e) {
/*
String string = "stateMask=0x" + Integer.toHexString(e.stateMask);
if ((e.stateMask & SWT.CTRL) != 0)
string += " CTRL";
if ((e.stateMask & SWT.ALT) != 0)
string += " ALT";
if ((e.stateMask & SWT.SHIFT) != 0)
string += " SHIFT";
if ((e.stateMask & SWT.COMMAND) != 0)
string += " COMMAND";
string += ", keyCode=0x" + Integer.toHexString(e.keyCode) + "=" + e.keyCode;
string += ", character=0x" + Integer.toHexString(e.character);
switch (e.character) {
case 0 :
string += " '\\0'";
break;
case SWT.BS :
string += " '\\b'";
break;
case SWT.CR :
string += " '\\r'";
break;
case SWT.DEL :
string += " DEL";
break;
case SWT.ESC :
string += " ESC";
break;
case SWT.LF :
string += " '\\n'";
break;
case SWT.TAB :
string += " '\\t'";
break;
default :
string += " '" + e.character + "'";
break;
}
System.out.println(string);
//*/
if (e.stateMask == (SWT.CTRL|SWT.SHIFT)) {
// CTRL+SHIFT+S stop all Torrents
if(e.character == 0x13)
globalManager.stopAllDownloads();
} else if (e.stateMask == SWT.CTRL) {
// CTRL+CURSOR DOWN move selected Torrents one down
if(e.keyCode == 0x1000001)
moveSelectedTorrentsUp();
// CTRL+CURSOR UP move selected Torrents one up
else if(e.keyCode == 0x1000002)
moveSelectedTorrentsDown();
// CTRL+HOME move selected Torrents to top
else if(e.keyCode == 0x1000007)
moveSelectedTorrentsTop();
// CTRL+END move selected Torrents to end
else if(e.keyCode == 0x1000008)
moveSelectedTorrentsEnd();
// CTRL+A select all Torrents
else if(e.character == 0x1)
getTable().selectAll();
else if(e.character == 0x3) {
clipboardSelected();
// CTRL+R resume/start selected Torrents
} else if(e.character == 0x12)
resumeSelectedTorrents();
// CTRL+S stop selected Torrents
else if(e.character == 0x13)
stopSelectedTorrents();
} else if(e.stateMask == 0) {
// DEL remove selected Torrents
if(e.keyCode == 127) {
removeSelectedTorrents();
} else {
// normal character: jump to next item with a name beginning with this character
TableItem[] items = getTable().getSelection();
int lastSelectedIndex = items.length == 0 ? -1 : getTable().indexOf(items[items.length-1]);
int nextIndex = globalManager.getNextIndexForCharacter(e.character, lastSelectedIndex);
if (nextIndex >= 0)
getTable().setSelection(nextIndex);
}
}
}
};
}
private void changeDirSelectedTorrents() {
Object[] dataSources = getSelectedDataSources();
if (dataSources.length <= 0)
return;
String sDefPath = COConfigurationManager.getBooleanParameter("Use default data dir") ?
COConfigurationManager.getStringParameter("Default save path", "") :
"";
if ( sDefPath.length() > 0 ){
File f = new File(sDefPath);
if ( !f.exists()){
f.mkdirs();
}
}
DirectoryDialog dDialog = new DirectoryDialog(cTablePanel.getShell(),
SWT.SYSTEM_MODAL);
dDialog.setFilterPath(sDefPath);
dDialog.setMessage(MessageText.getString("MainWindow.dialog.choose.savepath"));
String sSavePath = dDialog.open();
if (sSavePath != null) {
for (int i = 0; i < dataSources.length; i++) {
DownloadManager dm = (DownloadManager)dataSources[i];
if (dm.getState() == DownloadManager.STATE_ERROR ){
dm.setTorrentSaveDir(sSavePath);
if ( dm.filesExist()) {
dm.setState(DownloadManager.STATE_STOPPED);
ManagerUtils.queue(dm, cTablePanel);
}
}
}
}
}
private void removeTorrent(DownloadManager dm, boolean bDeleteTorrent, boolean bDeleteData) {
if( COConfigurationManager.getBooleanParameter( "confirm_torrent_removal" ) ) {
MessageBox mb = new MessageBox(cTablePanel.getShell(), SWT.ICON_WARNING | SWT.YES | SWT.NO);
mb.setText(MessageText.getString("deletedata.title"));
mb.setMessage(MessageText.getString("deletetorrent.message1")
+ dm.getDisplayName() + " :\n"
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?