/*
 This file is part of the software framework JStatCom, 
 a library for building applications for data based analysis.

 Copyright (C) 2000-2005  Markus Kraetzig

 This library is free software; you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as
 published by the Free Software Foundation; either version 2.1 of the
 License, or (at your option) any later version.

 This library 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
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 USA
 */

package com.jstatcom.io;

import java.awt.Frame;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;

import org.apache.log4j.Logger;

import com.jstatcom.component.StdMessages;
import com.jstatcom.ts.TSDate;

/**
 * A dialog for gathering user information if an EXCEL file is read in.
 * 
 * @author Markus Kraetzig 
 */
public class TSExcelDialog extends JDialog {
    private static final Logger log = Logger.getLogger(TSExcelDialog.class);

    private TSDate tsDate = TSDate.valueOf("1960 Q1");

    private JTextArea jTextArea = null;

    private Frame frame = null;

    private String[] sheetNames = new String[0];

    private int selectedSheet = 0;

    IvjEventHandler ivjEventHandler = new IvjEventHandler();

    private JComboBox ivjJComboBox1 = null;

    private JPanel ivjJDialogContentPane = null;

    private JLabel ivjJLabel1 = null;

    private JButton ivjOK = null;

    public boolean canceled = false;

    private JButton ivjCancel = null;

    private JPanel ivjJPanel1 = null;

    private JPanel ivjJPanel2 = null;

    private JLabel ivjJLabel3 = null;

    private JTextField ivjStartDate = null;

    class IvjEventHandler implements java.awt.event.ActionListener {
        public void actionPerformed(java.awt.event.ActionEvent e) {
            if (e.getSource() == TSExcelDialog.this.getOK())
                connEtoC1();
            if (e.getSource() == TSExcelDialog.this.getJComboBox1())
                connEtoC2();
            if (e.getSource() == TSExcelDialog.this.getCancel())
                connEtoC3();
        };
    };

    /**
     * Creates a TSExcelDialog.
     * 
     * @param owner
     *            parent frame
     * @param modal
     *            boolean
     */
    public TSExcelDialog(java.awt.Frame owner, boolean modal) {
        super(owner, modal);
        initialize();
        frame = owner;
    }

    /**
     * Comment
     */
    private void cancel_ActionEvents() {
        setVisible(false);
        setCanceled(true);
        return;
    }

    /**
     * connEtoC1: (OK.action. --> TableChooser.oK_ActionEvents()V)
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private void connEtoC1() {
        try {
            // user code begin {1}
            // user code end
            this.oK_ActionEvents();
            // user code begin {2}
            // user code end
        } catch (Throwable ivjExc) {
            // user code begin {3}
            // user code end
            handleException(ivjExc);
        }
    }

    /**
     * connEtoC2: (JComboBox1.action. -->
     * TableChooser.jComboBox1_ActionEvents()V)
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private void connEtoC2() {
        try {
            // user code begin {1}
            // user code end
            this.jComboBox1_ActionEvents();
            // user code begin {2}
            // user code end
        } catch (Throwable ivjExc) {
            // user code begin {3}
            // user code end
            handleException(ivjExc);
        }
    }

    /**
     * connEtoC3: (Cancel.action. --> TableChooser.cancel_ActionEvents()V)
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private void connEtoC3() {
        try {
            // user code begin {1}
            // user code end
            this.cancel_ActionEvents();
            // user code begin {2}
            // user code end
        } catch (Throwable ivjExc) {
            // user code begin {3}
            // user code end
            handleException(ivjExc);
        }
    }

    /**
     * Return the Cancel property value.
     * 
     * @return javax.swing.JButton
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JButton getCancel() {
        if (ivjCancel == null) {
            try {
                ivjCancel = new javax.swing.JButton();
                ivjCancel.setName("Cancel");
                ivjCancel.setPreferredSize(new java.awt.Dimension(85, 25));
                ivjCancel.setText("Cancel");
                ivjCancel.setMaximumSize(new java.awt.Dimension(100, 25));
                ivjCancel.setMinimumSize(new java.awt.Dimension(85, 25));
                // user code begin {1}
                // user code end
            } catch (Throwable ivjExc) {
                // user code begin {2}
                // user code end
                handleException(ivjExc);
            }
        }
        return ivjCancel;
    }

    /**
     * Return the JComboBox1 property value.
     * 
     * @return javax.swing.JComboBox
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JComboBox getJComboBox1() {
        if (ivjJComboBox1 == null) {
            try {
                ivjJComboBox1 = new javax.swing.JComboBox();
                ivjJComboBox1.setName("JComboBox1");
                ivjJComboBox1.setBounds(20, 20, 150, 23);
                // user code begin {1}
                // user code end
            } catch (Throwable ivjExc) {
                // user code begin {2}
                // user code end
                handleException(ivjExc);
            }
        }
        return ivjJComboBox1;
    }

    /**
     * Return the JDialogContentPane property value.
     * 
     * @return javax.swing.JPanel
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JPanel getJDialogContentPane() {
        if (ivjJDialogContentPane == null) {
            try {
                ivjJDialogContentPane = new javax.swing.JPanel();
                ivjJDialogContentPane.setName("JDialogContentPane");
                ivjJDialogContentPane.setBorder(new BevelBorder(
                        BevelBorder.LOWERED));
                ivjJDialogContentPane.setLayout(new java.awt.BorderLayout());
                getJDialogContentPane().add(getJPanel1(), "Center");
                getJDialogContentPane().add(getJPanel2(), "South");
                // user code begin {1}
                // user code end
            } catch (Throwable ivjExc) {
                // user code begin {2}
                // user code end
                handleException(ivjExc);
            }
        }
        return ivjJDialogContentPane;
    }

    /**
     * Return the JLabel1 property value.
     * 
     * @return javax.swing.JLabel
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JLabel getJLabel1() {
        if (ivjJLabel1 == null) {
            try {
                ivjJLabel1 = new javax.swing.JLabel();
                ivjJLabel1.setName("JLabel1");
                ivjJLabel1.setPreferredSize(new java.awt.Dimension(146, 21));
                ivjJLabel1.setText("Select the Excel sheet with data");
                ivjJLabel1.setBounds(180, 22, 205, 21);
                ivjJLabel1.setMinimumSize(new java.awt.Dimension(146, 21));
                ivjJLabel1.setMaximumSize(new java.awt.Dimension(146, 21));
                // user code begin {1}
                // user code end
            } catch (Throwable ivjExc) {
                // user code begin {2}
                // user code end
                handleException(ivjExc);
            }
        }
        return ivjJLabel1;
    }

    /**
     * Return the JLabel3 property value.
     * 
     * @return javax.swing.JLabel
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JLabel getJLabel3() {
        if (ivjJLabel3 == null) {
            try {
                ivjJLabel3 = new javax.swing.JLabel();
                ivjJLabel3.setName("JLabel3");
                ivjJLabel3.setText("Date of first observation");
                ivjJLabel3.setBounds(180, 63, 210, 17);
                // user code begin {1}
                // user code end
            } catch (Throwable ivjExc) {
                // user code begin {2}
                // user code end
                handleException(ivjExc);
            }
        }
        return ivjJLabel3;
    }

    /**
     * Return the JPanel1 property value.
     * 
     * @return javax.swing.JPanel
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JPanel getJPanel1() {
        if (ivjJPanel1 == null) {
            try {
                ivjJPanel1 = new javax.swing.JPanel();
                ivjJPanel1.setName("JPanel1");
                ivjJPanel1.setBorder(new BevelBorder(BevelBorder.LOWERED));
                ivjJPanel1.setLayout(null);
                getJPanel1().add(getJLabel1(), getJLabel1().getName());
                getJPanel1().add(getJComboBox1(), getJComboBox1().getName());
                getJPanel1().add(getStartDate(), getStartDate().getName());
                getJPanel1().add(getJLabel3(), getJLabel3().getName());
                // user code end
                ivjJPanel1.add(getJTextArea(), null);
            } catch (Throwable ivjExc) {
                // user code begin {2}
                // user code end
                handleException(ivjExc);
            }
        }
        return ivjJPanel1;
    }

    /**
     * This method initializes jTextArea
     * 
     * @return javax.swing.JTextArea
     */
    private JTextArea getJTextArea() {
        if (jTextArea == null) {
            jTextArea = new JTextArea();
            jTextArea.setBackground(getJDialogContentPane().getBackground());
            jTextArea.setMargin(new java.awt.Insets(5, 5, 5, 5));
            StringBuffer txt = new StringBuffer();
            txt.append("quarterly: \"1960 Q1\"\n");
            txt.append("monthly: \"1960 M10\"\n");
            txt.append("annual: \"1960\"\n");
            txt.append("semi-annual: \"1960 I\" or \"1960 II\"\n");
            txt.append("daily (5 day week): \"11/25/2004 (5)\"\n");
            txt.append("daily (7 day week): \"12/11/1982 (7)\"\n");
            txt.append("undated: \"1\" \n");
            txt.append("arbitrary spec: \"1960 30/265\"");

            jTextArea.setText(txt.toString());
            jTextArea.setEditable(false);
            jTextArea
                    .setBorder(javax.swing.BorderFactory
                            .createTitledBorder(
                                    javax.swing.BorderFactory
                                            .createEtchedBorder(javax.swing.border.EtchedBorder.RAISED),
                                    "Examples",
                                    javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                                    javax.swing.border.TitledBorder.DEFAULT_POSITION,
                                    null, null));
            jTextArea.setBounds(20, 90, 370, 175);
        }
        return jTextArea;
    }

