// Chromis POS - The New Face of Open Source POS // Copyright (c) (c) 2015-2016 // http://www.chromis.co.uk // // This file is part of Chromis POS // // Chromis POS 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. // // Chromis POS 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 Chromis POS. If not, see <http://www.gnu.org/licenses/>. package uk.chromis.pos.customers; import uk.chromis.pos.customers.*; import java.awt.Component; import java.awt.image.BufferedImage; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.Period; import java.time.ZoneId; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.table.AbstractTableModel; import uk.chromis.basic.BasicException; import uk.chromis.beans.JCalendarDialog; import uk.chromis.data.gui.ComboBoxValModel; import uk.chromis.data.gui.MessageInf; import uk.chromis.data.loader.SentenceList; import uk.chromis.data.user.DirtyManager; import uk.chromis.data.user.EditorRecord; import uk.chromis.format.Formats; import uk.chromis.pos.forms.AppLocal; import uk.chromis.pos.forms.AppView; import uk.chromis.pos.forms.DataLogicSales; import uk.chromis.pos.util.StringUtils; public final class CustomersViewNoTrans extends javax.swing.JPanel implements EditorRecord { private static final long serialVersionUID = 1L; private Object m_oId; private SentenceList m_sentcat; private List<CustomerTransaction> customerTransactionList; private TransactionTableModel transactionModel; private ComboBoxValModel m_CategoryModel; private DirtyManager m_Dirty; private DataLogicSales dlSales; /** * Creates new form CustomersView * * @param app * @param dirty */ public CustomersViewNoTrans(AppView app, DirtyManager dirty) { try { dlSales = (DataLogicSales) app.getBean("uk.chromis.pos.forms.DataLogicSales"); initComponents(); m_sentcat = dlSales.getTaxCustCategoriesList(); m_CategoryModel = new ComboBoxValModel(); m_Dirty = dirty; m_jTaxID.getDocument().addDocumentListener(dirty); m_jSearchkey.getDocument().addDocumentListener(dirty); m_jName.getDocument().addDocumentListener(dirty); m_jCategory.addActionListener(dirty); m_jNotes.getDocument().addDocumentListener(dirty); txtMaxdebt.getDocument().addDocumentListener(dirty); m_jVisible.addActionListener(dirty); txtFirstName.getDocument().addDocumentListener(dirty); txtLastName.getDocument().addDocumentListener(dirty); txtEmail.getDocument().addDocumentListener(dirty); txtPhone.getDocument().addDocumentListener(dirty); txtPhone2.getDocument().addDocumentListener(dirty); txtFax.getDocument().addDocumentListener(dirty); m_jImage.addPropertyChangeListener("image", dirty); txtAddress.getDocument().addDocumentListener(dirty); txtAddress2.getDocument().addDocumentListener(dirty); txtPostal.getDocument().addDocumentListener(dirty); txtCity.getDocument().addDocumentListener(dirty); txtRegion.getDocument().addDocumentListener(dirty); txtCountry.getDocument().addDocumentListener(dirty); m_jShowDoB.getDocument().addDocumentListener(dirty); txtDiscount.getDocument().addDocumentListener(dirty); j_mDOB.setVisible(false); j_mDOB.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { updateDoB(); } public void removeUpdate(DocumentEvent e) { updateDoB(); } public void insertUpdate(DocumentEvent e) { updateDoB(); } }); init(); } catch (Exception ex) { Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex); } } private void init() { writeValueEOF(); } /** * Instantiate object * * @throws BasicException */ @SuppressWarnings("unchecked") public void activate() throws BasicException { List a = m_sentcat.list(); a.add(0, null); // The null item m_CategoryModel = new ComboBoxValModel(a); m_jCategory.setModel(m_CategoryModel); //customerTransactionList = dlSales.getCustomersTransactionList(); } /** * Refresh object */ @Override public void refresh() { } /** * Write EOF */ @Override public void writeValueEOF() { m_oId = null; m_jTaxID.setText(null); m_jSearchkey.setText(null); m_jName.setText(null); m_CategoryModel.setSelectedKey(null); m_jNotes.setText(null); txtMaxdebt.setText(null); txtDiscount.setText(null); txtCurdebt.setText(null); txtCurdate.setText(null); m_jVisible.setSelected(false); jcard.setText(null); txtFirstName.setText(null); txtLastName.setText(null); txtEmail.setText(null); txtPhone.setText(null); txtPhone2.setText(null); txtFax.setText(null); m_jImage.setImage(null); txtAddress.setText(null); txtAddress2.setText(null); // txtAddress3.setText(null); txtPostal.setText(null); txtCity.setText(null); txtRegion.setText(null); txtCountry.setText(null); j_mDOB.setText(null); m_jTaxID.setEnabled(false); m_jSearchkey.setEnabled(false); m_jName.setEnabled(false); m_jCategory.setEnabled(false); m_jNotes.setEnabled(false); txtMaxdebt.setEnabled(false); txtDiscount.setEnabled(false); txtCurdebt.setEnabled(false); txtCurdate.setEnabled(false); m_jVisible.setEnabled(false); jcard.setEnabled(false); txtFirstName.setEnabled(false); txtLastName.setEnabled(false); txtEmail.setEnabled(false); txtPhone.setEnabled(false); txtPhone2.setEnabled(false); txtFax.setEnabled(false); m_jImage.setEnabled(false); txtAddress.setEnabled(false); txtAddress2.setEnabled(false); // txtAddress3.setEnabled(false); txtPostal.setEnabled(false); txtCity.setEnabled(false); txtRegion.setEnabled(false); txtCountry.setEnabled(false); jButton2.setEnabled(false); jButton3.setEnabled(false); j_mDOB.setEnabled(false); } /** * Insert data */ @Override public void writeValueInsert() { m_oId = null; m_jTaxID.setText(null); m_jSearchkey.setText(null); m_jName.setText(null); m_CategoryModel.setSelectedKey(null); m_jNotes.setText(null); txtMaxdebt.setText(null); txtDiscount.setText(null); txtCurdebt.setText(null); txtCurdate.setText(null); m_jVisible.setSelected(true); jcard.setText(null); txtFirstName.setText(null); txtLastName.setText(null); txtEmail.setText(null); txtPhone.setText(null); txtPhone2.setText(null); txtFax.setText(null); m_jImage.setImage(null); txtAddress.setText(null); txtAddress2.setText(null); txtPostal.setText(null); txtCity.setText(null); txtRegion.setText(null); txtCountry.setText(null); j_mDOB.setText(null); m_jTaxID.setEnabled(true); m_jSearchkey.setEnabled(true); m_jName.setEnabled(true); m_jCategory.setEnabled(true); m_jNotes.setEnabled(true); txtMaxdebt.setEnabled(true); txtDiscount.setEnabled(true); txtCurdebt.setEnabled(true); txtCurdate.setEnabled(true); m_jVisible.setEnabled(true); jcard.setEnabled(true); txtFirstName.setEnabled(true); txtLastName.setEnabled(true); txtEmail.setEnabled(true); txtPhone.setEnabled(true); txtPhone2.setEnabled(true); txtFax.setEnabled(true); m_jImage.setEnabled(true); txtAddress.setEnabled(true); txtAddress2.setEnabled(true); txtPostal.setEnabled(true); txtCity.setEnabled(true); txtRegion.setEnabled(true); txtCountry.setEnabled(true); jButton2.setEnabled(true); jButton3.setEnabled(true); j_mDOB.setEnabled(false); } /** * Delete from object * * @param value */ @Override public void writeValueDelete(Object value) { System.out.println("delete"); Object[] customer = (Object[]) value; m_oId = customer[0]; m_jTaxID.setText((String) customer[1]); m_jSearchkey.setText((String) customer[2]); m_jName.setText((String) customer[3]); m_jNotes.setText((String) customer[4]); m_jVisible.setSelected(((Boolean) customer[5])); jcard.setText((String) customer[6]); txtMaxdebt.setText(Formats.CURRENCY.formatValue(customer[7])); txtCurdate.setText(Formats.DATE.formatValue(customer[8])); txtCurdebt.setText(Formats.CURRENCY.formatValue(customer[9])); txtFirstName.setText(Formats.STRING.formatValue(customer[10])); txtLastName.setText(Formats.STRING.formatValue(customer[11])); txtEmail.setText(Formats.STRING.formatValue(customer[12])); txtPhone.setText(Formats.STRING.formatValue(customer[13])); txtPhone2.setText(Formats.STRING.formatValue(customer[14])); txtFax.setText(Formats.STRING.formatValue(customer[15])); txtAddress.setText(Formats.STRING.formatValue(customer[16])); txtAddress2.setText(Formats.STRING.formatValue(customer[17])); txtPostal.setText(Formats.STRING.formatValue(customer[18])); txtCity.setText(Formats.STRING.formatValue(customer[19])); txtRegion.setText(Formats.STRING.formatValue(customer[20])); txtCountry.setText(Formats.STRING.formatValue(customer[21])); m_CategoryModel.setSelectedKey(customer[22]); m_jImage.setImage((BufferedImage) customer[23]); j_mDOB.setText(Formats.DATE.formatValue(customer[24])); txtDiscount.setText(Formats.PERCENT.formatValue(customer[25])); m_jTaxID.setEnabled(false); m_jSearchkey.setEnabled(false); m_jName.setEnabled(false); m_jNotes.setEnabled(false); txtMaxdebt.setEnabled(false); txtCurdebt.setEnabled(false); txtDiscount.setEnabled(false); txtCurdate.setEnabled(false); m_jVisible.setEnabled(false); jcard.setEnabled(false); txtFirstName.setEnabled(false); txtLastName.setEnabled(false); txtEmail.setEnabled(false); txtPhone.setEnabled(false); txtPhone2.setEnabled(false); txtFax.setEnabled(false); m_jImage.setEnabled(true); j_mDOB.setEnabled(false); txtAddress.setEnabled(false); txtAddress2.setEnabled(false); txtPostal.setEnabled(false); txtCity.setEnabled(false); txtRegion.setEnabled(false); txtCountry.setEnabled(false); m_jCategory.setEnabled(false); jButton2.setEnabled(false); jButton3.setEnabled(false); } /** * Edit object * * @param value */ @Override public void writeValueEdit(Object value) { Object[] customer = (Object[]) value; m_oId = customer[0]; m_jTaxID.setText((String) customer[1]); m_jSearchkey.setText((String) customer[2]); m_jName.setText((String) customer[3]); String test = m_jName.getText(); m_jNotes.setText((String) customer[4]); m_jVisible.setSelected(((Boolean) customer[5])); jcard.setText((String) customer[6]); txtMaxdebt.setText(Formats.CURRENCY.formatValue(customer[7])); txtCurdate.setText(Formats.DATE.formatValue(customer[8])); txtCurdebt.setText(Formats.CURRENCY.formatValue(customer[9])); txtFirstName.setText(Formats.STRING.formatValue(customer[10])); txtLastName.setText(Formats.STRING.formatValue(customer[11])); txtEmail.setText(Formats.STRING.formatValue(customer[12])); txtPhone.setText(Formats.STRING.formatValue(customer[13])); txtPhone2.setText(Formats.STRING.formatValue(customer[14])); txtFax.setText(Formats.STRING.formatValue(customer[15])); txtAddress.setText(Formats.STRING.formatValue(customer[16])); txtAddress2.setText(Formats.STRING.formatValue(customer[17])); txtPostal.setText(Formats.STRING.formatValue(customer[18])); txtCity.setText(Formats.STRING.formatValue(customer[19])); txtRegion.setText(Formats.STRING.formatValue(customer[20])); txtCountry.setText(Formats.STRING.formatValue(customer[21])); m_CategoryModel.setSelectedKey(customer[22]); m_jImage.setImage((BufferedImage) customer[23]); j_mDOB.setText(Formats.DATE.formatValue(customer[24])); txtDiscount.setText(Formats.PERCENT.formatValue(customer[25])); m_jTaxID.setEnabled(true); m_jSearchkey.setEnabled(true); m_jName.setEnabled(true); m_jNotes.setEnabled(true); txtMaxdebt.setEnabled(true); txtDiscount.setEnabled(true); txtCurdebt.setEnabled(true); txtCurdate.setEnabled(true); m_jVisible.setEnabled(true); jcard.setEnabled(true); txtFirstName.setEnabled(true); txtLastName.setEnabled(true); txtEmail.setEnabled(true); txtPhone.setEnabled(true); txtPhone2.setEnabled(true); txtFax.setEnabled(true); m_jImage.setEnabled(true); txtAddress.setEnabled(true); txtAddress2.setEnabled(true); txtPostal.setEnabled(true); txtCity.setEnabled(true); txtRegion.setEnabled(true); txtCountry.setEnabled(true); j_mDOB.setEnabled(true); m_jCategory.setEnabled(true); jButton2.setEnabled(true); jButton3.setEnabled(true); txtCurdate.repaint(); txtCurdebt.repaint(); updateDoB(); repaint(); refresh(); } /** * Create object * * @return * @throws BasicException */ @Override public Object createValue() throws BasicException { Object[] customer = new Object[26]; customer[0] = m_oId == null ? UUID.randomUUID().toString() : m_oId; customer[1] = m_jTaxID.getText(); customer[2] = m_jSearchkey.getText(); customer[3] = m_jName.getText(); customer[4] = m_jNotes.getText(); customer[5] = m_jVisible.isSelected(); customer[6] = Formats.STRING.parseValue(jcard.getText()); // Format to manage NULL values customer[7] = Formats.CURRENCY.parseValue(txtMaxdebt.getText(), 0.0); customer[8] = Formats.TIMESTAMP.parseValue(txtCurdate.getText()); // not saved customer[9] = Formats.CURRENCY.parseValue(txtCurdebt.getText()); // not saved customer[10] = Formats.STRING.parseValue(txtFirstName.getText()); customer[11] = Formats.STRING.parseValue(txtLastName.getText()); customer[12] = Formats.STRING.parseValue(txtEmail.getText()); customer[13] = Formats.STRING.parseValue(txtPhone.getText()); customer[14] = Formats.STRING.parseValue(txtPhone2.getText()); customer[15] = Formats.STRING.parseValue(txtFax.getText()); customer[16] = Formats.STRING.parseValue(txtAddress.getText()); customer[17] = Formats.STRING.parseValue(txtAddress2.getText()); customer[18] = Formats.STRING.parseValue(txtPostal.getText()); customer[19] = Formats.STRING.parseValue(txtCity.getText()); customer[20] = Formats.STRING.parseValue(txtRegion.getText()); customer[21] = Formats.STRING.parseValue(txtCountry.getText()); customer[22] = m_CategoryModel.getSelectedKey(); customer[23] = m_jImage.getImage(); customer[24] = Formats.TIMESTAMP.parseValue(j_mDOB.getText()); customer[25] = Formats.PERCENT.parseValue(txtDiscount.getText()); return customer; } @Override public Component getComponent() { return this; } // JG 3 Oct 2013 - Customer Transaction List private List<CustomerTransaction> getTransactionOfName(String name) { // List<CustomerTransaction> customerList = new ArrayList<>(); try { customerTransactionList = dlSales.getCustomersTransactionList(name); } catch (BasicException ex) { Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex); } txtCurdate.repaint(); txtCurdebt.repaint(); repaint(); refresh(); return customerTransactionList; } class TransactionTableModel extends AbstractTableModel { List<CustomerTransaction> transactionList; String[] columnNames = {"TicketID", "Date", "Product", "Quantity", "Total"}; public Double Tamount; public TransactionTableModel(List<CustomerTransaction> list) { transactionList = list; } @Override public int getColumnCount() { return 5; } @Override public int getRowCount() { return transactionList.size(); } // this method is called to set the value of each cell @Override public Object getValueAt(int row, int column) { CustomerTransaction customerTransaction = transactionList.get(row); switch (column) { case 0: return customerTransaction.getTicketId(); case 1: Date transactionDate = customerTransaction.getTransactionDate(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String formattedDate = sdf.format(transactionDate); return formattedDate; case 2: return customerTransaction.getProductName(); case 3: return customerTransaction.getUnit(); case 4: return Formats.CURRENCY.formatValue(customerTransaction.getTotal()) + " "; default: return ""; } } @Override public String getColumnName(int col) { return columnNames[col]; } // Double Tamount; // Double amountT = amount; // Tamount = amountT + amount; // amountT = null; //System.out.println(Tamount); //txtTurnover.setText(Tamount.toString()); // // public Object GetData(TransactionTableModel jTable1, int row, int column){ // txtTurnover.setText(jTable1.GetData(jTable1, row, 4).toString()); // Double amountT; // DecimalFormat dfT = new DecimalFormat("#.##"); // String famountT; // famountT = dfT.format(amountT); // return jTable1.GetData(jTable1, row, column); // } // public void SetData(TransactionTableModel jTable1, int row, int column) { // jTable1.GetData(jTable1, row, 4).toString(); // } } /** * 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() { jLabel7 = new javax.swing.JLabel(); m_jTaxID = new javax.swing.JTextField(); jLabel8 = new javax.swing.JLabel(); m_jSearchkey = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); m_jName = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); jcard = new javax.swing.JTextField(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jLabel9 = new javax.swing.JLabel(); m_jCategory = new javax.swing.JComboBox(); jLabel4 = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); txtMaxdebt = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); txtCurdebt = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel(); txtCurdate = new javax.swing.JTextField(); jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); jLabel19 = new javax.swing.JLabel(); txtFirstName = new javax.swing.JTextField(); jLabel15 = new javax.swing.JLabel(); txtLastName = new javax.swing.JTextField(); jLabel16 = new javax.swing.JLabel(); txtEmail = new javax.swing.JTextField(); jLabel17 = new javax.swing.JLabel(); txtPhone = new javax.swing.JTextField(); jLabel18 = new javax.swing.JLabel(); txtPhone2 = new javax.swing.JTextField(); jLabel14 = new javax.swing.JLabel(); txtFax = new javax.swing.JTextField(); jLabel26 = new javax.swing.JLabel(); m_jShowDoB = new javax.swing.JTextField(); btnDoB = new javax.swing.JButton(); j_mDOB = new javax.swing.JTextField(); jAge = new javax.swing.JTextField(); jLabel11 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); jLabel13 = new javax.swing.JLabel(); txtAddress = new javax.swing.JTextField(); jLabel20 = new javax.swing.JLabel(); txtCountry = new javax.swing.JTextField(); jLabel21 = new javax.swing.JLabel(); txtAddress2 = new javax.swing.JTextField(); jLabel22 = new javax.swing.JLabel(); txtPostal = new javax.swing.JTextField(); jLabel23 = new javax.swing.JLabel(); txtCity = new javax.swing.JTextField(); jLabel24 = new javax.swing.JLabel(); txtRegion = new javax.swing.JTextField(); jPanel5 = new javax.swing.JPanel(); m_jImage = new uk.chromis.data.gui.JImageEditor(); jPanel3 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); m_jNotes = new javax.swing.JTextArea(); txtTurnover = new javax.swing.JTextField(); jLabel10 = new javax.swing.JLabel(); m_jVisible = new eu.hansolo.custom.SteelCheckBox(); jLabel12 = new javax.swing.JLabel(); txtDiscount = new javax.swing.JTextField(); jLabel7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel7.setText(AppLocal.getIntString("label.taxid")); // NOI18N jLabel7.setMaximumSize(new java.awt.Dimension(140, 25)); jLabel7.setMinimumSize(new java.awt.Dimension(140, 25)); jLabel7.setPreferredSize(new java.awt.Dimension(140, 25)); m_jTaxID.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel8.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N jLabel8.setText(AppLocal.getIntString("label.searchkey")); // NOI18N m_jSearchkey.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel3.setText(AppLocal.getIntString("label.name")); // NOI18N jLabel3.setMaximumSize(new java.awt.Dimension(140, 25)); jLabel3.setMinimumSize(new java.awt.Dimension(140, 25)); jLabel3.setPreferredSize(new java.awt.Dimension(140, 25)); m_jName.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel5.setText(AppLocal.getIntString("label.card")); // NOI18N jLabel5.setMaximumSize(new java.awt.Dimension(140, 25)); jLabel5.setMinimumSize(new java.awt.Dimension(140, 25)); jLabel5.setPreferredSize(new java.awt.Dimension(140, 25)); jcard.setEditable(false); jcard.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/encrypted.png"))); // NOI18N java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N jButton2.setToolTipText(bundle.getString("tiptext.createkey")); // NOI18N jButton2.setMaximumSize(new java.awt.Dimension(64, 32)); jButton2.setMinimumSize(new java.awt.Dimension(64, 32)); jButton2.setPreferredSize(new java.awt.Dimension(64, 32)); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/fileclose.png"))); // NOI18N jButton3.setToolTipText(bundle.getString("tiptext.clearkey")); // NOI18N jButton3.setMaximumSize(new java.awt.Dimension(64, 32)); jButton3.setMinimumSize(new java.awt.Dimension(64, 32)); jButton3.setPreferredSize(new java.awt.Dimension(64, 32)); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jLabel9.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel9.setText(AppLocal.getIntString("label.custtaxcategory")); // NOI18N jLabel9.setMaximumSize(new java.awt.Dimension(140, 25)); jLabel9.setMinimumSize(new java.awt.Dimension(140, 25)); jLabel9.setPreferredSize(new java.awt.Dimension(140, 25)); m_jCategory.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel4.setText(AppLocal.getIntString("label.visible")); // NOI18N jLabel4.setMaximumSize(new java.awt.Dimension(140, 25)); jLabel4.setMinimumSize(new java.awt.Dimension(140, 25)); jLabel4.setPreferredSize(new java.awt.Dimension(140, 25)); jLabel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel1.setText(AppLocal.getIntString("label.maxdebt")); // NOI18N jLabel1.setMaximumSize(new java.awt.Dimension(140, 25)); jLabel1.setMinimumSize(new java.awt.Dimension(140, 25)); jLabel1.setPreferredSize(new java.awt.Dimension(140, 25)); txtMaxdebt.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N txtMaxdebt.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel2.setText(AppLocal.getIntString("label.curdebt")); // NOI18N jLabel2.setMaximumSize(new java.awt.Dimension(140, 25)); jLabel2.setMinimumSize(new java.awt.Dimension(140, 25)); jLabel2.setPreferredSize(new java.awt.Dimension(140, 25)); txtCurdebt.setEditable(false); txtCurdebt.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N txtCurdebt.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jLabel6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel6.setText(AppLocal.getIntString("label.curdate")); // NOI18N txtCurdate.setEditable(false); txtCurdate.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N txtCurdate.setHorizontalAlignment(javax.swing.JTextField.CENTER); jTabbedPane1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel19.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel19.setText(AppLocal.getIntString("label.firstname")); // NOI18N jLabel19.setAlignmentX(0.5F); txtFirstName.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel15.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel15.setText(AppLocal.getIntString("label.lastname")); // NOI18N txtLastName.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel16.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel16.setText(AppLocal.getIntString("label.email")); // NOI18N txtEmail.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel17.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel17.setText(AppLocal.getIntString("label.phone")); // NOI18N txtPhone.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel18.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel18.setText(AppLocal.getIntString("label.phone2")); // NOI18N txtPhone2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel14.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel14.setText(AppLocal.getIntString("label.fax")); // NOI18N txtFax.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel26.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel26.setText(AppLocal.getIntString("label.dob")); // NOI18N m_jShowDoB.setEditable(false); m_jShowDoB.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N m_jShowDoB.setDisabledTextColor(new java.awt.Color(0, 0, 0)); btnDoB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/date.png"))); // NOI18N btnDoB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnDoBActionPerformed(evt); } }); j_mDOB.setEditable(false); jAge.setEditable(false); jLabel11.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel11.setText(bundle.getString("label.age")); // NOI18N javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel26, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jAge) .addComponent(m_jShowDoB, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(btnDoB, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(j_mDOB, javax.swing.GroupLayout.DEFAULT_SIZE, 151, Short.MAX_VALUE)) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel19, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(txtFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(txtFax, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(txtPhone2, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtPhone, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel19, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel26, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(btnDoB, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jShowDoB, javax.swing.GroupLayout.Alignment.TRAILING)) .addComponent(j_mDOB)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jAge, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE) .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtPhone, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtPhone2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(txtFax, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(27, 27, 27)) ); jTabbedPane1.addTab(AppLocal.getIntString("label.contact"), jPanel1); // NOI18N jLabel13.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel13.setText(AppLocal.getIntString("label.address")); // NOI18N txtAddress.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel20.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel20.setText(AppLocal.getIntString("label.country")); // NOI18N txtCountry.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel21.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel21.setText(AppLocal.getIntString("label.address2")); // NOI18N txtAddress2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel22.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel22.setText(AppLocal.getIntString("label.postal")); // NOI18N txtPostal.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel23.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel23.setText(AppLocal.getIntString("label.city")); // NOI18N txtCity.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel24.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel24.setText(AppLocal.getIntString("label.region")); // NOI18N txtRegion.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel20, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel24, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel23, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel21, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(txtCity, javax.swing.GroupLayout.DEFAULT_SIZE, 186, Short.MAX_VALUE) .addComponent(txtAddress) .addComponent(txtAddress2) .addComponent(txtRegion) .addComponent(txtCountry)) .addGap(18, 18, 18) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel22, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtPostal, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(104, Short.MAX_VALUE)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtAddress, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(29, 29, 29) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel23, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtCity, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel22, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel24, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtRegion, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtPostal, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel20, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtCountry, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel21, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtAddress2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(19, 19, 19)) ); jTabbedPane1.addTab(AppLocal.getIntString("label.location"), jPanel2); // NOI18N m_jImage.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addGap(142, 142, 142) .addComponent(m_jImage, javax.swing.GroupLayout.PREFERRED_SIZE, 250, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(143, Short.MAX_VALUE)) ); jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addContainerGap() .addComponent(m_jImage, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jTabbedPane1.addTab(bundle.getString("label.photo"), jPanel5); // NOI18N m_jNotes.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jScrollPane1.setViewportView(m_jNotes); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 458, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(67, Short.MAX_VALUE)) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE) .addContainerGap()) ); jTabbedPane1.addTab(AppLocal.getIntString("label.notes"), jPanel3); // NOI18N txtTurnover.setEditable(false); txtTurnover.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N txtTurnover.setHorizontalAlignment(javax.swing.JTextField.CENTER); jLabel10.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel10.setText(AppLocal.getIntString("label.customerTotalSales")); // NOI18N m_jVisible.setSelected(true); m_jVisible.setText(" "); jLabel12.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel12.setText(AppLocal.getIntString("label.discount")); // NOI18N jLabel12.setMaximumSize(new java.awt.Dimension(140, 25)); jLabel12.setMinimumSize(new java.awt.Dimension(140, 25)); jLabel12.setPreferredSize(new java.awt.Dimension(140, 25)); txtDiscount.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N txtDiscount.setHorizontalAlignment(javax.swing.JTextField.RIGHT); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(m_jCategory, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addComponent(m_jTaxID, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(m_jSearchkey, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(m_jName, javax.swing.GroupLayout.PREFERRED_SIZE, 325, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jVisible, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(txtMaxdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addComponent(txtCurdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(txtCurdate, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addComponent(txtDiscount, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(txtTurnover, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(layout.createSequentialGroup() .addComponent(jcard, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 540, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel8) .addComponent(m_jSearchkey, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jTaxID, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jName, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jcard, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jVisible, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(m_jCategory, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtMaxdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(layout.createSequentialGroup() .addGap(7, 7, 7) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel12, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(txtDiscount)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(txtCurdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtCurdate, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtTurnover, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 297, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); }// </editor-fold>//GEN-END:initComponents private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed if (JOptionPane.showConfirmDialog(this, AppLocal.getIntString("message.cardnew"), AppLocal.getIntString("title.editor"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) { jcard.setText("c" + StringUtils.getCardNumber()); m_Dirty.setDirty(true); } }//GEN-LAST:event_jButton2ActionPerformed private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed if (JOptionPane.showConfirmDialog(this, AppLocal.getIntString("message.cardremove"), AppLocal.getIntString("title.editor"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) { jcard.setText(null); m_Dirty.setDirty(true); } }//GEN-LAST:event_jButton3ActionPerformed private void btnDoBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDoBActionPerformed Date date; try { date = (Date) Formats.TIMESTAMP.parseValue(j_mDOB.getText()); } catch (BasicException e) { date = Calendar.getInstance().getTime(); } date = JCalendarDialog.showCalendar(this, date); if (date != null) { if (IsValidDate(date)) { j_mDOB.setText(Formats.TIMESTAMP.formatValue(date)); String str = String.format("%1$s %2$tB %2$td, %2$tY", "", date); m_jShowDoB.setText(str); } else { MessageInf msg = new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.invaliddobdate")); msg.show(this); } } }//GEN-LAST:event_btnDoBActionPerformed private void updateDoB() { m_Dirty.setDirty(true); try { if (j_mDOB.getText().equals(null) || j_mDOB.getText().equals("")) { m_jShowDoB.setText(""); jAge.setText(""); } else { Date date = (Date) Formats.TIMESTAMP.parseValue(j_mDOB.getText()); String str = String.format("%1$s %2$tB %2$td, %2$tY", "", date); m_jShowDoB.setText(str); Period age = getAge(date); String Age = " " + age.getYears() + " yrs " + age.getMonths() + " mths"; jAge.setText(Age); } } catch (BasicException ex) { Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex); } } private boolean IsValidDate(Date dateToValidate) { if (dateToValidate == null) { return false; } Date today = truncateTime(Calendar.getInstance().getTime()); Date dob = truncateTime(dateToValidate); if (dob.after(today) || dob.equals(today)) { return false; } return true; } private Period getAge(Date dob) { LocalDate today = LocalDate.now(); LocalDate date = dob.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); Period p = Period.between(date, today); return p; } private static Date truncateTime(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { date = sdf.parse(sdf.format(date)); } catch (ParseException ex) { Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex); } return date; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnDoB; private javax.swing.JTextField jAge; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel23; private javax.swing.JLabel jLabel24; private javax.swing.JLabel jLabel26; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel5; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTextField j_mDOB; private javax.swing.JTextField jcard; private javax.swing.JComboBox m_jCategory; private uk.chromis.data.gui.JImageEditor m_jImage; private javax.swing.JTextField m_jName; private javax.swing.JTextArea m_jNotes; private javax.swing.JTextField m_jSearchkey; private javax.swing.JTextField m_jShowDoB; private javax.swing.JTextField m_jTaxID; private eu.hansolo.custom.SteelCheckBox m_jVisible; private javax.swing.JTextField txtAddress; private javax.swing.JTextField txtAddress2; private javax.swing.JTextField txtCity; private javax.swing.JTextField txtCountry; private javax.swing.JTextField txtCurdate; private javax.swing.JTextField txtCurdebt; private javax.swing.JTextField txtDiscount; private javax.swing.JTextField txtEmail; private javax.swing.JTextField txtFax; private javax.swing.JTextField txtFirstName; private javax.swing.JTextField txtLastName; private javax.swing.JTextField txtMaxdebt; private javax.swing.JTextField txtPhone; private javax.swing.JTextField txtPhone2; private javax.swing.JTextField txtPostal; private javax.swing.JTextField txtRegion; private javax.swing.JTextField txtTurnover; // End of variables declaration//GEN-END:variables }