From f20525d84ea9654f039e2b66ef8853794b80f09a Mon Sep 17 00:00:00 2001 From: Yana Stamcheva Date: Wed, 17 May 2006 15:53:31 +0000 Subject: [PATCH] tooltips for smileys icons in chat editor pane --- .../main/message/ChatConversationPanel.java | 59 +++++++++++++------ .../impl/gui/utils/ImageLoader.java | 20 +++++++ .../impl/gui/utils/MyImageView.java | 3 +- 3 files changed, 63 insertions(+), 19 deletions(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/message/ChatConversationPanel.java b/src/net/java/sip/communicator/impl/gui/main/message/ChatConversationPanel.java index 0f08cd149..7966fd3da 100755 --- a/src/net/java/sip/communicator/impl/gui/main/message/ChatConversationPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/message/ChatConversationPanel.java @@ -21,6 +21,7 @@ import javax.swing.BorderFactory; import javax.swing.JEditorPane; import javax.swing.JScrollPane; +import javax.swing.ToolTipManager; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; import javax.swing.text.BadLocationException; @@ -65,13 +66,16 @@ public ChatConversationPanel(ChatPanel chatPanel) { super(); + this.document = (HTMLDocument)editorKit.createDefaultDocument(); + this.chatEditorPane.setContentType("text/html"); this.chatEditorPane.setEditable(false); - this.chatEditorPane.setEditorKit(editorKit); - - this.document = (HTMLDocument)this.chatEditorPane.getDocument(); + this.chatEditorPane.setEditorKitForContentType("text/html", editorKit); + this.chatEditorPane.setEditorKit(editorKit); + + this.chatEditorPane.setDocument(document); Constants.loadStyle(document.getStyleSheet()); @@ -86,6 +90,8 @@ public ChatConversationPanel(ChatPanel chatPanel) { this.getViewport().add(chatEditorPane); this.getVerticalScrollBar().setUnitIncrement(30); + + ToolTipManager.sharedInstance().registerComponent(chatEditorPane); } private void initEditor(){ @@ -101,11 +107,9 @@ private void initEditor(){ try { this.document.insertAfterStart(root, chatHeader); } catch (BadLocationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + logger.error("Insert in the HTMLDocument failed.", e); } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + logger.error("Insert in the HTMLDocument failed.", e); } } @@ -226,8 +230,8 @@ private String processSmilies(String message) { ArrayList smiliesList = ImageLoader.getDefaultSmiliesPack(); - String msgString = message; - + String regexp = ""; + for (int i = 0; i < smiliesList.size(); i++) { Smily smily = (Smily) smiliesList.get(i); @@ -235,17 +239,36 @@ private String processSmilies(String message) { String[] smilyStrings = smily.getSmilyStrings(); for (int j = 0; j < smilyStrings.length; j++) { - - if (message.indexOf(smilyStrings[j]) != -1) { - - msgString = msgString.replaceAll(StringUtils - .replaceSpecialRegExpChars(smilyStrings[j]), - ""); - } + regexp += StringUtils + .replaceSpecialRegExpChars(smilyStrings[j]) + "|"; } } - - return msgString; + regexp = regexp.substring(0, regexp.length()-1); + + Pattern p = Pattern.compile(regexp); + + Matcher m = p.matcher(message); + + StringBuffer msgBuffer = new StringBuffer(); + + boolean matchSuccessfull = false; + + while (m.find()) { + if(!matchSuccessfull) + matchSuccessfull = true; + + String matchGroup = m.group().trim(); + + String replacement + = "" + matchGroup +""; + + m.appendReplacement(msgBuffer, replacement); + } + m.appendTail(msgBuffer); + + return msgBuffer.toString(); } /** diff --git a/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java b/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java index 5679c6152..345f111f8 100644 --- a/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java +++ b/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java @@ -508,6 +508,26 @@ public static ArrayList getDefaultSmiliesPack() { return defaultPackList; } + public static Smily getSmily(String smilyString){ + ArrayList smiliesList = getDefaultSmiliesPack(); + + for (int i = 0; i < smiliesList.size(); i++) { + + Smily smily = (Smily) smiliesList.get(i); + + String[] smilyStrings = smily.getSmilyStrings(); + + for (int j = 0; j < smilyStrings.length; j++) { + + String srcString = smilyStrings[j]; + + if(srcString.equals(smilyString)) + return smily; + } + } + return null; + } + /** * Loads an image from a given image identifier. */ diff --git a/src/net/java/sip/communicator/impl/gui/utils/MyImageView.java b/src/net/java/sip/communicator/impl/gui/utils/MyImageView.java index f955f4053..c2055a05e 100644 --- a/src/net/java/sip/communicator/impl/gui/utils/MyImageView.java +++ b/src/net/java/sip/communicator/impl/gui/utils/MyImageView.java @@ -42,9 +42,10 @@ import javax.swing.text.ViewFactory; import javax.swing.text.html.HTML; import javax.swing.text.html.HTMLDocument; +import javax.swing.text.html.ImageView; import javax.swing.text.html.StyleSheet; -public class MyImageView extends View implements ImageObserver { +public class MyImageView extends ImageView implements ImageObserver { // --- Attribute Values ------------------------------------------