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

📄 torrentutil.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   TorrentUtil.java

package org.gudy.azureus2.ui.swt;

import com.aelitis.azureus.core.AzureusCore;
import com.aelitis.azureus.core.AzureusCoreFactory;
import com.aelitis.azureus.core.instancemanager.AZInstance;
import com.aelitis.azureus.core.instancemanager.AZInstanceManager;
import com.aelitis.azureus.ui.UIFunctions;
import com.aelitis.azureus.ui.UIFunctionsManager;
import com.aelitis.azureus.ui.common.table.TableColumnCore;
import com.aelitis.azureus.ui.common.table.TableView;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.URLEncoder;
import java.util.*;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.category.Category;
import org.gudy.azureus2.core3.category.CategoryManager;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.download.*;
import org.gudy.azureus2.core3.global.GlobalManager;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.logging.LogAlert;
import org.gudy.azureus2.core3.logging.Logger;
import org.gudy.azureus2.core3.peer.PEPeerManager;
import org.gudy.azureus2.core3.peer.PEPeerSource;
import org.gudy.azureus2.core3.torrent.TOTorrent;
import org.gudy.azureus2.core3.torrent.TOTorrentFactory;
import org.gudy.azureus2.core3.tracker.client.TRTrackerAnnouncer;
import org.gudy.azureus2.core3.tracker.util.TRTrackerUtils;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.ui.swt.exporttorrent.wizard.ExportTorrentWizard;
import org.gudy.azureus2.ui.swt.mainwindow.ClipboardCopy;
import org.gudy.azureus2.ui.swt.mainwindow.TorrentOpener;
import org.gudy.azureus2.ui.swt.maketorrent.MultiTrackerEditor;
import org.gudy.azureus2.ui.swt.maketorrent.TrackerEditorListener;
import org.gudy.azureus2.ui.swt.minibar.DownloadBar;
import org.gudy.azureus2.ui.swt.minibar.MiniBarManager;
import org.gudy.azureus2.ui.swt.shells.InputShell;
import org.gudy.azureus2.ui.swt.shells.MessageBoxShell;
import org.gudy.azureus2.ui.swt.views.ViewUtils;
import org.gudy.azureus2.ui.swt.views.utils.ManagerUtils;

// Referenced classes of package org.gudy.azureus2.ui.swt:
//			Messages, SimpleTextEntryWindow, Utils, CategoryAdderWindow, 
//			TrackerChangerWindow

public class TorrentUtil
{
	private static abstract class DMTask
		implements Listener
	{

		private DownloadManager dms[];
		private boolean ascending;
		private boolean async;

		public void run(DownloadManager downloadmanager)
		{
		}

		public void run(DownloadManager adownloadmanager[])
		{
		}

		public void handleEvent(Event event)
		{
			if (async)
				(new AEThread2("DMTask:async", true) {

					final DMTask this$0;

					public void run()
					{
						go();
					}

				
				{
					this$0 = DMTask.this;
					super(x0, x1);
				}
				}).start();
			else
				go();
		}

		public void go()
		{
			try
			{
				DownloadManager dm = null;
				for (int i = 0; i < dms.length; i++)
				{
					dm = dms[ascending ? i : dms.length - 1 - i];
					if (dm != null)
						run(dm);
				}

				run(dms);
			}
			catch (Exception e)
			{
				Debug.printStackTrace(e);
			}
		}

		public DMTask(DownloadManager dms[])
		{
			this(dms, true);
		}

		public DMTask(DownloadManager dms[], boolean ascending)
		{
			this.dms = dms;
			this.ascending = ascending;
		}

		public DMTask(DownloadManager dms[], boolean ascending, boolean async)
		{
			this.dms = dms;
			this.ascending = ascending;
			this.async = async;
		}
	}


	public TorrentUtil()
	{
	}

