--- /dev/null
+package com.axyus.swing.components;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JComponent;
+import javax.swing.JRootPane;
+import javax.swing.KeyStroke;
+
+/**
+ * @author CBO
+ */
+public class UnexpectedErrorDlg extends javax.swing.JDialog {
+
+ private final CloseWindowRequestHandler closeWindowRequestHandler;
+
+ public UnexpectedErrorDlg(java.awt.Frame parent, boolean modal, Throwable throwable, CloseWindowRequestHandler closeWindowRequestHandler) {
+ super(parent, modal);
+ this.closeWindowRequestHandler = closeWindowRequestHandler;
+ initComponents();
+ setLocationRelativeTo(parent);
+ StringWriter sw = new StringWriter();
+ throwable.printStackTrace(new PrintWriter(sw));
+ erreurTA.setText(sw.toString());
+ erreurTA.setCaretPosition(0);
+ }
+ /** 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.
+ */
+ @SuppressWarnings("unchecked")
+ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jScrollPane1 = new javax.swing.JScrollPane();
+ erreurTA = new javax.swing.JTextArea();
+ jButton1 = new javax.swing.JButton();
+ jLabel1 = new javax.swing.JLabel();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+ setTitle("Erreur inattendue"); // NOI18N
+
+ erreurTA.setColumns(20);
+ erreurTA.setRows(5);
+ jScrollPane1.setViewportView(erreurTA);
+
+ jButton1.setText("Fermer");
+ jButton1.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButton1ActionPerformed(evt);
+ }
+ });
+
+ jLabel1.setText("<html><b>L'application a rencontré un problème et va se fermer.</b><br>Nous vous prions de nous excuser pour le désagrément encouru.<br>Vous trouverez ci-après le détail de l'erreur <b>à joindre pour un support technique</b></html>"); // NOI18N
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+ getContentPane().setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 675, Short.MAX_VALUE)
+ .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 675, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jButton1)
+ .addContainerGap())
+ );
+
+ pack();
+ }// </editor-fold>//GEN-END:initComponents
+
+ private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+ closeWindowRequestHandler.onCloseWindowRequest(this);
+ setVisible(false);
+ }//GEN-LAST:event_jButton1ActionPerformed
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JTextArea erreurTA;
+ private javax.swing.JButton jButton1;
+ private javax.swing.JLabel jLabel1;
+ private javax.swing.JScrollPane jScrollPane1;
+ // End of variables declaration//GEN-END:variables
+
+ @Override
+ protected JRootPane createRootPane() {
+ KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0);
+ JRootPane rp = new JRootPane();
+ Action escapeAction = new AbstractAction("Annuler") {
+ @Override
+ public void actionPerformed(ActionEvent evt) {
+ jButton1ActionPerformed(evt);
+ }
+ };
+ rp.registerKeyboardAction(escapeAction,"TOTOTOTO",ks,JComponent.WHEN_IN_FOCUSED_WINDOW);
+ return rp;
+ }
+
+ public static interface CloseWindowRequestHandler {
+
+ void onCloseWindowRequest(UnexpectedErrorDlg unexpectedErrorDlg);
+ }
+}