// 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.config;
import java.awt.Component;
import javax.swing.SpinnerNumberModel;
import uk.chromis.data.user.DirtyManager;
import uk.chromis.pos.forms.AppConfig;
/**
*
*
*/
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);
jchkSCOnOff.addActionListener(dirty);
jchkSCRestaurant.addActionListener(dirty);
jTextSCRate.getDocument().addDocumentListener(dirty);
jLayawayId.addActionListener(dirty);
jCreateOnOrderOnly.addActionListener(dirty);
jLayawayPopup.addActionListener(dirty);
}
/**
*
* @return
*/
@Override
public boolean hasChanged() {
return dirty.isDirty();
}
/**
*
* @return
*/
@Override
public Component getConfigComponent() {
return this;
}
/**
*
* @param config
*/
@Override
public void loadProperties() {
receiptSize = (AppConfig.getInstance().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 = (AppConfig.getInstance().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(AppConfig.getInstance().getProperty("till.receiptprefix"));
receipt = "";
x = 1;
while (x < (Integer) jReceiptSize.getValue()) {
receipt += "0";
x++;
}
receipt += "1";
jTicketExample.setText(jTextReceiptPrefix.getText() + receipt);
m_jReceiptPrintOff.setSelected(AppConfig.getInstance().getBoolean("till.receiptprintoff"));
String SCCheck = (AppConfig.getInstance().getProperty("till.SCRate"));
if (SCCheck == null || SCCheck.equals("")) {
AppConfig.getInstance().setProperty("till.SCRate", "10");
jTextSCRate.setText("10");
} else {
jTextSCRate.setText(AppConfig.getInstance().getProperty("till.SCRate").toString());
}
// jTextSCRate.setText(AppConfig.getInstance().getProperty("till.SCRate").toString());
jchkSCOnOff.setSelected(AppConfig.getInstance().getBoolean("till.SCOnOff"));
jchkSCRestaurant.setSelected(AppConfig.getInstance().getBoolean("till.SCRestaurant"));
jLayawayId.setSelected(AppConfig.getInstance().getBoolean("till.usepickupforlayaway"));
jCreateOnOrderOnly.setSelected(AppConfig.getInstance().getBoolean("till.createorder"));
jLayawayPopup.setSelected(AppConfig.getInstance().getBoolean("till.layawaypopup"));
jchkSCOnOffActionPerformed(null);
dirty.setDirty(false);
}
/**
*
* @param config
*/
@Override
public void saveProperties() {
AppConfig.getInstance().setProperty("till.receiptprefix", jTextReceiptPrefix.getText());
AppConfig.getInstance().setProperty("till.receiptsize", jReceiptSize.getValue().toString());
AppConfig.getInstance().setProperty("till.pickupsize", jPickupSize.getValue().toString());
AppConfig.getInstance().setBoolean("till.receiptprintoff", m_jReceiptPrintOff.isSelected());
AppConfig.getInstance().setBoolean("till.SCOnOff", jchkSCOnOff.isSelected());
AppConfig.getInstance().setProperty("till.SCRate", jTextSCRate.getText());
AppConfig.getInstance().setBoolean("till.SCRestaurant", jchkSCRestaurant.isSelected());
AppConfig.getInstance().setBoolean("till.usepickupforlayaway", jLayawayId.isSelected());
AppConfig.getInstance().setBoolean("till.createorder", jCreateOnOrderOnly.isSelected());
AppConfig.getInstance().setBoolean("till.layawaypopup", jLayawayPopup.isSelected());
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();
jPanel6 = new javax.swing.JPanel();
m_jReceiptPrintOff = new eu.hansolo.custom.SteelCheckBox();
jPanel5 = new javax.swing.JPanel();
jTextSCRate = new javax.swing.JTextField();
jLabelSCRate = new javax.swing.JLabel();
jLabelSCRatePerCent = new javax.swing.JLabel();
jchkSCOnOff = new eu.hansolo.custom.SteelCheckBox();
jchkSCRestaurant = new eu.hansolo.custom.SteelCheckBox();
jPanel2 = new javax.swing.JPanel();
jLayawayId = new eu.hansolo.custom.SteelCheckBox();
jCreateOnOrderOnly = new eu.hansolo.custom.SteelCheckBox();
jLayawayPopup = new eu.hansolo.custom.SteelCheckBox();
jTextField2.setText("jTextField2");
setPreferredSize(new java.awt.Dimension(700, 500));
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(0, 0, null, 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(20, 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(20, 70, 160, 40);
jPickupSize.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N
jPickupSize.setModel(new javax.swing.SpinnerNumberModel(0, 0, null, 1));
jPickupSize.setToolTipText("");
jPanel1.add(jPickupSize);
jPickupSize.setBounds(190, 70, 50, 40);
jPanel6.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
m_jReceiptPrintOff.setBorder(null);
m_jReceiptPrintOff.setText(bundle.getString("label.receiptprint")); // NOI18N
jPanel6.add(m_jReceiptPrintOff, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 200, -1));
jPanel1.add(jPanel6);
jPanel6.setBounds(20, 120, 540, 30);
add(jPanel1);
jPanel1.setBounds(10, 10, 730, 170);
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);
jTextSCRate.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jTextSCRate.setText("10");
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(220, 50, 50, 30);
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(50, 50, 150, 30);
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(280, 50, 20, 30);
jchkSCOnOff.setText(bundle.getString("label.SCOnOff")); // NOI18N
jchkSCOnOff.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jchkSCOnOffActionPerformed(evt);
}
});
jPanel5.add(jchkSCOnOff);
jchkSCOnOff.setBounds(20, 20, 200, 30);
jchkSCRestaurant.setText(bundle.getString("label.SCRestaurant")); // NOI18N
jPanel5.add(jchkSCRestaurant);
jchkSCRestaurant.setBounds(320, 50, 180, 30);
add(jPanel5);
jPanel5.setBounds(10, 190, 730, 90);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Layaway details", 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
jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jLayawayId.setText(bundle.getString("label.layaway")); // NOI18N
jPanel2.add(jLayawayId, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 20, 300, -1));
jCreateOnOrderOnly.setText(bundle.getString("label.createonorder")); // NOI18N
jPanel2.add(jCreateOnOrderOnly, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 20, 340, -1));
jLayawayPopup.setText(bundle.getString("label.layawaypopup")); // NOI18N
jPanel2.add(jLayawayPopup, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 50, 260, -1));
add(jPanel2);
jPanel2.setBounds(10, 290, 730, 110);
}// </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 += "0";
x++;
}
receipt += "1";
jTicketExample.setText(jTextReceiptPrefix.getText() + receipt);
}//GEN-LAST:event_jReceiptSizeStateChanged
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
// Variables declaration - do not modify//GEN-BEGIN:variables
private eu.hansolo.custom.SteelCheckBox jCreateOnOrderOnly;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabelSCRate;
private javax.swing.JLabel jLabelSCRatePerCent;
private eu.hansolo.custom.SteelCheckBox jLayawayId;
private eu.hansolo.custom.SteelCheckBox jLayawayPopup;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
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 eu.hansolo.custom.SteelCheckBox jchkSCOnOff;
private eu.hansolo.custom.SteelCheckBox jchkSCRestaurant;
private eu.hansolo.custom.SteelCheckBox m_jReceiptPrintOff;
// End of variables declaration//GEN-END:variables
}