// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2014 uniCenta & previous Openbravo POS works
// http://www.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 <http://www.gnu.org/licenses/>.
// CSV Import Panel added by JDL - February 2013
// Additonal library required - javacsv
package com.openbravo.pos.imports;
import com.csvreader.CsvReader;
import com.openbravo.basic.BasicException;
import com.openbravo.data.gui.ComboBoxValModel;
import com.openbravo.data.loader.SentenceList;
import com.openbravo.data.loader.Session;
import com.openbravo.data.user.SaveProvider;
import com.openbravo.pos.forms.*;
import com.openbravo.pos.inventory.TaxCategoryInfo;
import com.openbravo.pos.sales.TaxesLogic;
import com.openbravo.pos.ticket.ProductInfoExt;
import java.io.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.apache.commons.lang.StringUtils;
/**
* Graphical User Interface and code for importing data from a CSV file allowing
* adding or updating many products quickly and easily.
*
* @author John L - Version 1.0
* @author Walter Wojcik - Version 2.0+
* @version 2.0 - Added functionality to remember the last folder opened and
* importing categories from CVS.
* @version 2.1 complete re-write of the core code, to make use of the core
* classes available within Unicenta
*/
public class JPanelCSVImport extends JPanel implements JPanelView {
private ArrayList<String> Headers = new ArrayList<>();
private Session s;
private Connection con;
private String csvFileName;
private Double dOriginalRate;
private String dCategory;
private String csvMessage = "";
private CsvReader products;
private double oldSellPrice = 0;
private double oldBuyPrice = 0;
private int currentRecord;
private int rowCount = 0;
private String last_folder;
private File config_file;
private static String category_disable_text = "[ USE DEFAULT CATEGORY ]";
private static String reject_bad_categories_text = "[ REJECT ITEMS WITH BAD CATEGORIES ]";
private DataLogicSales m_dlSales;
private DataLogicSystem m_dlSystem;
/**
*
*/
protected SaveProvider spr;
private String productReference;
private String productBarcode;
private String productName;
private String Category;
private Double productBuyPrice;
private Double productSellPrice;
private SentenceList m_sentcat;
private ComboBoxValModel m_CategoryModel;
private SentenceList taxcatsent;
private ComboBoxValModel taxcatmodel;
private SentenceList taxsent;
private TaxesLogic taxeslogic;
private DocumentListener documentListener;
private HashMap cat_list = new HashMap();
private ArrayList badCategories = new ArrayList();
private ProductInfoExt prodInfo;
private String recordType = null;
private int newRecords = 0;
private int invalidRecords = 0;
private int priceUpdates = 0;
private int missingData = 0;
private int noChanges = 0;
private int badPrice = 0;
private double dTaxRate;
/**
* Constructs a new JPanelCSVImport object
*
* @param oApp AppView
*/
public JPanelCSVImport(AppView oApp) {
this(oApp.getProperties());
}
/**
* Constructs a new JPanelCSVImport object
*
* @param props AppProperties
*/
@SuppressWarnings("empty-statement")
public JPanelCSVImport(AppProperties props) {
initComponents();
// Open Database session
try {
s = AppViewConnection.createSession(props);
con = s.getConnection();
} catch (BasicException | SQLException e) {;
}
/*
* Create new datalogocsales & DataLogicSystem instances to allow access to sql routines.
*/
m_dlSales = new DataLogicSales();
m_dlSales.init(s);
m_dlSystem = new DataLogicSystem();
m_dlSystem.init(s);
spr = new SaveProvider(
m_dlSales.getProductCatUpdate(),
m_dlSales.getProductCatInsert(),
m_dlSales.getProductCatDelete());
// Save Last file for later use.
last_folder = props.getProperty("CSV.last_folder");
config_file = props.getConfigFile();
jFileName.getDocument().addDocumentListener(documentListener);
documentListener = new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent documentEvent) {
jHeaderRead.setEnabled(true);
}
@Override
public void insertUpdate(DocumentEvent documentEvent) {
if (!"".equals(jFileName.getText().trim())) {
jHeaderRead.setEnabled(true);
}
}
@Override
public void removeUpdate(DocumentEvent documentEvent) {
if (jFileName.getText().trim().equals("")) {
jHeaderRead.setEnabled(false);
}
}
};
jFileName.getDocument().addDocumentListener(documentListener);
}
/**
* Reads the headers from the CSV file and initializes subsequent form
* fields. This function first reads the headers from the CSVFileName file,
* then puts them into the header combo boxes and enables the other form
* inputs.
*
* @todo Simplify this method by stripping the file reading and writing
* functionality out into it's own class. Also make the enabling fields
* section into it's own function and return the 'Headers' to the calling
* function to be added there.
*
* @param CSVFileName Name of the file (including the path) to open and read
* CSV data from
* @throws IOException If there is an issue reading the CSV file
*/
private void GetheadersFromFile(String CSVFileName) throws IOException {
File f = new File(CSVFileName);
if (f.exists()) {
products = new CsvReader(CSVFileName);
products.setDelimiter(((String) jComboSeparator.getSelectedItem()).charAt(0));
products.readHeaders();
// We need a minimum of 5 columns to map all required fields
if (products.getHeaderCount() < 5) {
JOptionPane.showMessageDialog(null,
"Insufficient headers found in file",
"Invalid Header Count.",
JOptionPane.WARNING_MESSAGE);
products.close();
return;
}
rowCount = 0;
int i = 0;
Headers.clear();
Headers.add("");
jComboName.addItem("");
jComboReference.addItem("");
jComboBarcode.addItem("");
jComboBuy.addItem("");
jComboSell.addItem("");
jComboCategory.addItem("");
/**
* @todo Return header list for processing elsewhere
*/
while (i < products.getHeaderCount()) {
jComboName.addItem(products.getHeader(i));
jComboReference.addItem(products.getHeader(i));
jComboBarcode.addItem(products.getHeader(i));
jComboBuy.addItem(products.getHeader(i));
jComboSell.addItem(products.getHeader(i));
jComboCategory.addItem(products.getHeader(i));
Headers.add(products.getHeader(i));
++i;
}
//enable all the chsck boxes ready for use
enableCheckBoxes();
//Count the records found
while (products.readRecord()) {
++rowCount;
}
jTextRecords.setText(Long.toString(rowCount));
// close the file we will open again when required
products.close();
} else {
JOptionPane.showMessageDialog(null, "Unable to locate "
+ CSVFileName,
"File not found",
JOptionPane.WARNING_MESSAGE);
}
}
/**
* Enables all the selection options on the for to allow the user to
* interact with the routine.
*
*/
private void enableCheckBoxes() {
jHeaderRead.setEnabled(false);
jImport.setEnabled(false);
jComboReference.setEnabled(true);
jComboName.setEnabled(true);
jComboBarcode.setEnabled(true);
jComboBuy.setEnabled(true);
jComboSell.setEnabled(true);
jComboCategory.setEnabled(true);
jComboDefaultCategory.setEnabled(true);
jComboTax.setEnabled(true);
jCheckInCatalogue.setEnabled(true);
jCheckSellIncTax.setEnabled(true);
}
/**
* Imports the CVS File using specifications from the form.
*
* @param CSVFileName Name of the file (including path) to import.
* @throws IOException If there are file reading issues.
*/
private void ImportCsvFile(String CSVFileName) throws IOException {
File f = new File(CSVFileName);
if (f.exists()) {
// Read file
products = new CsvReader(CSVFileName);
products.setDelimiter(((String) jComboSeparator.getSelectedItem()).charAt(0));
products.readHeaders();
currentRecord = 0;
while (products.readRecord()) {
productReference = products.get((String) jComboReference.getSelectedItem());
productName = products.get((String) jComboName.getSelectedItem());
productBarcode = products.get((String) jComboBarcode.getSelectedItem());
String BuyPrice = products.get((String) jComboBuy.getSelectedItem());
String SellPrice = products.get((String) jComboSell.getSelectedItem());
Category = products.get((String) jComboCategory.getSelectedItem());
currentRecord++;
// Strip Currency Symbols
BuyPrice = StringUtils.replaceChars(BuyPrice, "$", ""); // Remove currency symbol
SellPrice = StringUtils.replaceChars(SellPrice, "$", ""); // Remove currency symbol
dCategory = getCategory();
// set the csvMessage to a default value
if ("Bad Category".equals(dCategory)) {
csvMessage = "Bad category details";
} else {
csvMessage = "Missing data or Invalid number";
}
// Validate and convert the prices or change them to null
if (validateNumber(BuyPrice)) {
productBuyPrice = Double.parseDouble(BuyPrice);
} else {
productBuyPrice = null;
}
if (validateNumber(SellPrice)) {
productSellPrice = getSellPrice(SellPrice);
} else {
productSellPrice = null;
}
/**
* Check to make sure our entries aren't bad or blank or the
* category is not bad
*
*/
if ("".equals(productReference)
| "".equals(productName)
| "".equals(productBarcode)
| "".equals(BuyPrice)
| "".equals(SellPrice)
| productBuyPrice == null
| productSellPrice == null
| "Bad Category".equals(dCategory)) {
if (productBuyPrice == null | productSellPrice == null) {
badPrice++;
} else {
missingData++;
}
createCSVEntry(csvMessage, null, null);
} else {
// We know that the data passes the basic checks, so get more details about the product
recordType = getRecord();
switch (recordType) {
case "new":
createProduct("new");
newRecords++;
createCSVEntry("New product", null, null);
break;
case "name error":
case "barcode error":
case "reference error":
case "Duplicate Reference found.":
case "Duplicate Barcode found.":
case "Duplicate Description found.":
case "Exception":
invalidRecords++;
createCSVEntry(recordType, null, null);
break;
default:
updateRecord(recordType);
break;
}
}
}
} else {
JOptionPane.showMessageDialog(null, "Unable to locate " + CSVFileName, "File not found", JOptionPane.WARNING_MESSAGE);
}
// update the record fields on the form
jTextNew.setText(Integer.toString(newRecords));
jTextUpdate.setText(Integer.toString(priceUpdates));
jTextInvalid.setText(Integer.toString(invalidRecords));
jTextMissing.setText(Integer.toString(missingData));
jTextNoChange.setText(Integer.toString(noChanges));
jTextBadPrice.setText(Integer.toString(badPrice));
jTextBadCats.setText(Integer.toString(badCategories.size()));
}
/**
* Tests
* <code>testString</code> for validity as a number
*
* @param testString the string to be checked
* @return <code>True<code> if a real number <code>False<code> if not
*/
private Boolean validateNumber(String testString) {
try {
Double res = Double.parseDouble(testString);
return (true);
} catch (NumberFormatException e) {
return (false);
}
}
/*
* Get the category to be used for the new product
* returns category id as string
*/
private String getCategory() {
// get the category to be used for the product
if (jComboCategory.getSelectedItem() != category_disable_text) {
// get the category ID of the catergory passed
String cat = (String) cat_list.get(Category);
// only if we have a valid category
if (cat != null) {
return (cat);
}
}
if (!badCategories.contains(Category)) {
badCategories.add(Category.trim()); // Save a list of the bad categories so we can tell the user later
}
return ((jComboDefaultCategory.getSelectedItem() == reject_bad_categories_text) ? "Bad Category" : (String) cat_list.get(m_CategoryModel.getSelectedText()));
}
/**
* Adjusts the sell price for included taxes if needed and converted to
* <code>double</code>
*
* @param pSellPrice sell price to be converted
* @return sell price after adjustment for included taxes and converted to <code>double</double>
*/
private Double getSellPrice(String pSellPrice) {
// Check if the selling price icludes taxes
dTaxRate = taxeslogic.getTaxRate((TaxCategoryInfo) taxcatmodel.getSelectedItem());
if (jCheckSellIncTax.isSelected()) {
return ((Double.parseDouble(pSellPrice)) / (1 + dTaxRate));
} else {
return (Double.parseDouble(pSellPrice));
}
}
/**
* Updated the record in the database with the new prices and category if
* needed.
*
* @param pID Unique product id of the record to be updated It then creates
* an updated record for the product, subject to the prices be different
*
*/
private void updateRecord(String pID) {
prodInfo = new ProductInfoExt();
try {
prodInfo = m_dlSales.getProductInfo(pID);
dOriginalRate = taxeslogic.getTaxRate(prodInfo.getTaxCategoryID());
dCategory = (String) cat_list.get(prodInfo.getCategoryID());
oldBuyPrice = prodInfo.getPriceBuy();
oldSellPrice = prodInfo.getPriceSell();
productSellPrice *= (1 + dOriginalRate);
if ((oldBuyPrice != productBuyPrice) || (oldSellPrice != productSellPrice)) {
createCSVEntry("Updated Price Details", oldBuyPrice, oldSellPrice * (1 + dOriginalRate));
createProduct("update");
priceUpdates++;
} else {
noChanges++;
}
} catch (BasicException ex) {
Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Gets the title of the current panel
*
* @return The name of the panel
*/
@Override
public String getTitle() {
return AppLocal.getIntString("Menu.CSVImport");
}
/**
* Returns this object
* @return
*/
@Override
public JComponent getComponent() {
return this;
}
/**
* Loads Tax and category data into their combo boxes.
* @throws com.openbravo.basic.BasicException
*/
@Override
public void activate() throws BasicException {
// Get tax details and logic
taxsent = m_dlSales.getTaxList(); //get details taxes table
taxeslogic = new TaxesLogic(taxsent.list());
taxcatsent = m_dlSales.getTaxCategoriesList();
taxcatmodel = new ComboBoxValModel(taxcatsent.list());
jComboTax.setModel(taxcatmodel);
// Get categories list
m_sentcat = m_dlSales.getCategoriesList();
m_CategoryModel = new ComboBoxValModel(m_sentcat.list());
m_CategoryModel.add(reject_bad_categories_text);
jComboDefaultCategory.setModel(m_CategoryModel);
// Build the cat_list for later use
cat_list = new HashMap<>();
for (Object category : m_sentcat.list()) {
m_CategoryModel.setSelectedItem(category);
cat_list.put(category.toString(), m_CategoryModel.getSelectedKey().toString());
}
// reset the selected to the first in the list
m_CategoryModel.setSelectedItem(null);
taxcatmodel.setSelectedFirst();
// Set the column delimiter
jComboSeparator.removeAllItems();
jComboSeparator.addItem(",");
jComboSeparator.addItem(";");
jComboSeparator.addItem("~");
jComboSeparator.addItem("^");
}
/**
* Resets all the form fields
*/
public void resetFields() {
// Clear the form
jComboReference.removeAllItems();
jComboReference.setEnabled(false);
jComboName.removeAllItems();
jComboName.setEnabled(false);
jComboBarcode.removeAllItems();
jComboBarcode.setEnabled(false);
jComboBuy.removeAllItems();
jComboBuy.setEnabled(false);
jComboSell.removeAllItems();
jComboSell.setEnabled(false);
jComboCategory.removeAllItems();
jComboCategory.setEnabled(false);
jComboDefaultCategory.setEnabled(false);
jComboTax.setEnabled(false);
jImport.setEnabled(false);
jHeaderRead.setEnabled(false);
jCheckInCatalogue.setSelected(false);
jCheckInCatalogue.setEnabled(false);
jCheckSellIncTax.setSelected(false);
jCheckSellIncTax.setEnabled(false);
jFileName.setText(null);
csvFileName = "";
jTextNew.setText("");
jTextUpdate.setText("");
jTextInvalid.setText("");
jTextMissing.setText("");
jTextNoChange.setText("");
jTextRecords.setText("");
jTextBadPrice.setText("");
Headers.clear();
}
/**
* Checks the field mappings to ensure all compulsory fields have been
* completed to allow import to proceed
*/
public void checkFieldMapping() {
if (jComboReference.getSelectedItem() != "" & jComboName.getSelectedItem() != "" & jComboBarcode.getSelectedItem() != ""
& jComboBuy.getSelectedItem() != "" & jComboSell.getSelectedItem() != "" & jComboCategory.getSelectedItem() != ""
& m_CategoryModel.getSelectedText() != null) {
jImport.setEnabled(true);
} else {
jImport.setEnabled(false);
}
}
/**
* Deactivates and resets all form fields.
*
* @return
*/
@Override
public boolean deactivate() {
resetFields();
return (true);
}
/**
*
* @param pType
*/
public void createProduct(String pType) {
// create a new product and save it using DalaLogicSales
Object[] myprod = new Object[25];
myprod[0] = UUID.randomUUID().toString(); // ID string
myprod[1] = productReference; // Reference string
myprod[2] = productBarcode; // Barcode String
myprod[3] = productName; // Name string
myprod[4] = false; // IScomment flag (Attribute modifier)
myprod[5] = false; // ISscale flag
myprod[6] = productBuyPrice; // Buy price double
myprod[7] = productSellPrice; // Sell price double
myprod[8] = dCategory; // Category string
myprod[9] = taxcatmodel.getSelectedKey(); // Tax string
myprod[10] = null; // Attributeset string
myprod[11] = null; // Image
myprod[12] = null; // Stock cost double
myprod[13] = null; // Stock volume double
myprod[14] = jCheckInCatalogue.isSelected(); // In catalog flag
myprod[15] = null; // catalog order
myprod[16] = null; //
myprod[17] = false; // IsKitchen flag
myprod[18] = false; // isService flag
myprod[19] = "<HTML>" + productName; //
myprod[20] = false; // isVariable price flag
myprod[21] = false; // Compulsory Att flag
myprod[22] = productName; // Text tip string
myprod[23] = false; // Warranty flag
myprod[24] = 0.0; // StockUnits
try {
if (pType == "new") {
spr.insertData(myprod);
} else {
spr.updateData(myprod);
}
} catch (BasicException ex) {
Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
*
* @param csvError
* @param PreviousBuy
* @param previousSell
*/
public void createCSVEntry(String csvError, Double PreviousBuy, Double previousSell) {
// create a new csv entry and save it using DataLogicSystem
Object[] myprod = new Object[11];
myprod[0] = UUID.randomUUID().toString(); // ID string
myprod[1] = Integer.toString(currentRecord); // Record number
myprod[2] = csvError; // Error description
myprod[3] = productReference; // Reference string
myprod[4] = productBarcode; // Barcode String
myprod[5] = productName; // Name string
myprod[6] = productBuyPrice; // Buy price
myprod[7] = productSellPrice; // Sell price
myprod[8] = PreviousBuy; // Previous Buy price double
myprod[9] = previousSell; // Previous Sell price double
myprod[10] = Category;
try {
m_dlSystem.execAddCSVEntry(myprod);
} catch (BasicException ex) {
Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
*
* @return
*/
public String getRecord() {
// Get record type using using DataLogicSystem
Object[] myprod = new Object[3];
myprod[0] = productReference;
myprod[1] = productBarcode;
myprod[2] = productName;
try {
return (m_dlSystem.getProductRecordType(myprod));
} catch (BasicException ex) {
Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
}
return "Exception";
}
/**
* 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() {
jFileChooserPanel = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jFileName = new javax.swing.JTextField();
jbtnDbDriverLib = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jComboReference = new javax.swing.JComboBox();
jComboBarcode = new javax.swing.JComboBox();
jComboName = new javax.swing.JComboBox();
jComboBuy = new javax.swing.JComboBox();
jComboSell = new javax.swing.JComboBox();
jComboDefaultCategory = new javax.swing.JComboBox();
jComboTax = new javax.swing.JComboBox();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jCheckInCatalogue = new javax.swing.JCheckBox();
jLabel8 = new javax.swing.JLabel();
jCheckSellIncTax = new javax.swing.JCheckBox();
jLabel12 = new javax.swing.JLabel();
jComboCategory = new javax.swing.JComboBox();
jLabel20 = new javax.swing.JLabel();
jLabel17 = new javax.swing.JLabel();
jLabel18 = new javax.swing.JLabel();
jHeaderRead = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jLabel9 = new javax.swing.JLabel();
jLabel14 = new javax.swing.JLabel();
jLabel16 = new javax.swing.JLabel();
jTextUpdates = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jTextRecords = new javax.swing.JTextField();
jTextNew = new javax.swing.JTextField();
jTextInvalid = new javax.swing.JTextField();
jTextUpdate = new javax.swing.JTextField();
jTextMissing = new javax.swing.JTextField();
jTextBadPrice = new javax.swing.JTextField();
jTextNoChange = new javax.swing.JTextField();
jLabel19 = new javax.swing.JLabel();
jTextBadCats = new javax.swing.JTextField();
jComboSeparator = new javax.swing.JComboBox();
jImport = new javax.swing.JButton();
setOpaque(false);
setPreferredSize(new java.awt.Dimension(630, 430));
jLabel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
jLabel1.setText(bundle.getString("label.csvfile")); // NOI18N
jLabel1.setPreferredSize(new java.awt.Dimension(100, 30));
jFileName.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jFileName.setPreferredSize(new java.awt.Dimension(275, 30));
jFileName.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jFileNameActionPerformed(evt);
}
});
jbtnDbDriverLib.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/openbravo/images/fileopen.png"))); // NOI18N
jbtnDbDriverLib.setMaximumSize(new java.awt.Dimension(64, 32));
jbtnDbDriverLib.setMinimumSize(new java.awt.Dimension(64, 32));
jbtnDbDriverLib.setPreferredSize(new java.awt.Dimension(64, 32));
jbtnDbDriverLib.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnDbDriverLibActionPerformed(evt);
}
});
javax.swing.GroupLayout jFileChooserPanelLayout = new javax.swing.GroupLayout(jFileChooserPanel);
jFileChooserPanel.setLayout(jFileChooserPanelLayout);
jFileChooserPanelLayout.setHorizontalGroup(
jFileChooserPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jFileChooserPanelLayout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jFileName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jbtnDbDriverLib, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(116, 116, 116))
);
jFileChooserPanelLayout.setVerticalGroup(
jFileChooserPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jFileChooserPanelLayout.createSequentialGroup()
.addGroup(jFileChooserPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jFileName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(jbtnDbDriverLib, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jComboReference.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jComboReference.setEnabled(false);
jComboReference.setMinimumSize(new java.awt.Dimension(32, 25));
jComboReference.setOpaque(false);
jComboReference.setPreferredSize(new java.awt.Dimension(275, 30));
jComboReference.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jComboReferenceItemStateChanged(evt);
}
});
jComboReference.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
jComboReferenceFocusGained(evt);
}
});
jComboBarcode.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jComboBarcode.setEnabled(false);
jComboBarcode.setMinimumSize(new java.awt.Dimension(32, 25));
jComboBarcode.setPreferredSize(new java.awt.Dimension(275, 30));
jComboBarcode.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jComboBarcodeItemStateChanged(evt);
}
});
jComboBarcode.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
jComboBarcodeFocusGained(evt);
}
});
jComboName.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jComboName.setEnabled(false);
jComboName.setMinimumSize(new java.awt.Dimension(32, 25));
jComboName.setPreferredSize(new java.awt.Dimension(275, 30));
jComboName.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jComboNameItemStateChanged(evt);
}
});
jComboName.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
jComboNameFocusGained(evt);
}
});
jComboBuy.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jComboBuy.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "" }));
jComboBuy.setSelectedIndex(-1);
jComboBuy.setEnabled(false);
jComboBuy.setMinimumSize(new java.awt.Dimension(32, 25));
jComboBuy.setPreferredSize(new java.awt.Dimension(275, 30));
jComboBuy.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jComboBuyItemStateChanged(evt);
}
});
jComboBuy.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
jComboBuyFocusGained(evt);
}
});
jComboSell.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jComboSell.setEnabled(false);
jComboSell.setMinimumSize(new java.awt.Dimension(32, 25));
jComboSell.setPreferredSize(new java.awt.Dimension(275, 30));
jComboSell.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jComboSellItemStateChanged(evt);
}
});
jComboSell.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
jComboSellFocusGained(evt);
}
});
jComboDefaultCategory.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jComboDefaultCategory.setEnabled(false);
jComboDefaultCategory.setMinimumSize(new java.awt.Dimension(32, 25));
jComboDefaultCategory.setPreferredSize(new java.awt.Dimension(275, 30));
jComboDefaultCategory.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jComboDefaulrCategoryItemStateChanged(evt);
}
});
jComboDefaultCategory.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboDefaultCategoryActionPerformed(evt);
}
});
jComboTax.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jComboTax.setEnabled(false);
jComboTax.setPreferredSize(new java.awt.Dimension(275, 30));
jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel3.setText(bundle.getString("label.prodref")); // NOI18N
jLabel3.setPreferredSize(new java.awt.Dimension(100, 30));
jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel4.setText(bundle.getString("label.prodbarcode")); // NOI18N
jLabel4.setPreferredSize(new java.awt.Dimension(100, 30));
jLabel5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel5.setText(bundle.getString("label.prodname")); // NOI18N
jLabel5.setPreferredSize(new java.awt.Dimension(100, 30));
jLabel10.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel10.setText(bundle.getString("label.prodpricebuy")); // NOI18N
jLabel10.setPreferredSize(new java.awt.Dimension(100, 30));
jLabel11.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel11.setText(bundle.getString("label.prodcategory")); // NOI18N
jLabel11.setPreferredSize(new java.awt.Dimension(100, 30));
jLabel6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel6.setText(bundle.getString("label.proddefaultcategory")); // NOI18N
jLabel6.setPreferredSize(new java.awt.Dimension(100, 30));
jLabel7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel7.setText(bundle.getString("label.prodtaxcode")); // NOI18N
jLabel7.setPreferredSize(new java.awt.Dimension(100, 30));
jCheckInCatalogue.setEnabled(false);
jLabel8.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel8.setText(bundle.getString("label.prodincatalog")); // NOI18N
jCheckSellIncTax.setEnabled(false);
jLabel12.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel12.setText(bundle.getString("label.csvsellingintax")); // NOI18N
jComboCategory.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jComboCategory.setEnabled(false);
jComboCategory.setMinimumSize(new java.awt.Dimension(32, 25));
jComboCategory.setName(""); // NOI18N
jComboCategory.setPreferredSize(new java.awt.Dimension(275, 30));
jComboCategory.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
jComboCategoryItemStateChanged(evt);
}
});
jComboCategory.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
jComboCategoryFocusGained(evt);
}
});
jLabel20.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel20.setText(bundle.getString("label.prodpricesell")); // NOI18N
jLabel20.setPreferredSize(new java.awt.Dimension(100, 30));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jComboDefaultCategory, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jComboTax, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(1, 1, 1)
.addComponent(jCheckInCatalogue, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jCheckSellIncTax, javax.swing.GroupLayout.Alignment.TRAILING))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE))))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel20, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jComboCategory, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jComboReference, 0, 454, Short.MAX_VALUE)
.addComponent(jComboBarcode, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jComboName, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jComboBuy, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jComboSell, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(2, 2, 2)
.addComponent(jComboReference, 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(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jComboBarcode, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jComboName, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jComboBuy, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jComboSell, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel20, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jComboCategory, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel6, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jComboDefaultCategory, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jComboTax, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jCheckInCatalogue)
.addGap(10, 10, 10))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel8, 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)
.addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jCheckSellIncTax))
.addGap(54, 54, 54))
);
jLabel17.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
jLabel17.setText("Import Version V2.1");
jLabel18.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel18.setText(bundle.getString("label.csvdelimit")); // NOI18N
jLabel18.setPreferredSize(new java.awt.Dimension(100, 30));
jHeaderRead.setFont(new java.awt.Font("Arial", 0, 11)); // NOI18N
jHeaderRead.setText(bundle.getString("label.csvread")); // NOI18N
jHeaderRead.setEnabled(false);
jHeaderRead.setPreferredSize(new java.awt.Dimension(120, 30));
jHeaderRead.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jHeaderReadActionPerformed(evt);
}
});
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 1, true), bundle.getString("title.CSVImport"), 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
jLabel9.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel9.setText(bundle.getString("label.csvrecordsfound")); // NOI18N
jLabel9.setPreferredSize(new java.awt.Dimension(100, 25));
jLabel14.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel14.setText(bundle.getString("label.csvnewproducts")); // NOI18N
jLabel14.setMaximumSize(new java.awt.Dimension(77, 14));
jLabel14.setMinimumSize(new java.awt.Dimension(77, 14));
jLabel14.setPreferredSize(new java.awt.Dimension(100, 25));
jLabel16.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel16.setText(bundle.getString("label.cvsinvalid")); // NOI18N
jLabel16.setPreferredSize(new java.awt.Dimension(100, 25));
jTextUpdates.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jTextUpdates.setText(bundle.getString("label.csvpriceupdated")); // NOI18N
jTextUpdates.setPreferredSize(new java.awt.Dimension(100, 25));
jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel2.setText(bundle.getString("label.csvmissing")); // NOI18N
jLabel2.setPreferredSize(new java.awt.Dimension(100, 25));
jLabel15.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel15.setText(bundle.getString("label.csvbad")); // NOI18N
jLabel15.setPreferredSize(new java.awt.Dimension(100, 25));
jLabel13.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel13.setText(bundle.getString("label.cvsnotchanged")); // NOI18N
jLabel13.setPreferredSize(new java.awt.Dimension(100, 25));
jTextRecords.setBackground(new java.awt.Color(224, 223, 227));
jTextRecords.setFont(new java.awt.Font("Arial", 1, 11)); // NOI18N
jTextRecords.setForeground(new java.awt.Color(102, 102, 102));
jTextRecords.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jTextRecords.setBorder(null);
jTextRecords.setDisabledTextColor(new java.awt.Color(0, 0, 0));
jTextRecords.setEnabled(false);
jTextRecords.setPreferredSize(new java.awt.Dimension(70, 25));
jTextNew.setBackground(new java.awt.Color(224, 223, 227));
jTextNew.setFont(new java.awt.Font("Arial", 1, 11)); // NOI18N
jTextNew.setForeground(new java.awt.Color(102, 102, 102));
jTextNew.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jTextNew.setBorder(null);
jTextNew.setDisabledTextColor(new java.awt.Color(0, 0, 0));
jTextNew.setEnabled(false);
jTextNew.setPreferredSize(new java.awt.Dimension(70, 25));
jTextInvalid.setBackground(new java.awt.Color(224, 223, 227));
jTextInvalid.setFont(new java.awt.Font("Arial", 1, 11)); // NOI18N
jTextInvalid.setForeground(new java.awt.Color(102, 102, 102));
jTextInvalid.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jTextInvalid.setBorder(null);
jTextInvalid.setDisabledTextColor(new java.awt.Color(0, 0, 0));
jTextInvalid.setEnabled(false);
jTextInvalid.setPreferredSize(new java.awt.Dimension(70, 25));
jTextUpdate.setBackground(new java.awt.Color(224, 223, 227));
jTextUpdate.setFont(new java.awt.Font("Arial", 1, 11)); // NOI18N
jTextUpdate.setForeground(new java.awt.Color(102, 102, 102));
jTextUpdate.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jTextUpdate.setBorder(null);
jTextUpdate.setDisabledTextColor(new java.awt.Color(0, 0, 0));
jTextUpdate.setEnabled(false);
jTextUpdate.setPreferredSize(new java.awt.Dimension(70, 25));
jTextMissing.setBackground(new java.awt.Color(224, 223, 227));
jTextMissing.setFont(new java.awt.Font("Arial", 1, 11)); // NOI18N
jTextMissing.setForeground(new java.awt.Color(102, 102, 102));
jTextMissing.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jTextMissing.setBorder(null);
jTextMissing.setDisabledTextColor(new java.awt.Color(0, 0, 0));
jTextMissing.setEnabled(false);
jTextMissing.setPreferredSize(new java.awt.Dimension(70, 25));
jTextBadPrice.setBackground(new java.awt.Color(224, 223, 227));
jTextBadPrice.setFont(new java.awt.Font("Arial", 1, 11)); // NOI18N
jTextBadPrice.setForeground(new java.awt.Color(102, 102, 102));
jTextBadPrice.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jTextBadPrice.setBorder(null);
jTextBadPrice.setDisabledTextColor(new java.awt.Color(0, 0, 0));
jTextBadPrice.setEnabled(false);
jTextBadPrice.setPreferredSize(new java.awt.Dimension(70, 25));
jTextNoChange.setBackground(new java.awt.Color(224, 223, 227));
jTextNoChange.setFont(new java.awt.Font("Arial", 1, 11)); // NOI18N
jTextNoChange.setForeground(new java.awt.Color(102, 102, 102));
jTextNoChange.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jTextNoChange.setBorder(null);
jTextNoChange.setDisabledTextColor(new java.awt.Color(0, 0, 0));
jTextNoChange.setEnabled(false);
jTextNoChange.setPreferredSize(new java.awt.Dimension(70, 25));
jLabel19.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel19.setText(bundle.getString("label.cvsbadcats")); // NOI18N
jLabel19.setPreferredSize(new java.awt.Dimension(100, 25));
jTextBadCats.setBackground(new java.awt.Color(224, 223, 227));
jTextBadCats.setFont(new java.awt.Font("Arial", 1, 11)); // NOI18N
jTextBadCats.setForeground(new java.awt.Color(102, 102, 102));
jTextBadCats.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jTextBadCats.setBorder(null);
jTextBadCats.setDisabledTextColor(new java.awt.Color(0, 0, 0));
jTextBadCats.setEnabled(false);
jTextBadCats.setPreferredSize(new java.awt.Dimension(70, 25));
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)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextRecords, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jLabel19, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel13, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel16, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jTextUpdates, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel15, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextBadCats, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextNew, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextInvalid, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextUpdate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextMissing, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextBadPrice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextNoChange, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(26, Short.MAX_VALUE))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(0, 0, 0)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextRecords, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextNew, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextInvalid, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextUpdates, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextUpdate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextMissing, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextBadPrice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextNoChange, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel19, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextBadCats, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jComboSeparator.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jComboSeparator.setPreferredSize(new java.awt.Dimension(50, 30));
jImport.setFont(new java.awt.Font("Arial", 0, 11)); // NOI18N
jImport.setText(bundle.getString("label.csvimpostbtn")); // NOI18N
jImport.setEnabled(false);
jImport.setPreferredSize(new java.awt.Dimension(120, 30));
jImport.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jImportActionPerformed(evt);
}
});
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()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel17))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(10, 10, 10)
.addComponent(jFileChooserPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jComboSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(106, 106, 106)
.addComponent(jHeaderRead, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jImport, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(8, 8, 8)))
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, 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)))))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel17)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jFileChooserPanel, 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(jComboSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jHeaderRead, 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.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 359, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(53, 53, 53)
.addComponent(jImport, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
private void jHeaderReadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jHeaderReadActionPerformed
try {
GetheadersFromFile(jFileName.getText());
} catch (IOException ex) {
Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
}
}//GEN-LAST:event_jHeaderReadActionPerformed
private void jImportActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jImportActionPerformed
// prevent any more key presses
jImport.setEnabled(false);
try {
ImportCsvFile(jFileName.getText());
} catch (IOException ex) {
Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
}
}//GEN-LAST:event_jImportActionPerformed
private void jFileNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jFileNameActionPerformed
jImport.setEnabled(false);
jHeaderRead.setEnabled(true);
}//GEN-LAST:event_jFileNameActionPerformed
private void jbtnDbDriverLibActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnDbDriverLibActionPerformed
resetFields();
// If CSV.last_file is null then use c:\ otherwise use saved dir
JFileChooser chooser = new JFileChooser(last_folder == null ? "C:\\" : last_folder);
FileNameExtensionFilter filter = new FileNameExtensionFilter("csv files", "csv");
chooser.setFileFilter(filter);
chooser.showOpenDialog(null);
File csvFile = chooser.getSelectedFile();
// check if a file was selected
if (csvFile == null) {
return;
}
File current_folder = chooser.getCurrentDirectory();
// If we have a file lets save the directory for later use if it's different from the old
if (last_folder == null || !last_folder.equals(current_folder.getAbsolutePath())) {
AppConfig CSVConfig = new AppConfig(config_file);
CSVConfig.load();
CSVConfig.setProperty("CSV.last_folder", current_folder.getAbsolutePath());
last_folder = current_folder.getAbsolutePath();
try {
CSVConfig.save();
} catch (IOException ex) {
Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
}
}
String csv = csvFile.getName();
if (!(csv.trim().equals(""))) {
csvFileName = csvFile.getAbsolutePath();
jFileName.setText(csvFileName);
}
}//GEN-LAST:event_jbtnDbDriverLibActionPerformed
private void jComboDefaultCategoryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboDefaultCategoryActionPerformed
checkFieldMapping();
}//GEN-LAST:event_jComboDefaultCategoryActionPerformed
private void jComboSellFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jComboSellFocusGained
jComboSell.removeAllItems();
int i = 1;
jComboSell.addItem("");
while (i < Headers.size()) {
if ((Headers.get(i) != jComboCategory.getSelectedItem()) & (Headers.get(i) != jComboReference.getSelectedItem()) & (Headers.get(i) != jComboName.getSelectedItem()) & (Headers.get(i) != jComboBuy.getSelectedItem()) & (Headers.get(i) != jComboBarcode.getSelectedItem())) {
jComboSell.addItem(Headers.get(i));
}
++i;
}
}//GEN-LAST:event_jComboSellFocusGained
private void jComboSellItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboSellItemStateChanged
checkFieldMapping();
}//GEN-LAST:event_jComboSellItemStateChanged
private void jComboBuyFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jComboBuyFocusGained
jComboBuy.removeAllItems();
int i = 1;
jComboBuy.addItem("");
while (i < Headers.size()) {
if ((Headers.get(i) != jComboCategory.getSelectedItem()) & (Headers.get(i) != jComboReference.getSelectedItem()) & (Headers.get(i) != jComboName.getSelectedItem()) & (Headers.get(i) != jComboBarcode.getSelectedItem()) & (Headers.get(i) != jComboSell.getSelectedItem())) {
jComboBuy.addItem(Headers.get(i));
}
++i;
}
}//GEN-LAST:event_jComboBuyFocusGained
private void jComboBuyItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboBuyItemStateChanged
checkFieldMapping();
}//GEN-LAST:event_jComboBuyItemStateChanged
private void jComboNameFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jComboNameFocusGained
jComboName.removeAllItems();
int i = 1;
jComboName.addItem("");
while (i < Headers.size()) {
if ((Headers.get(i) != jComboCategory.getSelectedItem()) & (Headers.get(i) != jComboReference.getSelectedItem()) & (Headers.get(i) != jComboBarcode.getSelectedItem()) & (Headers.get(i) != jComboBuy.getSelectedItem()) & (Headers.get(i) != jComboSell.getSelectedItem())) {
jComboName.addItem(Headers.get(i));
}
++i;
}
}//GEN-LAST:event_jComboNameFocusGained
private void jComboNameItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboNameItemStateChanged
checkFieldMapping();
}//GEN-LAST:event_jComboNameItemStateChanged
private void jComboBarcodeFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jComboBarcodeFocusGained
jComboBarcode.removeAllItems();
int i = 1;
jComboBarcode.addItem("");
while (i < Headers.size()) {
if ((Headers.get(i) != jComboCategory.getSelectedItem()) & (Headers.get(i) != jComboReference.getSelectedItem()) & (Headers.get(i) != jComboName.getSelectedItem()) & (Headers.get(i) != jComboBuy.getSelectedItem()) & (Headers.get(i) != jComboSell.getSelectedItem())) {
jComboBarcode.addItem(Headers.get(i));
}
++i;
}
}//GEN-LAST:event_jComboBarcodeFocusGained
private void jComboBarcodeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboBarcodeItemStateChanged
checkFieldMapping();
}//GEN-LAST:event_jComboBarcodeItemStateChanged
private void jComboReferenceFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jComboReferenceFocusGained
jComboReference.removeAllItems();
int i = 1;
jComboReference.addItem("");
while (i < Headers.size()) {
if ((Headers.get(i) != jComboCategory.getSelectedItem()) & (Headers.get(i) != jComboBarcode.getSelectedItem()) & (Headers.get(i) != jComboName.getSelectedItem()) & (Headers.get(i) != jComboBuy.getSelectedItem()) & (Headers.get(i) != jComboSell.getSelectedItem())) {
jComboReference.addItem(Headers.get(i));
}
++i;
}
}//GEN-LAST:event_jComboReferenceFocusGained
private void jComboReferenceItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboReferenceItemStateChanged
checkFieldMapping();
}//GEN-LAST:event_jComboReferenceItemStateChanged
private void jComboCategoryItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboCategoryItemStateChanged
// if we have not selected [ USE DEFAULT CATEGORY ] allow the [ REJECT ITEMS WITH BAD CATEGORIES ] to be used in default category combo box
try {
if (jComboCategory.getSelectedItem() == "[ USE DEFAULT CATEGORY ]") {
m_CategoryModel = new ComboBoxValModel(m_sentcat.list());
jComboDefaultCategory.setModel(m_CategoryModel);
} else {
m_CategoryModel = new ComboBoxValModel(m_sentcat.list());
m_CategoryModel.add(reject_bad_categories_text);
jComboDefaultCategory.setModel(m_CategoryModel);
}
} catch (BasicException ex) {
Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
}
checkFieldMapping();
}//GEN-LAST:event_jComboCategoryItemStateChanged
private void jComboCategoryFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jComboCategoryFocusGained
jComboCategory.removeAllItems();
int i = 1;
jComboCategory.addItem("");
while (i < Headers.size()) {
if ((Headers.get(i) != jComboBarcode.getSelectedItem()) & (Headers.get(i) != jComboReference.getSelectedItem())
& (Headers.get(i) != jComboName.getSelectedItem()) & (Headers.get(i) != jComboBuy.getSelectedItem())
& (Headers.get(i) != jComboSell.getSelectedItem())) {
jComboCategory.addItem(Headers.get(i));
}
++i;
}
jComboCategory.addItem(category_disable_text);
}//GEN-LAST:event_jComboCategoryFocusGained
private void jComboDefaulrCategoryItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboDefaulrCategoryItemStateChanged
// TODO add your handling code here:
}//GEN-LAST:event_jComboDefaulrCategoryItemStateChanged
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox jCheckInCatalogue;
private javax.swing.JCheckBox jCheckSellIncTax;
private javax.swing.JComboBox jComboBarcode;
private javax.swing.JComboBox jComboBuy;
private javax.swing.JComboBox jComboCategory;
private javax.swing.JComboBox jComboDefaultCategory;
private javax.swing.JComboBox jComboName;
private javax.swing.JComboBox jComboReference;
private javax.swing.JComboBox jComboSell;
private javax.swing.JComboBox jComboSeparator;
private javax.swing.JComboBox jComboTax;
private javax.swing.JPanel jFileChooserPanel;
private javax.swing.JTextField jFileName;
private javax.swing.JButton jHeaderRead;
private javax.swing.JButton jImport;
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 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.JTextField jTextBadCats;
private javax.swing.JTextField jTextBadPrice;
private javax.swing.JTextField jTextInvalid;
private javax.swing.JTextField jTextMissing;
private javax.swing.JTextField jTextNew;
private javax.swing.JTextField jTextNoChange;
private javax.swing.JTextField jTextRecords;
private javax.swing.JTextField jTextUpdate;
private javax.swing.JLabel jTextUpdates;
private javax.swing.JButton jbtnDbDriverLib;
// End of variables declaration//GEN-END:variables
}