// 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 java.util.HashMap; import java.util.Map; import uk.chromis.data.user.DirtyManager; import uk.chromis.pos.forms.AppConfig; import uk.chromis.pos.forms.AppLocal; import uk.chromis.pos.payment.ConfigPaymentPanelBluePay20POST; import uk.chromis.pos.payment.ConfigPaymentPanelCaixa; import uk.chromis.pos.payment.ConfigPaymentPanelEmpty; import uk.chromis.pos.payment.ConfigPaymentPanelGeneric; import uk.chromis.pos.payment.ConfigPaymentPanelLinkPoint; import uk.chromis.pos.payment.PaymentConfiguration; /** * * @author adrianromero * @author Mikel Irurita */ public class JPanelConfigPayment extends javax.swing.JPanel implements PanelConfig { private final DirtyManager dirty = new DirtyManager(); private final Map<String, PaymentConfiguration> paymentsName = new HashMap<>(); private PaymentConfiguration pc; /** Creates new form JPanelConfigPayment */ public JPanelConfigPayment() { initComponents(); // dirty manager jcboCardReader.addActionListener(dirty); jcboPaymentGateway.addActionListener(dirty); jchkPaymentTest.addActionListener(dirty); // Payment Provider initPayments("Not defined", new ConfigPaymentPanelEmpty()); initPayments("external", new ConfigPaymentPanelEmpty()); initPayments("PayPoint / SecPay", new ConfigPaymentPanelGeneric()); initPayments("AuthorizeNet", new ConfigPaymentPanelGeneric()); initPayments("BluePay AUTH.NET EMU", new ConfigPaymentPanelBluePay20POST()); initPayments("BluePay 2.0 POST", new ConfigPaymentPanelBluePay20POST()); initPayments("Planetauthorize", new ConfigPaymentPanelGeneric()); initPayments("First Data / LinkPoint / YourPay", new ConfigPaymentPanelLinkPoint()); initPayments("PaymentsGateway.net", new ConfigPaymentPanelGeneric()); initPayments("La Caixa (Spain)", new ConfigPaymentPanelCaixa()); // Lector de tarjetas. jcboCardReader.addItem("Not defined"); jcboCardReader.addItem("Generic"); jcboCardReader.addItem("Intelligent"); jcboCardReader.addItem("Keyboard"); } /** * * @return */ @Override public boolean hasChanged() { return dirty.isDirty(); } /** * * @return */ @Override public Component getConfigComponent() { return this; } /** * * @param config */ @Override public void loadProperties() { jcboCardReader.setSelectedItem(AppConfig.getInstance().getProperty("payment.magcardreader")); jcboPaymentGateway.setSelectedItem(AppConfig.getInstance().getProperty("payment.gateway")); jchkPaymentTest.setSelected(Boolean.parseBoolean(AppConfig.getInstance().getProperty("payment.testmode"))); pc.loadProperties(); dirty.setDirty(false); } /** * * @param config */ @Override public void saveProperties() { AppConfig.getInstance().setProperty("payment.magcardreader", comboValue(jcboCardReader.getSelectedItem())); AppConfig.getInstance().setProperty("payment.gateway", comboValue(jcboPaymentGateway.getSelectedItem())); AppConfig.getInstance().setProperty("payment.testmode", Boolean.toString(jchkPaymentTest.isSelected())); pc.saveProperties(); dirty.setDirty(false); } private void initPayments(String name, PaymentConfiguration pc) { jcboPaymentGateway.addItem(name); paymentsName.put(name, pc); } private String comboValue(Object value) { return value == null ? "" : value.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() { jPanel2 = new javax.swing.JPanel(); jLabel13 = new javax.swing.JLabel(); jcboPaymentGateway = new javax.swing.JComboBox(); jLabel11 = new javax.swing.JLabel(); jcboCardReader = new javax.swing.JComboBox(); jchkPaymentTest = new eu.hansolo.custom.SteelCheckBox(); jPanel1 = new javax.swing.JPanel(); setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N setPreferredSize(new java.awt.Dimension(600, 450)); jPanel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jPanel2.setPreferredSize(new java.awt.Dimension(500, 200)); jPanel2.setLayout(new java.awt.GridLayout(1, 1)); jLabel13.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel13.setText(AppLocal.getIntString("label.paymentgateway")); // NOI18N jLabel13.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); jLabel13.setPreferredSize(new java.awt.Dimension(100, 30)); jcboPaymentGateway.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N jcboPaymentGateway.setPreferredSize(new java.awt.Dimension(200, 30)); jcboPaymentGateway.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jcboPaymentGatewayActionPerformed(evt); } }); jLabel11.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel11.setText(AppLocal.getIntString("label.magcardreader")); // NOI18N jLabel11.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); jLabel11.setPreferredSize(new java.awt.Dimension(100, 30)); jcboCardReader.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N jcboCardReader.setPreferredSize(new java.awt.Dimension(200, 30)); java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N jchkPaymentTest.setText(bundle.getString("label.paymenttestmode")); // NOI18N jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(10, 10, 10) .addComponent(jcboCardReader, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(10, 10, 10) .addComponent(jcboPaymentGateway, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap(176, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addGap(43, 43, 43) .addComponent(jchkPaymentTest, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(77, Short.MAX_VALUE)))))) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jcboCardReader, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(6, 6, 6) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jcboPaymentGateway, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jchkPaymentTest, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap(155, Short.MAX_VALUE)) ); }// </editor-fold>//GEN-END:initComponents private void jcboPaymentGatewayActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcboPaymentGatewayActionPerformed pc = paymentsName.get(comboValue(jcboPaymentGateway.getSelectedItem())); if (pc != null) { jPanel2.removeAll(); jPanel2.add(pc.getComponent()); jPanel2.revalidate(); jPanel2.repaint(); } }//GEN-LAST:event_jcboPaymentGatewayActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel13; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JComboBox jcboCardReader; private javax.swing.JComboBox jcboPaymentGateway; private eu.hansolo.custom.SteelCheckBox jchkPaymentTest; // End of variables declaration//GEN-END:variables }