    /**
     * Return the JPanel2 property value.
     * 
     * @return javax.swing.JPanel
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JPanel getJPanel2() {
        if (ivjJPanel2 == null) {
            try {
                ivjJPanel2 = new javax.swing.JPanel();
                ivjJPanel2.setName("JPanel2");
                ivjJPanel2.setPreferredSize(new java.awt.Dimension(0, 50));
                ivjJPanel2.setLayout(getJPanel2FlowLayout());
                ivjJPanel2.setMinimumSize(new java.awt.Dimension(0, 50));
                getJPanel2().add(getOK(), getOK().getName());
                getJPanel2().add(getCancel(), getCancel().getName());
                // user code begin {1}
                // user code end
            } catch (Throwable ivjExc) {
                // user code begin {2}
                // user code end
                handleException(ivjExc);
            }
        }
        return ivjJPanel2;
    }

    /**
     * Return the JPanel2FlowLayout property value.
     * 
     * @return java.awt.FlowLayout
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private java.awt.FlowLayout getJPanel2FlowLayout() {
        java.awt.FlowLayout ivjJPanel2FlowLayout = null;
        try {
            /* Create part */
            ivjJPanel2FlowLayout = new java.awt.FlowLayout();
            ivjJPanel2FlowLayout.setVgap(10);
            ivjJPanel2FlowLayout.setHgap(40);
        } catch (Throwable ivjExc) {
            handleException(ivjExc);
        }
        ;
        return ivjJPanel2FlowLayout;
    }

    /**
     * Return the OK property value.
     * 
     * @return javax.swing.JButton
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JButton getOK() {
        if (ivjOK == null) {
            try {
                ivjOK = new javax.swing.JButton();
                ivjOK.setName("OK");
                ivjOK.setPreferredSize(new java.awt.Dimension(85, 25));
                ivjOK.setText("OK");
                ivjOK.setMaximumSize(new java.awt.Dimension(100, 25));
                ivjOK.setMinimumSize(new java.awt.Dimension(85, 25));
                // user code begin {1}
                // user code end
            } catch (Throwable ivjExc) {
                // user code begin {2}
                // user code end
                handleException(ivjExc);
            }
        }
        return ivjOK;
    }

    /**
     * Gets the selected sheet, because there might be several sheets in an
     * EXCEL file.
     * 
     * @return int index for sheet, starts with 0
     */
    public int getSelectedSheet() {
        return selectedSheet;
    }

    /**
     * Return the StartDate property value.
     * 
     * @return javax.swing.JTextField
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JTextField getStartDate() {
        if (ivjStartDate == null) {
            try {
                ivjStartDate = new javax.swing.JTextField();
                ivjStartDate.setName("StartDate");
                ivjStartDate.setText("1960 Q1");
                ivjStartDate.setBounds(20, 60, 150, 20);
                // user code begin {1}
                // user code end
            } catch (Throwable ivjExc) {
                // user code begin {2}
                // user code end
                handleException(ivjExc);
            }
        }
        return ivjStartDate;
    }

    /**
     * Gets the selected start date.
     * 
     * @return start date of sample
     */
    public TSDate getTSDate() {
        return tsDate;
    }

    /**
     * Called whenever the part throws an exception.
     * 
     * @param exception
     *            Exception
     */
    private void handleException(Throwable exception) {

        log.error("Unhandled Exception", exception);
    }

    /**
     * Initializes connections
     * 
     * @exception Exception
     *                The exception description.
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private void initConnections() throws Exception {
        // user code begin {1}
        // user code end
        getOK().addActionListener(ivjEventHandler);
        getJComboBox1().addActionListener(ivjEventHandler);
        getCancel().addActionListener(ivjEventHandler);
    }

    /**
     * Initialize the class.
     */
    /* WARNING: THIS METHOD WILL BE REGENERATED. */
    private void initialize() {
        try {
            // user code begin {1}
            // user code end
            this.setBounds(31, 0, 420, 368);
            setName("TableChooser");
            setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
            setResizable(false);
            setTitle("Specify Excel Dataset");
            setContentPane(getJDialogContentPane());
            initConnections();
        } catch (Throwable ivjExc) {
            handleException(ivjExc);
        }
        // user code begin {2}
        getRootPane().setDefaultButton(getOK());
        // user code end
    }

    /**
     * Gets whether dialog was canceled.
     * 
     * @return true if canceled
     */
    public boolean isCanceled() {
        return canceled;
    }

    /**
     * Comment
     */
    private void jComboBox1_ActionEvents() {
        setSelectedSheet(getJComboBox1().getSelectedIndex());
        return;
    }

    /**
     * Comment
     */
    private void oK_ActionEvents() {

        String exp = getStartDate().getText();
        try {
            tsDate = TSDate.valueOf(exp);
        } catch (Throwable ex) {
            StdMessages.errorInput("Could not parse \"" + exp
                    + "\" to a valid date.");

            return;
        }
        setVisible(false);
        setCanceled(false);
        return;
    }

    /**
     * Insert the method's description here. Creation date: (27.03.2002
     * 16:43:18)
     * 
     * @param newCanceled
     *            boolean
     */
    private void setCanceled(boolean newCanceled) {
        canceled = newCanceled;
    }

    /**
     * Insert the method's description here. Creation date: (27.03.2002
     * 15:23:16)
     * 
     * @param newSelectedSheet
     *            int
     */
    private void setSelectedSheet(int newSelectedSheet) {
        selectedSheet = newSelectedSheet;
    }

    /**
     * Sets the names of the available sheets contained in the selected EXCEL
     * file.
     * 
     * @param sheetNames
     *            sheet name array
     */
    public void setSheets(String[] sheetNames) {
        if (sheetNames == null)
            sheetNames = new String[0];
        this.sheetNames = sheetNames;
    }

    /**
     * Overwrites setVisible.
     */
    public void setVisible(boolean isVisible) {
        if (isVisible) {
            if (frame != null)
                setLocationRelativeTo(frame);
            selectedSheet = 0;
            getJComboBox1().removeAllItems();
            for (int i = 0; i < sheetNames.length; i++)
                getJComboBox1().addItem(sheetNames[i]);

        }

        super.setVisible(isVisible);
    }
} // @jve:decl-index=0:visual-constraint="10,10"

 

Ads help maintain this website.