psmith      2003/09/10 21:59:24

  Modified:    src/java/org/apache/log4j/chainsaw ThrowableRenderPanel.java
                        LogPanel.java
  Log:
  Can now view the full Stack trace in a pop up dialog.
  
  Revision  Changes    Path
  1.2       +7 -8      
jakarta-log4j/src/java/org/apache/log4j/chainsaw/ThrowableRenderPanel.java
  
  Index: ThrowableRenderPanel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ThrowableRenderPanel.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ThrowableRenderPanel.java 11 Sep 2003 03:35:05 -0000      1.1
  +++ ThrowableRenderPanel.java 11 Sep 2003 04:59:24 -0000      1.2
  @@ -61,6 +61,7 @@
   import java.awt.Color;
   import java.awt.Component;
   import java.awt.event.ActionEvent;
  +import java.awt.event.ActionListener;
   
   import javax.swing.AbstractAction;
   import javax.swing.AbstractCellEditor;
  @@ -97,7 +98,6 @@
       showStackTraceAction =
         new AbstractAction("...") {
             public void actionPerformed(ActionEvent e) {
  -            displaySelectedEntry();
             }
           };
       this.table = table;
  @@ -106,13 +106,10 @@
       btn.setAction(showStackTraceAction);
     }
   
  -  private void displaySelectedEntry() {
  -    Object object =
  -      table.getModel().getValueAt(
  -        table.getSelectedRow(), table.getSelectedColumn() - 1);
  -    LogLog.debug("Would hae displayed " + object);
  -  }
  -
  +     void addActionListener(ActionListener l){
  +             btn.addActionListener(l);
  +     }
  +     
     private void setText(String text) {
       lbl.setText(text);
     }
  @@ -129,8 +126,10 @@
         panel.setForeground(table.getSelectionForeground());
       } else if ((row % 2) != 0) {
         panel.setBackground(COLOR_ODD);
  +       panel.setForeground(table.getSelectionForeground());
       } else {
         panel.setBackground(background);
  +       panel.setForeground(table.getSelectionForeground());
       }
   
       return panel;
  
  
  
  1.5       +42 -2     jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java
  
  Index: LogPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LogPanel.java     11 Sep 2003 03:35:05 -0000      1.4
  +++ LogPanel.java     11 Sep 2003 04:59:24 -0000      1.5
  @@ -71,6 +71,7 @@
   import org.apache.log4j.spi.LoggingEvent;
   
   import java.awt.BorderLayout;
  +import java.awt.Container;
   import java.awt.Dimension;
   import java.awt.FlowLayout;
   import java.awt.Font;
  @@ -120,8 +121,10 @@
   import javax.swing.Action;
   import javax.swing.BorderFactory;
   import javax.swing.Box;
  +import javax.swing.BoxLayout;
   import javax.swing.ButtonGroup;
   import javax.swing.ImageIcon;
  +import javax.swing.JButton;
   import javax.swing.JCheckBox;
   import javax.swing.JCheckBoxMenuItem;
   import javax.swing.JComboBox;
  @@ -138,6 +141,7 @@
   import javax.swing.JSeparator;
   import javax.swing.JSplitPane;
   import javax.swing.JTable;
  +import javax.swing.JTextArea;
   import javax.swing.JTextField;
   import javax.swing.JToolBar;
   import javax.swing.KeyStroke;
  @@ -165,6 +169,8 @@
      */
   public class LogPanel extends DockablePanel implements SettingsListener,
     EventBatchListener {
  +     private ThrowableRenderPanel throwableRenderPanel ;
  +
     private boolean paused = false;
     private boolean logTreePanelVisible = true;
     private final FilterModel filterModel = new FilterModel();
  @@ -181,6 +187,7 @@
     final Action dockingAction;
     final JSortTable table;
     private String profileName = null;
  +  private final JDialog detailDialog = new JDialog((JFrame)null, true);
     final JPanel detailPanel = new JPanel(new BorderLayout());
     private final TableColorizingRenderer renderer =
       new TableColorizingRenderer();
  @@ -234,6 +241,8 @@
   
       table.setAutoCreateColumnsFromModel(false);
   
  +     throwableRenderPanel = new ThrowableRenderPanel(table);
  +
       /**
                * We listen for new Key's coming in so we can get them automatically 
added as columns
               */
  @@ -982,6 +991,39 @@
       undockedToolbar = createDockwindowToolbar();
       externalPanel.add(undockedToolbar, BorderLayout.NORTH);
       undockedFrame.pack();
  +    
  +    Container container = detailDialog.getContentPane();
  +    final JTextArea detailArea = new JTextArea(10,40);
  +    detailArea.setEditable(false);
  +    container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
  +    container.add(new JScrollPane(detailArea));
  +    throwableRenderPanel.addActionListener(new ActionListener(){
  +
  +             public void actionPerformed(ActionEvent e) {
  +                     Object o = table.getValueAt(table.getSelectedRow(), 
table.getSelectedColumn());
  +                     
detailDialog.setTitle(table.getColumnName(table.getSelectedColumn()) + " detail...");
  +                     
  +                     if(o instanceof String[]){
  +                             StringBuffer buf = new StringBuffer();
  +                             String[] ti = (String[]) o;
  +                             buf.append(ti[0]).append("\n");
  +                             for (int i = 1; i < ti.length; i++) {
  +                                     buf.append(ti[i]).append("\n    ");
  +                             }                               
  +                             detailArea.setText(buf.toString());
  +                             
  +                     } else {
  +                             detailArea.setText(o.toString());
  +                     }
  +                     
  +                     detailDialog.setLocation(LogPanel.this.getLocationOnScreen());
  +                     SwingUtilities.invokeLater(new Runnable(){
  +
  +                             public void run() {
  +                                     detailDialog.setVisible(true);
  +                             }});
  +             }});
  +     detailDialog.pack();
     }
   
     private JToolBar createDockwindowToolbar() {
  @@ -1700,11 +1742,9 @@
     //sort column name
     class ChainsawTableColumnModelListener implements TableColumnModelListener {
       private JSortTable table;
  -     private TableCellEditor throwableRenderPanel ;
   
       public ChainsawTableColumnModelListener(JSortTable table) {
         this.table = table;
  -       throwableRenderPanel = new ThrowableRenderPanel(table);
       }
   
       public void columnAdded(TableColumnModelEvent e) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to