📄 chatpanel.java
字号:
if (!areaTextComplete.equals("")) { if (!BuddyList.getInstance().checkConnection()) { BuddyList.getInstance().connectionError(); return; } if ((areaTextComplete.startsWith("/all ") == true || areaTextComplete .startsWith("/ame ") == true)) { if (areaTextComplete.startsWith("/ame ") == true) { areaTextComplete = areaTextComplete.replaceAll("^/ame ", "/me "); } else { areaTextComplete = areaTextComplete .replaceAll("^/all ", ""); } if (allText == null) { Hashtable buddyStatuses = BuddyList.getInstance() .getBuddyStatuses(); if (buddyStatuses != null) { Iterator iterator = buddyStatuses.keySet().iterator(); while (iterator.hasNext()) { String user2 = (String) iterator.next(); BuddyStatus buddy2 = (BuddyStatus) buddyStatuses .get(user2); if (buddy2.equals(buddy) == false && buddy2.getConversation() != null && buddy2.getConversation() instanceof ChatPanel) { ((ChatPanel) buddy2.getConversation()) .sendHandler(areaTextComplete); } } } } } areaText = areaTextComplete; if ((buddy.isEncrypting()) && // ( BuddyList.getInstance().isEncrypting() ) && ((buddy.getPubKey() == null) || (buddy.getPubKey() == null))) { KeySelectDialog dialog = new KeySelectDialog("pub"); dialog.showDialog(); if (dialog.getID() != null) { buddy.setPubKey(dialog.getID()); } else { buddy.isEncrypting(false); encryptButton.setIcon(Standard .getIcon("images/buttons/ssl_no.png")); } } if (!sendBuddyMessage(areaText)) { return; } isTyping = false; typingTimer.stop(); SwingUtilities.invokeLater(new Runnable() { public void run() { String text = ConversationText.replaceText(areaText, false); if (text.startsWith(" /me ")) { text = text.replaceAll("^ \\/me ", ""); conversationArea.append(getDate(null) + " <b>* " + BuddyList.getInstance().getMyName() + "</b> " + text + "</font>"); } else { conversationArea.append("<font color='maroon'>" + getDate(null) + " <b>" + BuddyList.getInstance().getMyName() + "</b></font>: " + text); } textEntryArea.setText(""); //com.valhalla.jbother.sound.SoundPlayer.play( "sentSound" // ); } }); } } /** * Sends the message to the resource in the JComboBox * * @param text * the message to send */ public boolean sendBuddyMessage(String text) { String to = buddy.getUser(); int sel = resourceBox.getSelectedIndex(); SecureExtension secureExtension = new SecureExtension(); SecureExtension signedExtension = new SecureExtension("signed"); // if they've selected a resource, send to it if (sel != 0 && sel != 1 && sel != -1) { to += "/" + (String) resourceBox.getSelectedItem(); } ArrayList send = new ArrayList(); if (sel != 1 || resourceBox.getItemCount() <= 2) { send.add(to); } // if they've selected to send to all resources, send to all else { Set keys = buddy.keySet(); Iterator i = keys.iterator(); while (i.hasNext()) { String key = (String) i.next(); if (!key.equals("N/A")) send.add(buddy.getUser() + "/" + key); } } String gnupgSecurityVariant = Settings.getInstance().getProperty( "gnupgSecurityVariant"); String gnupgSecretKey = Settings.getInstance().getProperty( "gnupgSecretKeyID"); String gnupgPublicKey = buddy.getPubKey(); if (JBotherLoader.isGPGEnabled() && // BuddyList.getInstance().isEncrypting() buddy.isEncrypting() && (gnupgSecretKey != null) && (gnupgPublicKey != null)) { GnuPG gnupg = new GnuPG(); String encryptedData = null; String signedData = null; if (gnupgSecurityVariant == null) { gnupgSecurityVariant = "0"; Settings.getInstance().setProperty("gnupgSecurityVariant", "0"); } if ((gnupgSecurityVariant.equals("0")) || (gnupgSecurityVariant.equals("1"))) { encryptedData = gnupg.encryptExtension(text, gnupgSecretKey, gnupgPublicKey); if (encryptedData != null) { secureExtension.setData(encryptedData); } } if ((gnupgSecurityVariant.equals("0")) || (gnupgSecurityVariant.equals("2"))) { signedData = gnupg.signExtension(text, gnupgSecretKey); if (signedData != null) { signedExtension.setData(signedData); } } if ((encryptedData == null) && (signedData == null)) { buddy.isEncrypting(false); encryptButton.setIcon(Standard .getIcon("images/buttons/ssl_no.png")); Standard.warningMessage(null, resources.getString("gnupgError"), resources .getString("gnupgErrorEncrypting") + ".\n\n" + resources.getString("reason") + ":\n\n" + gnupg.getResult() + gnupg.getErrorString() + "\n" + resources .getString("gnupgTryOrSendUnencrypted") + "."); return false; } } for (int i = 0; i < send.size(); i++) { Chat chat = null; if (buddy instanceof MUCBuddyStatus) { MultiUserChat muc = ((MUCBuddyStatus) buddy).getMUC(); chat = muc.createPrivateChat(buddy.getUser()); } else { chat = (Chat) chats.get((String) send.get(i)); } if (chat == null) { chat = BuddyList.getInstance().getConnection().createChat( (String) send.get(i)); chats.put((String) send.get(i), chat); } Message message = chat.createMessage(); if (secureExtension.getData() != null) { message.setBody("[This message is encrypted]"); message.addExtension(secureExtension); } else { message.setBody(text); } if (signedExtension.getData() != null) { message.addExtension(signedExtension); } if (buddy.isAskForDelivered()) { BuddyList.getInstance ().putEventMessage ( message.getPacketID (), message.getTo (), getDate(null), 1); } if (buddy.isAskForDisplayed()) { BuddyList.getInstance ().putEventMessage ( message.getPacketID (), message.getTo (), getDate(null), 2); } if (buddy.isAskForOffline()) { BuddyList.getInstance ().putEventMessage ( message.getPacketID (), message.getTo (), getDate(null), 3); } MessageEventManager.addNotificationsRequests(message, buddy.isAskForOffline(), buddy.isAskForDelivered(), buddy.isAskForDisplayed(), true); try { if (BuddyList.getInstance().checkConnection()) { chat.sendMessage(message); } else { BuddyList.getInstance().connectionError(); } } catch (XMPPException e) { com.valhalla.Logger.debug("Could not send message: " + e.getMessage()); } } return true; } /** * Creates the containing frame */ public void createFrame() { frame = new JFrame(); frame.setContentPane(thisPointer); frame.pack(); frame.setIconImage(Standard.getImage("frameicon.png")); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { if (Settings.getInstance().getProperty("preserveMessages") == null) { closeHandler(); } else { startTimer(); frame.setVisible(false); } } });// frame.addFocusListener(new FocusListener() {// JFrame f = frame; // if (frame !=null)// {// final BuddyStatus buddy2 = buddy; frame.addWindowFocusListener ( new WindowFocusListener() { public void windowGainedFocus (WindowEvent e) {// SwingUtilities.invokeLater(new Runnable() {// public void run() { buddy2.sendNotDisplayedID();// }// }); } public void windowLostFocus(WindowEvent e) { } });// }// else// { String title = buddy.getUser(); if (buddy.getName() != null) { if ((buddy.getName().toLowerCase ()).matches(buddy.getUser())) { title = buddy.getName(); } else { title = buddy.getName() + " (" + buddy.getUser() + ")"; }// title = buddy.getName()// + " (" + title + ")"; } frame.setTitle(title); frame.pack(); String stringWidth = Settings.getInstance().getProperty( "conversationWindowWidth"); String stringHeight = Settings.getInstance().getProperty( "conversationWindowHeight"); if (stringWidth == null) stringWidth = "400"; if (stringHeight == null) stringHeight = "340"; frame.setSize(new Dimension(Integer.parseInt(stringWidth), Integer .parseInt(stringHeight))); // add a resize window listener frame.addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent e) { Dimension dim = frame.getSize(); Settings.getInstance().setProperty("conversationWindowWidth", new Integer((int) dim.getWidth()).toString()); Settings.getInstance().setProperty("conversationWindowHeight", new Integer((int) dim.getHeight()).toString()); } }); Standard.cascadePlacement(frame); setUpDivider(); validate(); } /** * This renders the resource combo box - and displays icons for the online * status of each resource * * @author Adam Olsen * @version 1.0 */ class PresenceComboBoxRenderer extends JLabel implements ListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Presence.Mode mode = null; if (value == null) value = ""; if (buddy.size() != 0) mode = buddy.getPresence(buddy.getHighestResource()); if (value.toString().equals(resources.getString("allResources"))) mode = Presence.Mode.AVAILABLE; if (!value.toString() .equals(resources.getString("defaultResource")) && !value.toString().equals( resources.getString("allResources"))) mode = buddy.getPresence(value.toString()); ImageIcon icon = StatusIconCache.getStatusIcon(mode); if (icon != null) setIcon(icon); setText(value.toString()); return this; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -