📄 p2pdashboard.java
字号:
import java.awt.Container;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.lang.String;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.DefaultListSelectionModel;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import net.jxta.credential.AuthenticationCredential;
import net.jxta.document.StructuredDocument;
import net.jxta.document.MimeMediaType;
import net.jxta.discovery.DiscoveryService;
import net.jxta.exception.PeerGroupException;
import net.jxta.membership.Authenticator;
import net.jxta.membership.MembershipService;
import net.jxta.peergroup.PeerGroup;
import net.jxta.peergroup.PeerGroupFactory;
import net.jxta.protocol.ModuleImplAdvertisement;
import net.jxta.protocol.PeerGroupAdvertisement;
import net.jxta.protocol.PeerAdvertisement;
import net.jxta.impl.protocol.PeerGroupAdv;
import net.jxta.impl.protocol.PeerAdv;
import net.jxta.impl.id.UUID.PeerID;
import net.jxta.impl.id.UUID.PeerGroupID;
/*
P2P Dashboard application
*/
public class P2PDashboard extends JFrame {
//frame reference for JOptionPane message dialogs
private JFrame frame;
//group section
private JScrollPane groupScrollPane;
private JList groupList;
private Hashtable groupHT;
private JTextField groupAddTextField;
private JButton groupAddButton;
private JButton groupFlushButton;
private JButton groupRemoveButton;
private JRadioButton groupLocalRadioButton;
private JRadioButton groupRemoteRadioButton;
private ButtonGroup groupDiscoveryButtonGroup;
private JButton groupDiscoveryButton;
//peer section
private JScrollPane peerScrollPane;
private JList peerList;
private JTextField peerAddTextField;
private JButton peerAddButton;
private JButton peerFlushButton;
private JCheckBox peerCheckBox;
private JButton peerRemoveButton;
private JRadioButton peerLocalRadioButton;
private JRadioButton peerRemoteRadioButton;
private ButtonGroup peerDiscoveryButtonGroup;
private JButton peerDiscoveryButton;
private boolean displayPeerGroups;
//Default NetPeerGroup and discovery service
private static PeerGroup netPeerGroup;
private DiscoveryService discovery;
private String defaultGroupName;
private String defaultPeerName;
//peer and group discovery event handlers
private PeerDiscovery peerDiscovery;
private GroupDiscovery groupDiscovery;
/*********************/
/*Dashboard Methods */
/*********************/
/*
*Command line arguments
*/
public static void main(String[] args) {
P2PDashboard p2p = new P2PDashboard();
p2p.show();
//setup localPeer in NetPeerGroup
p2p.initializeNetPeerGroup();
//prepare peer and group discovery services
p2p.initializeDiscovery();
}
/*
*Create a new P2PDashboard frame.
*/
public P2PDashboard() {
frame = this;
//group
groupScrollPane = new JScrollPane();
groupList = new JList(new SortedListModel());
groupHT = new Hashtable();
groupAddTextField = new JTextField();
groupAddButton = new JButton();
groupFlushButton = new JButton();
groupRemoveButton = new JButton();
groupLocalRadioButton = new JRadioButton();
groupRemoteRadioButton = new JRadioButton();
groupDiscoveryButtonGroup = new ButtonGroup();
groupDiscoveryButton = new JButton();
//peer
peerScrollPane = new JScrollPane();
peerList = new JList(new SortedListModel());
peerAddTextField = new JTextField();
peerAddButton = new JButton();
peerFlushButton = new JButton();
peerCheckBox = new JCheckBox();
peerRemoveButton = new JButton();
peerLocalRadioButton = new JRadioButton();
peerRemoteRadioButton = new JRadioButton();
peerDiscoveryButtonGroup = new ButtonGroup();
peerDiscoveryButton = new JButton();
displayPeerGroups = false;
initializeGUIComponents();
configureGroupEvents();
configurePeerEvents();
}
/*
*P2PDashboard uses this to setup GUI objects and
*their properties.
*/
private void initializeGUIComponents() {
Container contentPane = getContentPane();
Insets insets = contentPane.getInsets();
contentPane.setLayout(null);
//group section
groupScrollPane.setViewportBorder(new TitledBorder("Groups"));
groupScrollPane.setViewportView(groupList);
contentPane.add(groupScrollPane);
groupScrollPane.setBounds(10 + insets.left, 10 + insets.top, 250, 230);
groupAddTextField.setToolTipText("Add a new group");
contentPane.add(groupAddTextField);
groupAddTextField.setBounds(10 + insets.left, 250 + insets.top, 140, 20);
groupAddButton.setText("Add ");
groupAddButton.setToolTipText("Add a new group");
contentPane.add(groupAddButton);
groupAddButton.setBounds(170 + insets.left, 250 + insets.top, 90, 20);
groupFlushButton.setText("Flush ");
groupFlushButton.setToolTipText("Flush local group cache");
contentPane.add(groupFlushButton);
groupFlushButton.setBounds(10 + insets.left, 280 + insets.top, 90, 20);
groupRemoveButton.setText("Remove ");
groupRemoveButton.setToolTipText("Remove a group");
contentPane.add(groupRemoveButton);
groupRemoveButton.setBounds(170 + insets.left, 280 + insets.top, 90, 20);
groupLocalRadioButton.setSelected(true);
groupLocalRadioButton.setText("Local ");
groupLocalRadioButton.setToolTipText("Search for local groups");
contentPane.add(groupLocalRadioButton);
groupLocalRadioButton.setBounds(10 + insets.left, 310 + insets.top, 60,
20);
groupRemoteRadioButton.setText("Remote ");
groupRemoteRadioButton.setToolTipText("Search for remote groups");
contentPane.add(groupRemoteRadioButton);
groupRemoteRadioButton.setBounds(90 + insets.left, 310 + insets.top, 70,
20);
groupDiscoveryButtonGroup.add(groupLocalRadioButton);
groupDiscoveryButtonGroup.add(groupRemoteRadioButton);
groupDiscoveryButton.setText("Discover");
groupDiscoveryButton.setToolTipText("Find groups");
contentPane.add(groupDiscoveryButton);
groupDiscoveryButton.setBounds(170 + insets.left, 310 + insets.top, 90,
20);
//peer section
peerScrollPane.setViewportBorder(new TitledBorder("Peers"));
peerScrollPane.setViewportView(peerList);
contentPane.add(peerScrollPane);
peerScrollPane.setBounds(290 + insets.left, 10 + insets.top, 250, 230);
peerAddTextField.setToolTipText("Add a new peer");
contentPane.add(peerAddTextField);
peerAddTextField.setBounds(290 + insets.left, 250 + insets.top, 140, 20);
peerAddButton.setText("Add ");
peerAddButton.setToolTipText("Add a new peer");
contentPane.add(peerAddButton);
peerAddButton.setBounds(450 + insets.left, 250 + insets.top, 90, 20);
peerFlushButton.setText("Flush ");
peerFlushButton.setToolTipText("Flush local peer cache");
contentPane.add(peerFlushButton);
peerFlushButton.setBounds(290 + insets.left, 280 + insets.top, 90, 20);
peerCheckBox.setSelected(false);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -