// uniCenta oPOS - Touch Friendly Point Of Sale // Copyright (c) 2009-2013 uniCenta // 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.pos.config; import com.openbravo.data.user.DirtyManager; import com.openbravo.pos.forms.AppConfig; import java.awt.Component; import javax.swing.SpinnerNumberModel; public class JPanelTicketSetup extends javax.swing.JPanel implements PanelConfig { private DirtyManager dirty = new DirtyManager(); private String receipt="1"; private Integer x = 0; private String receiptSize; private String pickupSize; private Integer ps = 0; public JPanelTicketSetup() { initComponents(); jReceiptSize.addChangeListener(dirty); jPickupSize.addChangeListener(dirty); jTextReceiptPrefix.getDocument().addDocumentListener(dirty); m_jReceiptPrintOff.addActionListener(dirty); /** Added: JG 23 July 13 */ jchkSCOnOff.addActionListener(dirty); jchkSCRestaurant.addActionListener(dirty); jTextSCRate.getDocument().addDocumentListener(dirty); /** - */ } @Override public boolean hasChanged() { return dirty.isDirty(); } @Override public Component getConfigComponent() { return this; } @Override public void loadProperties(AppConfig config) { receiptSize =(config.getProperty("till.receiptsize")); if (receiptSize == null || "".equals(receiptSize)){ jReceiptSize.setModel(new SpinnerNumberModel(1,1,20,1)); } else { jReceiptSize.setModel(new SpinnerNumberModel(Integer.parseInt(receiptSize),1,20,1)); } pickupSize =(config.getProperty("till.pickupsize")); if (pickupSize == null || "".equals(pickupSize)){ jPickupSize.setModel(new SpinnerNumberModel(1,1,20,1)); } else { jPickupSize.setModel(new SpinnerNumberModel(Integer.parseInt(pickupSize),1,20,1)); } jTextReceiptPrefix.setText(config.getProperty("till.receiptprefix")); // build the example receipt using the loaded details receipt=""; x=1; while (x < (Integer)jReceiptSize.getValue()){ receipt = receipt +"0"; x++; } receipt=receipt+"1"; jTicketExample.setText(jTextReceiptPrefix.getText()+receipt); m_jReceiptPrintOff.setSelected(Boolean.valueOf(config.getProperty("till.receiptprintoff")).booleanValue()); dirty.setDirty(false); /** Added: JG 23 July 13 */ String SCCheck =(config.getProperty("till.SCRate")); if (SCCheck == null){ config.setProperty("till.SCRate","0"); } jTextSCRate.setText(config.getProperty("till.SCRate").toString()); jchkSCOnOff.setSelected(Boolean.valueOf(config.getProperty("till.SCOnOff")).booleanValue()); jchkSCRestaurant.setSelected(Boolean.valueOf(config.getProperty("till.SCRestaurant")).booleanValue()); if (jchkSCOnOff.isSelected()){ jchkSCRestaurant.setVisible(true); jLabelSCRate.setVisible(true); jTextSCRate.setVisible(true); jLabelSCRatePerCent.setVisible(true); }else{ jchkSCRestaurant.setVisible(false); jLabelSCRate.setVisible(false); jTextSCRate.setVisible(false); jLabelSCRatePerCent.setVisible(false); } /** - */ } @Override public void saveProperties(AppConfig config) { config.setProperty("till.receiptprefix", jTextReceiptPrefix.getText()); config.setProperty("till.receiptsize", jReceiptSize.getValue().toString()); config.setProperty("till.pickupsize", jPickupSize.getValue().toString()); config.setProperty("till.receiptprintoff",Boolean.toString(m_jReceiptPrintOff.isSelected())); /** Added: JG 23 July 13 */ config.setProperty("till.SCRate",jTextSCRate.getText()); /** - */ dirty.setDirty(false); } /** 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() { jTextField2 = new javax.swing.JTextField(); jPanel1 = new javax.swing.JPanel(); jReceiptSize = new javax.swing.JSpinner(); jLabel1 = new javax.swing.JLabel(); jTextReceiptPrefix = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jTicketExample = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jPickupSize = new javax.swing.JSpinner(); m_jReceiptPrintOff = new javax.swing.JCheckBox(); jPanel5 = new javax.swing.JPanel(); jchkSCOnOff = new javax.swing.JCheckBox(); jchkSCRestaurant = new javax.swing.JCheckBox(); jTextSCRate = new javax.swing.JTextField(); jLabelSCRate = new javax.swing.JLabel(); jLabelSCRatePerCent = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jTextField2.setText("jTextField2"); setPreferredSize(new java.awt.Dimension(680, 190)); setLayout(null); java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), bundle.getString("label.configreceipt"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 12), new java.awt.Color(102, 102, 102))); // NOI18N jPanel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel1.setLayout(null); jReceiptSize.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N jReceiptSize.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(0), Integer.valueOf(0), null, Integer.valueOf(1))); jReceiptSize.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { jReceiptSizeStateChanged(evt); } }); jPanel1.add(jReceiptSize); jReceiptSize.setBounds(190, 20, 50, 40); jLabel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabel1.setText(bundle.getString("Label.ticketsetupnumber")); // NOI18N jPanel1.add(jLabel1); jLabel1.setBounds(10, 20, 160, 40); jTextReceiptPrefix.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N jTextReceiptPrefix.setHorizontalAlignment(javax.swing.JTextField.CENTER); jTextReceiptPrefix.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { jTextReceiptPrefixKeyReleased(evt); } }); jPanel1.add(jTextReceiptPrefix); jTextReceiptPrefix.setBounds(380, 20, 80, 40); jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel3.setText(bundle.getString("Label.ticketsetupprefix")); // NOI18N jPanel1.add(jLabel3); jLabel3.setBounds(250, 20, 130, 40); jTicketExample.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N jTicketExample.setText("1"); jTicketExample.setDisabledTextColor(new java.awt.Color(0, 0, 0)); jTicketExample.setEnabled(false); jPanel1.add(jTicketExample); jTicketExample.setBounds(510, 20, 170, 40); jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel2.setText(bundle.getString("label.pickupcodesize")); // NOI18N jPanel1.add(jLabel2); jLabel2.setBounds(10, 70, 160, 40); jPickupSize.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N jPickupSize.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(0), Integer.valueOf(0), null, Integer.valueOf(1))); jPickupSize.setToolTipText(""); jPickupSize.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { jPickupSizeStateChanged(evt); } }); jPanel1.add(jPickupSize); jPickupSize.setBounds(190, 70, 50, 40); m_jReceiptPrintOff.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N m_jReceiptPrintOff.setText(bundle.getString("label.receiptprint")); // NOI18N m_jReceiptPrintOff.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { m_jReceiptPrintOffActionPerformed(evt); } }); jPanel1.add(m_jReceiptPrintOff); m_jReceiptPrintOff.setBounds(10, 120, 180, 30); add(jPanel1); jPanel1.setBounds(10, 10, 730, 160); jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), bundle.getString("label.SChargepanel"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 12), new java.awt.Color(102, 102, 102))); // NOI18N jPanel5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel5.setLayout(null); jchkSCOnOff.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jchkSCOnOff.setText(bundle.getString("label.SCOnOff")); // NOI18N jchkSCOnOff.setMaximumSize(new java.awt.Dimension(0, 25)); jchkSCOnOff.setMinimumSize(new java.awt.Dimension(0, 0)); jchkSCOnOff.setPreferredSize(new java.awt.Dimension(0, 25)); jchkSCOnOff.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jchkSCOnOffActionPerformed(evt); } }); jPanel5.add(jchkSCOnOff); jchkSCOnOff.setBounds(10, 20, 190, 25); jchkSCRestaurant.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jchkSCRestaurant.setText(bundle.getString("label.SCRestaurant")); // NOI18N jchkSCRestaurant.setMaximumSize(new java.awt.Dimension(0, 25)); jchkSCRestaurant.setMinimumSize(new java.awt.Dimension(0, 0)); jchkSCRestaurant.setPreferredSize(new java.awt.Dimension(0, 25)); jPanel5.add(jchkSCRestaurant); jchkSCRestaurant.setBounds(200, 20, 160, 25); jTextSCRate.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jTextSCRate.setText("0"); jTextSCRate.setMaximumSize(new java.awt.Dimension(0, 25)); jTextSCRate.setMinimumSize(new java.awt.Dimension(0, 0)); jTextSCRate.setPreferredSize(new java.awt.Dimension(0, 25)); jPanel5.add(jTextSCRate); jTextSCRate.setBounds(170, 50, 50, 25); jLabelSCRate.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabelSCRate.setText(bundle.getString("label.SCRate")); // NOI18N jLabelSCRate.setMaximumSize(new java.awt.Dimension(0, 25)); jLabelSCRate.setMinimumSize(new java.awt.Dimension(0, 0)); jLabelSCRate.setPreferredSize(new java.awt.Dimension(0, 25)); jPanel5.add(jLabelSCRate); jLabelSCRate.setBounds(10, 50, 150, 25); jLabelSCRatePerCent.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabelSCRatePerCent.setText(bundle.getString("label.SCZero")); // NOI18N jLabelSCRatePerCent.setMaximumSize(new java.awt.Dimension(0, 25)); jLabelSCRatePerCent.setMinimumSize(new java.awt.Dimension(0, 0)); jLabelSCRatePerCent.setPreferredSize(new java.awt.Dimension(0, 25)); jPanel5.add(jLabelSCRatePerCent); jLabelSCRatePerCent.setBounds(230, 50, 50, 25); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jLabel4.setForeground(new java.awt.Color(102, 102, 102)); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel4.setText("Service Charge function in development"); jPanel5.add(jLabel4); jLabel4.setBounds(380, 10, 290, 70); add(jPanel5); jPanel5.setBounds(10, 180, 730, 90); }// </editor-fold>//GEN-END:initComponents private void jTextReceiptPrefixKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextReceiptPrefixKeyReleased jTicketExample.setText(jTextReceiptPrefix.getText()+ receipt); }//GEN-LAST:event_jTextReceiptPrefixKeyReleased private void jReceiptSizeStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jReceiptSizeStateChanged receipt=""; x=1; while (x < (Integer)jReceiptSize.getValue()){ receipt = receipt +"0"; x++; } receipt=receipt+"1"; jTicketExample.setText(jTextReceiptPrefix.getText()+receipt); }//GEN-LAST:event_jReceiptSizeStateChanged private void jPickupSizeStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jPickupSizeStateChanged }//GEN-LAST:event_jPickupSizeStateChanged private void jchkSCOnOffActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jchkSCOnOffActionPerformed if (jchkSCOnOff.isSelected()){ jchkSCRestaurant.setVisible(true); jLabelSCRate.setVisible(true); jTextSCRate.setVisible(true); jLabelSCRatePerCent.setVisible(true); }else{ jchkSCRestaurant.setVisible(false); jLabelSCRate.setVisible(false); jTextSCRate.setVisible(false); jLabelSCRatePerCent.setVisible(false); } }//GEN-LAST:event_jchkSCOnOffActionPerformed private void m_jReceiptPrintOffActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jReceiptPrintOffActionPerformed // TODO add your handling code here: }//GEN-LAST:event_m_jReceiptPrintOffActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabelSCRate; private javax.swing.JLabel jLabelSCRatePerCent; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel5; private javax.swing.JSpinner jPickupSize; private javax.swing.JSpinner jReceiptSize; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextReceiptPrefix; private javax.swing.JTextField jTextSCRate; private javax.swing.JTextField jTicketExample; private javax.swing.JCheckBox jchkSCOnOff; private javax.swing.JCheckBox jchkSCRestaurant; private javax.swing.JCheckBox m_jReceiptPrintOff; // End of variables declaration//GEN-END:variables }