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

📄 peersview.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// 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:   PeersView.java

package org.gudy.azureus2.ui.swt.views;

import com.aelitis.azureus.ui.common.table.*;
import java.util.List;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.disk.DiskManager;
import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.download.DownloadManagerPeerListener;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.ipfilter.*;
import org.gudy.azureus2.core3.peer.*;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.plugins.peers.Peer;
import org.gudy.azureus2.ui.swt.Messages;
import org.gudy.azureus2.ui.swt.views.peer.PeerInfoView;
import org.gudy.azureus2.ui.swt.views.peer.RemotePieceDistributionView;
import org.gudy.azureus2.ui.swt.views.table.TableViewSWT;
import org.gudy.azureus2.ui.swt.views.table.TableViewSWTMenuFillListener;
import org.gudy.azureus2.ui.swt.views.table.impl.TableViewSWTImpl;
import org.gudy.azureus2.ui.swt.views.table.impl.TableViewTab;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.ASItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.ChokedItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.ChokingItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.ClientIdentificationItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.ClientItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.ConnectedTimeItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.DLedFromOthersItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.DiscardedItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.DownItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.DownSpeedItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.DownSpeedLimitItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.EncryptionItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.GainItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.HandshakeReservedBytesItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.HostNameItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.IncomingRequestCountItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.InterestedItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.InterestingItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.IpItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.LANItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.MessagingItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.OptimisticUnchokeItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.OutgoingRequestCountItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.PeerByteIDItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.PeerIDItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.PeerSourceItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.PercentItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.PieceItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.PiecesItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.PortItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.SnubbedItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.StatUpItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.StateItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.TimeToSendPieceItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.TimeUntilCompleteItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.TotalDownSpeedItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.TypeItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.UniquePieceItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.UpDownRatioItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.UpItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.UpRatioItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.UpSpeedItem;
import org.gudy.azureus2.ui.swt.views.tableitems.peers.UpSpeedLimitItem;

// Referenced classes of package org.gudy.azureus2.ui.swt.views:
//			IView, LoggerView, ViewUtils

