// uniCenta oPOS - Touch Friendly Point Of Sale // Copyright (c) 2009-2013 uniCenta & previous Openbravo POS works // http://www.unicenta.net/unicentaopos // // This file is part of uniCenta oPOS // // uniCenta oPOS is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // uniCenta oPOS is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>. package com.openbravo.data.gui; import com.openbravo.data.loader.LocalRes; import java.awt.*; import javax.swing.*; /** * * @author adrian */ public class JMessageDialog extends javax.swing.JDialog { /** Creates new form JMessageDialog */ private JMessageDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); } /** Creates new form JMessageDialog */ private JMessageDialog(java.awt.Dialog parent, boolean modal) { super(parent, modal); } private static Window getWindow(Component parent) { if (parent == null) { return new JFrame(); } else if (parent instanceof Frame || parent instanceof Dialog) { return (Window) parent; } else { return getWindow(parent.getParent()); } } public static void showMessage(Component parent, MessageInf inf) { Window window = getWindow(parent); JMessageDialog myMsg; if (window instanceof Frame) { myMsg = new JMessageDialog((Frame) window, true); } else { myMsg = new JMessageDialog((Dialog) window, true); } myMsg.initComponents(); myMsg.applyComponentOrientation(parent.getComponentOrientation()); myMsg.jscrException.setVisible(false); myMsg.getRootPane().setDefaultButton(myMsg.jcmdOK); myMsg.jlblIcon.setIcon(inf.getSignalWordIcon()); myMsg.jlblErrorCode.setText(inf.getErrorCodeMsg()); myMsg.jlblMessage.setText("<html>" + inf.getMessageMsg()); // Capturamos el texto de la excepcion... if (inf.getCause() == null) { myMsg.jtxtException.setText(null); } else { StringBuilder sb = new StringBuilder(); if (inf.getCause() instanceof Throwable) { Throwable t = (Throwable) inf.getCause(); while (t != null) { sb.append(t.getClass().getName()); sb.append(": \n"); sb.append(t.getMessage()); sb.append("\n\n"); t = t.getCause(); } } else if (inf.getCause() instanceof Throwable[]) { Throwable[] m_aExceptions = (Throwable[]) inf.getCause(); for (int i = 0; i < m_aExceptions.length; i++) { sb.append(m_aExceptions[i].getClass().getName()); sb.append(": \n"); sb.append(m_aExceptions[i].getMessage()); sb.append("\n\n"); } } else if (inf.getCause() instanceof Object[]) { Object [] m_aObjects = (Object []) inf.getCause(); for (int i = 0; i < m_aObjects.length; i++) { sb.append(m_aObjects[i].toString()); sb.append("\n\n"); } } else if (inf.getCause() instanceof String) { sb.append(inf.getCause().toString()); } else { sb.append(inf.getCause().getClass().getName()); sb.append(": \n"); sb.append(inf.getCause().toString()); } myMsg.jtxtException.setText(sb.toString()); } myMsg.jtxtException.setCaretPosition(0); //myMsg.show(); myMsg.setVisible(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. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jPanel4 = new javax.swing.JPanel(); jlblErrorCode = new javax.swing.JLabel(); jlblMessage = new javax.swing.JLabel(); jscrException = new javax.swing.JScrollPane(); jtxtException = new javax.swing.JTextArea(); jlblIcon = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); jPanel2 = new javax.swing.JPanel(); jcmdOK = new javax.swing.JButton(); jcmdMore = new javax.swing.JButton(); setTitle(LocalRes.getIntString("title.message")); // NOI18N setResizable(false); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); jPanel4.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5)); jPanel4.setLayout(new javax.swing.BoxLayout(jPanel4, javax.swing.BoxLayout.Y_AXIS)); jlblErrorCode.setFont(jlblErrorCode.getFont().deriveFont(jlblErrorCode.getFont().getStyle() & ~java.awt.Font.BOLD, jlblErrorCode.getFont().getSize()-2)); jlblErrorCode.setText("jlblErrorCode"); jPanel4.add(jlblErrorCode); jlblMessage.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jlblMessage.setText("jlblMessage"); jlblMessage.setVerticalAlignment(javax.swing.SwingConstants.TOP); jlblMessage.setMinimumSize(new java.awt.Dimension(200, 100)); jlblMessage.setPreferredSize(new java.awt.Dimension(200, 100)); jPanel4.add(jlblMessage); jscrException.setAlignmentX(0.0F); jtxtException.setEditable(false); jscrException.setViewportView(jtxtException); jPanel4.add(jscrException); getContentPane().add(jPanel4, java.awt.BorderLayout.CENTER); jlblIcon.setVerticalAlignment(javax.swing.SwingConstants.TOP); jlblIcon.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10)); getContentPane().add(jlblIcon, java.awt.BorderLayout.LINE_START); jPanel3.setLayout(new java.awt.BorderLayout()); jcmdOK.setText(LocalRes.getIntString("button.ok")); // NOI18N jcmdOK.setMaximumSize(new java.awt.Dimension(65, 33)); jcmdOK.setMinimumSize(new java.awt.Dimension(65, 33)); jcmdOK.setPreferredSize(new java.awt.Dimension(65, 33)); jcmdOK.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jcmdOKActionPerformed(evt); } }); jPanel2.add(jcmdOK); jcmdMore.setText(LocalRes.getIntString("button.information")); // NOI18N jcmdMore.setMaximumSize(new java.awt.Dimension(65, 33)); jcmdMore.setMinimumSize(new java.awt.Dimension(65, 33)); jcmdMore.setPreferredSize(new java.awt.Dimension(65, 33)); jcmdMore.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jcmdMoreActionPerformed(evt); } }); jPanel2.add(jcmdMore); jPanel3.add(jPanel2, java.awt.BorderLayout.LINE_END); getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-455)/2, (screenSize.height-171)/2, 455, 171); }// </editor-fold>//GEN-END:initComponents private void jcmdMoreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcmdMoreActionPerformed // Add your handling code here: jcmdMore.setEnabled(false); jscrException.setVisible(true); setSize(getWidth(), 310); // JG 25 May 2013 change for JDK 7 validate(); // validateTree(); }//GEN-LAST:event_jcmdMoreActionPerformed private void jcmdOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcmdOKActionPerformed // Add your handling code here: setVisible(false); dispose(); }//GEN-LAST:event_jcmdOKActionPerformed /** Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog setVisible(false); dispose(); }//GEN-LAST:event_closeDialog // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JButton jcmdMore; private javax.swing.JButton jcmdOK; private javax.swing.JLabel jlblErrorCode; private javax.swing.JLabel jlblIcon; private javax.swing.JLabel jlblMessage; private javax.swing.JScrollPane jscrException; private javax.swing.JTextArea jtxtException; // End of variables declaration//GEN-END:variables }