⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mytorrentsview.java

📁 基于JXTA开发平台的下载软件开发源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            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 + -