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

📄 contactpanel.java

📁 一个类似QQ的在线通讯聊天软件原码,适合初学者参考学习。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package openicq.gui;import java.awt.BorderLayout;import java.awt.Frame;import java.awt.event.*;import java.util.ArrayList;import java.util.Date;import javax.swing.*;import openicq.Start;import openicq.data.Resource;import openicq.net.*;import openicq.net.ShortUserInfo;import openicq.net.ShortUserInfoRequest;import org.javalib.document.RTFDocument;import org.javalib.sound.MediaPlayer;import JOscarLib.Integration.Event.*;import JOscarLib.Management.Contact;import JOscarLib.Management.ContactList;import JOscarLib.Setting.Enum.StatusModeEnum;import JOscarLib.Tool.OscarInterface;/** * The <code>ContactPanel</code> class is a panel which displays multiple * contacts. * @author Hansgeorg Schwibbe * @copyright 2004 */public class ContactPanel extends JPanel{  private MediaPlayer player = new MediaPlayer();  protected MainFrame mainFrame;  protected ArrayList listChatFrames = new ArrayList();  protected ArrayList listIconSources = new ArrayList();  protected ArrayList listDisplayNames = new ArrayList();  protected ArrayList listContactIds = new ArrayList();  protected JScrollPane jScrollPaneContacts = new JScrollPane();  protected JList jListContacts = new JList();  protected IconManager manager;  protected ContactPanelPopupMenu knownMenu;  protected ContactPanelPopupMenu unknownMenu;  /**   * Initializes a new instance of the class <code>ContactPanel</code>.   * @param parent the parent frame   */  public ContactPanel(JFrame parent)  {    this.mainFrame = (MainFrame) parent;    this.setSize(150, 105);    this.setPreferredSize(this.getSize());    this.knownMenu = new ContactPanelPopupMenu(this);    knownMenu.remove(knownMenu.jMenuItemAdd);    this.unknownMenu = new ContactPanelPopupMenu(this);    jListContacts.getSelectionModel()                 .setSelectionMode(ListSelectionModel.SINGLE_SELECTION);    jListContacts.addMouseListener(new MouseListener()    {      public void mousePressed(MouseEvent e)      {      }      public void mouseReleased(MouseEvent e)      {      }      public void mouseEntered(MouseEvent e)      {      }      public void mouseExited(MouseEvent e)      {      }      public void mouseClicked(MouseEvent e)      {        if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() > 1)        {          action_openChat();        }        else if (e.getButton() == MouseEvent.BUTTON3)        {          jListContacts.setSelectedIndex(jListContacts.locationToIndex(e.getPoint()));          action_openPopupMenu(e);        }      }    });    jListContacts.addKeyListener(new KeyListener()    {      public void keyPressed(KeyEvent e)      {      }      public void keyReleased(KeyEvent e)      {      }      public void keyTyped(KeyEvent e)      {        if (e.getKeyChar() == KeyEvent.VK_ENTER)        {          action_openChat();        }      }    });    jScrollPaneContacts.getViewport().add(jListContacts, null);    jScrollPaneContacts.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);    this.setLayout(new BorderLayout());    this.add(jScrollPaneContacts, BorderLayout.CENTER);  }  /**   * Initializes all contacts.   */  public synchronized void initContacts()  {    int outer, inner, index, size, innerSize;    boolean isIndexOf;    Contact contact;    ChatFrame chatFrame;    listIconSources.clear();    listDisplayNames.clear();    listContactIds.clear();    synchronized (Start.env)    {      if (Start.env.getKnownList().getContactListSize() > 0)      {        String text = ((String[]) mainFrame.localized.get("contactPanel"))[0];        listDisplayNames.add(text);        listContactIds.add("null");        listIconSources.add(null);        size = Start.env.getKnownList().getContactListSize();        for (index = 0; index < size; index++)        {          contact = Start.env.getKnownList().get(index);          switch (contact.getCurrentStatus().getMode())          {            case StatusModeEnum.ONLINE:              listIconSources.add(Resource.ICON_SOURCE_STATUS[0]);              break;            case StatusModeEnum.FREE_FOR_CHAT:              listIconSources.add(Resource.ICON_SOURCE_STATUS[1]);              break;            case StatusModeEnum.AWAY:              listIconSources.add(Resource.ICON_SOURCE_STATUS[2]);              break;            case StatusModeEnum.NA:              listIconSources.add(Resource.ICON_SOURCE_STATUS[3]);              break;            case StatusModeEnum.OCCUPIED:              listIconSources.add(Resource.ICON_SOURCE_STATUS[4]);              break;            case StatusModeEnum.DND:              listIconSources.add(Resource.ICON_SOURCE_STATUS[5]);              break;            case StatusModeEnum.INVISIBLE:              listIconSources.add(Resource.ICON_SOURCE_STATUS[6]);              break;            default:              listIconSources.add(Resource.ICON_SOURCE_STATUS[7]);          }          listDisplayNames.add(Start.env.getDisplayName(contact));          listContactIds.add(contact.getContactId());        }      }      if (Start.env.getUnknownList().getContactListSize() > 0)      {        String text = ((String[]) mainFrame.localized.get("contactPanel"))[1];        listDisplayNames.add(text);        listContactIds.add("null");        listIconSources.add(null);        size = Start.env.getUnknownList().getContactListSize();        for (index = 0; index < size; index++)        {          listIconSources.add(Resource.ICON_SOURCE_STATUS[8]);          contact = Start.env.getUnknownList().get(index);          listDisplayNames.add(Start.env.getDisplayName(contact));          listContactIds.add(contact.getContactId());        }      }      size = listChatFrames.size();      for (index = 0; index < listChatFrames.size(); index++)      {        chatFrame = ((ChatFrame) listChatFrames.get(index));        if (!Start.env.getKnownList().contains(chatFrame.getContactId())            && !Start.env.getUnknownList().contains(chatFrame.getContactId()))        {          chatFrame.setVisible(false);          chatFrame.doLayout();          listChatFrames.remove(index);          index--;          size--;        }      }      listChatFrames.trimToSize();      size = Start.env.getKnownList().getContactListSize();      for (outer = 0; outer < size; outer++)      {        isIndexOf = false;        contact = Start.env.getKnownList().get(outer);        innerSize = listChatFrames.size();        for (inner = 0; inner < innerSize; inner++)        {          chatFrame = ((ChatFrame) listChatFrames.get(inner));          if (contact.getContactId().equals(chatFrame.getContactId()))          {            chatFrame.setContact(contact);            isIndexOf = true;            break;          }        }        if (isIndexOf == false)        {          listChatFrames.add(new ChatFrame(Start.env.getKnownList().get(outer)));        }      }      size = Start.env.getUnknownList().getContactListSize();      for (outer = 0; outer < size; outer++)      {        contact = Start.env.getUnknownList().get(outer);        isIndexOf = false;        innerSize = listChatFrames.size();        for (inner = 0; inner < innerSize; inner++)        {          chatFrame = ((ChatFrame) listChatFrames.get(inner));          if (contact.getContactId().equals(chatFrame.getContactId()))          {            chatFrame.setContact(contact);            isIndexOf = true;            break;          }        }        if (isIndexOf == false)        {          listChatFrames.add(new ChatFrame(Start.env.getUnknownList()                                                    .get(outer)));        }      }    }    jListContacts.setListData(listDisplayNames.toArray());    if (manager != null)    {      manager.setIconSources(listIconSources, listContactIds.toArray());    }    else    {      manager = new IconManager(jListContacts, listIconSources,                                listContactIds.toArray());      manager.startManager();    }    mainFrame.settingsDialog.visibilityPanel.loadSettings();  }  /**   * Initializes all components of this panel.   */  public synchronized void initAll()  {    synchronized (Start.env)    {      Start.env.getConnection().addStatusListener(new StatusListener()      {        public void onIncomingUser(IncomingUserEvent e)        {          action_onIncomingUser(e);        }        public void onOffgoingUser(OffgoingUserEvent e)        {          action_onOffgoingUser(e);        }      });      Start.env.getConnection().addMessagingListener(new MessagingListener()      {        public void onIncomingUrl(IncomingUrlEvent e)        {          action_onIncomingUrl(e);        }        public void onOfflineMessage(OfflineMessageEvent e)        {          action_onOfflineMessage(e);        }        public void onIncomingMessage(IncomingMessageEvent e)        {          action_onIncomingMessage(e);        }      });      if (Start.env.getConnection() != null          && Start.env.getConnection().isLogged())      {        Start.env.synchronizeServerContacts();        Start.env.setKnownList(Start.env.sortContactList(Start.env.getKnownList()));        initContacts();        Start.env.sendKnownList();        OscarInterface.requestOfflineMessages(Start.env.getConnection());      }    }  }  /**   * Appends the specified contact to the list of known contacts.   * @param contact the specified contact   */  public void addContact(Contact contact)  {    synchronized (Start.env)    {      if (!Start.env.getKnownList().contains(contact.getContactId()))      {        Start.env.addKnownContact(contact);        Start.env.setKnownList(Start.env.sortContactList(Start.env.getKnownList()));        initContacts();        Start.env.sendKnownList();        int ownId = Integer.parseInt(Start.env.getOwnContact().getContactId());        ContactList updateList = new ContactList();        updateList.addToContactList(contact);        contact.setIsInInvisibleList(true);        new VisibilityBroadcast(Start.env.getConnection(), ownId, updateList);        try        {          Thread.sleep(100);        }        catch (InterruptedException ie)        {          System.err.println(this.getClass().getName() + ": " + ie.toString());        }        contact.setIsInInvisibleList(false);        new VisibilityBroadcast(Start.env.getConnection(), ownId, updateList);      }    }  }  /**

⌨️ 快捷键说明

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