01: package com.calipso.reportgenerator.common;
02:
03: import javax.swing.*;
04: import java.awt.event.WindowEvent;
05: import java.awt.event.WindowAdapter;
06: import java.awt.event.ActionListener;
07: import java.awt.event.ActionEvent;
08: import java.awt.*;
09: import java.io.StringWriter;
10: import java.io.PrintWriter;
11:
12: public class ShowExceptionStackTrace extends JDialog {
13: private JScrollPane scrollPane;
14: private JPanel conteinerBtnPanel;
15: private JPanel southPanel;
16: private JButton aceptarBtn;
17: private JTextArea textArea;
18:
19: public static void showStackTrace(Exception e) {
20: ShowExceptionStackTrace stackTrace = new ShowExceptionStackTrace(
21: new JFrame(), true);
22: stackTrace.textArea.append(stackTrace.getStackTraceAsString(e));
23: stackTrace.setVisible(true);
24:
25: }
26:
27: public ShowExceptionStackTrace(java.awt.Frame parent, boolean modal) {
28: super (parent, modal);
29: initComponents();
30: }
31:
32: private void initComponents() {
33: scrollPane = new JScrollPane();
34: textArea = new JTextArea();
35: southPanel = new JPanel();
36: conteinerBtnPanel = new JPanel();
37: aceptarBtn = new JButton();
38: textArea.setEditable(false);
39: setTitle("Stack Trace");
40: addWindowListener(new WindowAdapter() {
41: public void windowClosing(WindowEvent evt) {
42: closeDialog();
43: }
44: });
45: aceptarBtn.addActionListener(new ActionListener() {
46: public void actionPerformed(ActionEvent e) {
47: closeDialog();
48: }
49: });
50:
51: scrollPane.setViewportView(textArea);
52:
53: getContentPane().add(scrollPane, BorderLayout.CENTER);
54:
55: southPanel.setLayout(new BorderLayout());
56:
57: aceptarBtn.setText("Aceptar");
58: conteinerBtnPanel.add(aceptarBtn);
59:
60: southPanel.add(conteinerBtnPanel, BorderLayout.EAST);
61:
62: getContentPane().add(southPanel, BorderLayout.SOUTH);
63:
64: pack();
65: java.awt.Dimension screenSize = java.awt.Toolkit
66: .getDefaultToolkit().getScreenSize();
67: setSize(new java.awt.Dimension(600, 500));
68: setLocation((screenSize.width - 600) / 2,
69: (screenSize.height - 500) / 2);
70: }
71:
72: private void closeDialog() {
73: setVisible(false);
74: dispose();
75: }
76:
77: /**
78: * Retorna String object con el cpntenido de stack trace
79: * @param e
80: * @return
81: */
82: private String getStackTraceAsString(Exception e) {
83: StringWriter stringWriter = new StringWriter();
84: PrintWriter printWriter = new PrintWriter(stringWriter);
85: e.printStackTrace(printWriter);
86: StringBuffer error = stringWriter.getBuffer();
87: return error.toString();
88: }
89:
90: public static void main(String args[]) {
91: new ShowExceptionStackTrace(new JFrame(), true)
92: .setVisible(true);
93: }
94: }
|