Package cli_fmw.utils

Source Code of cli_fmw.utils.ErrorNotificationDialog

/*
* ErrorNotificationDialog.java
*
* Created on 20 Август 2008 г., 15:13
*/
package cli_fmw.utils;

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Frame;
import java.awt.KeyboardFocusManager;
import java.awt.Window;
import java.lang.reflect.InvocationTargetException;
import javax.swing.JOptionPane;

/**
*
* @author  antony
*/
public class ErrorNotificationDialog extends javax.swing.JDialog {
  private static final long      serialVersionUID = 1;
  private String            message, details;
  private boolean            detailVisible = false;

  /** Creates new form ErrorNotificationDialog
   * @param parent
   * @param title
   * @param message
   * @param details
   */
    public ErrorNotificationDialog(Window parent, String title, String message, String details) {
        super(parent, ModalityType.APPLICATION_MODAL);
    this.message = message;
    this.details = details;
        initComponents();

        setTitle(title);
        Color c = tpMessage.getBackground();
        tpMessage.setText(message);
        taDetails.setText(details);   
        taDetails.setCaretPosition(0);
        //btDetails.setVisible(details != null);
    //btDetails.setVisible(false);
    //btSentEmail.setVisible(false);
        tpMessage.setCaretPosition(0);
        btClose.requestFocus();
    //StateSaver.attachTo(this);
    }

    /** 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() {

        spMessageDetail = new javax.swing.JSplitPane();
        spDetailsScroll = new javax.swing.JScrollPane();
        taDetails = new javax.swing.JTextArea();
        pnRoot = new javax.swing.JPanel();
        pnMessage = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        btClose = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        btDetails = new javax.swing.JButton();
        btSentEmail = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tpMessage = new javax.swing.JTextPane();

        spMessageDetail.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

        taDetails.setColumns(20);
        taDetails.setEditable(false);
        taDetails.setFont(new java.awt.Font("DejaVu Sans", 0, 14));
        taDetails.setRows(5);
        spDetailsScroll.setViewportView(taDetails);

        spMessageDetail.setBottomComponent(spDetailsScroll);

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Ошибка");
        setMinimumSize(new java.awt.Dimension(150, 100));
        setModal(true);
        setName("ErrorNotificationDialog"); // NOI18N
        getContentPane().setLayout(new java.awt.GridLayout(1, 0));

        pnRoot.setBorder(javax.swing.BorderFactory.createEmptyBorder(12, 12, 12, 12));
        pnRoot.setLayout(new java.awt.GridLayout(1, 0));

        pnMessage.setLayout(new java.awt.BorderLayout());

        jPanel2.setLayout(new java.awt.BorderLayout());

        btClose.setText("Закрыть");
        btClose.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCloseActionPerformed(evt);
            }
        });
        jPanel2.add(btClose, java.awt.BorderLayout.EAST);

        jPanel3.setLayout(new java.awt.BorderLayout());

        btDetails.setText("Показать Технические детали >>>");
        btDetails.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btDetailsActionPerformed(evt);
            }
        });
        jPanel3.add(btDetails, java.awt.BorderLayout.WEST);

        btSentEmail.setText("Отправить разработчику");
        btSentEmail.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btSentEmailActionPerformed(evt);
            }
        });
        jPanel3.add(btSentEmail, java.awt.BorderLayout.CENTER);

        jPanel2.add(jPanel3, java.awt.BorderLayout.WEST);

        pnMessage.add(jPanel2, java.awt.BorderLayout.SOUTH);

        jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

        tpMessage.setBackground(getBackground());
        tpMessage.setBorder(null);
        tpMessage.setEditable(false);
        tpMessage.setFont(new java.awt.Font("DejaVu Sans Mono", 0, 13));
        jScrollPane1.setViewportView(tpMessage);

        pnMessage.add(jScrollPane1, java.awt.BorderLayout.CENTER);

        pnRoot.add(pnMessage);

        getContentPane().add(pnRoot);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-825)/2, (screenSize.height-228)/2, 825, 228);
    }// </editor-fold>//GEN-END:initComponents

private void btCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCloseActionPerformed
    dispose();
}//GEN-LAST:event_btCloseActionPerformed

private void btSentEmailActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSentEmailActionPerformed
    new ErrorMail().sendMail(message + "\n" + details);
    dispose();
}//GEN-LAST:event_btSentEmailActionPerformed

private void btDetailsActionPerformed(java.awt.event.ActionEvent evt) {                                         
    showDetails(!detailVisible);
}

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btClose;
    private javax.swing.JButton btDetails;
    private javax.swing.JButton btSentEmail;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JPanel pnMessage;
    private javax.swing.JPanel pnRoot;
    private javax.swing.JScrollPane spDetailsScroll;
    private javax.swing.JSplitPane spMessageDetail;
    private javax.swing.JTextArea taDetails;
    private javax.swing.JTextPane tpMessage;
    // End of variables declaration//GEN-END:variables

  private static Window validateWindow(Window window){
    if (window == null){
      return null;
    }
    if (!window.isDisplayable()){
      return null;
    }
    if (!window.isVisible()){
      return null;
    }
    return window;
  }

    public static void showDialog(final String title, final String message, final String details) {
    if (!EventQueue.isDispatchThread()){
      try {
        EventQueue.invokeAndWait(new Runnable() {
          public void run() {
            showDialog(title, "Ошибка многопоточного выполнения! Приложение будет закрыто! Обратитесь к разработчику." + message, details);
          }
        });
      }
      catch (InterruptedException ex) {
        ex.printStackTrace();
      }
      catch (InvocationTargetException ex) {
        ex.printStackTrace();
      }
      System.exit(43);
    }
    Window            win = null;
    KeyboardFocusManager    mng = KeyboardFocusManager.getCurrentKeyboardFocusManager();
    if (win == null) {
      win = validateWindow(mng.getActiveWindow());
    }
    if (win == null) {
      win = validateWindow(mng.getFocusedWindow());
    }
    if (win == null) {
      win = validateWindow(JOptionPane.getRootFrame());
    }
    if (win == null){
      Frame[]      faremes = Frame.getFrames();
      if (faremes != null){
        for (Frame frame : faremes) {
          win = validateWindow(frame);
          if (win != null){
            break;
          }
        }
      }
    }
        ErrorNotificationDialog dlg = new ErrorNotificationDialog(win, title, message, details);
    dlg.toFront();
        dlg.setVisible(true);
    }
   
    private void showDetails(boolean aShow) {
    if (detailVisible == aShow){
      return;
    }
    if (aShow){
      int      detailHeight = spDetailsScroll.getHeight();
      if (detailHeight == 0){
        detailHeight = spDetailsScroll.getPreferredSize().height;
      }
      int      newHeight = getHeight() + detailHeight + spMessageDetail.getDividerSize();
      int      messageSize  = pnMessage.getHeight();
      setSize(getWidth(), newHeight);
      pnRoot.remove(pnMessage);
      pnRoot.add(spMessageDetail);
      spMessageDetail.setDividerLocation(messageSize);
      validate();
      spMessageDetail.setTopComponent(pnMessage);
      spMessageDetail.setDividerLocation(messageSize);
    }
    else{
      int      newHeight = getHeight() - spDetailsScroll.getHeight() - spMessageDetail.getDividerSize();
      pnRoot.remove(spMessageDetail);
      spMessageDetail.remove(pnMessage);
      pnRoot.add(pnMessage);
      setSize(getWidth(), newHeight);
    }
    validate();
    repaint();
    detailVisible = aShow;
       /*if (aShow) {
            btDetails.setText("Скрыть технические детали <<<");           
        } else {
            btDetails.setText("Показать технические детали >>>");
        }    
        spDetails.setVisible(aShow);
        pack();*/
    }
}
TOP

Related Classes of cli_fmw.utils.ErrorNotificationDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.