aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/util/swing/StyledHTMLEditorPane.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/java/sip/communicator/util/swing/StyledHTMLEditorPane.java')
-rw-r--r--src/net/java/sip/communicator/util/swing/StyledHTMLEditorPane.java108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/net/java/sip/communicator/util/swing/StyledHTMLEditorPane.java b/src/net/java/sip/communicator/util/swing/StyledHTMLEditorPane.java
new file mode 100644
index 0000000..14b1fef
--- /dev/null
+++ b/src/net/java/sip/communicator/util/swing/StyledHTMLEditorPane.java
@@ -0,0 +1,108 @@
+/*
+ * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package net.java.sip.communicator.util.swing;
+
+import java.io.*;
+
+import javax.swing.*;
+import javax.swing.text.*;
+import javax.swing.text.html.*;
+
+import net.java.sip.communicator.util.*;
+
+/**
+ * A custom styled HTML editor pane.
+ *
+ * @author Yana Stamcheva
+ */
+public class StyledHTMLEditorPane
+ extends JEditorPane
+{
+ /**
+ * The serial version id.
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * The logger for this class.
+ */
+ private final Logger logger = Logger.getLogger(StyledHTMLEditorPane.class);
+
+ /**
+ * The editor kit of this editor pane.
+ */
+ private final HTMLEditorKit editorKit;
+
+ /**
+ * The document of this editor pane.
+ */
+ private final HTMLDocument document;
+
+ /**
+ * Creates an instance of <tt>StyledHTMLEditorPane</tt>.
+ */
+ public StyledHTMLEditorPane()
+ {
+ editorKit = new SIPCommHTMLEditorKit(this);
+
+ this.document = (HTMLDocument) editorKit.createDefaultDocument();
+
+ this.setContentType("text/html");
+ this.setEditorKitForContentType("text/html", editorKit);
+ this.setEditorKit(editorKit);
+ this.setDocument(document);
+
+ putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
+ }
+
+ /**
+ * Appends text to end of the editor pane.
+ *
+ * @param text the text to append
+ */
+ public void appendToEnd(String text)
+ {
+ Element root = document.getDefaultRootElement();
+ try
+ {
+ document.insertAfterEnd(root
+ .getElement(root.getElementCount() - 1), text);
+ }
+ catch (BadLocationException e)
+ {
+ logger.error("Insert in the HTMLDocument failed.", e);
+ }
+ catch (IOException e)
+ {
+ logger.error("Insert in the HTMLDocument failed.", e);
+ }
+ }
+
+ /**
+ * Inserts the given text in the beginning of the editor pane.
+ *
+ * @param text the text to insert
+ */
+ public void insertAfterStart(String text)
+ {
+ Element root = this.document.getDefaultRootElement();
+
+ try
+ {
+ this.document.insertBeforeStart(root
+ .getElement(0), text);
+ }
+ catch (BadLocationException e)
+ {
+ logger.error("Insert in the HTMLDocument failed.", e);
+ }
+ catch (IOException e)
+ {
+ logger.error("Insert in the HTMLDocument failed.", e);
+ }
+ }
+}