svn commit: r998011 - in /logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw: ChainsawCyclicBufferTableModel.java Generator.java LogPanel.java TableColorizingRenderer.java

[email protected]
Newsgroups gmane.comp.apache.logging
Message-ID <[email protected]>
Author: sdeboy
Date: Fri Sep 17 07:41:28 2010
New Revision: 998011

URL: http://svn.apache.org/viewvc?rev=998011&view=rev
Log:
Layout improvements
 - You can now click anywhere in the throwable column (only if the column contains an exception) to get the throwable dialog containing the stack trace
 - Updated tutorial event generator to include throwable info
 - Added a left indent of 6 to textpanes used to render the table to provide some whitespace between text entries in the columns

Modified:
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/Generator.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
    logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java?rev=998011&r1=998010&r2=998011&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java Fri Sep 17 07:41:28 2010
@@ -765,11 +765,6 @@ class ChainsawCyclicBufferTableModel ext
    * @see javax.swing.table.TableModel#isCellEditable(int, int)
    */
   public boolean isCellEditable(int rowIndex, int columnIndex) {
-    switch (columnIndex + 1) {
-    case ChainsawColumns.INDEX_THROWABLE_COL_NAME:
-      return true;
-    }
-
     if (getColumnName(columnIndex).toLowerCase().equals(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE)) {
       return true;
     }

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/Generator.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/Generator.java?rev=998011&r1=998010&r2=998011&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/Generator.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/Generator.java Fri Sep 17 07:41:28 2010
@@ -17,13 +17,18 @@
 
 package org.apache.log4j.chainsaw;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.log4j.MDC;
 import org.apache.log4j.NDC;
 import org.apache.log4j.helpers.Constants;
 import org.apache.log4j.plugins.Receiver;
+import org.apache.log4j.spi.LocationInfo;
 import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.spi.ThrowableInformation;
 
 
 /**
@@ -51,11 +56,13 @@ public class Generator extends Receiver 
 
   private LoggingEvent createEvent(
     Level level, Logger logger, String msg, Throwable t) {
+      ThrowableInformation ti = new ThrowableInformation(t);
+      Map properties = new HashMap();
+      properties.put(Constants.APPLICATION_KEY, getName());
+      properties.put(Constants.HOSTNAME_KEY, "localhost");
+      LocationInfo li = new LocationInfo("file", logger.getClass().getName(), "method", "123");
     LoggingEvent e = new LoggingEvent(
-        logger.getClass().getName(), logger, level, msg, t);
-    e.setProperty(Constants.APPLICATION_KEY, getName());
-    e.setProperty(Constants.HOSTNAME_KEY, "localhost");
-
+        logger.getClass().getName(), logger, System.currentTimeMillis(), level, msg, "Thread=1", ti, "NDC value", li, properties);
     return e;
   }
 

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java?rev=998011&r1=998010&r2=998011&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java Fri Sep 17 07:41:28 2010
@@ -220,7 +220,6 @@ public class LogPanel extends DockablePa
   private final JSortTable table;
   private final TableColorizingRenderer renderer;
   private final EventContainer tableModel;
-  private final ThrowableRenderPanel throwableRenderPanel;
   private final JEditorPane detail;
   private final JSplitPane lowerPanel;
   private final DetailPaneUpdater detailPaneUpdater;
@@ -901,7 +900,6 @@ public class LogPanel extends DockablePa
     /*
      * Throwable popup
      */
-    throwableRenderPanel = new ThrowableRenderPanel();
     markerCellEditor = new MarkerCellEditor();
 
     final JDialog detailDialog = new JDialog((JFrame) null, true);
@@ -916,39 +914,36 @@ public class LogPanel extends DockablePa
 
     detailDialog.pack();
 
-    throwableRenderPanel.addActionListener(
-      new ActionListener() {
-        public void actionPerformed(ActionEvent e) {
-          ExtendedLoggingEvent event = tableModel.getRow(table.getSelectedRow());
-          detailDialog.setTitle(
-            table.getColumnName(table.getSelectedColumn()) + " detail...");
-          if (event == null) {
-              detailArea.setText("");
-          } else {
+    table.addMouseListener(new MouseAdapter() {
+        public void mouseClicked(MouseEvent e)
+        {
+            TableColumn column = table.getColumnModel().getColumn(table.columnAtPoint(e.getPoint()));
+            if (!column.getHeaderValue().toString().toUpperCase().equals(ChainsawColumns.getColumnName(ChainsawColumns.INDEX_THROWABLE_COL_NAME))) {
+                return;
+            }
+
+            ExtendedLoggingEvent event = tableModel.getRow(table.getSelectedRow());
+
             //throwable string representation may be a length-one empty array
             String[] ti = event.getThrowableStrRep();
             if (ti != null && ti.length > 0 && (!(ti.length == 1 && ti[0].equals("")))) {
-                StringBuffer buf = new StringBuffer();
-                buf.append(event.getMessage());
-                buf.append("\n");
-                for (int i = 0; i < ti.length; i++) {
-                  buf.append(ti[i]).append("\n    ");
-                }
-
-                detailArea.setText(buf.toString());
-              } else {
-                //no exception
-                detailArea.setText("");
-              }
-          }
+                 detailDialog.setTitle(table.getColumnName(table.getSelectedColumn()) + " detail...");
+                  StringBuffer buf = new StringBuffer();
+                  buf.append(event.getMessage());
+                  buf.append("\n");
+                  for (int i = 0; i < ti.length; i++) {
+                    buf.append(ti[i]).append("\n    ");
+                  }
 
-          SwingHelper.invokeOnEDT(new Runnable() {
-              public void run() {
-                centerAndSetVisible(detailDialog);
-              }
-            });
+                  detailArea.setText(buf.toString());
+                  SwingHelper.invokeOnEDT(new Runnable() {
+                    public void run() {
+                      centerAndSetVisible(detailDialog);
+                    }
+                  });
+                }
         }
-      });
+    });
 
     /*
      * We listen for new Key's coming in so we can get them automatically
@@ -3130,8 +3125,8 @@ public class LogPanel extends DockablePa
     }
 
     /**
-     * If a new column was added to the display and that column was the exception column,
-     * set the cell editor to the throwablerenderer
+     * If a new column was added to the display and that column was the marker column,
+     * set the cell editor to the markerCellEditor
      *
      * @param e
      */
@@ -3141,10 +3136,6 @@ public class LogPanel extends DockablePa
       while (enumeration.hasMoreElements()) {
         TableColumn column = (TableColumn) enumeration.nextElement();
 
-        if (
-          (column.getModelIndex() + 1) == ChainsawColumns.INDEX_THROWABLE_COL_NAME) {
-          column.setCellEditor(throwableRenderPanel);
-        }
         if (column.getHeaderValue().toString().toLowerCase().equals(ChainsawConstants.LOG4J_MARKER_COL_NAME_LOWERCASE)) {
           column.setCellEditor(markerCellEditor);
         }

Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java?rev=998011&r1=998010&r2=998011&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java Fri Sep 17 07:41:28 2010
@@ -116,6 +116,7 @@ public class TableColorizingRenderer ext
   private boolean useRelativeTimesToPrevious;
   private EventContainer eventContainer;
   private LogPanelPreferenceModel logPanelPreferenceModel;
+  private SimpleAttributeSet insetAttributeSet;
 
     /**
    * Creates a new TableColorizingRenderer object.
@@ -134,6 +135,8 @@ public class TableColorizingRenderer ext
     boldAttributeSet = new SimpleAttributeSet();
     StyleConstants.setBold(boldAttributeSet, true);
 
+    insetAttributeSet = new SimpleAttributeSet();
+    StyleConstants.setLeftIndent(insetAttributeSet, 6);
     //throwable col may have a tab..if so, render the tab as col zero
     int pos = 0;
     int align = TabStop.ALIGN_LEFT;
@@ -155,10 +158,10 @@ public class TableColorizingRenderer ext
 
     multiLineTextPane.setEditable(false);
     multiLineTextPane.setFont(levelTextPane.getFont());
-    Insets leftRightInsets = new Insets(0, 5, 0, 5);
-    multiLineTextPane.setMargin(leftRightInsets);
-    singleLineTextPane.setMargin(leftRightInsets);
-    levelTextPane.setMargin(leftRightInsets);
+
+    multiLineTextPane.setParagraphAttributes(insetAttributeSet, false);
+    singleLineTextPane.setParagraphAttributes(insetAttributeSet, false);
+    levelTextPane.setParagraphAttributes(insetAttributeSet, false);
   }
 
   public void setToolTipsVisible(boolean toolTipsVisible) {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.