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

📄 msnmessenger.java

📁 J2me实现的MSN Messeger客户端程序。聊天、添加好友、删除好友、阻止好友
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   * @param friend MsnFriend 好友帐户
   * @param oldIndex int 老原分组序号
   * @param newIndex int 新分组序号
   * @throws IOException
   */
  public void moveGroupAsFriend(MsnFriend friend, int oldIndex, int newIndex) throws
      IOException {
    ns.requestMoveGroup(friend, oldIndex, newIndex);
  }

  /**
   *
   * @param loginName String
   * @throws IOException
   * @throws InterruptedException
   * @return SwitchboardSession
   */
  public SwitchboardSession doCallWait(String loginName) throws IOException,
      InterruptedException {
    return ns.doCallFriendWait(loginName);
  }

  /**
   *
   * @param loginName String
   * @return SwitchboardSession
   */
  public SwitchboardSession findSwitchboardSession(String loginName) {
    Enumeration e = sessionMap.elements();
    while (e.hasMoreElements()) {
      SwitchboardSession ss = (SwitchboardSession) e.nextElement();
      if (ss.isInFriend(loginName))
        return ss;
    }
    return null;
  }

  /**
   *
   * @param loginName String
   * @return SwitchboardSession
   */
  public SwitchboardSession findSwitchboardSessionAt(String loginName) {
    Enumeration e = sessionMap.elements();
    while (e.hasMoreElements()) {
      SwitchboardSession ss = (SwitchboardSession) e.nextElement();
      if (ss.getFriendCount() == 1 && ss.isInFriend(loginName))
        return ss;
    }
    return null;
  }

  /**
   * 向好友发送信息
   * @param loginName String 好友帐户
   * @param msg MimeMessage Mime格式信息
   * @throws IOException
   * @return boolean 是否可发送
   */
  public boolean sendMessage(String loginName, MimeMessage msg) throws
      IOException {
    SwitchboardSession ss = findSwitchboardSession(loginName);

    if (ss != null) {
      ss.sendMessage(msg);
      return true;
    }
    return false;
  }

  /**
   * 通过指定Switchboard服务器id,发送消息.如果未找到指定id,用sendMessage(String loginName, MimeMessage msg)发送
   * @param loginName String
   * @param msg MimeMessage
   * @param sessionId String
   * @throws IOException
   * @return boolean
   */
  public boolean sendMessage(String loginName, MimeMessage msg,
                             String sessionId) throws IOException {
    SwitchboardSession ss = (SwitchboardSession) sessionMap.get(sessionId);
    if (ss == null) {
      return sendMessage(loginName, msg);
    }
    ss.sendMessage(msg);
    return true;
  }

  /**
   * 指定Switchboard,发送消息
   * @param msg MimeMessage
   * @param session SwitchboardSession
   * @throws IOException
   * @return boolean
   */
  public boolean sendMessage(MimeMessage msg, SwitchboardSession session) throws
      IOException {
    if (session != null) {
      session.sendMessage(msg);
      return true;
    }
    return false;
  }

///////////////一下为事件分发函数//////////////////

  public void fireInstantMessageEvent(SwitchboardSession ss, MsnFriend friend,
                                      MimeMessage mime) {
    base.instantMessageReceived(ss, friend, mime);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).instantMessageReceived(ss, friend,
          mime);
  }

  public void fireJoinSessionEvent(SwitchboardSession ss, MsnFriend friend) {
    base.whoJoinSession(ss, friend);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).whoJoinSession(ss, friend);
  }

  public void fireListOnlineEvent(MsnFriend friend) {
    base.listOnline(friend);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).listOnline(friend);
  }

  public void fireLoginCompleteEvent(MsnFriend own) {
    base.loginComplete(own);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).loginComplete(own);
  }

  public void firePartSessionEvent(SwitchboardSession ss, MsnFriend friend) {
    base.whoPartSession(ss, friend);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).whoPartSession(ss, friend);
  }

  public void fireProgressTypingEvent(SwitchboardSession ss, MsnFriend friend,
                                      String typeuser) {
    base.progressTyping(ss, friend, typeuser);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).progressTyping(ss, friend,
          typeuser);
  }

  public void fireSwitchboardSessionStartedEvent(SwitchboardSession ss) {
    base.switchboardSessionStarted(ss);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).switchboardSessionStarted(ss);
  }

  public void fireSwitchboardSessionEndedEvent(SwitchboardSession ss) {
    base.switchboardSessionEnded(ss);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).switchboardSessionEnded(ss);
  }

  public void fireSwitchboardSessionAbandonEvent(SwitchboardSession ss,
                                                 String targetName) {
    base.switchboardSessionAbandon(ss, targetName);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).switchboardSessionAbandon(ss,
          targetName);
  }

  public void fireUserOnlineEvent(MsnFriend friend) {
    System.out.println("fireUserOnlineEvent :" + friend.getLoginName());
    base.userOnline(friend);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).userOnline(friend);
  }

  public void fireUserOfflineEvent(String loginName) {
    base.userOffline(loginName);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).userOffline(loginName);
  }

  public void fireWhoAddedMeEvent(MsnFriend friend) {
    base.whoAddedMe(friend);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).whoAddedMe(friend);
  }

  public void fireWhoRemovedMeEvent(MsnFriend friend) {
    base.whoRemovedMe(friend);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).whoRemovedMe(friend);
  }

  public void fireBuddyListModifiedEvent() {
    base.buddyListModified();
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).buddyListModified();
  }

  public void fireAddFailedEvent(int errcode) {
    base.addFailed(errcode);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).addFailed(errcode);
  }

  public void fireLoginErrorEvent(String header) {
    base.loginError(header);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).loginError(header);
  }

  public void fireRenameNotifyEvent(MsnFriend friend) {
    base.renameNotify(friend);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).renameNotify(friend);
  }

  public void fireAllListUpdatedEvent() {
    base.allListUpdated();
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).allListUpdated();
  }

  public void fireLogoutNotifyEvent() {
    base.logoutNotify();
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).logoutNotify();
  }

  public void fireNotifyUnreadMail(Hashtable mime, int unread) {
    base.notifyUnreadMail(mime, unread);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).notifyUnreadMail(mime, unread);
  }

  public void fireConnectFailEvent(short errCode, boolean isNotify) {
    base.connectError(errCode, isNotify);
    for (int i = listeners.size() - 1; i >= 0; i--)
      ( (MsnListener) listeners.elementAt(i)).connectError(errCode, isNotify);

  }