public class PeersView extends TableViewTab
	implements DownloadManagerPeerListener, TableDataSourceChangedListener, TableLifeCycleListener, TableViewSWTMenuFillListener
{

	private static final TableColumnCore basicItems[] = getBasicColumnItems("Peers");
	private DownloadManager manager;
	private TableViewSWT tv;
	private Shell shell;

	static TableColumnCore[] getBasicColumnItems(String table_id)
	{
		return (new TableColumnCore[] {
			new IpItem(table_id), new ClientItem(table_id), new TypeItem(table_id), new MessagingItem(table_id), new EncryptionItem(table_id), new PiecesItem(table_id), new PercentItem(table_id), new DownSpeedItem(table_id), new UpSpeedItem(table_id), new PeerSourceItem(table_id), 
			new HostNameItem(table_id), new PortItem(table_id), new InterestedItem(table_id), new ChokedItem(table_id), new DownItem(table_id), new InterestingItem(table_id), new ChokingItem(table_id), new OptimisticUnchokeItem(table_id), new UpItem(table_id), new UpDownRatioItem(table_id), 
			new GainItem(table_id), new StatUpItem(table_id), new SnubbedItem(table_id), new TotalDownSpeedItem(table_id), new TimeUntilCompleteItem(table_id), new DiscardedItem(table_id), new UniquePieceItem(table_id), new TimeToSendPieceItem(table_id), new DLedFromOthersItem(table_id), new UpRatioItem(table_id), 
			new StateItem(table_id), new ConnectedTimeItem(table_id), new PieceItem(table_id), new IncomingRequestCountItem(table_id), new OutgoingRequestCountItem(table_id), new UpSpeedLimitItem(table_id), new DownSpeedLimitItem(table_id), new LANItem(table_id), new PeerIDItem(table_id), new PeerByteIDItem(table_id), 
			new HandshakeReservedBytesItem(table_id), new ClientIdentificationItem(table_id), new ASItem(table_id)
		});
	}

	public PeersView()
	{
		tv = new TableViewSWTImpl("Peers", "PeersView", basicItems, "pieces", 0x10010002);
		setTableView(tv);
		tv.setRowDefaultHeight(16);
		tv.setEnableTabViews(true);
		tv.setCoreTabViews(new IView[] {
			new PeerInfoView(), new RemotePieceDistributionView(), new LoggerView(true)
		});
		tv.addTableDataSourceChangedListener(this, true);
		tv.addLifeCycleListener(this);
		tv.addMenuFillListener(this);
		tv.setDataSourceType(org/gudy/azureus2/plugins/peers/Peer);
	}

	public void tableDataSourceChanged(Object newDataSource)
	{
		if (manager != null)
			manager.removePeerListener(this);
		if (newDataSource == null)
			manager = null;
		else
		if (newDataSource instanceof Object[])
			manager = (DownloadManager)((Object[])(Object[])newDataSource)[0];
		else
			manager = (DownloadManager)newDataSource;
		if (manager != null && !tv.isDisposed())
		{
			manager.addPeerListener(this, false);
			addExistingDatasources();
		}
	}

	public void tableViewInitialized()
	{
		shell = tv.getComposite().getShell();
		if (manager != null)
		{
			manager.removePeerListener(this);
			manager.addPeerListener(this, false);
		}
		addExistingDatasources();
	}

	public void tableViewDestroyed()
	{
		if (manager != null)
			manager.removePeerListener(this);
	}

	public void fillMenu(Menu menu)
	{
		fillMenu(menu, ((TableView) (tv)), shell, true);
	}

	public static void fillMenu(Menu menu, TableView tv, Shell shell, boolean download_specific)
	{
		Object peers[] = tv.getSelectedDataSources().toArray();
		boolean hasSelection = peers.length > 0;
		boolean downSpeedDisabled = false;
		boolean downSpeedUnlimited = false;
		long totalDownSpeed = 0L;
		long downSpeedSetMax = 0L;
		long maxDown = 0L;
		boolean upSpeedDisabled = false;
		boolean upSpeedUnlimited = false;
		long totalUpSpeed = 0L;
		long upSpeedSetMax = 0L;
		long maxUp = 0L;
		if (hasSelection)
		{
			for (int i = 0; i < peers.length; i++)
			{
				PEPeer peer = (PEPeer)peers[i];
				try
				{
					int maxul = peer.getStats().getUploadRateLimitBytesPerSecond();
					maxUp += maxul * 4;
					if (maxul == 0)
						upSpeedUnlimited = true;
					else
					if ((long)maxul > upSpeedSetMax)
						upSpeedSetMax = maxul;
					if (maxul == -1)
					{
						maxul = 0;
						upSpeedDisabled = true;
					}
					totalUpSpeed += maxul;
					int maxdl = peer.getStats().getDownloadRateLimitBytesPerSecond();
					maxDown += maxdl * 4;
					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 (download_specific)
		{
			MenuItem block_item = new MenuItem(menu, 32);
			PEPeer peer = (PEPeer)tv.getFirstSelectedDataSource();
			if (peer == null || peer.getManager().getDiskManager().getRemainingExcludingDND() > 0L)
			{
				block_item.setSelection(false);
				block_item.setEnabled(false);
			} else
			{
				block_item.setEnabled(true);
				block_item.setSelection(peer.isSnubbed());
			}
			Messages.setLanguageText(block_item, "PeersView.menu.blockupload");
			block_item.addListener(13, new TableSelectedRowsListener(tv, block_item) {

				final MenuItem val$block_item;

				public void run(TableRowCore row)
				{
					((PEPeer)row.getDataSource(true)).setSnubbed(block_item.getSelection());
				}

			
			{
				block_item = menuitem;
				super(x0);
			}
			});
		}
		MenuItem ban_item = new MenuItem(menu, 8);
		Messages.setLanguageText(ban_item, "PeersView.menu.kickandban");
		ban_item.addListener(13, new TableSelectedRowsListener(tv) {

			public void run(TableRowCore row)
			{
				PEPeer peer = (PEPeer)row.getDataSource(true);
				String msg = MessageText.getString("PeersView.menu.kickandban.reason");
				IpFilterManagerFactory.getSingleton().getIPFilter().ban(peer.getIp(), msg, true);
				peer.getManager().removePeer(peer);
			}

		});
		MenuItem itemAdvanced = new MenuItem(menu, 64);
		Messages.setLanguageText(itemAdvanced, "MyTorrentsView.menu.advancedmenu");
		itemAdvanced.setEnabled(hasSelection);
		Menu menuAdvanced = new Menu(shell, 4);
		itemAdvanced.setMenu(menuAdvanced);
		ViewUtils.addSpeedMenu(shell, menuAdvanced, false, hasSelection, downSpeedDisabled, downSpeedUnlimited, totalDownSpeed, downSpeedSetMax, maxDown, upSpeedDisabled, upSpeedUnlimited, totalUpSpeed, upSpeedSetMax, maxUp, peers.length, new ViewUtils.SpeedAdapter(tv) {

			final TableView val$tv;

			public void setDownSpeed(int speed)
			{
				PeersView.setSelectedPeersDownSpeed(speed, tv);
			}

			public void setUpSpeed(int speed)
			{
				PeersView.setSelectedPeersUpSpeed(speed, tv);
			}

			
			{
				tv = tableview;
				super();
			}
		});
		new MenuItem(menu, 2);
	}

	public void addThisColumnSubMenu(String s, Menu menu)
	{
	}

	private static void setSelectedPeersUpSpeed(int speed, TableView tv)
	{
		Object peers[] = tv.getSelectedDataSources().toArray();
		if (peers.length > 0)
		{
			for (int i = 0; i < peers.length; i++)
				try
				{
					PEPeer peer = (PEPeer)peers[i];
					peer.getStats().setUploadRateLimitBytesPerSecond(speed);
				}
				catch (Exception e)
				{
					Debug.printStackTrace(e);
				}

		}
	}

	private static void setSelectedPeersDownSpeed(int speed, TableView tv)
	{
		Object peers[] = tv.getSelectedDataSources().toArray();
		if (peers.length > 0)
		{
			for (int i = 0; i < peers.length; i++)
				try
				{
					PEPeer peer = (PEPeer)peers[i];
					peer.getStats().setDownloadRateLimitBytesPerSecond(speed);
				}
				catch (Exception e)
				{
					Debug.printStackTrace(e);
				}

		}
	}

	public void peerAdded(PEPeer created)
	{
		tv.addDataSource(created);
	}

	public void peerRemoved(PEPeer removed)
	{
		tv.removeDataSource(removed);
	}

	public void peerManagerWillBeAdded(PEPeerManager pepeermanager)
	{
	}

	public void peerManagerAdded(PEPeerManager pepeermanager)
	{
	}

	public void peerManagerRemoved(PEPeerManager manager)
	{
		tv.removeAllTableRows();
	}

	private void addExistingDatasources()
	{
		if (manager == null || tv.isDisposed())
			return;
		Object dataSources[] = manager.getCurrentPeers();
		if (dataSources == null || dataSources.length == 0)
		{
			return;
		} else
		{
			tv.addDataSources(dataSources);
			tv.processDataSourceQueue();
			return;
		}
	}



}

⌨️ 快捷键说明

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