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

📄 tictactoeinviteaction.java

📁 jxta官方例程
💻 JAVA
字号:
/* * Created on Feb 25, 2005 * */package net.jxta.myjxta.plugins.tictactoe;import java.awt.event.ActionEvent;import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.ResourceBundle;import javax.swing.AbstractAction;import net.jxta.document.AdvertisementFactory;import net.jxta.document.MimeMediaType;import net.jxta.document.StructuredDocument;import net.jxta.document.StructuredDocumentFactory;import net.jxta.document.StructuredTextDocument;import net.jxta.endpoint.MessageElement;import net.jxta.endpoint.TextDocumentMessageElement;import net.jxta.myjxta.dialog.Dialog;import net.jxta.myjxta.dialog.DialogManager;import net.jxta.myjxta.dialog.DialogMessage;import net.jxta.myjxta.plugins.tictactoe.commands.TicTacToeCommand;import net.jxta.myjxta.dialog.util.RemoteCommandInvoker;import net.jxta.myjxta.util.Group;import net.jxta.myjxta.util.GroupNode;import net.jxta.myjxta.util.Peer;import net.jxta.myjxta.util.PeerNode;import net.jxta.myjxta.util.Resources;import net.jxta.myjxta.View;import net.jxta.pipe.PipeService;import net.jxta.protocol.PipeAdvertisement;import org.apache.log4j.Level;import org.apache.log4j.Logger;public class TicTacToeInviteAction extends AbstractAction {        private static final int INTERVAL = 250;    private static final int MAX = INTERVAL * 4 * 75;    private static final Logger LOG = Logger.getLogger (TicTacToeInviteAction.class.getName ());        private View view = null;        private static final ResourceBundle STRINGS = Resources.getStrings();        public TicTacToeInviteAction (String name, View view) {        super (name);                this.view = view;                if (LOG.isEnabledFor (Level.INFO)) {            LOG.info ("TicTavToeAction instantiated");        }    }        public void actionPerformed (ActionEvent ae) {        PeerNode pn = (PeerNode)this.view.getJxtaNode (PeerNode.class);        final Peer p = pn != null ? pn.getPeer () : null;        final Group g = pn != null ? ((GroupNode)(pn.getParent ())).getGroup () : null;        String status = null;                if (p != null &&                g != null) {            status = STRINGS.getString ("status.command.initiate") +                    ": " + p.getName ();                        if (LOG.isEnabledFor (Level.INFO)) {                LOG.info (status);            }                        new Thread (new Runnable () {                public void run () {                    process (g, p);                }            }, getClass ().getName () + ":getConnection").start ();        } else {            status = STRINGS.getString ("error.peer.invalid") +                    " " + p!=null?p.getName():null;                        if (LOG.isEnabledFor (Level.ERROR)) {                LOG.error (status);            }        }                if (status != null) {            this.view.setStatus (status);        }    }        private void process (Group g, Peer p) {        LOG.setLevel(Level.INFO);        String status = "initiating tictactoe action";        this.view.setStatus (status);                if (LOG.isEnabledFor (Level.INFO)) {            LOG.info (status);        }                //get pipe adv from DialogManager - this is the tictactoePipe        StructuredDocument d = getPipeAdv (g);        //attach it as a message element        TextDocumentMessageElement te = d != null ?            new TextDocumentMessageElement (TicTacToeCommand.PIPE,                (StructuredTextDocument)d, null) :            null;                                        if (te != null) {                                                if (LOG.isEnabledFor (Level.INFO)) {                LOG.info (status);                LOG.info ("instantiating tictactoeCommand");            }                        //command fetecher will send out a command on the command pipe            RemoteCommandInvoker cf = new RemoteCommandInvoker (g, p.getPipeAdvertisement (),                    new TicTacToeCommand (), this.view.getControl());                        Map<String, MessageElement> m = new HashMap<String, MessageElement> ();            // add the our pipe element            m.put (TicTacToeCommand.PIPE, te);                        if (LOG.isEnabledFor (Level.INFO)) {                LOG.info ("dispatch tictactoecommand");            }                        cf.invoke (MAX, m);            //get respsonse            DialogMessage r = cf.getResponse ();                        if (LOG.isEnabledFor (Level.INFO)) {                LOG.info ("tictactoeInvitationCommand response: " + r);            }            //this is why its important to have a consistent PIPE element in TestCommand            MessageElement pae = r != null ?                r.getMessageElement (TicTacToeCommand.PIPE) :                null;                        if (pae != null) {                status = "tictactoe pipe import" +                        ": " + p.getName ();                                this.view.setStatus (status);                                if (LOG.isEnabledFor (Level.INFO)) {                    LOG.info (status);                    LOG.info ("adding dialog");                }                                                PipeAdvertisement pipeAdv = getPipeAdv(pae);                if (pipeAdv!=null){                    TicTacToeDialog dialog = (TicTacToeDialog) DialogManager.getDialog (TicTacToeDialog.class,		                                g, pipeAdv, this.view.getControl());                    dialog.setLocallyInitiated (true);		    this.view.getControl().addDialog (                            dialog);                } else {                    //this can happen! maybe if the user connects to his own peer?                }            } else {                status = "request tictactoe pipe" +                        ": " + p.getName ();                                this.view.setStatus (status);                                if (LOG.isEnabledFor (Level.ERROR)) {                    LOG.error (status);                }            }        } else {            if (LOG.isEnabledFor (Level.ERROR)) {                LOG.error ("invalid response");            }        }                        LOG.setLevel(Level.ERROR);    }        private PipeAdvertisement getPipeAdv (MessageElement me) {        if (LOG.isEnabledFor (Level.INFO)) {            LOG.info ("get pipeAdv");        }                StructuredDocument sd = null;        try {            sd = StructuredDocumentFactory.newStructuredDocument (MimeMediaType.XMLUTF8,                    me.getStream());        } catch (IOException e) {            LOG.error ("can't document", e);        }//        if (me instanceof ByteArrayMessageElement) {//            if (LOG.isEnabledFor (Level.INFO)) {//                LOG.info ("me instanceof ByteMessageElement");//            }////            try {//                sd = StructuredDocumentFactory.newStructuredDocument (MimeMediaType.XMLUTF8,//                        ((ByteArrayMessageElement)me).getStream ());//            } catch (IOException ioe) {//                if (LOG.isEnabledFor (Level.ERROR)) {//                    LOG.error ("can't document", ioe);//                }//            }//        } else {//            if (LOG.isEnabledFor (Level.INFO)) {//                LOG.info ("me not instanceof ByteMessageElement");//            }//        }                PipeAdvertisement pa = null;                if (sd != null) {            try {                pa = (PipeAdvertisement)AdvertisementFactory.                        newAdvertisement (MimeMediaType.XMLUTF8,                        sd.getStream ());            } catch (IOException ioe) {                if (LOG.isEnabledFor (Level.ERROR)) {                    LOG.error ("can't get pipe advertisement", ioe);                }            }        }                return pa;    }    private StructuredDocument getPipeAdv (Group g) {        if (LOG.isEnabledFor (Level.INFO)) {            LOG.info ("getPipeAdvl");        }        System.out.println("TTT Dilaog in invite action");        String pn = Dialog.getDialogNamer (TicTacToeDialog.class).                getDialogName (g.getPeerGroup ().getPeerName ());        PipeAdvertisement pa = DialogManager.getInstance (g, pn,                PipeService.UnicastType).getPipeAdv (g.getPeerGroup ());                return (StructuredDocument)pa.getDocument (MimeMediaType.XMLUTF8);    }        }

⌨️ 快捷键说明

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