/* * ExceptionHandler.java * * Created on 02 June 2005, 02:27 */ package org.owasp.webscarab.util.swing; import java.awt.Component; import java.awt.Frame; import java.io.PrintStream; /** * * @author rogan */ public class ExceptionHandler extends javax.swing.JDialog { /** * */ private static final long serialVersionUID = 7592992184923087071L; private static Frame _parent = null; private static boolean _disabled = false; /** Creates new form ExceptionHandler */ public ExceptionHandler() { super(_parent, true); initComponents(); getRootPane().setDefaultButton(okButton); } public static void setParentComponent(Component component) { _parent = null; while (component != null && component.getParent() != null) component = component.getParent(); if (component != null && component instanceof Frame) _parent = (Frame) component; } public void handle(Throwable t) { System.setProperty("sun.awt.exception.handler", ""); t.printStackTrace(); if (_disabled) return; DocumentOutputStream dos = new DocumentOutputStream(); t.printStackTrace(new PrintStream(dos)); exceptionTextArea.setDocument(dos.getDocument()); setVisible(true); if (!disableCheckBox.isSelected()) { System.setProperty("sun.awt.exception.handler", this.getClass().getName()); } else { _disabled = true; } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents jScrollPane1 = new javax.swing.JScrollPane(); exceptionTextArea = new javax.swing.JTextArea(); disableCheckBox = new javax.swing.JCheckBox(); okButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); jScrollPane1.setPreferredSize(new java.awt.Dimension(600, 300)); exceptionTextArea.setBackground(new java.awt.Color(204, 204, 204)); exceptionTextArea.setEditable(false); jScrollPane1.setViewportView(exceptionTextArea); getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER); disableCheckBox.setMnemonic('S'); disableCheckBox.setText("Stop displaying exceptions"); getContentPane().add(disableCheckBox, java.awt.BorderLayout.NORTH); okButton.setText("Ok"); okButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okButtonActionPerformed(evt); } }); getContentPane().add(okButton, java.awt.BorderLayout.SOUTH); pack(); }//GEN-END:initComponents private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed dispose(); }//GEN-LAST:event_okButtonActionPerformed /** * @param args the command line arguments */ public static void main(String args[]) { System.setProperty("sun.awt.exception.handler", ExceptionHandler.class.getName()); javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { throw new RuntimeException("blah"); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox disableCheckBox; private javax.swing.JTextArea exceptionTextArea; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JButton okButton; // End of variables declaration//GEN-END:variables }