📄 explorer.java
字号:
/* * Explorer.java * @Author Daniel Brookshier turbogeek@cluck.com * * Created on December 20, 2001, 10:42 PM */package com.sams.jxta.explorer;import com.sams.swing.AdvertisementTreeCellRenderer;import net.jxta.document.Advertisement;import net.jxta.document.StructuredTextDocument;import javax.swing.JTree;import javax.swing.JFrame;import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.TreePath;import net.jxta.protocol.PeerGroupAdvertisement;import java.io.IOException;import java.io.StringWriter;import net.jxta.peergroup.PeerGroup;import net.jxta.peergroup.PeerGroupFactory;import org.apache.log4j.Category;import java.util.Hashtable;import javax.swing.JTree.DynamicUtilTreeNode;import net.jxta.exception.PeerGroupException;/** * * @author Daniel Brookshier turbogeek@cluck.com */public class Explorer extends JFrame { private static final Category LOG = Category.getInstance(Explorer.class.getName()); protected PeerGroup netPeerGroup; protected TreePath treePath; protected JTree.DynamicUtilTreeNode root; /** Creates new form Explorer */ public Explorer() { initComponents(); // Initialize discovery tree advrtTree.setCellRenderer(new AdvertisementTreeCellRenderer()); try{ netPeerGroup = PeerGroupFactory.newNetPeerGroup(); root = new JTree.DynamicUtilTreeNode(netPeerGroup,new Hashtable()); treePath = new TreePath(root); ((DefaultTreeModel)advrtTree.getModel()).setRoot(root); addGroup((JTree.DynamicUtilTreeNode)root); } catch (Exception e) { LOG.error("fatal error : group creation failure",e); System.exit(-1); } } protected void addGroup(JTree.DynamicUtilTreeNode groupNode){ //Advertisement advertisement = (Advertisement)groupNode.getUserObject(); PeerDiscoveryThread peerDiscoveryThread = new PeerDiscoveryThread( advrtTree, netPeerGroup, groupNode); Thread discoThread = new Thread(peerDiscoveryThread); discoThread.start(); /* // Three trials int count =0; //NullCredential credential = new NullCredential( this, netPeerGroup, peer, "PDA-User" ); while(count<3 && (groupManager.joinGroup(rootJPDA,null,"NullAuthentication")==null)){ count++; } */ } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents pyramidFriendsSplitPane = new javax.swing.JSplitPane(); treeScrollPane = new javax.swing.JScrollPane(); advrtTree = new javax.swing.JTree(); xmlScrollPane = new javax.swing.JScrollPane(); xmlTextArea = new javax.swing.JTextArea(); jMenuBar1 = new javax.swing.JMenuBar(); jMenu1 = new javax.swing.JMenu(); forceDiscoveryMenuItem = new javax.swing.JMenuItem(); purgeMenuItem = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); pyramidFriendsSplitPane.setDividerLocation(225); treeScrollPane.setBorder(new javax.swing.border.TitledBorder("Advertisements")); advrtTree.setFont(new java.awt.Font("Dialog", 0, 10)); advrtTree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() { public void valueChanged(javax.swing.event.TreeSelectionEvent evt) { advrtTreeValueChanged(evt); } }); treeScrollPane.setViewportView(advrtTree); pyramidFriendsSplitPane.setLeftComponent(treeScrollPane); xmlScrollPane.setViewportBorder(new javax.swing.border.TitledBorder("XML Display")); xmlTextArea.setFont(new java.awt.Font("Dialog", 0, 10)); xmlScrollPane.setViewportView(xmlTextArea); pyramidFriendsSplitPane.setRightComponent(xmlScrollPane); getContentPane().add(pyramidFriendsSplitPane, java.awt.BorderLayout.CENTER); jMenu1.setText("File"); forceDiscoveryMenuItem.setText("Force Discovery"); forceDiscoveryMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { forceDiscoveryMenuItemActionPerformed(evt); } }); jMenu1.add(forceDiscoveryMenuItem); purgeMenuItem.setText("Purge Advertisements"); jMenu1.add(purgeMenuItem); jMenuBar1.add(jMenu1); setJMenuBar(jMenuBar1); pack(); }//GEN-END:initComponents private void forceDiscoveryMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_forceDiscoveryMenuItemActionPerformed // Add your handling code here: }//GEN-LAST:event_forceDiscoveryMenuItemActionPerformed private void advrtTreeValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_advrtTreeValueChanged Object testNode = ((JTree)evt.getSource()).getLastSelectedPathComponent(); if(testNode == null){ return; } // Synchronize the node so that we block further actions. synchronized(testNode){ DefaultMutableTreeNode node = (DefaultMutableTreeNode)testNode; Object nodeInfo=null; if (node != null) { nodeInfo = node.getUserObject(); // If it is an advertisement, display it. if (nodeInfo instanceof Advertisement){ Advertisement advertisement = (Advertisement)nodeInfo; String data = getAdvertisementDoc(advertisement); xmlTextArea.setText(data); } } // If it is a group, open it. if (nodeInfo instanceof PeerGroupAdvertisement ){ if (node.isLeaf() || node.getChildCount() ==0){ System.out.println("Opening group"); addGroup((JTree.DynamicUtilTreeNode)node); } } } //} }//GEN-LAST:event_advrtTreeValueChanged /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm System.exit(0); }//GEN-LAST:event_exitForm /** * @param args the command line arguments */ public static void main(String args[]) { new Explorer().show(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JSplitPane pyramidFriendsSplitPane; private javax.swing.JMenuItem forceDiscoveryMenuItem; private javax.swing.JScrollPane treeScrollPane; private javax.swing.JTree advrtTree; private javax.swing.JScrollPane xmlScrollPane; private javax.swing.JTextArea xmlTextArea; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenu jMenu1; private javax.swing.JMenuItem purgeMenuItem; // End of variables declaration//GEN-END:variables public String getAdvertisementDoc(Advertisement advertisement) { try { // display the advertisement as a plain text dcoument. net.jxta.document.MimeMediaType type = new net.jxta.document.MimeMediaType("text/xml"); // Convert the advertisement to a document StructuredTextDocument doc = (StructuredTextDocument)advertisement.getDocument(type); // Write the advert text to a string. StringWriter out = new StringWriter(); doc.sendToWriter(out); //Write the doc to a string. String docString = out.toString(); // cleanup the writer. out.close(); return docString; }catch(IOException ioe) { ioe.printStackTrace(); return "Error: IO exception thrown by StringWriter"; }catch(Exception jle) { jle.printStackTrace(); return "Error: Exception thrown by getDocument()"; } }//end of printServiceAdvertisement();}//end of class Explorer
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -