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]