// uniCenta oPOS - Touch Friendly Point Of Sale // Copyright (c) 2009-2018 uniCenta & previous Openbravo POS works // https://unicenta.com // // 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 . package com.unicenta.pos.config; import com.unicenta.data.user.DirtyManager; import com.unicenta.pos.forms.AppConfig; import com.unicenta.pos.forms.AppLocal; import com.unicenta.pos.payment.ConfigPaymentPanelEmpty; import com.unicenta.pos.payment.PaymentConfiguration; import java.awt.Component; import java.util.HashMap; import java.util.Map; /** * * @author adrianromero * @author Mikel Irurita */ public class JPanelConfigPayment extends javax.swing.JPanel implements PanelConfig { private final DirtyManager dirty = new DirtyManager(); private final Map paymentsName = new HashMap<>(); private PaymentConfiguration paymentConfiguration; /** Creates new form JPanelConfigPayment */ public JPanelConfigPayment() { initComponents(); // dirty manager jcboCardReader.addActionListener(dirty); jcboPaymentGateway.addActionListener(dirty); // Payment Provider initPayments("Not defined", new ConfigPaymentPanelEmpty()); initPayments("external", new ConfigPaymentPanelEmpty()); initPayments("PaymentSense", new ConfigPaymentPanelEmpty()); initPayments("Teya", new ConfigPaymentPanelEmpty()); // Lector de tarjetas. jcboCardReader.addItem("Not defined"); jcboCardReader.addItem("EMV"); jcboCardReader.addItem("External"); jcboCardReader.addItem("Generic"); jcboCardReader.addItem("Intelligent"); jcboCardReader.addItem("Keyboard"); jcboCardReader.addItem("NFC/RFID"); } /** * * @return */ @Override public boolean hasChanged() { return dirty.isDirty(); } /** * * @return */ @Override public Component getConfigComponent() { return this; } /** * * @param config */ @Override public void loadProperties(AppConfig config) { jcboCardReader.setSelectedItem(config.getProperty("payment.magcardreader")); jcboPaymentGateway.setSelectedItem(config.getProperty("payment.gateway")); urlValue.setText(config.getProperty("payment.URL")); deviceIdValue.setText(config.getProperty("payment.device-id")); securityKeyValue.setText(config.getProperty("payment.security-key")); paymentConfiguration.loadProperties(config); dirty.setDirty(false); } /** * * @param config */ @Override public void saveProperties(AppConfig config) { config.setProperty("payment.magcardreader", comboValue(jcboCardReader.getSelectedItem())); config.setProperty("payment.gateway", comboValue(jcboPaymentGateway.getSelectedItem())); config.setProperty("payment.URL", urlValue.getText()); config.setProperty("payment.device-id", deviceIdValue.getText()); config.setProperty("payment.security-key", securityKeyValue.getText()); paymentConfiguration.saveProperties(config); 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. */ // //GEN-BEGIN:initComponents private void initComponents() { jLabel13 = new javax.swing.JLabel(); jcboPaymentGateway = new javax.swing.JComboBox(); jLabel11 = new javax.swing.JLabel(); jcboCardReader = new javax.swing.JComboBox(); emvConfigPanel = new javax.swing.JPanel(); urlLabel = new javax.swing.JLabel(); urlValue = new javax.swing.JTextField(); deviceIdLabel = new javax.swing.JLabel(); deviceIdValue = new javax.swing.JTextField(); securityKeyLabel = new javax.swing.JLabel(); securityKeyValue = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N setOpaque(false); setPreferredSize(new java.awt.Dimension(590, 450)); jLabel13.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N jLabel13.setText(AppLocal.getIntString("label.paymentgateway")); // NOI18N jLabel13.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); jLabel13.setPreferredSize(new java.awt.Dimension(150, 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, 14)); // NOI18N jLabel11.setText(AppLocal.getIntString("label.cardreader")); // NOI18N jLabel11.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); jLabel11.setPreferredSize(new java.awt.Dimension(150, 30)); jcboCardReader.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N jcboCardReader.setPreferredSize(new java.awt.Dimension(200, 30)); emvConfigPanel.setBackground(new java.awt.Color(255, 255, 255)); urlLabel.setText("URL"); urlLabel.setFont(new java.awt.Font("Arial", 0, 14)); urlValue.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { urlValueActionPerformed(evt); } }); deviceIdLabel.setText("Device ID"); deviceIdLabel.setFont(new java.awt.Font("Arial", 0, 14)); securityKeyLabel.setText("Security Key"); securityKeyLabel.setFont(new java.awt.Font("Arial", 0, 14)); jLabel1.setFont(new java.awt.Font("Liberation Sans", 1, 18)); // NOI18N jLabel1.setText("Device Configuration"); javax.swing.GroupLayout emvConfigPanelLayout = new javax.swing.GroupLayout(emvConfigPanel); emvConfigPanel.setLayout(emvConfigPanelLayout); emvConfigPanelLayout.setHorizontalGroup( emvConfigPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(emvConfigPanelLayout.createSequentialGroup() .addGap(18, 18, 18) .addGroup(emvConfigPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(securityKeyLabel) .addComponent(deviceIdLabel) .addComponent(urlLabel)) .addGap(59, 59, 59) .addGroup(emvConfigPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(urlValue) .addComponent(deviceIdValue) .addComponent(securityKeyValue)) .addContainerGap()) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, emvConfigPanelLayout.createSequentialGroup() .addContainerGap(125, Short.MAX_VALUE) .addComponent(jLabel1) .addGap(114, 114, 114)) ); emvConfigPanelLayout.setVerticalGroup( emvConfigPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, emvConfigPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 12, Short.MAX_VALUE) .addGroup(emvConfigPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(urlValue, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(urlLabel)) .addGap(18, 18, 18) .addGroup(emvConfigPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(deviceIdValue, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(deviceIdLabel)) .addGap(15, 15, 15) .addGroup(emvConfigPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(securityKeyValue, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(securityKeyLabel)) .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(149, 149, 149) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel13, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jcboCardReader, 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))) .addGroup(layout.createSequentialGroup() .addGap(109, 109, 109) .addComponent(emvConfigPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGap(127, 127, 127)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(11, 11, 11) .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)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .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(64, 64, 64) .addComponent(emvConfigPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(152, Short.MAX_VALUE)) ); }// //GEN-END:initComponents private void urlValueActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_urlValueActionPerformed // TODO add your handling code here: }//GEN-LAST:event_urlValueActionPerformed private void jcboPaymentGatewayActionPerformed(java.awt.event.ActionEvent evt) { paymentConfiguration = paymentsName.get(comboValue(jcboPaymentGateway.getSelectedItem())); if (comboValue(jcboPaymentGateway.getSelectedItem()).equals("PaymentSense")) { emvConfigPanel.setVisible(Boolean.TRUE); jcboCardReader.setSelectedItem("EMV"); jcboCardReader.setEnabled(Boolean.FALSE); } else if (comboValue(jcboPaymentGateway.getSelectedItem()).equals("Teya")) { emvConfigPanel.setVisible(Boolean.FALSE); jcboCardReader.setSelectedItem("EMV"); jcboCardReader.setEnabled(Boolean.FALSE); } else { emvConfigPanel.setVisible(Boolean.FALSE); jcboCardReader.setEnabled(Boolean.TRUE); } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel deviceIdLabel; private javax.swing.JTextField deviceIdValue; private javax.swing.JPanel emvConfigPanel; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel13; private javax.swing.JComboBox jcboCardReader; private javax.swing.JComboBox jcboPaymentGateway; private javax.swing.JLabel securityKeyLabel; private javax.swing.JTextField securityKeyValue; private javax.swing.JLabel urlLabel; private javax.swing.JTextField urlValue; // End of variables declaration//GEN-END:variables }