diff options
| author | Simon Rettberg | 2015-08-03 16:11:35 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2015-08-03 16:11:35 +0200 |
| commit | c476a4e09af89f3c428d2438466a4ead653368c3 (patch) | |
| tree | 87fe5f8b2a7642258d1431dc8864c6ba1ce54f6b /dozentenmodul/src/main/java/org/openslx | |
| parent | Merge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1 (diff) | |
| download | tutor-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')
| -rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java | 9 | ||||
| -rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/DebugWindow.java | 95 |
2 files changed, 104 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java index 2279d3c1..14a141df 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java @@ -25,6 +25,7 @@ import org.openslx.dozmod.App; import org.openslx.dozmod.Config; import org.openslx.dozmod.gui.Gui.GuiCallable; import org.openslx.dozmod.gui.helper.CompositePage; +import org.openslx.dozmod.gui.helper.DebugWindow; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.window.DisclaimerWindow; import org.openslx.dozmod.gui.window.ImageListWindow; @@ -169,6 +170,14 @@ public abstract class MainWindow { registerPage(new ImageListWindow()); registerPage(new LectureListWindow()); + // Debug? + if (System.getProperty("log") != null) { + DebugWindow win = new DebugWindow(); + win.setMinimumSize(new Dimension(0, 250)); + win.setPreferredSize(win.getMinimumSize()); + mainWindow.getContentPane().add(win, BorderLayout.PAGE_END); + } + // center the window on the primary monitor mainWindow.getContentPane().add(mainContainer, BorderLayout.CENTER); mainWindow.setVisible(true); 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()); + } + +} |