	public static void fillTorrentMenu(Menu menu, DownloadManager dms[], AzureusCore azureus_core, Composite composite, boolean include_show_details, int selected_dl_types, TableView tv)
	{
		boolean isSeedingView;
		switch (selected_dl_types)
		{
		case 1: // '\001'
			isSeedingView = false;
			break;

		case 2: // '\002'
			isSeedingView = true;
			break;

		case 0: // '\0'
			if (dms.length == 1)
			{
				isSeedingView = dms[0].isDownloadComplete(false);
				break;
			}
			// fall through

		default:
			isSeedingView = false;
			break;
		}
		boolean hasSelection = dms.length > 0;
		boolean isTrackerOn = TRTrackerUtils.isTrackerEnabled();
		int userMode = COConfigurationManager.getIntParameter("User Mode");
		boolean bChangeDir = hasSelection;
		boolean barsOpened;
		boolean manualUpdate;
		boolean fileMove;
		boolean fileRescan;
		boolean changeUrl = barsOpened = manualUpdate = fileMove = fileRescan = true;
		boolean start;
		boolean stop;
		boolean forceStartEnabled;
		boolean recheck;
		boolean forceStart = forceStartEnabled = recheck = start = stop = false;
		boolean canSetSuperSeed = false;
		boolean superSeedAllYes = true;
		boolean superSeedAllNo = true;
		boolean upSpeedDisabled = false;
		long totalUpSpeed = 0L;
		boolean upSpeedUnlimited = false;
		long upSpeedSetMax = 0L;
		boolean downSpeedDisabled = false;
		long totalDownSpeed = 0L;
		boolean downSpeedUnlimited = false;
		long downSpeedSetMax = 0L;
		boolean allScanSelected = true;
		boolean allScanNotSelected = true;
		boolean allStopped = true;
		if (hasSelection)
		{
			for (int i = 0; i < dms.length; i++)
			{
				DownloadManager dm = dms[i];
				try
				{
					int maxul = dm.getStats().getUploadRateLimitBytesPerSecond();
					if (maxul == 0)
						upSpeedUnlimited = true;
					else
					if ((long)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 ((long)maxdl > downSpeedSetMax)
						downSpeedSetMax = maxdl;
					if (maxdl == -1)
					{
						maxdl = 0;
						downSpeedDisabled = true;
					}
					totalDownSpeed += maxdl;
				}
				catch (Exception ex)
				{
					Debug.printStackTrace(ex);
				}
				if (barsOpened && !DownloadBar.getManager().isOpen(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 && dm.canMoveDataFiles();
				if (userMode < 2)
				{
					TRTrackerAnnouncer trackerClient = dm.getTrackerClient();
					if (trackerClient != null)
					{
						boolean update_state = SystemTime.getCurrentTime() / 1000L - (long)trackerClient.getLastUpdateTime() >= 60L;
						manualUpdate &= update_state;
					}
				}
				int state = dm.getState();
				bChangeDir &= state == 100 || state == 70 || state == 75;
				if (bChangeDir && dms.length == 1)
					bChangeDir = dm.isDataAlreadyAllocated() && !dm.filesExist(true);
				boolean scan = dm.getDownloadState().getFlag(2L);
				boolean incomplete = !dm.isDownloadComplete(true);
				allScanSelected = incomplete && allScanSelected && scan;
				allScanNotSelected = incomplete && allScanNotSelected && !scan;
				PEPeerManager pm = dm.getPeerManager();
				if (pm != null)
				{
					if (pm.canToggleSuperSeedMode())
						canSetSuperSeed = true;
					if (pm.isSuperSeedMode())
						superSeedAllYes = false;
					else
						superSeedAllNo = false;
				} else
				{
					superSeedAllYes = false;
					superSeedAllNo = false;
				}
			}

			fileRescan = allScanSelected || allScanNotSelected;
		} else
		{
			barsOpened = false;
			forceStart = false;
			forceStartEnabled = false;
			start = false;
			stop = false;
			fileMove = false;
			fileRescan = false;
			upSpeedDisabled = true;
			downSpeedDisabled = true;
			changeUrl = false;
			recheck = false;
			manualUpdate = false;
		}
		if (bChangeDir)
		{
			MenuItem menuItemChangeDir = new MenuItem(menu, 8);
			Messages.setLanguageText(menuItemChangeDir, "MyTorrentsView.menu.changeDirectory");
			menuItemChangeDir.addListener(13, new Listener(dms, composite) {

				final DownloadManager val$dms[];
				final Composite val$composite;

				public void handleEvent(Event e)
				{
					TorrentUtil.changeDirSelectedTorrents(dms, composite.getShell());
				}

			
			{
				dms = adownloadmanager;
				composite = composite1;
				super();
			}
			});
		}
		if (include_show_details)
		{
			MenuItem itemDetails = new MenuItem(menu, 8);
			Messages.setLanguageText(itemDetails, "MyTorrentsView.menu.showdetails");
			menu.setDefaultItem(itemDetails);
			Utils.setMenuItemImage(itemDetails, "details");
			itemDetails.addListener(13, new DMTask(dms) {

				public void run(DownloadManager dm)
				{
					UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
					if (uiFunctions != null)
						uiFunctions.openView(5, dm);
				}

			});
			itemDetails.setEnabled(hasSelection);
		}
		MenuItem itemBar = new MenuItem(menu, 32);
		Messages.setLanguageText(itemBar, "MyTorrentsView.menu.showdownloadbar");
		Utils.setMenuItemImage(itemBar, "downloadBar");
		itemBar.addListener(13, new DMTask(dms, menu) {

			final Menu val$menu;

			public void run(DownloadManager dm)
			{
				if (DownloadBar.getManager().isOpen(dm))
					DownloadBar.close(dm);
				else
					DownloadBar.open(dm, menu.getShell());
			}

			
			{
				menu = menu1;
				super(x0);
			}
		});
		itemBar.setEnabled(hasSelection);
		itemBar.setSelection(barsOpened);
		new MenuItem(menu, 2);
		MenuItem itemOpen = new MenuItem(menu, 8);
		Messages.setLanguageText(itemOpen, "MyTorrentsView.menu.open");
		Utils.setMenuItemImage(itemOpen, "run");
		itemOpen.addListener(13, new DMTask(dms) {

			public void run(DownloadManager dms[])
			{
				TorrentUtil.runTorrents(dms);
			}

		});
		itemOpen.setEnabled(hasSelection);
		boolean use_open_containing_folder = COConfigurationManager.getBooleanParameter("MyTorrentsView.menu.show_parent_folder_enabled");
		MenuItem itemExplore = new MenuItem(menu, 8);
		Messages.setLanguageText(itemExplore, (new StringBuilder()).append("MyTorrentsView.menu.").append(use_open_containing_folder ? "open_parent_folder" : "explore").toString());
		itemExplore.addListener(13, new DMTask(dms, false, use_open_containing_folder) {

			final boolean val$use_open_containing_folder;

			public void run(DownloadManager dm)
			{
				ManagerUtils.open(dm, use_open_containing_folder);
			}

			
			{
				use_open_containing_folder = flag;
				super(x0, x1);
			}
		});
		itemExplore.setEnabled(hasSelection);
		MenuItem itemAdvanced = new MenuItem(menu, 64);
		Messages.setLanguageText(itemAdvanced, "MyTorrentsView.menu.advancedmenu");
		itemAdvanced.setEnabled(hasSelection);
		Menu menuAdvanced = new Menu(menu.getShell(), 4);
		itemAdvanced.setMenu(menuAdvanced);
		long maxDownload = COConfigurationManager.getIntParameter("Max Download Speed KBs", 0) * 1024;
		long maxUpload = COConfigurationManager.getIntParameter("Max Upload Speed KBs", 0) * 1024;
		ViewUtils.addSpeedMenu(menu.getShell(), menuAdvanced, true, hasSelection, downSpeedDisabled, downSpeedUnlimited, totalDownSpeed, downSpeedSetMax, maxDownload, upSpeedDisabled, upSpeedUnlimited, totalUpSpeed, upSpeedSetMax, maxUpload, dms.length, new org.gudy.azureus2.ui.swt.views.ViewUtils.SpeedAdapter(dms) {

			final DownloadManager val$dms[];

			public void setDownSpeed(int speed)
			{
				DMTask task = new DMTask(speed) {

					final int val$speed;
					final 6 this$0;

					public void run(DownloadManager dm)
					{
						dm.getStats().setDownloadRateLimitBytesPerSecond(speed);
					}

					
					{
						this$0 = 6.this;
						speed = i;
						super(x0);
					}
				};
				task.go();
			}

			public void setUpSpeed(int speed)
			{
				DMTask task = new DMTask(speed) {

					final int val$speed;
					final 6 this$0;

					public void run(DownloadManager dm)
					{
						dm.getStats().setUploadRateLimitBytesPerSecond(speed);
					}

					
					{
						this$0 = 6.this;
						speed = i;
						super(x0);
					}
				};
				task.go();
			}

			
			{
				dms = adownloadmanager;
				super();
			}
		});
		Menu menuTracker = new Menu(menu.getShell(), 4);
		MenuItem itemTracker = new MenuItem(menuAdvanced, 64);
		Messages.setLanguageText(itemTracker, "MyTorrentsView.menu.tracker");
		itemTracker.setMenu(menuTracker);
		MenuItem itemChangeTracker = new MenuItem(menuTracker, 8);
		Messages.setLanguageText(itemChangeTracker, "MyTorrentsView.menu.changeTracker");
		Utils.setMenuItemImage(itemChangeTracker, "add_tracker");
		itemChangeTracker.addListener(13, new DMTask(dms, composite) {

			final Composite val$composite;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -