com.jaspersoft.ireport.designer.connection.gui.XlsxDataSourceConnectionEditor.java Source code

Java tutorial

Introduction

Here is the source code for com.jaspersoft.ireport.designer.connection.gui.XlsxDataSourceConnectionEditor.java

Source

/*
 * iReport - Visual Designer for JasperReports.
 * Copyright (C) 2002 - 2009 Jaspersoft Corporation. All rights reserved.
 * http://www.jaspersoft.com
 *
 * Unless you have purchased a commercial license agreement from Jaspersoft,
 * the following license terms apply:
 *
 * This program is part of iReport.
 *
 * iReport is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * iReport 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 Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with iReport. If not, see <http://www.gnu.org/licenses/>.
 */
package com.jaspersoft.ireport.designer.connection.gui;

import com.jaspersoft.ireport.locale.I18n;
import com.jaspersoft.ireport.designer.IReportConnection;
import com.jaspersoft.ireport.designer.IReportConnectionEditor;
import com.jaspersoft.ireport.designer.IReportManager;
import com.jaspersoft.ireport.designer.connection.JRXlsxDataSourceConnection;
import com.jaspersoft.ireport.designer.tools.FieldPatternDialog;
import java.io.File;
import java.io.FileInputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 *
 * @author  gtoffoli
 */
public class XlsxDataSourceConnectionEditor extends javax.swing.JPanel implements IReportConnectionEditor {

    private IReportConnection iReportConnection = null;
    private boolean init = false;

    /** Creates new form EJBQLConnectionEditor */
    public XlsxDataSourceConnectionEditor() {
        initComponents();

        jTextFieldDateFormat.setText(new SimpleDateFormat().toPattern());
        jTextFieldNumberFormat.setText(new DecimalFormat().toPattern());

        jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

            public void valueChanged(ListSelectionEvent e) {
                jButtonDeleteParameter.setEnabled(jTable1.getSelectedRow() >= 0);
            }
        });

        jTable1.getColumnModel().getColumn(1).setCellRenderer(new TableExcelNumberCellRenderer());
        jTable1.getColumnModel().getColumn(1).setCellEditor(new ExcelColumnEditor());
    }

    /** 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() {
        java.awt.GridBagConstraints gridBagConstraints;

        buttonGroup1 = new javax.swing.ButtonGroup();
        buttonGroup2 = new javax.swing.ButtonGroup();
        jPanelXLS = new javax.swing.JPanel();
        jLabel15 = new javax.swing.JLabel();
        jTextFieldFilename = new javax.swing.JTextField();
        jButtonFilename = new javax.swing.JButton();
        jPanel11 = new javax.swing.JPanel();
        jPanel8 = new javax.swing.JPanel();
        jPanel9 = new javax.swing.JPanel();
        jButtonNewParameter = new javax.swing.JButton();
        jButtonDeleteParameter = new javax.swing.JButton();
        jPanel10 = new javax.swing.JPanel();
        jButtonGetColumns = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jPanel6 = new javax.swing.JPanel();
        jCheckBoxDateFormat = new javax.swing.JCheckBox();
        jTextFieldDateFormat = new javax.swing.JTextField();
        jButtonDateFormat = new javax.swing.JButton();
        jCheckBoxNumberFormat = new javax.swing.JCheckBox();
        jTextFieldNumberFormat = new javax.swing.JTextField();
        jButtonNumberFormat = new javax.swing.JButton();
        jCheckBoxFirstRowAsHeader = new javax.swing.JCheckBox();

        setLayout(new java.awt.BorderLayout());

        jPanelXLS.setPreferredSize(new java.awt.Dimension(1, 30));
        jPanelXLS.setLayout(new java.awt.GridBagLayout());

        jLabel15.setText("Excel file");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 0);
        jPanelXLS.add(jLabel15, gridBagConstraints);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 0);
        jPanelXLS.add(jTextFieldFilename, gridBagConstraints);

        jButtonFilename.setText("Browse");
        jButtonFilename.setMargin(new java.awt.Insets(2, 4, 2, 4));
        jButtonFilename.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonFilenameActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.ipadx = 27;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4);
        jPanelXLS.add(jButtonFilename, gridBagConstraints);

        jPanel11.setLayout(new java.awt.GridBagLayout());

        jPanel8.setBorder(javax.swing.BorderFactory
                .createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Column names"));
        jPanel8.setLayout(new java.awt.GridBagLayout());

        jPanel9.setPreferredSize(new java.awt.Dimension(71, 200));
        jPanel9.setLayout(new java.awt.GridBagLayout());

        jButtonNewParameter.setText("Add");
        jButtonNewParameter.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonNewParameterActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3);
        jPanel9.add(jButtonNewParameter, gridBagConstraints);

        jButtonDeleteParameter.setText("Delete");
        jButtonDeleteParameter.setEnabled(false);
        jButtonDeleteParameter.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonDeleteParameterActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 3, 5, 3);
        jPanel9.add(jButtonDeleteParameter, gridBagConstraints);

        jPanel10.setLayout(null);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.weighty = 1.0;
        jPanel9.add(jPanel10, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 4, 4);
        jPanel8.add(jPanel9, gridBagConstraints);

        jButtonGetColumns.setText("Get columns name from the first row of the file");
        jButtonGetColumns.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonGetColumnsActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 7, 3);
        jPanel8.add(jButtonGetColumns, gridBagConstraints);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {

        }, new String[] { "Column Name", "Column Index" }) {
            Class[] types = new Class[] { java.lang.String.class, java.lang.Integer.class };

            public Class getColumnClass(int columnIndex) {
                return types[columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTable1);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3);
        jPanel8.add(jScrollPane1, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridy = 5;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
        jPanel11.add(jPanel8, gridBagConstraints);

        jPanel6.setBorder(javax.swing.BorderFactory
                .createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Other"));
        jPanel6.setLayout(new java.awt.GridBagLayout());

        jCheckBoxDateFormat.setText("Use custom date format");
        jCheckBoxDateFormat.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxDateFormat.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jCheckBoxDateFormat.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBoxDateFormatActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
        jPanel6.add(jCheckBoxDateFormat, gridBagConstraints);

        jTextFieldDateFormat.setEnabled(false);
        jTextFieldDateFormat.setPreferredSize(new java.awt.Dimension(100, 19));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        jPanel6.add(jTextFieldDateFormat, gridBagConstraints);

        jButtonDateFormat.setText("Date format");
        jButtonDateFormat.setEnabled(false);
        jButtonDateFormat.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonDateFormatActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
        jPanel6.add(jButtonDateFormat, gridBagConstraints);

        jCheckBoxNumberFormat.setText("Use custom number format");
        jCheckBoxNumberFormat.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxNumberFormat.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jCheckBoxNumberFormat.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBoxNumberFormatActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
        jPanel6.add(jCheckBoxNumberFormat, gridBagConstraints);

        jTextFieldNumberFormat.setEnabled(false);
        jTextFieldNumberFormat.setPreferredSize(new java.awt.Dimension(100, 19));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        jPanel6.add(jTextFieldNumberFormat, gridBagConstraints);

        jButtonNumberFormat.setText("Number format");
        jButtonNumberFormat.setEnabled(false);
        jButtonNumberFormat.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonNumberFormatActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
        jPanel6.add(jButtonNumberFormat, gridBagConstraints);

        jCheckBoxFirstRowAsHeader
                .setText("Skip the first line (the column names will be read from the first line)");
        jCheckBoxFirstRowAsHeader
                .setActionCommand("Skip the first line (column names will be read from the first line)");
        jCheckBoxFirstRowAsHeader.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBoxFirstRowAsHeader.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jCheckBoxFirstRowAsHeader.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBoxFirstRowAsHeaderActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
        jPanel6.add(jCheckBoxFirstRowAsHeader, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 20;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
        jPanel11.add(jPanel6, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        jPanelXLS.add(jPanel11, gridBagConstraints);

        add(jPanelXLS, java.awt.BorderLayout.CENTER);
    }// </editor-fold>//GEN-END:initComponents

    private void jCheckBoxNumberFormatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxNumberFormatActionPerformed
        jTextFieldNumberFormat.setEnabled(this.jCheckBoxNumberFormat.isSelected());
        jButtonNumberFormat.setEnabled(this.jCheckBoxNumberFormat.isSelected());

        if (!this.jCheckBoxNumberFormat.isSelected()) {
            jTextFieldNumberFormat.setText(new DecimalFormat().toPattern());
        }
    }//GEN-LAST:event_jCheckBoxNumberFormatActionPerformed

    private void jButtonNumberFormatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNumberFormatActionPerformed
        FieldPatternDialog fpd = new FieldPatternDialog((JDialog) SwingUtilities.getWindowAncestor(this), true);
        fpd.setOnlyNumbers(true);

        fpd.setVisible(true);
        if (fpd.getDialogResult() == JOptionPane.OK_OPTION) {
            jTextFieldNumberFormat.setText(fpd.getPattern());
        }
    }//GEN-LAST:event_jButtonNumberFormatActionPerformed

    private void jButtonFilenameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonFilenameActionPerformed

        javax.swing.JFileChooser jfc = new javax.swing.JFileChooser(
                IReportManager.getInstance().getCurrentDirectory());

        jfc.setDialogTitle(I18n.getString("XlsxDataSourceConnectionEditor.DialogTitle.SelectFile"));

        jfc.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
            public boolean accept(java.io.File file) {
                String filename = file.getName();
                return (filename.toLowerCase().endsWith(".xlsx") || file.isDirectory());
            }

            public String getDescription() {
                return "Excel *.xlsx";
            }
        });

        jfc.setMultiSelectionEnabled(false);
        jfc.setDialogType(javax.swing.JFileChooser.OPEN_DIALOG);
        if (jfc.showOpenDialog(this) == javax.swing.JOptionPane.OK_OPTION) {
            java.io.File file = jfc.getSelectedFile();
            try {
                jTextFieldFilename.setText(file.getAbsolutePath());
            } catch (Exception ex) {
            }
        }
    }//GEN-LAST:event_jButtonFilenameActionPerformed

    private void jButtonDateFormatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDateFormatActionPerformed
        FieldPatternDialog fpd = new FieldPatternDialog((JDialog) SwingUtilities.getWindowAncestor(this), true);
        fpd.setOnlyDate(true);

        fpd.setVisible(true);
        if (fpd.getDialogResult() == JOptionPane.OK_OPTION) {
            jTextFieldDateFormat.setText(fpd.getPattern());
        }
    }//GEN-LAST:event_jButtonDateFormatActionPerformed

    private void jCheckBoxDateFormatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxDateFormatActionPerformed
        jTextFieldDateFormat.setEnabled(this.jCheckBoxDateFormat.isSelected());
        jButtonDateFormat.setEnabled(this.jCheckBoxDateFormat.isSelected());

        if (!this.jCheckBoxDateFormat.isSelected()) {
            jTextFieldDateFormat.setText(new SimpleDateFormat().toPattern());
        }
    }//GEN-LAST:event_jCheckBoxDateFormatActionPerformed

    private void jButtonNewParameterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNewParameterActionPerformed

        DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();

        // find max index...
        int index = 0;
        for (int i = 0; i < dtm.getRowCount(); ++i) {
            Integer ix = (Integer) jTable1.getValueAt(i, 1);
            if (index <= ix.intValue())
                index++;
        }

        dtm.addRow(new Object[] { "COLUMN_" + index, new Integer(index) });

    }//GEN-LAST:event_jButtonNewParameterActionPerformed

    private void jButtonDeleteParameterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDeleteParameterActionPerformed

        DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();

        while (jTable1.getSelectedRowCount() > 0) {
            dtm.removeRow(jTable1.getSelectedRow());
        }

    }//GEN-LAST:event_jButtonDeleteParameterActionPerformed

    private void jButtonGetColumnsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonGetColumnsActionPerformed
        try {

            if (jTextFieldFilename.getText().length() > 0) {
                Workbook workbook = new XSSFWorkbook(new FileInputStream(new File(jTextFieldFilename.getText())));
                Sheet sheet = workbook.getSheetAt(0);

                DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
                dtm.setRowCount(0);

                Row row = sheet.getRow(0);
                Map<String, Integer> columnNames = new HashMap<String, Integer>();
                for (int columnIndex = 0; columnIndex < row.getLastCellNum(); columnIndex++) {
                    Cell cell = row.getCell(columnIndex);
                    String columnName = "";
                    if (cell != null) {
                        columnName = cell.toString();
                    } else {
                        columnName = "COLUMN_" + columnIndex;
                    }

                    if (columnName != null && columnName.trim().length() > 0) {
                        dtm.addRow(new Object[] { columnName, new Integer(columnIndex) });
                    }
                }

                jTable1.updateUI();

                jCheckBoxFirstRowAsHeader.setSelected(true);
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(),
                    I18n.getString("XlsxDataSourceConnectionEditor.Message.Exception"), JOptionPane.ERROR_MESSAGE); //"message.title.exception"
        }
    }//GEN-LAST:event_jButtonGetColumnsActionPerformed

    private void jCheckBoxFirstRowAsHeaderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxFirstRowAsHeaderActionPerformed

    }//GEN-LAST:event_jCheckBoxFirstRowAsHeaderActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.ButtonGroup buttonGroup2;
    private javax.swing.JButton jButtonDateFormat;
    private javax.swing.JButton jButtonDeleteParameter;
    private javax.swing.JButton jButtonFilename;
    private javax.swing.JButton jButtonGetColumns;
    private javax.swing.JButton jButtonNewParameter;
    private javax.swing.JButton jButtonNumberFormat;
    private javax.swing.JCheckBox jCheckBoxDateFormat;
    private javax.swing.JCheckBox jCheckBoxFirstRowAsHeader;
    private javax.swing.JCheckBox jCheckBoxNumberFormat;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JPanel jPanel10;
    private javax.swing.JPanel jPanel11;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JPanel jPanel9;
    private javax.swing.JPanel jPanelXLS;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextFieldDateFormat;
    private javax.swing.JTextField jTextFieldFilename;
    private javax.swing.JTextField jTextFieldNumberFormat;
    // End of variables declaration//GEN-END:variables

    public void setIReportConnection(IReportConnection c) {

        this.iReportConnection = c;
        if (iReportConnection instanceof JRXlsxDataSourceConnection) {
            JRXlsxDataSourceConnection con = (JRXlsxDataSourceConnection) iReportConnection;
            this.jTextFieldFilename.setText(con.getFilename());

            if (con.getCustomDateFormat().length() > 0) {
                this.jCheckBoxDateFormat.setSelected(true);
                this.jTextFieldDateFormat.setText(con.getCustomDateFormat());
                this.jTextFieldDateFormat.setEnabled(true);
                this.jButtonDateFormat.setEnabled(true);
            }

            if (con.getCustomNumberFormat().length() > 0) {
                this.jCheckBoxNumberFormat.setSelected(true);
                this.jTextFieldNumberFormat.setText(con.getCustomNumberFormat());
                this.jTextFieldNumberFormat.setEnabled(true);
                this.jButtonNumberFormat.setEnabled(true);
            }

            this.jCheckBoxFirstRowAsHeader.setSelected(con.isUseFirstRowAsHeader());

            DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
            for (int i = 0; i < con.getColumnNames().size(); ++i) {
                dtm.addRow(new Object[] { con.getColumnNames().get(i), con.getColumnIndexes().get(i) });
            }

            if (dtm.getRowCount() > 0) {
                jTable1.setRowSelectionInterval(0, 0);
            }
        }
    }

    @SuppressWarnings("unchecked")
    public IReportConnection getIReportConnection() {

        IReportConnection irConn = new JRXlsxDataSourceConnection();

        ((JRXlsxDataSourceConnection) irConn).setFilename(this.jTextFieldFilename.getText().trim());

        ((JRXlsxDataSourceConnection) irConn)
                .setCustomDateFormat(jCheckBoxDateFormat.isSelected() ? jTextFieldDateFormat.getText() : "");
        ((JRXlsxDataSourceConnection) irConn)
                .setCustomNumberFormat(jCheckBoxNumberFormat.isSelected() ? jTextFieldNumberFormat.getText() : "");
        ((JRXlsxDataSourceConnection) irConn).setUseFirstRowAsHeader(jCheckBoxFirstRowAsHeader.isSelected());

        List<String> columnsNames = new ArrayList<String>();
        List<Integer> columnsIndexes = new ArrayList<Integer>();
        DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
        for (int i = 0; i < dtm.getRowCount(); ++i) {
            columnsNames.add((String) jTable1.getValueAt(i, 0));
            columnsIndexes.add((Integer) jTable1.getValueAt(i, 1));
        }

        ((JRXlsxDataSourceConnection) irConn).setColumnNames(columnsNames);
        ((JRXlsxDataSourceConnection) irConn).setColumnIndexes(columnsIndexes);

        if (columnsNames.isEmpty()) {
            if (JOptionPane.showConfirmDialog(this, I18n.getString("XlsxDataSourceConnectionEditor.Dialog.Confirm"),
                    "", JOptionPane.INFORMATION_MESSAGE) != JOptionPane.OK_OPTION) //"messages.connectionDialog.notAllColumnsDefined"
            {
                return null;
            }
        }

        iReportConnection = irConn;
        return iReportConnection;
    }

}