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

📄 simpleexampleplugin.java

📁 jxta官方例程
💻 JAVA
字号:
package net.jxta.myjxta.plugins.example;import net.jxta.myjxta.plugin.IPluginNotificationHandler;import net.jxta.myjxta.plugin.ISelectableNode;import net.jxta.myjxta.plugin.Plugin;import net.jxta.myjxta.plugin.PluginBase;import net.jxta.myjxta.plugin.PluginContainer;import net.jxta.myjxta.util.Group;import net.jxta.myjxta.util.GroupNode;import net.jxta.myjxta.util.JxtaNode;import net.jxta.myjxta.util.PeerNode;import net.jxta.myjxta.util.Resources;import org.apache.log4j.Logger;import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.KeyEvent;import java.awt.event.MouseEvent;import java.util.ArrayList;import java.util.Iterator;public class SimpleExamplePlugin extends PluginBase implements Plugin, IPluginNotificationHandler, PluginContainer.IPopupProvider {    private static final Logger LOG = Logger.getLogger(SimpleExamplePlugin.class);//    HTTPServer m_httpServer=null;    private ArrayList<Group> m_joinedGroups=new ArrayList<Group>();    public SimpleExamplePlugin() {        SimpleExamplePlugin.LOG.debug("SimpleExamplePlugin Constructor called");    }    public void start() {        super.start();        //we want a simple test menu entry on the peer nodes        m_container.registerPopupProvider(this);        //start can be called multiple times.. maybe we already have some joined groups... start listeners for em        for (Iterator<Group> iterator = m_joinedGroups.iterator(); iterator.hasNext();) {            Group group = iterator.next();            startListenerForGroup(group);        }    }    public void stop() {        m_container.removePopupProvider(this);        for (Iterator<Group> iterator = m_joinedGroups.iterator(); iterator.hasNext();) {            Group group = iterator.next();            stopListenerForGroup(group);        }        super.stop();    }    public void destroy() {        if (m_running){            stop();        }        super.destroy();    }    public String getName() {        return "SimpleExample Plugin";    }    // END OF PLUGIN API    // HELPER METHODS    private void startListenerForGroup(Group p_group) {        //register your pipe listeners here    }    private void stopListenerForGroup(Group p_group) {        //close your pipe listeners here    }    public IPluginNotificationHandler getPluginNotificationHander() {        return this;  //for now we will implement this interface ourselve, it it will grow so we cant stay here...    }    public void groupJoined(Group p_group) {        if (!p_group.isVisible())            return;        m_joinedGroups.add(p_group);        if (isRunning()){            startListenerForGroup(p_group);        }    }    public void groupResigned(Group p_group) {        if (!p_group.isVisible())            return;        m_joinedGroups.remove(p_group);        if (isRunning()){            stopListenerForGroup(p_group);        }    }    //this may be fired multiple times, for example if we change from rdv to peer node    public void groupStateChanged(Group p_group) {        if (!p_group.isVisible())            return;        if (!isRunning()){ // if we are not active we are not interested in connection events            return;        }        if (p_group.isConnected()){            //we are connected            if (p_group.isOwnPeerRdv()){                //we are a Rendeszvous            } else {                //we are a simple peer            }        } else {           //we lost the connection to the group (so we are not a rdv and we dont have a rdv right now        }    }    public void popupRequested(PluginContainer.IPopupGenerator popupGenerator, ISelectableNode[] selectedNodes, MouseEvent triggerEvent) {        if (selectedNodes!=null && selectedNodes.length>=1){            JxtaNode jxtaNode = selectedNodes[0].getJxtaNode();            if (jxtaNode instanceof PeerNode) {                PeerNode peerNode = (PeerNode) jxtaNode;                PluginContainer.MenuPath peerPath = new PluginContainer.MenuPath(Resources.getStrings().getString("menu.peer"), KeyEvent.VK_P);                popupGenerator.addPopup(new PluginContainer.MenuPath[]{peerPath},9,new ExampleAction("Show CommandPipe","The PipeID of "+peerNode.getPeer().getName()+"磗 command pipe is "+peerNode.getPeer().getPipeAdvertisement().getID()));            } else if (jxtaNode instanceof GroupNode){                //warning!! group node is not working yet... the tree doesnt use the new context-menu (yet)                //this code here is only for reference....                Group g=((GroupNode)jxtaNode).getGroup();                PluginContainer.MenuPath groupPath = new PluginContainer.MenuPath(Resources.getStrings().getString("menu.group"), KeyEvent.VK_G);                popupGenerator.addPopup(new PluginContainer.MenuPath[]{groupPath},9,new ExampleAction("Example on GroupNode","Group is "+g.getId()));            }        }    }    private class ExampleAction extends AbstractAction{        private final String message;        public ExampleAction(String name,String p_message) {            super(name);            message = p_message;        }        public void actionPerformed(ActionEvent e) {            m_container.getMyJxta().getView().showMessageDialog(message);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -