1 package org.columba.core.gui.logdisplay; 17 18 import java.awt.BorderLayout ; 19 import java.util.logging.LogRecord ; 20 21 import javax.swing.JDialog ; 22 import javax.swing.JFrame ; 23 import javax.swing.JLabel ; 24 import javax.swing.JPanel ; 25 import javax.swing.JScrollPane ; 26 import javax.swing.JTextArea ; 27 28 import org.frapuccino.awt.WindowsUtil; 29 30 import com.jgoodies.forms.builder.DefaultFormBuilder; 31 import com.jgoodies.forms.layout.FormLayout; 32 33 37 public class LogRecordPanel extends JPanel { 38 39 private LogRecord logRecord; 40 41 46 public LogRecordPanel(LogRecord record) { 47 super(); 48 logRecord = record; 49 initComponents(); 50 } 51 52 55 private void initComponents() { 56 57 JPanel main = new JPanel (); 58 59 FormLayout layout = new FormLayout("right:pref, 3dlu, pref:grow, 7dlu, right:pref, 3dlu, pref:grow", ""); 61 DefaultFormBuilder builder = new DefaultFormBuilder(layout, main); 62 63 builder.appendSeparator("Details"); 64 65 String source; 66 if (logRecord.getSourceClassName() == null) { 67 source = "Unknown"; 68 } else { 69 source = logRecord.getSourceClassName() + "." + logRecord.getSourceMethodName() + "()"; 70 } 71 builder.append("Source:", new JLabel (source), 5); 72 73 builder.append("Time:", new JLabel (Long.toString(logRecord.getMillis()))); 74 builder.append("level:", new JLabel (logRecord.getLevel().toString())); 75 76 builder.append("Thread:", new JLabel (Integer.toString(logRecord.getThreadID()))); 77 builder.append("Seq nr:", new JLabel (Long.toString(logRecord.getSequenceNumber()))); 78 79 builder.appendSeparator("Message"); 80 81 JTextArea area = new JTextArea (logRecord.getMessage()); 82 area.setLineWrap(true); 83 area.setRows(5); 84 area.setEditable(false); 85 builder.append(new JScrollPane (area), 7); 86 87 Throwable thrown = logRecord.getThrown(); 88 if (thrown != null) { 89 builder.appendSeparator("Exception"); 90 StringBuffer buffer = new StringBuffer (); 91 92 StackTraceElement [] stackTrace = thrown.getStackTrace(); 93 for (int i = 0; i < stackTrace.length; i++) { 94 buffer.append(stackTrace[i]); 95 buffer.append("\n"); 96 } 97 area = new JTextArea (buffer.toString()); 98 area.setLineWrap(true); 99 area.setRows(5); 100 area.setEditable(false); 101 builder.append(new JScrollPane (area), 7); 102 } 103 104 setLayout(new BorderLayout ()); 105 add(main, BorderLayout.CENTER); 106 } 107 108 113 public static void showRecord(JFrame owner, LogRecord record) { 114 JDialog dialog = new JDialog (owner, "Log record", false); 115 dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 116 dialog.getContentPane().setLayout(new BorderLayout ()); 117 dialog.getContentPane().add(new LogRecordPanel(record), BorderLayout.CENTER); 118 dialog.pack(); 119 dialog.setVisible(true); 120 WindowsUtil.centerInScreen(dialog); 121 } 122 } 123 | Popular Tags |