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

📄 contactpanel.java

📁 一个类似QQ的在线通讯聊天软件原码,适合初学者参考学习。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   * Action 'Contact status changed'   * @param e incoming user event   */  protected void action_onIncomingUser(IncomingUserEvent e)  {    Contact contact;    synchronized (Start.env)    {      int size = Start.env.getKnownList().getContactListSize();      for (int index = 1; index <= size; index++)      {        contact = Start.env.getKnownList().get(index - 1);        if (e.getIncomingUserId().equals(contact.getContactId()))        {          if (contact.getCurrentStatus().getMode() == StatusModeEnum.OFFLINE              && Start.env.isSoundEnabled()              && Start.env.getSoundFlags()[1] == true              && !Start.env.getSoundFileNames()[1].equals(""))          {            try            {              player.playSound(Start.env.getSoundFileNames()[1]);            }            catch (Exception ex)            {              System.err.println(this.getClass().getName() + ": "                                 + ex.toString());            }          }          contact.setCurrentStatus(e.getStatusMode());          switch (e.getStatusMode().getMode())          {            case StatusModeEnum.ONLINE:              listIconSources.set(index, Resource.ICON_SOURCE_STATUS[0]);              break;            case StatusModeEnum.FREE_FOR_CHAT:              listIconSources.set(index, Resource.ICON_SOURCE_STATUS[1]);              break;            case StatusModeEnum.AWAY:              listIconSources.set(index, Resource.ICON_SOURCE_STATUS[2]);              break;            case StatusModeEnum.NA:              listIconSources.set(index, Resource.ICON_SOURCE_STATUS[3]);              break;            case StatusModeEnum.OCCUPIED:              listIconSources.set(index, Resource.ICON_SOURCE_STATUS[4]);              break;            case StatusModeEnum.DND:              listIconSources.set(index, Resource.ICON_SOURCE_STATUS[5]);              break;            case StatusModeEnum.INVISIBLE:              listIconSources.set(index, Resource.ICON_SOURCE_STATUS[6]);              break;          }          manager.setIconSources(listIconSources, listContactIds.toArray());          return;        }      }    }  }  /**   * Action 'Contact goes offline'.   * @param e offgoing user event   */  protected void action_onOffgoingUser(OffgoingUserEvent e)  {    Contact contact;    synchronized (Start.env)    {      int size = Start.env.getKnownList().getContactListSize();      for (int index = 1; index <= size; index++)      {        contact = Start.env.getKnownList().get(index - 1);        if (e.getOffgoingUserId().equals(contact.getContactId()))        {          StatusModeEnum offline = new StatusModeEnum(StatusModeEnum.OFFLINE);          contact.setCurrentStatus(offline);          listIconSources.set(index, Resource.ICON_SOURCE_STATUS[7]);          manager.setIconSources(listIconSources, listContactIds.toArray());          return;        }      }    }  }  /**   * Action 'Incoming message'.   * @param e incoming message event   */  protected void action_onIncomingMessage(final IncomingMessageEvent e)  {    synchronized (Start.env)    {      if (!Start.env.getKnownList().contains(e.getSenderID())          && !Start.env.getUnknownList().contains(e.getSenderID())          && !Start.env.getDenyUnknown())      {        Contact unknown = new Contact(e.getSenderID());        Start.env.getUnknownList().addToContactList(unknown);        new ShortUserInfoRequest(Start.env.getConnection(),                                 Integer.parseInt(Start.env.getOwnContact()                                                           .getContactId()),                                 Integer.parseInt(e.getSenderID()))        {          public void onResponse(ShortUserInfo shortInfo)          {            synchronized (Start.env)            {              if (Start.env.getUnknownList().contains(shortInfo.getUserID()))              {                int pos = Start.env.getUnknownList()                                   .indexOf(shortInfo.getUserID());                Contact contact = Start.env.getUnknownList().get(pos);                contact.setNickName(shortInfo.getNickName());                contact.setFirstName(shortInfo.getFirstName());                contact.setLastName(shortInfo.getLastName());                if (shortInfo.getEmail().length() > 0)                {                  contact.setEmail(shortInfo.getEmail());                }                Start.env.setUnknownList(Start.env.sortContactList(Start.env.getUnknownList()));                initContacts();                ChatFrame chatFrame;                int size = listChatFrames.size();                for (int index = 0; index < size; index++)                {                  chatFrame = (ChatFrame) listChatFrames.get(index);                  if (chatFrame.getContactId().equals(e.getSenderID()))                  {                    Date date = new Date();                    chatFrame.chatPanel.addMessage(chatFrame.getChatName()                                                   + " (" + date.toString()                                                   + "):", e.getMessage(),                                                   RTFDocument.RED);                    if (!chatFrame.isVisible())                    {                      manager.setFlickerIcon(e.getSenderID(),                                             Resource.ICON_SOURCE_TYPES[2],                                             Resource.ICON_SOURCE_TYPES[1]);                    }                    else                    {                      chatFrame.startTitleBlinking();                    }                    return;                  }                }              }            }          }        };      }      else      {        ChatFrame chatFrame;        int size = listChatFrames.size();        for (int index = 0; index < size; index++)        {          chatFrame = (ChatFrame) listChatFrames.get(index);          if (chatFrame.getContactId().equals(e.getSenderID()))          {            Date date = new Date();            chatFrame.chatPanel.addMessage(chatFrame.getChatName() + " ("                                           + date.toString() + "):",                                           e.getMessage(), RTFDocument.RED);            if (!chatFrame.isVisible())            {              manager.setFlickerIcon(e.getSenderID(),                                     Resource.ICON_SOURCE_TYPES[2],                                     Resource.ICON_SOURCE_TYPES[1]);            }            else            {              chatFrame.startTitleBlinking();            }            return;          }        }      }    }  }  /**   * Action 'Incoming URL'.   * @param e incoming URL event   */  protected void action_onIncomingUrl(IncomingUrlEvent e)  {    System.out.println("URL: " + e.getUrl());    System.out.println("Message: " + e.getMessage());  }  /**   * Action 'Incoming offline message'.   * @param e offline message event   */  protected void action_onOfflineMessage(final OfflineMessageEvent e)  {    final String offline = ((String[]) mainFrame.localized.get("chat"))[3];    synchronized (Start.env)    {      if (!Start.env.getKnownList().contains(e.getSenderUin())          && !Start.env.getUnknownList().contains(e.getSenderUin())          && !Start.env.getDenyUnknown())      {        Contact unknown = new Contact(e.getSenderUin());        unknown.setNickName((String) mainFrame.localized.get("unnamedUser"));        Start.env.getUnknownList().addToContactList(unknown);        new ShortUserInfoRequest(Start.env.getConnection(),                                 Integer.parseInt(Start.env.getOwnContact()                                                           .getContactId()),                                 Integer.parseInt(e.getSenderUin()))        {          public void onResponse(ShortUserInfo shortInfo)          {            synchronized (Start.env)            {              if (Start.env.getUnknownList().contains(shortInfo.getUserID()))              {                int pos = Start.env.getUnknownList()                                   .indexOf(shortInfo.getUserID());                Contact contact = Start.env.getUnknownList().get(pos);                contact.setNickName(shortInfo.getNickName());                contact.setFirstName(shortInfo.getFirstName());                contact.setLastName(shortInfo.getLastName());                if (shortInfo.getEmail().length() > 0)                {                  contact.setEmail(shortInfo.getEmail());                }                Start.env.setUnknownList(Start.env.sortContactList(Start.env.getUnknownList()));                initContacts();                ChatFrame chatFrame;                int size = listChatFrames.size();                for (int index = 0; index < size; index++)                {                  chatFrame = (ChatFrame) listChatFrames.get(index);                  if (chatFrame.getContactId().equals(e.getSenderUin()))                  {                    chatFrame.chatPanel.addMessage(chatFrame.getChatName()                                                   + " (" + offline + "):",                                                   e.getMessage(),                                                   RTFDocument.RED);                    if (!chatFrame.isVisible())                    {                      manager.setFlickerIcon(e.getSenderUin(),                                             Resource.ICON_SOURCE_TYPES[2],                                             Resource.ICON_SOURCE_TYPES[1]);                    }                    else                    {                      chatFrame.startTitleBlinking();                    }                    return;                  }                }              }            }          }        };      }      else      {        ChatFrame chatFrame;        int size = listChatFrames.size();        for (int index = 0; index < size; index++)        {          chatFrame = (ChatFrame) listChatFrames.get(index);          if (chatFrame.getContactId().equals(e.getSenderUin()))          {            chatFrame.chatPanel.addMessage(chatFrame.getChatName() + " ("                                           + offline + "):", e.getMessage(),                                           RTFDocument.RED);            if (!chatFrame.isVisible())            {              manager.setFlickerIcon(e.getSenderUin(),                                     Resource.ICON_SOURCE_TYPES[2],                                     Resource.ICON_SOURCE_TYPES[1]);            }            else            {              chatFrame.startTitleBlinking();            }            return;          }        }      }    }  }  /**   * Action 'Open chat window'.   */  protected void action_openChat()  {    String known = ((String[]) mainFrame.localized.get("contactPanel"))[0];    String unknown = ((String[]) mainFrame.localized.get("contactPanel"))[1];    if (jListContacts.getSelectedIndex() >= 0        && !jListContacts.getSelectedValue().equals(known)        && !jListContacts.getSelectedValue().equals(unknown))    {      ChatFrame chatFrame;      int size = listChatFrames.size();      for (int index = 0; index < size; index++)      {        chatFrame = (ChatFrame) listChatFrames.get(index);        if (jListContacts.getSelectedValue().equals(chatFrame.getDisplayName()))        {          chatFrame.setVisible(true);          chatFrame.setState(Frame.NORMAL);          manager.removeFlickerIcon(chatFrame.getContactId());          return;        }      }    }  }  /**   * Action 'Open popup window'.   * @param e mouse event   */  protected void action_openPopupMenu(MouseEvent e)  {    String known = ((String[]) mainFrame.localized.get("contactPanel"))[0];    String unknown = ((String[]) mainFrame.localized.get("contactPanel"))[1];    if (jListContacts.getSelectedIndex() >= 0        && !jListContacts.getSelectedValue().equals(known)        && !jListContacts.getSelectedValue().equals(unknown))    {      int value;      synchronized (Start.env)      {        value = jListContacts.getLastVisibleIndex()                - Start.env.getUnknownList().getContactListSize() + 1;        if (jListContacts.getSelectedIndex() < value)        {          knownMenu.show(e.getComponent(), e.getPoint().x, e.getPoint().y);        }        else        {          unknownMenu.show(e.getComponent(), e.getPoint().x, e.getPoint().y);        }      }    }  }}

⌨️ 快捷键说明

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