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]