📄 contactpanel.java
字号:
* 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 + -