//
//	public void fireFileSendStartedEvent( VolatileTransferServer server )
//	{
//		base.fileSendStarted(server);
//		for(int i=listeners.size()-1; i>=0; i--)
//			((MsnListener)listeners.get(i)).fileSendStarted(server);
//	}
//
//	public void fireFileSendEndedEvent( VolatileTransferServer server )
//	{
//		base.fileSendEnded(server);
//		for(int i=listeners.size()-1; i>=0; i--)
//			((MsnListener)listeners.get(i)).fileSendEnded(server);
//	}
//
//	public void fireFileReceiveStartedEvent( VolatileDownloader down )
//	{
//		base.fileReceiveStarted(down);
//		for(int i=listeners.size()-1; i>=0; i--)
//			((MsnListener)listeners.get(i)).fileReceiveStarted(down);
//	}
//
//	public void fireFileSendErrorEvent( VolatileTransferServer server, Throwable e )
//	{
//		base.fileSendError(server, e);
//		for(int i=listeners.size()-1; i>=0; i--)
//			((MsnListener)listeners.get(i)).fileSendError(server, e);
//	}
//
//	public void fireFileReceiveErrorEvent( VolatileDownloader down, Throwable e )
//	{
//		base.fileReceiveError(down, e);
//		for(int i=listeners.size()-1; i>=0; i--)
//			((MsnListener)listeners.get(i)).fileReceiveError(down, e);
//	}

//  public void fireFilePostedEvent(SwitchboardSession ss, int cookie,
//                                  String filename,
//                                  int filesize) {
//    base.filePosted(ss, cookie, filename, filesize);
//    for (int i = listeners.size() - 1; i >= 0; i--)
//      ( (MsnListener) listeners.elementAt(i)).filePosted(ss, cookie, filename,
//          filesize);
//  }
//
//  public void fireFileSendAcceptedEvent(SwitchboardSession ss, int cookie) {
//    base.fileSendAccepted(ss, cookie);
//    for (int i = listeners.size() - 1; i >= 0; i--)
//      ( (MsnListener) listeners.elementAt(i)).fileSendAccepted(ss, cookie);
//  }
//
//  public void fireFileSendRejectedEvent(SwitchboardSession ss, int cookie,
//                                        String reason) {
//    base.fileSendRejected(ss, cookie, reason);
//    for (int i = listeners.size() - 1; i >= 0; i--)
//      ( (MsnListener) listeners.elementAt(i)).fileSendRejected(ss, cookie,
//          reason);
//  }



//	/**
//	 * ??? sessionId ????8?? ????; ?????? '?? loginName????
//	 * ????; ????? ????? ??????.
//	 *
//	 */
//	public void sendFileRequest( String loginName, File file, String sessionId )
//		throws IOException
//	{
//		if( sessionId==null )
//			throw new IllegalArgumentException( "session id must not be null" );
//
//		sendFileRequest( loginName, file, (SwitchboardSession)sessionMap.get(sessionId) );
//	}

//	/**
//	 * ??? sessionId ????8?? ????; ?????? '?? loginName????
//	 * ????; ????? ????? ??????.
//	 *
//	 */
//	public void sendFileRequest( String loginName, File file, SwitchboardSession session )
//		throws IOException
//	{
//		if( session==null )
//			throw new IllegalArgumentException( "session must not be null" );
//
//		FileTransferMessage msg = FileTransferMessage.createInviteMessage(file);
//		ToSendFile toSend = new ToSendFile( msg.getProperty("Invitation-Cookie"), loginName, file );
//		session.sendFileRequest( toSend, msg );
//	}

  /////////////////////////////////////////////////////////////////////

  private class Listener
      extends MsnAdapter {
    public void renameNotify(MsnFriend own) {
      if (own != null && owner.getLoginName().equals(own.getLoginName()))
        owner.setFriendlyName(own.getFriendlyName());
    }

    public void loginComplete(MsnFriend own) {
      isLogged = true;
      owner = own;
    }


    public void listOnline(MsnFriend friend) {
      forwardList.add(friend);
    }

    public void userOnline(MsnFriend friend) {
      forwardList.add(friend);
//      onlineList.add(friend);
    }

    public void userOffline(String loginName) {
      forwardList.setOffline(loginName);
//      onlineList.setOffline(loginName);
    }

    public void switchboardSessionStarted(SwitchboardSession ss) {
      String sid = ss.getSessionId();
      if (sid == null)
        return;

      sessionMap.put(sid, ss);
      /* ?????? ???????? ?????? ???? ???°?: ??? ????. */
    }

    public void switchboardSessionEnded(SwitchboardSession ss) {
      String sid = ss.getSessionId();
      sessionMap.remove(sid);
    }

    public void whoAddedMe(MsnFriend friend) {
      System.out.println(friend + " Add me.");
    }

    public void whoRemovedMe(MsnFriend friend) {
      System.out.println(friend.getLoginName() + " remove me.");
    }

    public void connectError(short errCode, boolean isNotify) {

    }

  }
}

⌨️ 快捷键说明

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