prototype Java log window and sticky configuration
[jalview.git] / src / jalview / gui / JalviewAppender.java
diff --git a/src/jalview/gui/JalviewAppender.java b/src/jalview/gui/JalviewAppender.java
new file mode 100644 (file)
index 0000000..8d3f990
--- /dev/null
@@ -0,0 +1,39 @@
+package jalview.gui;
+
+import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
+
+import org.apache.log4j.WriterAppender;
+import org.apache.log4j.spi.LoggingEvent;
+
+/**
+ * From http://textareaappender.zcage.com/
+ * the means to capture the logs, too.
+ * Simple example of creating a Log4j appender that will
+ * write to a JTextArea. 
+ */
+public class JalviewAppender extends WriterAppender {
+        
+        static private JTextArea jTextArea = null;
+        
+        /** Set the target JTextArea for the logging information to appear. */
+        static public void setTextArea(JTextArea jTextArea) {
+                JalviewAppender.jTextArea = jTextArea;
+        }
+        /**
+         * Format and then append the loggingEvent to the stored
+         * JTextArea.
+         */
+        public void append(LoggingEvent loggingEvent) {
+                final String message = this.layout.format(loggingEvent);
+
+                // Append formatted message to textarea using the Swing Thread.
+                SwingUtilities.invokeLater(new Runnable() {
+                        public void run() {
+                          if (jTextArea!=null) {
+                            jTextArea.append(message);
+                          }
+                        }
+                });
+        }
+}
\ No newline at end of file