summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-03 16:11:35 +0200
committerSimon Rettberg2015-08-03 16:11:35 +0200
commitc476a4e09af89f3c428d2438466a4ead653368c3 (patch)
tree87fe5f8b2a7642258d1431dc8864c6ba1ce54f6b /dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper
parentMerge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1 (diff)
downloadtutor-module-c476a4e09af89f3c428d2438466a4ead653368c3.tar.gz
tutor-module-c476a4e09af89f3c428d2438466a4ead653368c3.tar.xz
tutor-module-c476a4e09af89f3c428d2438466a4ead653368c3.zip
[client] Add debug window (VMarg -Dlog=true)
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DebugWindow.java95
1 files changed, 95 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DebugWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DebugWindow.java
new file mode 100644
index 00000000..14d96738
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DebugWindow.java
@@ -0,0 +1,95 @@
+package org.openslx.dozmod.gui.helper;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Insets;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextPane;
+import javax.swing.border.BevelBorder;
+import javax.swing.border.EmptyBorder;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.StyledDocument;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Level;
+import org.apache.log4j.Priority;
+import org.apache.log4j.spi.LoggingEvent;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+
+@SuppressWarnings("serial")
+public class DebugWindow extends JPanel {
+
+ private static final DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm:ss");
+
+ private final JTextPane txtLog;
+
+ public DebugWindow() {
+ setLayout(new BorderLayout());
+ txtLog = new JTextPane();
+ txtLog.setEditable(false);
+ txtLog.setBackground(Color.WHITE);
+ txtLog.setForeground(Color.BLACK);
+ txtLog.setBorder(new EmptyBorder(new Insets(5, 5, 5, 5)));
+ JScrollPane sp = new JScrollPane(txtLog, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+ JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ sp.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
+ add(sp, BorderLayout.CENTER);
+ registerLogger();
+ validate();
+ }
+
+ private void registerLogger() {
+ Appender appender = new AppenderSkeleton() {
+
+ @Override
+ public boolean requiresLayout() {
+ return false;
+ }
+
+ @Override
+ public void close() {
+ // Nothing to do
+ }
+
+ @Override
+ protected void append(LoggingEvent event) {
+ Level l = event.getLevel();
+ Color c;
+ if (l.isGreaterOrEqual(Priority.ERROR)) {
+ c = Color.RED;
+ } else if (l.isGreaterOrEqual(Priority.WARN)) {
+ c = Color.ORANGE;
+ } else if (l.isGreaterOrEqual(Priority.INFO)) {
+ c = Color.BLACK;
+ } else {
+ c = Color.GRAY;
+ }
+ log("[" + formatter.print(event.getTimeStamp()) + "] ", Color.BLACK);
+ log(event.getThreadName() + "@" + event.getLoggerName().replaceAll("^.*\\.", ""), Color.GRAY);
+ log(" " + event.getMessage() + "\n", c);
+ }
+ };
+ BasicConfigurator.configure(appender);
+ }
+
+ private void log(String msg, Color c) {
+ StyledDocument doc = txtLog.getStyledDocument();
+ SimpleAttributeSet keyWord = new SimpleAttributeSet();
+ StyleConstants.setForeground(keyWord, c);
+ try {
+ doc.insertString(doc.getLength(), msg, keyWord);
+ } catch (BadLocationException e) {
+ e.printStackTrace(); // Do not use LOGGER here to prevent infinite loop
+ }
+ txtLog.setCaretPosition(doc.getLength());
+ }
+
+}