亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? callframe.java

?? Peers is a very minimalistic SIP User-Agent. It s a softphone, written in java, and it has been test
?? JAVA
字號:
/*    This file is part of Peers.    This program is free software: you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation, either version 3 of the License, or    any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program.  If not, see <http://www.gnu.org/licenses/>.        Copyright 2007, 2008 Yohann Martineau */package net.sourceforge.peers.gui;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Observable;import java.util.Observer;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.SwingWorker;import net.sourceforge.peers.Logger;import net.sourceforge.peers.sip.JavaUtils;import net.sourceforge.peers.sip.Utils;import net.sourceforge.peers.sip.core.useragent.SipEvent;import net.sourceforge.peers.sip.core.useragent.UAC;import net.sourceforge.peers.sip.core.useragent.UAS;import net.sourceforge.peers.sip.core.useragent.SipEvent.EventType;import net.sourceforge.peers.sip.core.useragent.handlers.InviteHandler;import net.sourceforge.peers.sip.transactionuser.Dialog;import net.sourceforge.peers.sip.transactionuser.DialogManager;import net.sourceforge.peers.sip.transactionuser.DialogState;import net.sourceforge.peers.sip.transactionuser.DialogStateConfirmed;import net.sourceforge.peers.sip.transactionuser.DialogStateEarly;import net.sourceforge.peers.sip.transactionuser.DialogStateTerminated;import net.sourceforge.peers.sip.transport.SipMessage;import net.sourceforge.peers.sip.transport.SipRequest;import net.sourceforge.peers.sip.transport.SipResponse;public class CallFrame implements ActionListener, Observer {    public static final String ACCEPT_ACTION = "Accept";    public static final String BYE_ACTION    = "Bye";    public static final String CANCEL_ACTION = "Cancel";    public static final String CLOSE_ACTION  = "Close";    public static final String REJECT_ACTION = "Reject";        private String callId;    private boolean isUac;    private Dialog dialog;    private SipRequest sipRequest;    private InviteHandler inviteHandler;        private JFrame frame;    private JPanel mainPanel;    private JLabel text;    private JButton acceptButton;    private JButton byeButton;    private JButton cancelButton;    private JButton closeButton;    private JButton rejectButton;        //for uac    public CallFrame(String requestUri, String callId) {        isUac = true;        this.callId = callId;        inviteHandler = UAC.getInstance().getInitialRequestManager()            .getInviteHandler();                frame = new JFrame(requestUri);        //TODO window listener//        frame.addWindowListener(new WindowAdapter() {//            @Override//            public void windowClosing(WindowEvent we) {//                closeFrame();//            }//        });        mainPanel = new JPanel();        text = new JLabel("Calling " + requestUri);        closeButton = new JButton(CLOSE_ACTION);        closeButton.setActionCommand(CLOSE_ACTION);        closeButton.addActionListener(this);                mainPanel.add(text);        mainPanel.add(closeButton);                frame.getContentPane().add(mainPanel);                frame.pack();        frame.setVisible(true);                inviteHandler.addObserver(this);    }        //for uas    public CallFrame(SipResponse sipResponse) {        isUac = false;        this.sipRequest = Utils.getInstance().getSipRequest(sipResponse);        dialog = DialogManager.getInstance().getDialog(sipResponse);        dialog.addObserver(this);        callId = dialog.getCallId();        inviteHandler = UAS.getInstance().getInitialRequestManager()                .getInviteHandler();    }    private void acceptCall() {        SwingWorker<Void, Void> swingWorker = new SwingWorker<Void, Void>() {            @Override            protected Void doInBackground() throws Exception {                inviteHandler.acceptCall(sipRequest, dialog);                return null;            }        };        swingWorker.execute();    }        private void rejectCall() {        SwingWorker<Void, Void> swingWorker = new SwingWorker<Void, Void>() {            @Override            protected Void doInBackground() throws Exception {                inviteHandler.rejectCall(sipRequest);                return null;            }        };        swingWorker.execute();    }        private void cancel() {        SwingWorker<Void, Void> swingWorker = new SwingWorker<Void, Void>() {            @Override            protected Void doInBackground() throws Exception {                UAC.getInstance().getInitialRequestManager()                        .createCancel(sipRequest);                return null;            }        };        swingWorker.execute();    }        private void hangup() {        SwingWorker<Void, Void> swingWorker = new SwingWorker<Void, Void>() {            @Override            protected Void doInBackground() throws Exception {                UAC.getInstance().terminate(dialog);                return null;            }        };        swingWorker.execute();    }        public void actionPerformed(ActionEvent e) {        String actionCommand = e.getActionCommand();        Logger.getInstance().debug(callId + " action performed: " + actionCommand);        if (CLOSE_ACTION.equals(actionCommand)) {            hangup();        } else if (CANCEL_ACTION.equals(actionCommand)) {            cancel();        } else if (ACCEPT_ACTION.equals(actionCommand)) {            acceptCall();        } else if (REJECT_ACTION.equals(actionCommand)) {            rejectCall();            closeFrame();        } else if (BYE_ACTION.equals(actionCommand)) {            hangup();            closeFrame();        }    }    public void update(Observable o, Object arg) {        Logger.getInstance().debug("update with observable " + o + " arg = " + arg);        if (o.equals(inviteHandler)) {            if (arg instanceof SipEvent) {                SipEvent sipEvent = (SipEvent) arg;                SipMessage sipMessage = sipEvent.getSipMessage();                if (Utils.getInstance().getMessageCallId(sipMessage).equals(callId)) {                    manageInviteHandlerEvent(sipEvent);                }                //if event is not for this frame (conversation) simply discard it            } else {                System.err.println("invite handler notification unknown");            }        } else if (o instanceof Dialog) {            if (dialog == null) {                dialog = (Dialog) o;            }            if (arg instanceof DialogState) {                DialogState dialogState = (DialogState) arg;                updateGui(dialogState);            } else {                System.err.println("dialog notification unknown");            }        }    }        private void manageInviteHandlerEvent(SipEvent sipEvent) {        EventType eventType = sipEvent.getEventType();        switch (eventType) {                case RINGING:            dialog = DialogManager.getInstance().getDialog(sipEvent.getSipMessage());            sipRequest = Utils.getInstance().getSipRequest(sipEvent.getSipMessage());            dialog.addObserver(this);            break;                    case CALLEE_PICKUP:            dialog = DialogManager.getInstance().getDialog(sipEvent.getSipMessage());            dialog.addObserver(this);            break;                    case ERROR:            closeFrame();            break;        default:            System.err.println("unknown sip event: " + sipEvent);            break;        }    }        private void updateGui(DialogState dialogState) {        //TODO use a real state machine        //state.setText(JavaUtils.getShortClassName(dialogState.getClass()));        StringBuffer buf = new StringBuffer();        buf.append("updateGui ");        buf.append(dialog.getId());        buf.append(" [");        buf.append(JavaUtils.getShortClassName(dialog.getState().getClass()));        buf.append(" -> ");        buf.append(JavaUtils.getShortClassName(dialogState.getClass()));        buf.append("]");        Logger.getInstance().debug(buf.toString());        if (dialogState instanceof DialogStateEarly) {            if (isUac && cancelButton == null) {                //TODO implement cancel in core                text.setText("Ringing " + dialog.getRemoteTarget());                cancelButton = new JButton(CANCEL_ACTION);                cancelButton.setActionCommand(CANCEL_ACTION);                cancelButton.addActionListener(this);                mainPanel.remove(closeButton);                mainPanel.add(cancelButton);                frame.pack();            } else {                frame = new JFrame(dialog.getRemoteTarget());                mainPanel = new JPanel();                text = new JLabel("Incoming call from " + dialog.getRemoteTarget());                acceptButton = new JButton(ACCEPT_ACTION);                acceptButton.setActionCommand(ACCEPT_ACTION);                acceptButton.addActionListener(this);                rejectButton = new JButton(REJECT_ACTION);                rejectButton.setActionCommand(REJECT_ACTION);                rejectButton.addActionListener(this);                mainPanel.add(text);                mainPanel.add(acceptButton);                mainPanel.add(rejectButton);                frame.getContentPane().add(mainPanel);                frame.pack();                frame.setVisible(true);            }        } else if (dialogState instanceof DialogStateConfirmed) {            //TODO create hangup button and remove previous buttons for both uac and uas            text.setText("Talk to " + dialog.getRemoteTarget());            byeButton = new JButton(BYE_ACTION);            byeButton.setActionCommand(BYE_ACTION);            byeButton.addActionListener(this);            if (isUac) {                mainPanel.remove(closeButton);                closeButton = null;                mainPanel.remove(cancelButton);                cancelButton = null;            } else {                mainPanel.remove(acceptButton);                acceptButton = null;                mainPanel.remove(rejectButton);                rejectButton = null;            }            mainPanel.add(byeButton);            frame.pack();        } else if (dialogState instanceof DialogStateTerminated) {            //TODO close frame for both uac and uas            closeFrame();        }    }        private void closeFrame() {        if (frame != null) {            frame.dispose();            frame = null;        }        mainPanel = null;        text = null;        rejectButton = null;        acceptButton = null;        closeButton = null;        cancelButton = null;        byeButton = null;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色av一区| 国产伦精一区二区三区| 另类中文字幕网| 成人黄色在线网站| 日韩午夜av电影| 亚洲精品免费电影| 国产成人av在线影院| 欧美日韩大陆在线| 亚洲欧美日韩国产手机在线| 国产一区二区三区电影在线观看| 色94色欧美sute亚洲线路二| 国产夜色精品一区二区av| 午夜视频在线观看一区二区三区| 国产精品亚洲视频| 日韩欧美色电影| 三级欧美韩日大片在线看| 色噜噜夜夜夜综合网| 国产精品午夜电影| 国产黄人亚洲片| 久久亚洲捆绑美女| 美女高潮久久久| 欧美一区二区日韩一区二区| 亚洲成a人片在线观看中文| 91麻豆精品一区二区三区| 国产精品看片你懂得| 国产成人啪免费观看软件| 欧美成人aa大片| 99国产精品久久久久久久久久| 精品国免费一区二区三区| 蜜臀国产一区二区三区在线播放| 欧美精品乱码久久久久久按摩| 亚洲伦在线观看| 一本一道波多野结衣一区二区| 最新国产の精品合集bt伙计| www.久久精品| 亚洲另类中文字| 欧美亚洲免费在线一区| 亚洲一区二区不卡免费| 欧美日韩综合在线免费观看| 亚洲第一精品在线| 日韩免费在线观看| 国产麻豆欧美日韩一区| 亚洲国产高清在线| 一本一本大道香蕉久在线精品 | 午夜影院在线观看欧美| 欧美日韩性生活| 日韩和欧美的一区| 精品欧美一区二区三区精品久久| 国产自产视频一区二区三区| 国产日韩欧美电影| 99久久精品免费看国产 | 成人国产在线观看| 亚洲精品成人少妇| 欧美一区二区三区免费在线看 | 国产精品免费观看视频| 色婷婷综合久色| 日韩av在线发布| 国产日韩欧美a| 日本精品一级二级| 日韩精品乱码av一区二区| 精品国产乱码久久久久久久久| 成人综合在线网站| 亚洲第一福利一区| 久久久亚洲精华液精华液精华液| 99久久久久久| 久久电影网站中文字幕| 国产精品大尺度| 日韩一区二区三区三四区视频在线观看| 久久精品久久综合| 亚洲欧美色图小说| 精品人在线二区三区| 91麻豆swag| 国产在线一区观看| 亚洲精品国产品国语在线app| 制服丝袜在线91| 91丨九色丨国产丨porny| 久久福利视频一区二区| 亚洲欧美日韩电影| 国产亚洲欧美色| 欧美日本免费一区二区三区| 从欧美一区二区三区| 久热成人在线视频| 亚洲成人av一区二区三区| 欧美激情在线一区二区| 欧美精品高清视频| 成人听书哪个软件好| 蜜臀a∨国产成人精品| 亚洲男帅同性gay1069| 久久嫩草精品久久久久| 欧美剧在线免费观看网站| 99久久精品国产一区二区三区| 久久99国产精品久久99| 午夜影视日本亚洲欧洲精品| 中文字幕一区二区在线观看| 精品国产露脸精彩对白| 欧美老年两性高潮| 欧美在线啊v一区| 99视频一区二区| 国产a级毛片一区| 狠狠色综合播放一区二区| 五月天亚洲婷婷| 亚洲综合在线第一页| 亚洲天堂免费看| 国产精品色婷婷| 欧美韩日一区二区三区四区| 久久综合中文字幕| 日韩精品一区二区三区在线| 666欧美在线视频| 欧美精品自拍偷拍| 欧美日韩亚洲综合在线| 欧日韩精品视频| 欧美影院一区二区| 欧美无砖专区一中文字| 色婷婷av一区二区三区之一色屋| 99免费精品视频| 国产**成人网毛片九色 | 一区二区三区四区不卡视频| 国产精品二区一区二区aⅴ污介绍| 国产女主播在线一区二区| 久久精品夜夜夜夜久久| 国产午夜精品美女毛片视频| 国产无遮挡一区二区三区毛片日本| 精品国产一区二区在线观看| 精品成人佐山爱一区二区| 久久综合色婷婷| 国产蜜臀av在线一区二区三区| 国产免费久久精品| 亚洲婷婷综合色高清在线| 亚洲免费观看高清完整| 亚洲一区视频在线观看视频| 午夜精品久久久久久久| 免费人成黄页网站在线一区二区| 蜜桃视频在线观看一区二区| 国产一区二三区| 成人动漫一区二区三区| 91黄视频在线观看| 91精品国模一区二区三区| 精品999久久久| 中文字幕中文字幕一区二区| 曰韩精品一区二区| 免费成人在线影院| 成人做爰69片免费看网站| 欧美在线三级电影| 26uuu亚洲综合色| 亚洲日本欧美天堂| 日韩av不卡在线观看| 国产精品18久久久久久vr | 美女国产一区二区| 成人综合在线视频| 欧美性受xxxx黑人xyx性爽| 日韩三级在线免费观看| 国产精品三级在线观看| 午夜欧美在线一二页| 国产成人三级在线观看| 欧美色精品在线视频| 久久久国际精品| 一二三四区精品视频| 国产精品资源网| 欧美日韩一区在线| 亚洲国产岛国毛片在线| 天天色天天操综合| a美女胸又www黄视频久久| 日韩欧美在线影院| 亚洲精品视频一区| 国产乱码精品一区二区三区忘忧草 | 久久99九九99精品| 一道本成人在线| 久久伊99综合婷婷久久伊| 亚洲一区二区黄色| www.色精品| 久久在线免费观看| 日韩高清一区二区| 日本韩国欧美三级| 亚洲国产高清在线观看视频| 青青草原综合久久大伊人精品 | 国产日本亚洲高清| 日产国产欧美视频一区精品| 成人高清伦理免费影院在线观看| 欧美一区二区福利在线| 亚洲国产精品久久不卡毛片| www.66久久| 久久久亚洲午夜电影| 蜜桃在线一区二区三区| 欧美日韩黄色一区二区| 亚洲欧美一区二区不卡| 不卡一区二区中文字幕| 久久精品夜色噜噜亚洲a∨| 秋霞影院一区二区| 欧美午夜精品一区二区蜜桃| 中文字幕在线不卡一区 | 91欧美一区二区| 欧美国产一区视频在线观看| 国产在线播精品第三| 在线电影欧美成精品| 日韩精品一二三| 这里只有精品视频在线观看| 亚洲大片在线观看| 欧美三级中文字| 亚洲成人高清在线| 91.com视频|