📄 mytrackerview.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: MyTrackerView.java
package org.gudy.azureus2.ui.swt.views;
import com.aelitis.azureus.core.AzureusCore;
import com.aelitis.azureus.core.AzureusCoreFactory;
import com.aelitis.azureus.ui.UIFunctions;
import com.aelitis.azureus.ui.UIFunctionsManager;
import com.aelitis.azureus.ui.common.table.*;
import java.io.*;
import java.net.InetSocketAddress;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.category.*;
import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.download.DownloadManagerState;
import org.gudy.azureus2.core3.global.GlobalManager;
import org.gudy.azureus2.core3.tracker.host.*;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.plugins.torrent.TorrentAttribute;
import org.gudy.azureus2.pluginsimpl.local.torrent.TorrentManagerImpl;
import org.gudy.azureus2.ui.swt.*;
import org.gudy.azureus2.ui.swt.mainwindow.Colors;
import org.gudy.azureus2.ui.swt.mainwindow.SWTThread;
import org.gudy.azureus2.ui.swt.views.table.TableRowSWT;
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.mytracker.AnnounceCountItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.AverageBytesInItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.AverageBytesOutItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.BadNATCountItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.CategoryItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.CompletedCountItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.DateAddedItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.DownloadedItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.LeftItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.NameItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.PassiveItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.PeerCountItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.ScrapeCountItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.SeedCountItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.StatusItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.TotalBytesInItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.TotalBytesOutItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.TrackerItem;
import org.gudy.azureus2.ui.swt.views.tableitems.mytracker.UploadedItem;
public class MyTrackerView extends TableViewTab
implements TRHostListener, CategoryManagerListener, TableLifeCycleListener, TableSelectionListener, TableViewSWTMenuFillListener, TableRefreshListener
{
private static TableColumnCore basicItems[] = null;
protected static final TorrentAttribute category_attribute = TorrentManagerImpl.getSingleton().getAttribute("Category");
private AzureusCore azureus_core;
private Menu menuCategory;
private TableViewSWT tv;
private boolean start;
private boolean stop;
private boolean remove;
public MyTrackerView()
{
this(AzureusCoreFactory.getSingleton());
}
public MyTrackerView(AzureusCore _azureus_core)
{
if (basicItems == null)
basicItems = (new TableColumnCore[] {
new NameItem(), new TrackerItem(), new StatusItem(), new CategoryItem(), new PassiveItem(), new SeedCountItem(), new PeerCountItem(), new BadNATCountItem(), new AnnounceCountItem(), new ScrapeCountItem(),
new CompletedCountItem(), new UploadedItem(), new DownloadedItem(), new LeftItem(), new TotalBytesInItem(), new AverageBytesInItem(), new TotalBytesOutItem(), new AverageBytesOutItem(), new DateAddedItem()
});
tv = new TableViewSWTImpl("MyTracker", "MyTrackerView", basicItems, "name", 0x10010802);
setTableView(tv);
azureus_core = _azureus_core;
tv.addLifeCycleListener(this);
tv.addSelectionListener(this, false);
tv.addMenuFillListener(this);
tv.addRefreshListener(this, false);
}
public void tableViewInitialized()
{
azureus_core.getTrackerHost().addListener(this);
}
public void tableViewDestroyed()
{
azureus_core.getTrackerHost().removeListener(this);
}
public void defaultSelected(TableRowCore rows[], int stateMask)
{
TRHostTorrent torrent = (TRHostTorrent)tv.getFirstSelectedDataSource();
if (torrent == null)
return;
DownloadManager dm = azureus_core.getGlobalManager().getDownloadManager(torrent.getTorrent());
if (dm != null)
{
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
if (uiFunctions != null)
uiFunctions.openView(5, dm);
}
}
public void fillMenu(Menu menu)
{
menuCategory = new Menu(getComposite().getShell(), 4);
MenuItem itemCategory = new MenuItem(menu, 64);
Messages.setLanguageText(itemCategory, "MyTorrentsView.menu.setCategory");
itemCategory.setMenu(menuCategory);
addCategorySubMenu();
new MenuItem(menu, 2);
MenuItem itemStart = new MenuItem(menu, 8);
Messages.setLanguageText(itemStart, "MyTorrentsView.menu.start");
Utils.setMenuItemImage(itemStart, "start");
MenuItem itemStop = new MenuItem(menu, 8);
Messages.setLanguageText(itemStop, "MyTorrentsView.menu.stop");
Utils.setMenuItemImage(itemStop, "stop");
MenuItem itemRemove = new MenuItem(menu, 8);
Messages.setLanguageText(itemRemove, "MyTorrentsView.menu.remove");
Utils.setMenuItemImage(itemRemove, "delete");
Object hostTorrents[] = tv.getSelectedDataSources().toArray();
itemStart.setEnabled(false);
itemStop.setEnabled(false);
itemRemove.setEnabled(false);
if (hostTorrents.length > 0)
{
boolean start_ok = true;
boolean stop_ok = true;
boolean remove_ok = true;
for (int i = 0; i < hostTorrents.length; i++)
{
TRHostTorrent host_torrent = (TRHostTorrent)hostTorrents[i];
int status = host_torrent.getStatus();
if (status != 1)
start_ok = false;
if (status != 2)
stop_ok = false;
}
itemStart.setEnabled(start_ok);
itemStop.setEnabled(stop_ok);
itemRemove.setEnabled(remove_ok);
}
itemStart.addListener(13, new Listener() {
final MyTrackerView this$0;
public void handleEvent(Event e)
{
startSelectedTorrents();
}
{
this$0 = MyTrackerView.this;
super();
}
});
itemStop.addListener(13, new Listener() {
final MyTrackerView this$0;
public void handleEvent(Event e)
{
stopSelectedTorrents();
}
{
this$0 = MyTrackerView.this;
super();
}
});
itemRemove.addListener(13, new Listener() {
final MyTrackerView this$0;
public void handleEvent(Event e)
{
removeSelectedTorrents();
}
{
this$0 = MyTrackerView.this;
super();
}
});
new MenuItem(menu, 2);
}
public void addThisColumnSubMenu(String s, Menu menu)
{
}
public void torrentAdded(TRHostTorrent host_torrent)
{
tv.addDataSource(host_torrent);
}
public void torrentChanged(TRHostTorrent trhosttorrent)
{
}
public void torrentRemoved(TRHostTorrent host_torrent)
{
tv.removeDataSource(host_torrent);
}
public boolean handleExternalRequest(InetSocketAddress client, String user, String url, URL url1, String s, InputStream inputstream, OutputStream outputstream,
AsyncController asynccontroller)
throws IOException
{
return false;
}
public void tableRefresh()
{
if (getComposite() == null || getComposite().isDisposed())
return;
computePossibleActions();
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
if (uiFunctions != null)
uiFunctions.refreshIconBar();
TableRowCore rows[] = tv.getRows();
for (int x = 0; x < rows.length; x++)
{
TableRowSWT row = (TableRowSWT)rows[x];
if (row == null)
continue;
TRHostTorrent host_torrent = (TRHostTorrent)rows[x].getDataSource(true);
if (host_torrent == null)
continue;
long uploaded = host_torrent.getTotalUploaded();
long downloaded = host_torrent.getTotalDownloaded();
long left = host_torrent.getTotalLeft();
int seed_count = host_torrent.getSeedCount();
host_torrent.setData("GUI_PeerCount", new Long(host_torrent.getLeecherCount()));
host_torrent.setData("GUI_SeedCount", new Long(seed_count));
host_torrent.setData("GUI_BadNATCount", new Long(host_torrent.getBadNATCount()));
host_torrent.setData("GUI_Uploaded", new Long(uploaded));
host_torrent.setData("GUI_Downloaded", new Long(downloaded));
host_torrent.setData("GUI_Left", new Long(left));
if (seed_count == 0)
continue;
Color fg = row.getForeground();
if (fg != null && fg.equals(Colors.blues[7]))
row.setForeground(Colors.blues[7]);
}
}
private void computePossibleActions()
{
start = stop = remove = false;
Object hostTorrents[] = tv.getSelectedDataSources().toArray();
if (hostTorrents.length > 0)
{
remove = true;
for (int i = 0; i < hostTorrents.length; i++)
{
TRHostTorrent host_torrent = (TRHostTorrent)hostTorrents[i];
int status = host_torrent.getStatus();
if (status == 1)
start = true;
if (status == 2)
stop = true;
}
}
}
public boolean isEnabled(String itemKey)
{
if (itemKey.equals("start"))
return start;
if (itemKey.equals("stop"))
return stop;
if (itemKey.equals("remove"))
return remove;
else
return false;
}
public void itemActivated(String itemKey)
{
if (itemKey.equals("start"))
{
startSelectedTorrents();
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -