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 + -
显示快捷键?