📄 mytorrentsview.java
字号:
e.detail = DND.DROP_NONE;
//System.out.println("DragDrop on Button:" + drag_drop_line_start);
if(drag_drop_line_start >= 0) {
drag_drop_line_start = -1;
assignSelectedToCategory((Category)catButton.getData("Category"));
}
}
});
catButton.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
if (tabDropTarget != null && !tabDropTarget.isDisposed()) {
tabDropTarget.dispose();
}
}
});
Menu menu = new Menu(getComposite().getShell(), SWT.POP_UP);
final MenuItem itemDelete = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemDelete, "MyTorrentsView.menu.category.delete");
menu.setDefaultItem(itemDelete);
if (categories[i].getType() == Category.TYPE_USER) {
itemDelete.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
Category catToDelete = (Category)catButton.getData("Category");
if (catToDelete != null) {
java.util.List managers = catToDelete.getDownloadManagers();
// move to array,since setcategory removed it from the category,
// which would mess up our loop
DownloadManager dms[] = (DownloadManager [])managers.toArray(new DownloadManager[managers.size()]);
for (int i = 0; i < dms.length; i++) {
dms[i].getDownloadState().setCategory(null);
}
if (currentCategory == catToDelete){
activateCategory(CategoryManager.getCategory(Category.TYPE_ALL));
}else{
// always activate as deletion of this one might have
// affected the current view
activateCategory( currentCategory );
}
CategoryManager.removeCategory(catToDelete);
}
}
});
itemDelete.setEnabled(true);
}
else {
itemDelete.setEnabled(false);
}
catButton.setMenu(menu);
}
cCategories.layout();
getComposite().layout();
// layout hack - relayout
if (catResizeAdapter == null) {
catResizeAdapter = new ControlAdapter() {
public void controlResized(ControlEvent event) {
if (getComposite().isDisposed() || cCategories.isDisposed())
return;
GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
int parentWidth = cCategories.getParent().getClientArea().width;
int catsWidth = cCategories.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
// give text a 5 pixel right padding
int textWidth = 5
+ tableLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT).x
+ tableLabel.getBorderWidth() * 2;
Object layoutData = tableLabel.getLayoutData();
if (layoutData instanceof GridData) {
GridData labelGrid = (GridData) layoutData;
textWidth += labelGrid.horizontalIndent;
}
if (textWidth + catsWidth > parentWidth) {
gridData.widthHint = parentWidth - textWidth;
}
cCategories.setLayoutData(gridData);
cCategories.getParent().layout(true);
}
};
getTableComposite().addControlListener(catResizeAdapter);
}
catResizeAdapter.controlResized(null);
}
}
private boolean isOurDownloadManager(DownloadManager dm) {
boolean bCompleted = dm.getStats().getDownloadCompleted(false) == 1000;
boolean bOurs = ((bCompleted && isSeedingView) || (!bCompleted && !isSeedingView));
if (bOurs && sLastSearch.length() > 0) {
try {
String name = dm.getDisplayName();
String s = bRegexSearch ? sLastSearch : "\\Q" + sLastSearch + "\\E";
Pattern pattern = Pattern.compile(s, Pattern.CASE_INSENSITIVE);
if (!pattern.matcher(name).find())
bOurs = false;
} catch (Exception e) {
// Future: report PatternSyntaxException message to user.
}
}
return bOurs;
}
public Table createTable(Composite panel) {
Table table = new Table(cTablePanel, iTableStyle);
table.setLayoutData(new GridData(GridData.FILL_BOTH));
table.addKeyListener(this);
table.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
computePossibleActions();
MainWindow.getWindow().refreshIconBar();
}
});
}
});
cTablePanel.layout();
return table;
}
public void runDefaultAction() {
DownloadManager dm = (DownloadManager)getFirstSelectedDataSource();
if (dm != null)
MainWindow.getWindow().openManagerView(dm);
}
public void fillMenu(final Menu menu) {
Object[] dms = getSelectedDataSources();
boolean hasSelection = (dms.length > 0);
userMode = COConfigurationManager.getIntParameter("User Mode");
isTrackerOn = TRTrackerUtils.isTrackerEnabled();
// Enable/Disable Logic
boolean moveUp, moveDown, bChangeDir;
moveUp = moveDown = bChangeDir = hasSelection;
boolean start, stop, changeUrl, barsOpened, forceStart;
boolean forceStartEnabled, recheck, manualUpdate, changeSpeed, fileMove, fileRescan;
changeUrl = barsOpened = manualUpdate = changeSpeed = fileMove = fileRescan = true;
forceStart = forceStartEnabled = recheck = start = stop = false;
boolean upSpeedDisabled = false;
long totalUpSpeed = 0;
boolean upSpeedUnlimited = false;
long upSpeedSetMax = 0;
boolean downSpeedDisabled = false;
long totalDownSpeed = 0;
boolean downSpeedUnlimited = false;
long downSpeedSetMax = 0;
boolean allScanSelected = true;
boolean allScanNotSelected = true;
boolean allStopped = true;
if (hasSelection) {
bChangeDir = true;
for (int i = 0; i < dms.length; i++) {
DownloadManager dm = (DownloadManager) dms[i];
try {
int maxul = dm.getStats().getUploadRateLimitBytesPerSecond();
if (maxul == 0) {
upSpeedUnlimited = true;
}else{
if ( maxul > upSpeedSetMax ){
upSpeedSetMax = maxul;
}
}
if (maxul == -1) {
maxul = 0;
upSpeedDisabled = true;
}
totalUpSpeed += maxul;
int maxdl = dm.getStats().getDownloadRateLimitBytesPerSecond();
if (maxdl == 0) {
downSpeedUnlimited = true;
}else{
if ( maxdl > downSpeedSetMax ){
downSpeedSetMax = maxdl;
}
}
if (maxdl == -1) {
maxdl = 0;
downSpeedDisabled = true;
}
totalDownSpeed += maxdl;
} 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();
boolean stopped = ManagerUtils.isStopped(dm);
allStopped &= stopped;
fileMove = fileMove && stopped && dm.isPersistent();
if (!dm.getGlobalManager().isMoveableDown(dm)) {
moveDown = false;
}
if (!dm.getGlobalManager().isMoveableUp(dm)) {
moveUp = false;
}
if (userMode > 1) {
TRTrackerAnnouncer trackerClient = dm.getTrackerClient();
if (trackerClient != null) {
boolean update_state = ((SystemTime.getCurrentTime() / 1000
- trackerClient.getLastUpdateTime() >= TRTrackerAnnouncer.REFRESH_MINIMUM_SECS));
manualUpdate = manualUpdate & update_state;
}
}
bChangeDir &= (dm.getState() == DownloadManager.STATE_ERROR && !dm
.filesExist());
boolean scan = dm.getDownloadState().getFlag( DownloadManagerState.FLAG_SCAN_INCOMPLETE_PIECES );
boolean incomplete = !dm.isDownloadComplete();
allScanSelected = incomplete && allScanSelected && scan;
allScanNotSelected = incomplete && allScanNotSelected && !scan;
}
fileRescan = allScanSelected || allScanNotSelected;
} else { // empty right-click
barsOpened = false;
forceStart = false;
forceStartEnabled = false;
start = false;
stop = false;
fileMove = false;
fileRescan = false;
upSpeedDisabled = true;
downSpeedDisabled = true;
changeUrl = false;
recheck = false;
manualUpdate = false;
}
// === Root Menu ===
if (bChangeDir) {
menuItemChangeDir = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(menuItemChangeDir,
"MyTorrentsView.menu.changeDirectory");
menuItemChangeDir.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
changeDirSelectedTorrents();
}
});
}
// Open Details
final MenuItem itemDetails = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemDetails, "MyTorrentsView.menu.showdetails");
menu.setDefaultItem(itemDetails);
Utils.setMenuItemImage(itemDetails, "details");
itemDetails.addListener(SWT.Selection, new SelectedTableRowsListener() {
public void run(TableRowCore row) {
MainWindow.getWindow().openManagerView(
(DownloadManager) row.getDataSource(true));
}
});
itemDetails.setEnabled(hasSelection);
// Open Bar
final MenuItem itemBar = new MenuItem(menu, SWT.CHECK);
Messages.setLanguageText(itemBar, "MyTorrentsView.menu.showdownloadbar");
Utils.setMenuItemImage(itemBar, "downloadBar");
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
});
itemBar.setEnabled(hasSelection);
itemBar.setSelection(barsOpened);
// ---
new MenuItem(menu, SWT.SEPARATOR);
// Run Data File
final MenuItem itemOpen = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemOpen, "MyTorrentsView.menu.open");
Utils.setMenuItemImage(itemOpen, "run");
itemOpen.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
runSelectedTorrents();
}
});
itemOpen.setEnabled(hasSelection);
// Explore
final MenuItem itemExplore = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemExplore, "MyTorrentsView.menu.explore");
itemExplore.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
openSelectedTorrents();
}
});
itemExplore.setEnabled(hasSelection);
// === advanced menu ===
final MenuItem itemAdvanced = new MenuItem(menu, SWT.CASCADE);
Messages.setLanguageText(itemAdvanced, "MyTorrentsView.menu.advancedmenu"); //$NON-NLS-1$
itemAdvanced.setEnabled(hasSelection);
final Menu menuAdvanced = new Menu(getComposite().getShell(), SWT.DROP_DOWN);
itemAdvanced.setMenu(menuAdvanced);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -