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

📄 explorer.java

📁 Java p2p程序设计2002年版
💻 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 + -