📄 dhtview.java
字号:
/*
* Created on Sep 13, 2004
* Created by Olivier Chalouhi
* Copyright (C) 2004, 2005, 2006 Aelitis, All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* AELITIS, SAS au capital de 46,603.30 euros
* 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
*
*/
package org.gudy.azureus2.ui.swt.views.stats;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.util.ByteFormatter;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.DisplayFormatters;
import org.gudy.azureus2.core3.util.TimeFormatter;
import org.gudy.azureus2.plugins.PluginInterface;
import org.gudy.azureus2.ui.swt.Messages;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.components.graphics.SpeedGraphic;
import org.gudy.azureus2.ui.swt.views.AbstractIView;
import com.aelitis.azureus.core.AzureusCoreFactory;
import com.aelitis.azureus.core.dht.DHT;
import com.aelitis.azureus.core.dht.control.DHTControlActivity;
import com.aelitis.azureus.core.dht.control.DHTControlListener;
import com.aelitis.azureus.core.dht.control.DHTControlStats;
import com.aelitis.azureus.core.dht.db.DHTDBStats;
import com.aelitis.azureus.core.dht.router.DHTRouterStats;
import com.aelitis.azureus.core.dht.transport.DHTTransportFullStats;
import com.aelitis.azureus.core.dht.transport.DHTTransportStats;
import com.aelitis.azureus.plugins.dht.DHTPlugin;
/**
*
*/
public class DHTView extends AbstractIView {
public static final int DHT_TYPE_MAIN = 0;
public static final int DHT_TYPE_CVS = 1;
DHT dht;
Composite panel;
String yes_str;
String no_str;
Label lblUpTime,lblNumberOfUsers;
Label lblNodes,lblLeaves;
Label lblContacts,lblReplacements,lblLive,lblUnknown,lblDying;
Label lblRendezvous, lblReachable;
Label lblKeys,lblValues;
Label lblLocal,lblDirect,lblIndirect;
Label lblDivFreq,lblDivSize;
Label lblReceivedPackets,lblReceivedBytes;
Label lblSentPackets,lblSentBytes;
Label lblPings[] = new Label[4];
Label lblFindNodes[] = new Label[4];
Label lblFindValues[] = new Label[4];
Label lblStores[] = new Label[4];
Label lblData[] = new Label[4];
Canvas in,out;
SpeedGraphic inGraph,outGraph;
boolean activityChanged;
DHTControlListener controlListener;
Table activityTable;
DHTControlActivity[] activities;
private final int dht_type;
public DHTView( int dht_type ) {
this.dht_type = dht_type;
init();
}
private void init() {
try {
PluginInterface dht_pi = AzureusCoreFactory.getSingleton().getPluginManager().getPluginInterfaceByClass( DHTPlugin.class );
if ( dht_pi == null ){
return;
}
DHT[] dhts = ((DHTPlugin)dht_pi.getPlugin()).getDHTs();
if( dhts.length <= dht_type ){
return;
}
dht = dhts[ dht_type ];
controlListener = new DHTControlListener() {
public void activityChanged(DHTControlActivity activity,int type) {
activityChanged = true;
}
};
dht.getControl().addListener(controlListener);
} catch(Exception e) {
Debug.printStackTrace( e );
}
}
public void initialize(Composite composite) {
panel = new Composite(composite,SWT.NULL);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
panel.setLayout(layout);
yes_str = MessageText.getString( "Button.yes");
no_str = MessageText.getString( "Button.no");
initialiseGeneralGroup();
initialiseDBGroup();
initialiseTransportDetailsGroup();
initialiseOperationDetailsGroup();
initialiseActivityGroup();
}
private void initialiseGeneralGroup() {
Group gGeneral = new Group(panel,SWT.NONE);
Messages.setLanguageText(gGeneral, "DHTView.general.title" );
GridData data = new GridData();
data.verticalAlignment = SWT.BEGINNING;
data.widthHint = 350;
gGeneral.setLayoutData(data);
GridLayout layout = new GridLayout();
layout.numColumns = 6;
gGeneral.setLayout(layout);
Label label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.uptime");
lblUpTime = new Label(gGeneral,SWT.NONE);
lblUpTime.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.users");
lblNumberOfUsers = new Label(gGeneral,SWT.NONE);
lblNumberOfUsers.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.reachable");
lblReachable = new Label(gGeneral,SWT.NONE);
lblReachable.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.nodes");
lblNodes = new Label(gGeneral,SWT.NONE);
lblNodes.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.leaves");
lblLeaves = new Label(gGeneral,SWT.NONE);
lblLeaves.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.rendezvous");
lblRendezvous = new Label(gGeneral,SWT.NONE);
lblRendezvous.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.contacts");
lblContacts = new Label(gGeneral,SWT.NONE);
lblContacts.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.replacements");
lblReplacements = new Label(gGeneral,SWT.NONE);
lblReplacements.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.live");
lblLive= new Label(gGeneral,SWT.NONE);
lblLive.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gGeneral,SWT.NONE);
label = new Label(gGeneral,SWT.NONE);
label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.unknown");
lblUnknown = new Label(gGeneral,SWT.NONE);
lblUnknown.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gGeneral,SWT.NONE);
Messages.setLanguageText(label,"DHTView.general.dying");
lblDying = new Label(gGeneral,SWT.NONE);
lblDying.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
}
private void initialiseDBGroup() {
Group gDB = new Group(panel,SWT.NONE);
Messages.setLanguageText(gDB,"DHTView.db.title");
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.verticalAlignment = SWT.FILL;
gDB.setLayoutData(data);
GridLayout layout = new GridLayout();
layout.numColumns = 6;
layout.makeColumnsEqualWidth = true;
gDB.setLayout(layout);
Label label = new Label(gDB,SWT.NONE);
Messages.setLanguageText(label,"DHTView.db.keys");
lblKeys = new Label(gDB,SWT.NONE);
lblKeys.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gDB,SWT.NONE);
Messages.setLanguageText(label,"DHTView.db.values");
lblValues = new Label(gDB,SWT.NONE);
lblValues.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gDB,SWT.NONE);
label = new Label(gDB,SWT.NONE);
label = new Label(gDB,SWT.NONE);
Messages.setLanguageText(label,"DHTView.db.local");
lblLocal = new Label(gDB,SWT.NONE);
lblLocal.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gDB,SWT.NONE);
Messages.setLanguageText(label,"DHTView.db.direct");
lblDirect = new Label(gDB,SWT.NONE);
lblDirect.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gDB,SWT.NONE);
Messages.setLanguageText(label,"DHTView.db.indirect");
lblIndirect = new Label(gDB,SWT.NONE);
lblIndirect.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gDB,SWT.NONE);
Messages.setLanguageText(label,"DHTView.db.divfreq");
lblDivFreq = new Label(gDB,SWT.NONE);
lblDivFreq.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
label = new Label(gDB,SWT.NONE);
Messages.setLanguageText(label,"DHTView.db.divsize");
lblDivSize = new Label(gDB,SWT.NONE);
lblDivSize.setLayoutData(new GridData(SWT.FILL,SWT.TOP,true,false));
}
private void initialiseTransportDetailsGroup() {
Group gTransport = new Group(panel,SWT.NONE);
Messages.setLanguageText(gTransport,"DHTView.transport.title");
GridData data = new GridData(GridData.FILL_VERTICAL);
data.widthHint = 350;
data.verticalSpan = 2;
gTransport.setLayoutData(data);
GridLayout layout = new GridLayout();
layout.numColumns = 3;
layout.makeColumnsEqualWidth = true;
gTransport.setLayout(layout);
Label label = new Label(gTransport,SWT.NONE);
label = new Label(gTransport,SWT.NONE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -