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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? messengercontroller.java

?? 是一個用java實現的
?? JAVA
字號:
/*
 * MessengerController.java
 *
 * Created on November 25, 2003, 9:03 AM
 */

package gov.nist.applet.phone.ua;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Vector;

import javax.sip.address.URI;
import javax.swing.DefaultListModel;
import javax.swing.JList;

import gov.nist.applet.phone.ua.call.AudioCall;
import gov.nist.applet.phone.ua.call.Call;
import gov.nist.applet.phone.ua.gui.AuthenticationDialog;
import gov.nist.applet.phone.ua.gui.ChatFrame;
import gov.nist.applet.phone.ua.gui.IncomingMessageFrame;
import gov.nist.applet.phone.ua.gui.NISTMessengerApplet;
import gov.nist.applet.phone.ua.gui.NISTMessengerGUI;
import gov.nist.applet.phone.ua.pidf.parser.AddressTag;
import gov.nist.applet.phone.ua.pidf.parser.AtomTag;
import gov.nist.applet.phone.ua.pidf.parser.MSNSubStatusTag;
import gov.nist.applet.phone.ua.pidf.parser.PresenceTag;
import gov.nist.applet.phone.ua.presence.PresentityManager;
import gov.nist.applet.phone.ua.presence.Subscriber;

/**
 * This application has been designed in following the MVC design pattern
 * Thus, this class is part of the Control.
 * when there is a change in the model it updates the view
 * 
 * @author  DERUELLE Jean
 */
public class MessengerController implements java.util.Observer {
    private MessengerManager sipMeetingManager;    
    private NISTMessengerGUI nistMeetingGUI;
    private ChatSessionManager chatSessionManager;
    
    /** Creates a new instance of ControllerMeeting 
     * @param sipMeetingManager - the model of the MVC design pattern used in this application
     * @param sipMeetingGUI - the view of the MVC design pattern used in this application
     */
    public MessengerController(
    							MessengerManager sipMeetingManager,
    							ChatSessionManager chatSessionManager, 
    							NISTMessengerGUI nistMeetingGUI) {
        this.nistMeetingGUI=nistMeetingGUI;
        this.chatSessionManager=chatSessionManager;
        this.sipMeetingManager=sipMeetingManager;
        this.sipMeetingManager.addObserver(this);
    }
    
    /**
     * @see java.util.Observer#update(java.util.Observable, Object)
     */
    public void update(java.util.Observable o, Object arg) {    	
		if(arg instanceof RegisterStatus){
			RegisterStatus registerStatus=(RegisterStatus)arg;
			String userURI=
				sipMeetingManager.getMessageListener().getConfiguration().userURI;			
			if(sipMeetingManager.getRegisterStatus().equalsIgnoreCase(
			   RegisterStatus.NOT_REGISTERED))
				nistMeetingGUI.getLoggedStatusLabel().setText("Not Logged");
			if(sipMeetingManager.getRegisterStatus().equalsIgnoreCase(
			   RegisterStatus.REGISTRATION_IN_PROGRESS))
				nistMeetingGUI.getLoggedStatusLabel().setText(
					"Trying to log as : "+ userURI);
			if(sipMeetingManager.getRegisterStatus().equalsIgnoreCase(
			   RegisterStatus.PROXY_AUTHENTICATION_REQUIRED)){
				AuthenticationDialog authenticationDialog= 
					new AuthenticationDialog(nistMeetingGUI,"localhost");
				sipMeetingManager.registerWithAuthentication(
					authenticationDialog.getUserName(),
					authenticationDialog.getPassword(),
					"localhost");					       
					
			}					
			if(sipMeetingManager.getRegisterStatus().equalsIgnoreCase(
			   RegisterStatus.REGISTERED)){
					nistMeetingGUI.getLoggedStatusLabel().setText(
									"Logged as : "+userURI+" - (Online)");
					displayAllContact();
			   }
				
		}
		if(arg instanceof Call){
			Call call=(Call)arg;
			String callee=call.getCallee().trim().toLowerCase();
			if(callee.indexOf(";")!=-1)
				callee=callee.substring(0,callee.indexOf(";"));		
			if(callee.indexOf("sip:")!=-1)
				callee=callee.substring("sip:".length());					
			ChatFrame chatFrame=(ChatFrame)chatSessionManager.getChatFrame(callee);			
			String callStatus=call.getStatus();
			System.out.println("callee "+callee+":chatFrame "+chatFrame+":status "+callStatus);
			if(callStatus.equalsIgnoreCase(Call.NOT_IN_A_CALL)){
				/*System.out.println(
					"Updating chatFrame "+
					chatFrame+
					" callee: "+
					callee);*/							
				if(chatFrame!=null)
					chatFrame.disableAudioConversation();				
			}
			else if(callStatus.equalsIgnoreCase(Call.CANCEL)){
				if(chatFrame!=null)
					chatFrame.cancelAudioConversation();
			}
			else if(callStatus.equalsIgnoreCase(Call.IN_A_CALL)){
				chatFrame.enableAudioConversation("sip:"+callee);
			}
			else if(callStatus.equalsIgnoreCase(Call.RINGING)
				    || callStatus.equalsIgnoreCase(Call.TRYING)
				    || callStatus.equals(Call.BUSY)
				    || callStatus.equals(Call.TEMPORARY_UNAVAILABLE)){
				chatFrame.updateAudioStatus(callStatus);
				if(call instanceof AudioCall){
					AudioCall audioCall=(AudioCall)call;
					URI url=audioCall.getURL();
					if(url!=null){
						if(nistMeetingGUI instanceof NISTMessengerApplet){
							NISTMessengerApplet applet=(NISTMessengerApplet)nistMeetingGUI;
							try{
								applet.getAppletContext().showDocument(new URL(url.toString()),"_blank");
							}
							catch (MalformedURLException mue) {
								mue.printStackTrace();
							}
						}
					}
				}				
			}
			else if(callStatus.equalsIgnoreCase(Call.INCOMING_CALL)){																	
				if(chatFrame==null){																
					chatFrame=new ChatFrame(
						nistMeetingGUI,
						callee,
						sipMeetingManager,
						chatSessionManager);
					chatFrame.show();
					chatSessionManager.addChatSession(callee,chatFrame);						
				}						
				IncomingMessageFrame incomingMessageFrame=
					new IncomingMessageFrame(chatFrame,callee);
				chatFrame.setIncomingMessageFrame(incomingMessageFrame);
				incomingMessageFrame.show();																
			}									           
		}
		if(arg instanceof InstantMessage){
			InstantMessage im=(InstantMessage)arg;
			String sender=im.getSender();
			String message=im.getMessage();
			Object frame=chatSessionManager.getChatFrame(sender);
			ChatFrame chatFrame=null;
			if(frame==null){
				chatFrame=new ChatFrame(
						nistMeetingGUI,
						sender,
						sipMeetingManager,
						chatSessionManager);
				chatFrame.show();
				chatSessionManager.addChatSession(sender,chatFrame);
				chatFrame.newMessage(message);
			}
			else{
				chatFrame=(ChatFrame)frame;
				chatFrame.newMessage(message);
			}
		}   
		if(arg instanceof Subscriber){
			Subscriber subscriber=(Subscriber)arg;
			String subscriberAddress=subscriber.getAddress();
			if(!sipMeetingManager.isInContactList(subscriberAddress)){
				int response=javax.swing.JOptionPane.showConfirmDialog(null,
				subscriberAddress+
				" wants to be added to your contacts, do you agree ?",
				"New Contact",
				javax.swing.JOptionPane.YES_NO_OPTION,
				javax.swing.JOptionPane.QUESTION_MESSAGE);       
				if(response==javax.swing.JOptionPane.NO_OPTION)
					declineContact(subscriberAddress);
				else if(response==javax.swing.JOptionPane.YES_OPTION){
					addContact(subscriberAddress);
					acceptContact(subscriberAddress);									
					sipMeetingManager.sendSubscribe(subscriberAddress);							
				}
			}
			else
				acceptContact(subscriberAddress);
		}         
		if(arg instanceof PresenceTag){
			PresenceTag presenceTag=(PresenceTag)arg;
			Vector atomTagList=presenceTag.getAtomTagList();
			AtomTag atomTag=(AtomTag)atomTagList.firstElement();
			AddressTag addressTag=atomTag.getAddressTag();
			MSNSubStatusTag msnSubStatusTag=addressTag.getMSNSubStatusTag();
			this.updateStatusContact(
				presenceTag.getAddress(),
				msnSubStatusTag.getMSNSubStatus());
		}
		nistMeetingGUI.repaint();
    }
            
    /**
     * Accept that the contact be added to our contact list
     * @param subscriberAddress
     */
    private void acceptContact(String subscriberAddress){
    	sipMeetingManager.getPresentityManager().
    		acceptSubscribe(subscriberAddress);
    }
    
    /**
     * Decline that the contact be added to our contact list
     * @param subscriberAddress
     */
    private void declineContact(String subscriberAddress){
		sipMeetingManager.getPresentityManager().
			declineSubscribe(subscriberAddress);
		sipMeetingManager.getPresentityManager().
    		removeSubscriber(subscriberAddress);		
    }
	/**
	 * Remove a contact from the contact list
	 */
    public void removeContact(){
		JList jList1=nistMeetingGUI.getContactList();
		DefaultListModel listModel=(DefaultListModel)jList1.getModel();
		//Add your handling code here:
		int index = jList1.getSelectedIndex();
		String contactAddress=(String)listModel.get(index);
		/*listModel.remove(index);
		
		int size = listModel.getSize();
		if (size == 0) { //Nobody's left, disable firing.
			nistMeetingGUI.getRemoveContactButton().setEnabled(false);
		} 
		else { //Select an index.
			if (index == listModel.getSize()) {
				//removed item in last position
			 	index--;
		 	}
			jList1.setSelectedIndex(index);
			jList1.ensureIndexIsVisible(index);
		}*/
		sipMeetingManager.removeContact(contactAddress);
		displayAllContact();
    }
    
	/**
	 * Add a contact in the contact list
	 * @param contactAddress - the contact to add
	 */
	public void addContact(String contactAddress){
		/*Subscriber subscriber=
				sipMeetingManager.getPresentityManager().getSubscriber(contactAddress);
		JList jList1=nistMeetingGUI.getContactList();
		DefaultListModel listModel=(DefaultListModel)jList1.getModel();
		listModel.addElement(contactAddress+" ("+subscriber.getStatus()+")");
		int size= listModel.getSize(); //get selected index
		//Select the new item and make it visible.
		jList1.setSelectedIndex(size-1);
		jList1.ensureIndexIsVisible(size-1);
		if (size > 0) { //Nobody's left, disable firing.
			nistMeetingGUI.getRemoveContactButton().setEnabled(true);
		}*/ 
		sipMeetingManager.addContact(contactAddress);
		displayAllContact();
	}
	/**
	 *
	 */
	public void displayAllContact(){
		Vector contactList=sipMeetingManager.getContactList();
		PresentityManager presentityManager=
			sipMeetingManager.getPresentityManager();
		JList jList1=nistMeetingGUI.getContactList();
		DefaultListModel listModel=(DefaultListModel)jList1.getModel();
		listModel.removeAllElements();
		for(int i=0;i<contactList.size();i++){
			String contactAddress=(String)contactList.get(i);
			Subscriber subscriber=
				presentityManager.getSubscriber(contactAddress);
			if(sipMeetingManager.presenceAllowed)
				listModel.addElement(contactAddress+" ("+subscriber.getStatus()+")");
			else
				listModel.addElement(contactAddress);
		}
		if(nistMeetingGUI instanceof NISTMessengerApplet){			
			if( ((NISTMessengerApplet)nistMeetingGUI).useResponder() )
				return;
		}
	
		if(contactList.size()>0)
			nistMeetingGUI.getRemoveContactButton().setEnabled(true);
		else
			nistMeetingGUI.getRemoveContactButton().setEnabled(false);	
	}
	
	/**
	 *
	 */
	public void undisplayAllContact(){
		JList jList1=nistMeetingGUI.getContactList();
		DefaultListModel listModel=(DefaultListModel)jList1.getModel();		
		listModel.removeAllElements();
		nistMeetingGUI.getRemoveContactButton().setEnabled(false);
	}
	
	/**
	 * Add a contact in the contact list
	 * @param contactAddress - the contact to add
	 */
	public void updateStatusContact(String contactAddress,String status){
		JList jList1=nistMeetingGUI.getContactList();
		DefaultListModel listModel=(DefaultListModel)jList1.getModel();
		Enumeration e =listModel.elements();
		int i=0;
		while(e.hasMoreElements()){
			String contact=(String)e.nextElement();
			if(contact.indexOf(contactAddress)!=-1){
				listModel.removeElementAt(i);
				if(i==0){
					listModel.addElement(
						contactAddress+" ("+status+")");
					jList1.ensureIndexIsVisible(i);
				}
				else{
					listModel.add(
						i-1,contactAddress+" ("+status+")");
					jList1.ensureIndexIsVisible(i-1);
				}
				break;
			}
			i++;
		}
			}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产欧美在线观看| 欧美刺激脚交jootjob| 亚洲va国产天堂va久久en| 欧美三级电影一区| 日韩精品91亚洲二区在线观看| 欧美精品少妇一区二区三区| 蜜桃av一区二区三区电影| 精品国产一区二区三区久久久蜜月| 国产精品亚洲第一区在线暖暖韩国| 欧美高清一级片在线观看| 色欧美乱欧美15图片| 日本欧美在线观看| 国产日产欧美精品一区二区三区| 91年精品国产| 日本欧美久久久久免费播放网| 久久精品欧美一区二区三区不卡| 9久草视频在线视频精品| 亚洲国产成人av网| 久久影视一区二区| 日本久久精品电影| 精品一区二区免费视频| 亚洲精品欧美激情| 日韩欧美国产1| 91久久精品日日躁夜夜躁欧美| 蜜臀av性久久久久蜜臀av麻豆| 中文字幕不卡三区| 欧美性淫爽ww久久久久无| 国产一区二区在线观看视频| 一区二区三区加勒比av| www久久久久| 欧美日韩一区三区四区| 国产成都精品91一区二区三| 亚洲一本大道在线| 欧美激情一区二区三区不卡 | 国产精品高清亚洲| 欧美日韩mp4| 91小视频在线免费看| 久久国产精品99久久久久久老狼 | 337p粉嫩大胆色噜噜噜噜亚洲 | 风间由美一区二区av101 | 精品中文字幕一区二区| 亚洲裸体xxx| 久久久精品蜜桃| 91精品综合久久久久久| 97se亚洲国产综合自在线观| 蜜桃视频在线观看一区二区| 一区二区三区四区在线| 偷窥少妇高潮呻吟av久久免费| 国产精品日韩成人| 在线免费观看日本欧美| 国产成人综合亚洲网站| 日本成人在线网站| 亚洲国产精品欧美一二99| 中文字幕一区二区日韩精品绯色| 精品国产91洋老外米糕| 7777精品伊人久久久大香线蕉| 91小视频在线| 成人av网站免费观看| 国产一区二区三区精品视频| 日本午夜一区二区| 午夜欧美在线一二页| 亚洲精品久久久久久国产精华液| 中文av一区特黄| 国产日韩亚洲欧美综合| 久久精品在线观看| 26uuu精品一区二区| 精品欧美一区二区三区精品久久| 91丨九色丨蝌蚪丨老版| 国产在线精品视频| 蜜桃久久久久久| 免费在线看成人av| 男男gaygay亚洲| 久久国产福利国产秒拍| 另类小说综合欧美亚洲| 蜜乳av一区二区| 美女视频网站久久| 精品亚洲成a人在线观看 | 日韩一卡二卡三卡国产欧美| 欧美日韩国产经典色站一区二区三区| 欧美性受极品xxxx喷水| 欧美日韩国产成人在线免费| 欧美一区欧美二区| 日韩精品一区二区三区四区视频| 日韩精品中文字幕在线不卡尤物 | 国产三级一区二区三区| 久久九九久久九九| 国产精品美女久久久久久久网站| 中文字幕成人网| 亚洲精品中文在线观看| 亚洲综合精品久久| 美国三级日本三级久久99| 久久99精品国产麻豆婷婷 | 国产精一区二区三区| 国产99久久久国产精品潘金| 972aa.com艺术欧美| 91福利区一区二区三区| 欧美日本韩国一区二区三区视频| 91精品国产黑色紧身裤美女| 亚洲精品一区二区三区影院 | 日韩女优av电影| 欧美精品一区男女天堂| 中文在线一区二区| 亚洲一区电影777| 91视频免费看| 欧美日韩激情一区| 国产亚洲欧美在线| 亚洲一区二区三区自拍| 精品亚洲porn| 日本韩国欧美在线| 欧美刺激脚交jootjob| 中文字幕一区二区三区四区| 日韩精品福利网| 成人午夜私人影院| 久久久久久一级片| 1区2区3区精品视频| 亚洲成人在线免费| 国产成人午夜视频| 欧美在线一区二区| 26uuu国产电影一区二区| 亚洲精品国产高清久久伦理二区| 日本免费在线视频不卡一不卡二| 成人精品鲁一区一区二区| 欧美美女直播网站| 国产精品福利一区| 乱一区二区av| 欧美在线观看视频一区二区三区| 精品成人在线观看| 婷婷中文字幕综合| 盗摄精品av一区二区三区| 欧美日韩国产三级| 国产精品乱人伦| 久久爱www久久做| 欧美调教femdomvk| 亚洲视频一二三区| 国产激情视频一区二区在线观看| 在线中文字幕一区| 国产精品三级电影| 国产在线不卡视频| 欧美精品欧美精品系列| 亚洲精选免费视频| 在线中文字幕一区| 欧美成人一区二区三区片免费 | 久久精品夜色噜噜亚洲aⅴ| 国产精品一二三区| 欧美丰满美乳xxx高潮www| 亚洲天堂成人网| 成人av在线一区二区| 国产三级精品在线| 国内久久精品视频| 7777精品伊人久久久大香线蕉| 亚洲一区二区三区免费视频| 波多野结衣精品在线| 欧美国产欧美综合| 国产成人一级电影| 久久久99精品久久| 国产精品99精品久久免费| 日韩久久久精品| 免费不卡在线观看| 欧美一区二区视频观看视频| 日韩经典一区二区| 欧美久久久一区| 日本成人中文字幕| 日韩三级中文字幕| 久久99精品久久久久婷婷| 欧美一级午夜免费电影| 日韩福利视频网| 欧美mv和日韩mv的网站| 理论片日本一区| 久久在线观看免费| 国产成人免费在线视频| 国产精品久久夜| 一本色道a无线码一区v| 一级日本不卡的影视| 欧美四级电影在线观看| 午夜av一区二区三区| 欧美一区在线视频| 久久99久久精品| 国产视频一区在线观看| 成人激情综合网站| 亚洲综合色自拍一区| 欧美一区二区三区在线看| 国模冰冰炮一区二区| 国产欧美日韩视频一区二区| 精品嫩草影院久久| 激情文学综合插| 国产精品久久影院| 色综合久久中文综合久久牛| 午夜精品福利在线| 精品国产乱码久久| 成人网在线播放| 洋洋成人永久网站入口| 日韩午夜电影av| 国产a区久久久| 亚洲福利一区二区三区| 日韩免费性生活视频播放| 成人在线一区二区三区| 亚洲电影你懂得| 久久久一区二区三区捆绑**| 色婷婷综合久久久久中文| 美女视频黄免费的久久 |