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

📄 vijxtainviteaction.java

📁 jxta官方例程
💻 JAVA
字号:
/* * Copyright (c) [2005] [Jeffrey Moore] * * Redistributions in source code form must reproduce the above copyright and  * this condition. * * The contents of this file are subject to the Sun Project JXTA License  * Version 1.1 (the "License"); you may not use this file except in compliance  * with the License. A copy of the License is available at  * http://www.jxta.org/jxta_license.html. * *//* * ViJxtaInviteAction.java * * Created on April 15, 2005, 12:53 AM */package net.jxta.myjxta.plugins.vijxta;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.ByteArrayMessageElement;import net.jxta.endpoint.MessageElement;import net.jxta.endpoint.TextDocumentMessageElement;import net.jxta.myjxta.View;import net.jxta.myjxta.dialog.Dialog;import net.jxta.myjxta.dialog.DialogManager;import net.jxta.myjxta.dialog.DialogMessage;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.pipe.PipeService;import net.jxta.protocol.PipeAdvertisement;import org.apache.log4j.Level;import org.apache.log4j.Logger;import javax.swing.*;import java.awt.event.ActionEvent;import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.ResourceBundle;/** * * @author Jeff Moore */public class ViJxtaInviteAction extends AbstractAction{               private static final int INTERVAL = 250;    private static final int MAX = INTERVAL * 4 * 75;    private static final Logger LOG = Logger.getLogger (ViJxtaInviteAction.class.getName ());        private View view = null;        private static final ResourceBundle STRINGS = Resources.getStrings();        public ViJxtaInviteAction (String name, View view) {        super (name);                this.view = view;                if (LOG.isEnabledFor (Level.INFO)) {            LOG.info ("ViJxtaAction instantiated");        }    }    public boolean isEnabled() {        PeerNode jxtaNode = (PeerNode) view.getJxtaNode(PeerNode.class);        return jxtaNode !=null; // we need a check that this isnt our own peer    }    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 = this.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 = this.STRINGS.getString ("error.peer.invalid") +                    " " + p.getName ();                        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 vijxta action";        this.view.setStatus (status);                if (LOG.isEnabledFor (Level.INFO)) {            LOG.info (status);        }                //get pipe adv from DialogManager - this is the ViJxtaPipe        StructuredDocument d = getPipeAdv (g);        //attach it as a message element        TextDocumentMessageElement te = d != null ?            new TextDocumentMessageElement (ViJxtaCommand.PIPE,                (StructuredTextDocument)d, null) :            null;                                        if (te != null) {                                                if (LOG.isEnabledFor (Level.INFO)) {                LOG.info (status);                LOG.info ("instantiating ViJxtaCommand");            }                        //command fetecher will send out a command on the command pipe            RemoteCommandInvoker cf = new RemoteCommandInvoker (g, p.getPipeAdvertisement (),                    new ViJxtaCommand (), this.view.getControl ());                        Map m = new HashMap ();            // add the our pipe element            m.put (ViJxtaCommand.PIPE, te);                        if (LOG.isEnabledFor (Level.INFO)) {                LOG.info ("dispatch ViJxta command");            }                        cf.invoke (MAX, m);            //get respsonse            DialogMessage r = cf.getResponse ();                        if (LOG.isEnabledFor (Level.INFO)) {                LOG.info ("ViJxtaInvitationCommand response: " + r);            }            //this is why its important to have a consistent PIPE element in TestCommand            MessageElement pae = r != null ?                r.getMessageElement (ViJxtaCommand.PIPE) :                null;                        if (pae != null) {                status = "vijxta pipe import" +                        ": " + p.getName ();                                this.view.setStatus (status);                                if (LOG.isEnabledFor (Level.INFO)) {                    LOG.info (status);                    LOG.info ("adding dialog");                }                                ViJxtaDialogPanel.setInitiatedLocally (true);                                Dialog dialog = DialogManager.getDialog (ViJxtaDialog.class,                        g, getPipeAdv (pae), this.view.getControl ());                                if(dialog == null) {                    this.view.showMessageDialog("Failed to create Video dialog - are you trying to chat with yourself?");                } else {                	this.view.getControl ().addDialog (dialog);	                }            } else {                status = "request vijxta 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;                if (me instanceof ByteArrayMessageElement) {            if (LOG.isEnabledFor (Level.INFO)) {                LOG.info ("me instanceof ByteMessageElement");            }                        try {                sd = StructuredDocumentFactory.newStructuredDocument (MimeMediaType.XMLUTF8,                        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");        }                String pn = Dialog.getDialogNamer (ViJxtaDialog.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 + -