Package org.metrapp.visual

Source Code of org.metrapp.visual.NewGUI

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.metrapp.visual;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Image;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import org.metrapp.io.Observer;
import org.metrapp.io.Subject;
import org.metrapp.newJavaFilters.JavaFilter;
import org.metrapp.newJavaFilters.JavaFilterByCountry;
import org.metrapp.newJavaFilters.JavaFilterByDate;
import org.metrapp.newJavaFilters.JavaFilterByF;
import org.metrapp.newJavaFilters.JavaFilterByH;
import org.metrapp.newJavaFilters.JavaFilterByImoCode;
import org.metrapp.newJavaFilters.JavaFilterByLatitudeAndLongitude;
import org.metrapp.newJavaFilters.JavaFilterByMagnitude;
import org.metrapp.newJavaFilters.JavaFilterByObserver;
import org.metrapp.newJavaFilters.JavaFilterByObserverSiteName;
import org.metrapp.newJavaFilters.JavaFilterByShower;
import org.metrapp.newJavaFilters.JavaFilterBySolarLongitude;
import org.metrapp.newJavaFilters.JavaFilterByTime;
import org.metrapp.sys.Controller;

/**
*
* @author Ilija
*/
public class NewGUI extends javax.swing.JFrame implements Observer {

    private LinkedList<JLabel> labels;
    private LinkedList<JTextField> textFields;
    private JavaFilter filter;

    /**
     * Creates new form NewGUI
     */
    public NewGUI() {
        initComponents();
        initLabelsAndTextFieldLists();
        setAllLabelsAndTextFieldsInvisible();
        setAllMethodPanelsInvisible();
        Controller.getInstance().attachObserver(this);
    }

    /**
     * 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.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        buttonGroup1 = new javax.swing.ButtonGroup();
        jSeparator1 = new javax.swing.JSeparator();
        buttonGroupMethods = new javax.swing.ButtonGroup();
        jTabbedPane = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jButtonChooseFile = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jRBShowerCode = new javax.swing.JRadioButton();
        jRBDate = new javax.swing.JRadioButton();
        jRBObserversIMOCode = new javax.swing.JRadioButton();
        jRBObserversFirstAndLastName = new javax.swing.JRadioButton();
        jRBLatitudeAndLongitude = new javax.swing.JRadioButton();
        jRBObserversSiteName = new javax.swing.JRadioButton();
        jRBCountry = new javax.swing.JRadioButton();
        jRBLimitingMagnitude = new javax.swing.JRadioButton();
        jRBGlobalFilter = new javax.swing.JRadioButton();
        jLabelShowerCode = new javax.swing.JLabel();
        jTextFieldShowerCode = new javax.swing.JTextField();
        jLabelYear = new javax.swing.JLabel();
        jTextFieldYear = new javax.swing.JTextField();
        jLabelMonth = new javax.swing.JLabel();
        jTextFieldMonth = new javax.swing.JTextField();
        jLabelDayBegining = new javax.swing.JLabel();
        jTextFieldDayBegining = new javax.swing.JTextField();
        jLabelDayEnding = new javax.swing.JLabel();
        jTextFieldDayEnding = new javax.swing.JTextField();
        jLabelIMOCode = new javax.swing.JLabel();
        jTextFieldIMOCode = new javax.swing.JTextField();
        jLabelFirstName = new javax.swing.JLabel();
        jTextFieldFirstName = new javax.swing.JTextField();
        jLabelLastName = new javax.swing.JLabel();
        jTextFieldLastName = new javax.swing.JTextField();
        jLabelLowerLongitude = new javax.swing.JLabel();
        jTextFieldLowerLongitude = new javax.swing.JTextField();
        jLabelUpperLongitude = new javax.swing.JLabel();
        jTextFieldUpperLongitude = new javax.swing.JTextField();
        jLabelEW = new javax.swing.JLabel();
        jTextFieldEW = new javax.swing.JTextField();
        jLabelLowerLatitude = new javax.swing.JLabel();
        jTextFieldLowerLatitude = new javax.swing.JTextField();
        jLabelUpperLatitude = new javax.swing.JLabel();
        jTextFieldUpperLatitude = new javax.swing.JTextField();
        jLabelNS = new javax.swing.JLabel();
        jTextFieldNS = new javax.swing.JTextField();
        jLabelSiteName = new javax.swing.JLabel();
        jTextFieldSiteName = new javax.swing.JTextField();
        jLabelCountryName = new javax.swing.JLabel();
        jTextFieldCountryName = new javax.swing.JTextField();
        jLabelLowerMagnitude = new javax.swing.JLabel();
        jTextFieldLowerMagnitude = new javax.swing.JTextField();
        jLabelUpperMagnitude = new javax.swing.JLabel();
        jTextFieldUpperMagnitude = new javax.swing.JTextField();
        jRBByF = new javax.swing.JRadioButton();
        jLabelFLow = new javax.swing.JLabel();
        jTextFieldFLow = new javax.swing.JTextField();
        jLabelFUp = new javax.swing.JLabel();
        jTextFieldFUp = new javax.swing.JTextField();
        jRBByTimePeriod = new javax.swing.JRadioButton();
        jLabelBegin = new javax.swing.JLabel();
        jTextFieldBegin = new javax.swing.JTextField();
        jLabelEnd = new javax.swing.JLabel();
        jTextFieldEnd = new javax.swing.JTextField();
        jRBBySolarLongitude = new javax.swing.JRadioButton();
        jLabelSolLongLow = new javax.swing.JLabel();
        jTextFieldSolLongLow = new javax.swing.JTextField();
        jLabelSolLongUp = new javax.swing.JLabel();
        jTextFieldSolLongUp = new javax.swing.JTextField();
        jRBByElevation = new javax.swing.JRadioButton();
        jLabelElevLow = new javax.swing.JLabel();
        jTextFieldElevLow = new javax.swing.JTextField();
        jLabelElevUp = new javax.swing.JLabel();
        jTextFieldElevUp = new javax.swing.JTextField();
        jLabelElevShw = new javax.swing.JLabel();
        jTextFieldElevShw = new javax.swing.JTextField();
        jLabelElevRAlpha = new javax.swing.JLabel();
        jTextFieldRAlpha = new javax.swing.JTextField();
        jLabelElevDelta = new javax.swing.JLabel();
        jTextFieldElevDelta = new javax.swing.JTextField();
        jLabelElevType = new javax.swing.JLabel();
        jTextFieldElevType = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTableResult = new javax.swing.JTable();
        jPanelSolarLongitude = new javax.swing.JPanel();
        jPanel6 = new javax.swing.JPanel();
        jLabelMethodsYear = new javax.swing.JLabel();
        jTextFieldMethodsYear = new javax.swing.JTextField();
        jLabelMethodsMonth = new javax.swing.JLabel();
        jTextFieldMethodsMonth = new javax.swing.JTextField();
        jLabelMethodsDay = new javax.swing.JLabel();
        jTextFieldMethodsDay = new javax.swing.JTextField();
        jLabelMethodsTime = new javax.swing.JLabel();
        jTextFieldMethodsTime = new javax.swing.JTextField();
        jButton2 = new javax.swing.JButton();
        jLabelMethodsSolarLongitudeCalculated = new javax.swing.JLabel();
        jTextFieldMethodsSolarLongitudeCalculated = new javax.swing.JTextField();
        jPanelZHR = new javax.swing.JPanel();
        jLabelZHRYear = new javax.swing.JLabel();
        jTextFieldZHRYear = new javax.swing.JTextField();
        jLabelZHRMonth = new javax.swing.JLabel();
        jTextFieldZHRMonth = new javax.swing.JTextField();
        jLabelZHRDayBegin = new javax.swing.JLabel();
        jTextFieldZHRDayBegin = new javax.swing.JTextField();
        jLabelZHRDayEnd = new javax.swing.JLabel();
        jTextFieldZHRDayEnd = new javax.swing.JTextField();
        jLabelZHRShower = new javax.swing.JLabel();
        jTextFieldZHRShower = new javax.swing.JTextField();
        jLabelZHRr = new javax.swing.JLabel();
        jTextFieldZHRr = new javax.swing.JTextField();
        jLabelZHRRAlpha = new javax.swing.JLabel();
        jTextFieldZHRRAlpha = new javax.swing.JTextField();
        jLabelZHRk = new javax.swing.JLabel();
        jTextFieldZHRk = new javax.swing.JTextField();
        jLabelZHRCalculate = new javax.swing.JCheckBox();
        jLabelZHRPlot = new javax.swing.JCheckBox();
        jBTZHR = new javax.swing.JButton();
        jPanelPopulationIndex = new javax.swing.JPanel();
        jLabelPIYear = new javax.swing.JLabel();
        jTextFieldPIYear = new javax.swing.JTextField();
        jLabelPIMonth = new javax.swing.JLabel();
        jTextFieldPIMonth = new javax.swing.JTextField();
        jLabelPIDayBegin = new javax.swing.JLabel();
        jTextFieldPIDayBegin = new javax.swing.JTextField();
        jLabelPIDayEnd = new javax.swing.JLabel();
        jTextFieldPIDayEnd = new javax.swing.JTextField();
        jLabelPIShower = new javax.swing.JLabel();
        jTextFieldPIShower = new javax.swing.JTextField();
        jLabelPIMagnitude = new javax.swing.JLabel();
        jTextFieldPIMagnitude = new javax.swing.JTextField();
        jLabelPIRAlpha = new javax.swing.JLabel();
        jTextFieldPIrAlpha = new javax.swing.JTextField();
        jLabelPIDelta = new javax.swing.JLabel();
        jTextFieldPIDelta = new javax.swing.JTextField();
        jCheckBoxCalculate = new javax.swing.JCheckBox();
        jCheckBoxPlot = new javax.swing.JCheckBox();
        jBTPopulationIndex = new javax.swing.JButton();
        jPanelMagnitudeDistribution = new javax.swing.JPanel();
        jLabel9 = new javax.swing.JLabel();
        jTextFieldMagnitudeDistributionYear = new javax.swing.JTextField();
        jLabelMagnitudeDistributionMonth = new javax.swing.JLabel();
        jTextFieldMagnitudeDistributionMonth = new javax.swing.JTextField();
        jLabelMagnitudeDistributionDay = new javax.swing.JLabel();
        jTextFieldMagnitudeDistributionDay = new javax.swing.JTextField();
        jLabelMagnitudeDistributionShower = new javax.swing.JLabel();
        jTextFieldMagnitudeDistributionShower = new javax.swing.JTextField();
        jLabelMagnitudeDistributionRAlpha = new javax.swing.JLabel();
        jTextFieldMagnitudeDistributionRAlpha = new javax.swing.JTextField();
        jLabelMagnitudeDistributionDelta = new javax.swing.JLabel();
        jTextFieldMagnitudeDistributionDelta = new javax.swing.JTextField();
        jBTMagnitudeDistribution = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        jRadioButtonZHR = new javax.swing.JRadioButton();
        jRadioButtonPopulationIndex = new javax.swing.JRadioButton();
        jRadioButtonMagnitudeDistribution = new javax.swing.JRadioButton();
        jPanel4 = new javax.swing.JPanel();
        jPanel7 = new javax.swing.JPanel();
        jLabelGraph = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenu2 = new javax.swing.JMenu();
        jMenuItemPaths = new javax.swing.JMenuItem();
        jMenu4 = new javax.swing.JMenu();
        jMenu3 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));

        jButtonChooseFile.setText("Choose file");
        jButtonChooseFile.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonChooseFileActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jButtonChooseFile)
                .addContainerGap(987, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(22, 22, 22)
                .addComponent(jButtonChooseFile)
                .addContainerGap(503, Short.MAX_VALUE))
        );

        jTabbedPane.addTab("File options", jPanel1);

        buttonGroup1.add(jRBShowerCode);
        jRBShowerCode.setText("by shower code");
        jRBShowerCode.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBShowerCodeActionPerformed(evt);
            }
        });

        buttonGroup1.add(jRBDate);
        jRBDate.setText("by date");
        jRBDate.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBDateActionPerformed(evt);
            }
        });

        buttonGroup1.add(jRBObserversIMOCode);
        jRBObserversIMOCode.setText("by observer's IMO code");
        jRBObserversIMOCode.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBObserversIMOCodeActionPerformed(evt);
            }
        });

        buttonGroup1.add(jRBObserversFirstAndLastName);
        jRBObserversFirstAndLastName.setText("by observer's first and last name");
        jRBObserversFirstAndLastName.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBObserversFirstAndLastNameActionPerformed(evt);
            }
        });

        buttonGroup1.add(jRBLatitudeAndLongitude);
        jRBLatitudeAndLongitude.setText("by latitude & longitude");
        jRBLatitudeAndLongitude.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBLatitudeAndLongitudeActionPerformed(evt);
            }
        });

        buttonGroup1.add(jRBObserversSiteName);
        jRBObserversSiteName.setText("by observer's site name");
        jRBObserversSiteName.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBObserversSiteNameActionPerformed(evt);
            }
        });

        buttonGroup1.add(jRBCountry);
        jRBCountry.setText("by country");
        jRBCountry.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBCountryActionPerformed(evt);
            }
        });

        buttonGroup1.add(jRBLimitingMagnitude);
        jRBLimitingMagnitude.setText("by limiting magnitude");
        jRBLimitingMagnitude.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBLimitingMagnitudeActionPerformed(evt);
            }
        });

        buttonGroup1.add(jRBGlobalFilter);
        jRBGlobalFilter.setText("global filter");
        jRBGlobalFilter.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBGlobalFilterActionPerformed(evt);
            }
        });

        jLabelShowerCode.setText("Shower code:");

        jLabelYear.setText("Year:");

        jLabelMonth.setText("Month");

        jLabelDayBegining.setText("Day begining:");

        jLabelDayEnding.setText("Day ending:");

        jLabelIMOCode.setText("IMO code:");

        jTextFieldIMOCode.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldIMOCodeActionPerformed(evt);
            }
        });

        jLabelFirstName.setText("First name:");

        jLabelLastName.setText("Last name:");

        jLabelLowerLongitude.setText("Lower longitude:");

        jLabelUpperLongitude.setText("Upper longitude:");

        jLabelEW.setText("E/W");

        jLabelLowerLatitude.setText("Lower latitude:");

        jLabelUpperLatitude.setText("Upper latitude:");

        jLabelNS.setText("N/S");

        jLabelSiteName.setText("Site name:");

        jLabelCountryName.setText("Country name:");

        jLabelLowerMagnitude.setText("Lower magnitude:");

        jLabelUpperMagnitude.setText("Upper magnitude:");

        buttonGroup1.add(jRBByF);
        jRBByF.setText("by F");
        jRBByF.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBByFActionPerformed(evt);
            }
        });

        jLabelFLow.setText("F low:");

        jLabelFUp.setText("F up:");

        buttonGroup1.add(jRBByTimePeriod);
        jRBByTimePeriod.setText("by time period");
        jRBByTimePeriod.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBByTimePeriodActionPerformed(evt);
            }
        });

        jLabelBegin.setText("begin:");

        jLabelEnd.setText("end:");

        buttonGroup1.add(jRBBySolarLongitude);
        jRBBySolarLongitude.setText("by solar longitude");
        jRBBySolarLongitude.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBBySolarLongitudeActionPerformed(evt);
            }
        });

        jLabelSolLongLow.setText("low:");

        jLabelSolLongUp.setText("up:");

        buttonGroup1.add(jRBByElevation);
        jRBByElevation.setText("by elevation");
        jRBByElevation.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRBByElevationActionPerformed(evt);
            }
        });

        jLabelElevLow.setText("low:");

        jLabelElevUp.setText("up:");

        jLabelElevShw.setText("Shower code:");

        jLabelElevRAlpha.setText("rAlpha:");

        jLabelElevDelta.setText("delta:");

        jLabelElevType.setText("type:");

        jButton1.setText("RUN");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(jRBShowerCode)
                        .addGap(9, 9, 9)
                        .addComponent(jLabelShowerCode)
                        .addGap(4, 4, 4)
                        .addComponent(jTextFieldShowerCode, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(jRBObserversIMOCode)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabelIMOCode)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldIMOCode, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(jRBObserversFirstAndLastName)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jLabelFirstName)
                        .addGap(5, 5, 5)
                        .addComponent(jTextFieldFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jLabelLastName)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldLastName, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(jRBLatitudeAndLongitude)
                        .addGap(21, 21, 21)
                        .addComponent(jLabelLowerLongitude)
                        .addGap(4, 4, 4)
                        .addComponent(jTextFieldLowerLongitude, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(jLabelUpperLongitude)
                        .addGap(4, 4, 4)
                        .addComponent(jTextFieldUpperLongitude, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(jLabelEW)
                        .addGap(4, 4, 4)
                        .addComponent(jTextFieldEW, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(jLabelLowerLatitude)
                        .addGap(4, 4, 4)
                        .addComponent(jTextFieldLowerLatitude, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(160, 160, 160)
                        .addComponent(jLabelUpperLatitude)
                        .addGap(4, 4, 4)
                        .addComponent(jTextFieldUpperLatitude, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(jLabelNS)
                        .addGap(18, 18, 18)
                        .addComponent(jTextFieldNS, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(jRBObserversSiteName)
                        .addGap(18, 18, 18)
                        .addComponent(jLabelSiteName)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldSiteName, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(jRBCountry)
                        .addGap(11, 11, 11)
                        .addComponent(jLabelCountryName)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldCountryName, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(jRBLimitingMagnitude)
                        .addGap(30, 30, 30)
                        .addComponent(jLabelLowerMagnitude)
                        .addGap(6, 6, 6)
                        .addComponent(jTextFieldLowerMagnitude, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(jLabelUpperMagnitude)
                        .addGap(4, 4, 4)
                        .addComponent(jTextFieldUpperMagnitude, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(jRBGlobalFilter))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(jRBDate)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jLabelYear)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldYear, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabelMonth)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldMonth, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jLabelDayBegining)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldDayBegining, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabelDayEnding)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldDayEnding, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
                                .addComponent(jRBBySolarLongitude)
                                .addGap(34, 34, 34)
                                .addComponent(jLabelSolLongLow))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
                                .addComponent(jRBByF)
                                .addGap(36, 36, 36)
                                .addComponent(jLabelFLow)
                                .addGap(27, 27, 27)
                                .addComponent(jTextFieldFLow, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(30, 30, 30)
                                .addComponent(jLabelFUp)))
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel2Layout.createSequentialGroup()
                                .addGap(31, 31, 31)
                                .addComponent(jTextFieldFUp, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel2Layout.createSequentialGroup()
                                .addGap(128, 128, 128)
                                .addComponent(jLabelSolLongUp)
                                .addGap(18, 18, 18)
                                .addComponent(jTextFieldSolLongUp, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jRBByTimePeriod)
                        .addGap(29, 29, 29)
                        .addComponent(jLabelBegin)
                        .addGap(26, 26, 26)
                        .addComponent(jTextFieldBegin, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(32, 32, 32)
                        .addComponent(jLabelEnd)
                        .addGap(31, 31, 31)
                        .addComponent(jTextFieldEnd, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(193, 193, 193)
                        .addComponent(jTextFieldSolLongLow, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jRBByElevation)
                        .addGap(27, 27, 27)
                        .addComponent(jLabelElevLow)
                        .addGap(26, 26, 26)
                        .addComponent(jTextFieldElevLow, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(26, 26, 26)
                        .addComponent(jLabelElevUp)
                        .addGap(34, 34, 34)
                        .addComponent(jTextFieldElevUp, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(38, 38, 38)
                        .addComponent(jLabelElevShw)
                        .addGap(26, 26, 26)
                        .addComponent(jTextFieldElevShw, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(37, 37, 37)
                        .addComponent(jLabelElevRAlpha)
                        .addGap(18, 18, 18)
                        .addComponent(jTextFieldRAlpha, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(29, 29, 29)
                        .addComponent(jLabelElevDelta)
                        .addGap(18, 18, 18)
                        .addComponent(jTextFieldElevDelta, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(26, 26, 26)
                        .addComponent(jLabelElevType)
                        .addGap(18, 18, 18)
                        .addComponent(jTextFieldElevType, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(453, 453, 453)
                        .addComponent(jButton1)))
                .addContainerGap(131, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jRBShowerCode)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jLabelShowerCode))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(jTextFieldShowerCode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(39, 39, 39)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRBDate)
                    .addComponent(jLabelYear)
                    .addComponent(jTextFieldYear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelMonth)
                    .addComponent(jTextFieldMonth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelDayBegining)
                    .addComponent(jTextFieldDayBegining, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelDayEnding)
                    .addComponent(jTextFieldDayEnding, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(8, 8, 8)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRBObserversIMOCode)
                    .addComponent(jLabelIMOCode)
                    .addComponent(jTextFieldIMOCode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(8, 8, 8)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jRBObserversFirstAndLastName)
                        .addComponent(jLabelFirstName)
                        .addComponent(jTextFieldFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabelLastName)
                            .addComponent(jTextFieldLastName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addGap(8, 8, 8)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jRBLatitudeAndLongitude)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jLabelLowerLongitude))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(jTextFieldLowerLongitude, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jLabelUpperLongitude))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(jTextFieldUpperLongitude, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jLabelEW))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(jTextFieldEW, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jLabelLowerLatitude))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(jTextFieldLowerLatitude, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(4, 4, 4)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextFieldUpperLatitude, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldNS, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabelUpperLatitude)
                            .addComponent(jLabelNS))))
                .addGap(15, 15, 15)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRBObserversSiteName)
                    .addComponent(jLabelSiteName)
                    .addComponent(jTextFieldSiteName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(8, 8, 8)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jRBCountry)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jTextFieldCountryName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabelCountryName))))
                .addGap(8, 8, 8)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jRBLimitingMagnitude)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jLabelLowerMagnitude))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(jTextFieldLowerMagnitude, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jLabelUpperMagnitude))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(jTextFieldUpperMagnitude, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRBByF)
                    .addComponent(jLabelFLow)
                    .addComponent(jTextFieldFLow, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelFUp)
                    .addComponent(jTextFieldFUp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRBByTimePeriod)
                    .addComponent(jLabelBegin)
                    .addComponent(jTextFieldBegin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelEnd)
                    .addComponent(jTextFieldEnd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRBBySolarLongitude)
                    .addComponent(jLabelSolLongLow)
                    .addComponent(jTextFieldSolLongLow, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelSolLongUp)
                    .addComponent(jTextFieldSolLongUp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRBByElevation)
                    .addComponent(jLabelElevLow)
                    .addComponent(jTextFieldElevLow, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelElevUp)
                    .addComponent(jTextFieldElevUp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelElevShw)
                    .addComponent(jTextFieldElevShw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelElevRAlpha)
                    .addComponent(jTextFieldRAlpha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelElevDelta)
                    .addComponent(jTextFieldElevDelta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelElevType)
                    .addComponent(jTextFieldElevType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jRBGlobalFilter)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 10, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addContainerGap())
        );

        jTabbedPane.addTab("Filters", jPanel2);

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

        jTableResult.setAutoCreateRowSorter(true);
        jTableResult.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        jTableResult.setColumnSelectionAllowed(true);
        jTableResult.setEnabled(false);
        jScrollPane1.setViewportView(jTableResult);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.ipadx = 768;
        gridBagConstraints.ipady = 375;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(11, 10, 21, 10);
        jPanel3.add(jScrollPane1, gridBagConstraints);

        jTabbedPane.addTab("Result", jPanel3);

        jPanelSolarLongitude.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("Solar longitude"));
        jPanel6.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabelMethodsYear.setText("Year");
        jPanel6.add(jLabelMethodsYear, new org.netbeans.lib.awtextra.AbsoluteConstraints(27, 31, -1, -1));
        jPanel6.add(jTextFieldMethodsYear, new org.netbeans.lib.awtextra.AbsoluteConstraints(67, 28, 62, -1));

        jLabelMethodsMonth.setText("Month");
        jPanel6.add(jLabelMethodsMonth, new org.netbeans.lib.awtextra.AbsoluteConstraints(157, 31, -1, -1));
        jPanel6.add(jTextFieldMethodsMonth, new org.netbeans.lib.awtextra.AbsoluteConstraints(215, 28, 62, -1));

        jLabelMethodsDay.setText("Day");
        jPanel6.add(jLabelMethodsDay, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 31, -1, -1));
        jPanel6.add(jTextFieldMethodsDay, new org.netbeans.lib.awtextra.AbsoluteConstraints(357, 28, 69, -1));

        jLabelMethodsTime.setText("Time");
        jPanel6.add(jLabelMethodsTime, new org.netbeans.lib.awtextra.AbsoluteConstraints(456, 31, -1, -1));
        jPanel6.add(jTextFieldMethodsTime, new org.netbeans.lib.awtextra.AbsoluteConstraints(506, 28, 68, -1));

        jButton2.setText("Calculate");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        jPanel6.add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(603, 27, -1, -1));

        jLabelMethodsSolarLongitudeCalculated.setText("Solar longitude is:");
        jPanel6.add(jLabelMethodsSolarLongitudeCalculated, new org.netbeans.lib.awtextra.AbsoluteConstraints(27, 71, -1, -1));

        jTextFieldMethodsSolarLongitudeCalculated.setEnabled(false);
        jPanel6.add(jTextFieldMethodsSolarLongitudeCalculated, new org.netbeans.lib.awtextra.AbsoluteConstraints(139, 68, 130, -1));

        jPanelSolarLongitude.add(jPanel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(187, 11, 724, 120));

        jPanelZHR.setBorder(javax.swing.BorderFactory.createTitledBorder("ZHR"));
        jPanelZHR.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabelZHRYear.setText("Year");
        jPanelZHR.add(jLabelZHRYear, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 30, -1, -1));
        jPanelZHR.add(jTextFieldZHRYear, new org.netbeans.lib.awtextra.AbsoluteConstraints(56, 27, 66, -1));

        jLabelZHRMonth.setText("Month");
        jPanelZHR.add(jLabelZHRMonth, new org.netbeans.lib.awtextra.AbsoluteConstraints(149, 30, -1, -1));
        jPanelZHR.add(jTextFieldZHRMonth, new org.netbeans.lib.awtextra.AbsoluteConstraints(206, 27, 66, -1));

        jLabelZHRDayBegin.setText("Day begin");
        jPanelZHR.add(jLabelZHRDayBegin, new org.netbeans.lib.awtextra.AbsoluteConstraints(298, 30, -1, -1));
        jPanelZHR.add(jTextFieldZHRDayBegin, new org.netbeans.lib.awtextra.AbsoluteConstraints(374, 27, 58, -1));

        jLabelZHRDayEnd.setText("Day end");
        jPanelZHR.add(jLabelZHRDayEnd, new org.netbeans.lib.awtextra.AbsoluteConstraints(450, 30, -1, -1));
        jPanelZHR.add(jTextFieldZHRDayEnd, new org.netbeans.lib.awtextra.AbsoluteConstraints(516, 27, 71, -1));

        jLabelZHRShower.setText("Shower");
        jPanelZHR.add(jLabelZHRShower, new org.netbeans.lib.awtextra.AbsoluteConstraints(613, 30, -1, -1));
        jPanelZHR.add(jTextFieldZHRShower, new org.netbeans.lib.awtextra.AbsoluteConstraints(678, 27, 63, -1));

        jLabelZHRr.setText("r");
        jPanelZHR.add(jLabelZHRr, new org.netbeans.lib.awtextra.AbsoluteConstraints(759, 30, -1, -1));
        jPanelZHR.add(jTextFieldZHRr, new org.netbeans.lib.awtextra.AbsoluteConstraints(767, 27, 62, -1));

        jLabelZHRRAlpha.setText("RAlpha");
        jPanelZHR.add(jLabelZHRRAlpha, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 69, -1, -1));
        jPanelZHR.add(jTextFieldZHRRAlpha, new org.netbeans.lib.awtextra.AbsoluteConstraints(78, 66, 63, -1));

        jLabelZHRk.setText("k");
        jPanelZHR.add(jLabelZHRk, new org.netbeans.lib.awtextra.AbsoluteConstraints(159, 69, -1, -1));
        jPanelZHR.add(jTextFieldZHRk, new org.netbeans.lib.awtextra.AbsoluteConstraints(182, 66, 59, -1));

        jLabelZHRCalculate.setText("Calculate");
        jPanelZHR.add(jLabelZHRCalculate, new org.netbeans.lib.awtextra.AbsoluteConstraints(259, 65, -1, -1));

        jLabelZHRPlot.setText("Plot");
        jPanelZHR.add(jLabelZHRPlot, new org.netbeans.lib.awtextra.AbsoluteConstraints(346, 65, -1, -1));

        jBTZHR.setText("RUN!");
        jBTZHR.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBTZHRActionPerformed(evt);
            }
        });
        jPanelZHR.add(jBTZHR, new org.netbeans.lib.awtextra.AbsoluteConstraints(730, 70, -1, -1));

        jPanelSolarLongitude.add(jPanelZHR, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 140, 885, 108));

        jPanelPopulationIndex.setBorder(javax.swing.BorderFactory.createTitledBorder("Population index"));
        jPanelPopulationIndex.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabelPIYear.setText("Year");
        jPanelPopulationIndex.add(jLabelPIYear, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 30, -1, -1));
        jPanelPopulationIndex.add(jTextFieldPIYear, new org.netbeans.lib.awtextra.AbsoluteConstraints(65, 27, 57, -1));

        jLabelPIMonth.setText("Month");
        jPanelPopulationIndex.add(jLabelPIMonth, new org.netbeans.lib.awtextra.AbsoluteConstraints(150, 30, -1, -1));
        jPanelPopulationIndex.add(jTextFieldPIMonth, new org.netbeans.lib.awtextra.AbsoluteConstraints(206, 27, 60, -1));

        jLabelPIDayBegin.setText("Day begin");
        jPanelPopulationIndex.add(jLabelPIDayBegin, new org.netbeans.lib.awtextra.AbsoluteConstraints(293, 30, -1, -1));
        jPanelPopulationIndex.add(jTextFieldPIDayBegin, new org.netbeans.lib.awtextra.AbsoluteConstraints(367, 27, 65, -1));

        jLabelPIDayEnd.setText("Day end");
        jPanelPopulationIndex.add(jLabelPIDayEnd, new org.netbeans.lib.awtextra.AbsoluteConstraints(461, 30, -1, -1));
        jPanelPopulationIndex.add(jTextFieldPIDayEnd, new org.netbeans.lib.awtextra.AbsoluteConstraints(527, 27, 65, -1));

        jLabelPIShower.setText("Shower");
        jPanelPopulationIndex.add(jLabelPIShower, new org.netbeans.lib.awtextra.AbsoluteConstraints(620, 30, -1, -1));
        jPanelPopulationIndex.add(jTextFieldPIShower, new org.netbeans.lib.awtextra.AbsoluteConstraints(682, 27, 64, -1));

        jLabelPIMagnitude.setText("Magnitude");
        jPanelPopulationIndex.add(jLabelPIMagnitude, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 69, -1, -1));
        jPanelPopulationIndex.add(jTextFieldPIMagnitude, new org.netbeans.lib.awtextra.AbsoluteConstraints(84, 66, 49, -1));

        jLabelPIRAlpha.setText("rAlpha");
        jPanelPopulationIndex.add(jLabelPIRAlpha, new org.netbeans.lib.awtextra.AbsoluteConstraints(159, 69, -1, -1));
        jPanelPopulationIndex.add(jTextFieldPIrAlpha, new org.netbeans.lib.awtextra.AbsoluteConstraints(218, 66, 58, -1));

        jLabelPIDelta.setText("Delta");
        jPanelPopulationIndex.add(jLabelPIDelta, new org.netbeans.lib.awtextra.AbsoluteConstraints(306, 69, -1, -1));
        jPanelPopulationIndex.add(jTextFieldPIDelta, new org.netbeans.lib.awtextra.AbsoluteConstraints(361, 66, 62, -1));

        jCheckBoxCalculate.setText("Calculate");
        jPanelPopulationIndex.add(jCheckBoxCalculate, new org.netbeans.lib.awtextra.AbsoluteConstraints(441, 65, -1, -1));

        jCheckBoxPlot.setText("Plot");
        jPanelPopulationIndex.add(jCheckBoxPlot, new org.netbeans.lib.awtextra.AbsoluteConstraints(528, 65, -1, -1));

        jBTPopulationIndex.setText("RUN!");
        jBTPopulationIndex.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBTPopulationIndexActionPerformed(evt);
            }
        });
        jPanelPopulationIndex.add(jBTPopulationIndex, new org.netbeans.lib.awtextra.AbsoluteConstraints(730, 70, -1, -1));

        jPanelSolarLongitude.add(jPanelPopulationIndex, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 250, 885, 104));

        jPanelMagnitudeDistribution.setBorder(javax.swing.BorderFactory.createTitledBorder("Magnitude distribution"));
        jPanelMagnitudeDistribution.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabel9.setText("Year");
        jPanelMagnitudeDistribution.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(16, 30, -1, -1));
        jPanelMagnitudeDistribution.add(jTextFieldMagnitudeDistributionYear, new org.netbeans.lib.awtextra.AbsoluteConstraints(68, 27, 58, -1));

        jLabelMagnitudeDistributionMonth.setText("Month");
        jPanelMagnitudeDistribution.add(jLabelMagnitudeDistributionMonth, new org.netbeans.lib.awtextra.AbsoluteConstraints(155, 30, -1, -1));
        jPanelMagnitudeDistribution.add(jTextFieldMagnitudeDistributionMonth, new org.netbeans.lib.awtextra.AbsoluteConstraints(214, 27, 63, -1));

        jLabelMagnitudeDistributionDay.setText("Day");
        jPanelMagnitudeDistribution.add(jLabelMagnitudeDistributionDay, new org.netbeans.lib.awtextra.AbsoluteConstraints(304, 30, -1, -1));
        jPanelMagnitudeDistribution.add(jTextFieldMagnitudeDistributionDay, new org.netbeans.lib.awtextra.AbsoluteConstraints(357, 27, 63, -1));

        jLabelMagnitudeDistributionShower.setText("Shower");
        jPanelMagnitudeDistribution.add(jLabelMagnitudeDistributionShower, new org.netbeans.lib.awtextra.AbsoluteConstraints(449, 30, -1, -1));
        jPanelMagnitudeDistribution.add(jTextFieldMagnitudeDistributionShower, new org.netbeans.lib.awtextra.AbsoluteConstraints(513, 27, 55, -1));

        jLabelMagnitudeDistributionRAlpha.setText("rAlpha");
        jPanelMagnitudeDistribution.add(jLabelMagnitudeDistributionRAlpha, new org.netbeans.lib.awtextra.AbsoluteConstraints(597, 30, -1, -1));
        jPanelMagnitudeDistribution.add(jTextFieldMagnitudeDistributionRAlpha, new org.netbeans.lib.awtextra.AbsoluteConstraints(657, 27, 62, -1));

        jLabelMagnitudeDistributionDelta.setText("Delta");
        jPanelMagnitudeDistribution.add(jLabelMagnitudeDistributionDelta, new org.netbeans.lib.awtextra.AbsoluteConstraints(747, 30, -1, -1));
        jPanelMagnitudeDistribution.add(jTextFieldMagnitudeDistributionDelta, new org.netbeans.lib.awtextra.AbsoluteConstraints(799, 27, 27, -1));

        jBTMagnitudeDistribution.setText("RUN!");
        jBTMagnitudeDistribution.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBTMagnitudeDistributionActionPerformed(evt);
            }
        });
        jPanelMagnitudeDistribution.add(jBTMagnitudeDistribution, new org.netbeans.lib.awtextra.AbsoluteConstraints(730, 60, -1, -1));

        jPanelSolarLongitude.add(jPanelMagnitudeDistribution, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 370, 880, 110));

        jPanel5.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        buttonGroupMethods.add(jRadioButtonZHR);
        jRadioButtonZHR.setText("ZHR");
        jRadioButtonZHR.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButtonZHRActionPerformed(evt);
            }
        });
        jPanel5.add(jRadioButtonZHR, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 40, -1, -1));

        buttonGroupMethods.add(jRadioButtonPopulationIndex);
        jRadioButtonPopulationIndex.setText("Population index");
        jRadioButtonPopulationIndex.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButtonPopulationIndexActionPerformed(evt);
            }
        });
        jPanel5.add(jRadioButtonPopulationIndex, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 150, -1, -1));

        buttonGroupMethods.add(jRadioButtonMagnitudeDistribution);
        jRadioButtonMagnitudeDistribution.setText("Magnitude distribution");
        jRadioButtonMagnitudeDistribution.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButtonMagnitudeDistributionActionPerformed(evt);
            }
        });
        jPanel5.add(jRadioButtonMagnitudeDistribution, new org.netbeans.lib.awtextra.AbsoluteConstraints(6, 250, -1, -1));

        jPanelSolarLongitude.add(jPanel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 150, 159, 322));

        jTabbedPane.addTab("Methods", jPanelSolarLongitude);

        jPanel4.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabelGraph.setText(" ");

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabelGraph, javax.swing.GroupLayout.DEFAULT_SIZE, 1060, Short.MAX_VALUE)
        );
        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabelGraph, javax.swing.GroupLayout.DEFAULT_SIZE, 510, Short.MAX_VALUE)
        );

        jPanel4.add(jPanel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 1060, 510));

        jTabbedPane.addTab("Graph", jPanel4);

        getContentPane().add(jTabbedPane);

        jMenu1.setText("File");
        jMenuBar1.add(jMenu1);

        jMenu2.setText("Edit");

        jMenuItemPaths.setText("Paths");
        jMenuItemPaths.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItemPathsActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItemPaths);

        jMenuBar1.add(jMenu2);

        jMenu4.setText("Help & Documentation");
        jMenuBar1.add(jMenu4);

        jMenu3.setText("About");
        jMenuBar1.add(jMenu3);

        setJMenuBar(jMenuBar1);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonChooseFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonChooseFileActionPerformed
        if (Controller.getInstance().getrScriptExecutablePath().equals("")) {
            JOptionPane.showMessageDialog(this, "First you need to load your paths.", "Error", JOptionPane.ERROR_MESSAGE);
        } else {

            DataEntry de = new DataEntry();
            JDialog dialog = new JDialog(this, false);
            dialog.add(de);
            dialog.pack();
            dialog.setVisible(true);
            System.out.println("new dataframe loaded");
        }
    }//GEN-LAST:event_jButtonChooseFileActionPerformed

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

        boolean value = validateFields();
        HashMap<String, Object> parameters = new HashMap<>();

        if (value == true) {

            String rCall = "";

            if (Controller.getInstance().getPath() != null) {
                String loadingFile = "dataset = read.csv(\"" + Controller.getInstance().getPath() + "\", header=TRUE, sep=\",\")";
//            String rCodeFix = "dataset<- data.frame(lapply(dataset2, as.character), stringsAsFactors=FALSE)";

                if (jRBShowerCode.isSelected()) {
                    String text = jTextFieldShowerCode.getText();

                    rCall = "result = filter(dataset, type = \"rate\", shw = \"" + text + "\")";

                    parameters.put("shower", text);
                    filter = new JavaFilterByShower();

                } else if (jRBDate.isSelected()) {
                    String textYear = jTextFieldYear.getText();
                    String textMonth = jTextFieldMonth.getText();
                    String textDayBegining = jTextFieldDayBegining.getText();
                    String textDayEnding = jTextFieldDayEnding.getText();

                    int year = Integer.parseInt(textYear);
                    int month = Integer.parseInt(textMonth);
                    int dayBegining = Integer.parseInt(textDayBegining);
                    int dayEnding = Integer.parseInt(textDayEnding);

                    rCall = "result = filter(dataset, year=" + year + ", month=" + month + ", day.beg=" + dayBegining + ", day.end=" + dayEnding + ")";

                    parameters.put("year", year);
                    parameters.put("month", month);
                    parameters.put("dayBegining", dayBegining);
                    parameters.put("dayEnding", dayEnding);
                    filter = new JavaFilterByDate();

                } else if (jRBObserversIMOCode.isSelected()) {
                    String text = jTextFieldIMOCode.getText();

                    rCall = "result = filter(dataset, imocode = \"" + text + "\")";
                    parameters.put("imocode", text);
                    filter = new JavaFilterByImoCode();

                } else if (jRBObserversFirstAndLastName.isSelected()) {
                    String firstName = jTextFieldFirstName.getText();
                    String lastName = jTextFieldLastName.getText();

                    rCall = "result = filter(dataset, name=\"" + firstName + "\", fname=\"" + lastName + "\")";
                    parameters.put("firstName", firstName);
                    parameters.put("lastName", lastName);

                    filter = new JavaFilterByObserver();
                } else if (jRBLatitudeAndLongitude.isSelected()) {
                    String longLow = jTextFieldLowerLongitude.getText();
                    String longUp = jTextFieldUpperLongitude.getText();
                    String ew = jTextFieldEW.getText();
                    String latLow = jTextFieldLowerLatitude.getText();
                    String latUp = jTextFieldUpperLatitude.getText();
                    String ns = jTextFieldNS.getText();

                    double longLowDouble = Double.parseDouble(longLow);
                    double longUpDouble = Double.parseDouble(longUp);
                    double latLowDouble = Double.parseDouble(latLow);
                    double latUpDouble = Double.parseDouble(latUp);

                    rCall = "result = filter(dataset, lat.low=" + latLowDouble + ", lat.up=" + latUpDouble + ", ns=\"" + ns + "\", long.low=" + longLowDouble + ", long.up=" + longUpDouble + ", ew=\"" + ew + "\")";

                    parameters.put("longLow", longLowDouble);
                    parameters.put("longUp", longUpDouble);
                    parameters.put("ew", ew);
                    parameters.put("latLow", latLowDouble);
                    parameters.put("latUp", latUpDouble);
                    parameters.put("ns", ns);

                    filter = new JavaFilterByLatitudeAndLongitude();

                } else if (jRBObserversSiteName.isSelected()) {
                    String text = jTextFieldSiteName.getText();

                    rCall = "result = filter(dataset, site=\"" + text + "\")";

                    parameters.put("siteName", text);

                    filter = new JavaFilterByObserverSiteName();

                } else if (jRBCountry.isSelected()) {
                    String text = jTextFieldCountryName.getText();

                    rCall = "result = filter(dataset, country=\"" + text + "\")";

                    parameters.put("country", text);

                    filter = new JavaFilterByCountry();
                } else if (jRBLimitingMagnitude.isSelected()) {
                    String lowMag = jTextFieldLowerMagnitude.getText();
                    String upMag = jTextFieldUpperMagnitude.getText();

                    double lowMagDouble = Double.parseDouble(lowMag);
                    double upMagDouble = Double.parseDouble(upMag);

                    rCall = "result = filter(dataset, mag.low=" + lowMagDouble + ", mag.up=" + upMagDouble + ")";

                    parameters.put("lowMag", lowMagDouble);
                    parameters.put("upMag", upMagDouble);

                    filter = new JavaFilterByMagnitude();
                } else if (jRBByF.isSelected()) {
                    String lowF = jTextFieldFLow.getText();
                    String upF = jTextFieldFUp.getText();

                    double lowFDouble = Double.parseDouble(lowF);
                    double upFDouble = Double.parseDouble(upF);

                    rCall = "result = filter(dataset, F.low=" + lowFDouble + ", F.up=" + upFDouble + ")";

                    parameters.put("lowFDouble", lowFDouble);
                    parameters.put("upFDouble", upFDouble);

                    filter = new JavaFilterByF();

                } else if (jRBByTimePeriod.isSelected()) {
                    String begin = jTextFieldBegin.getText();
                    String end = jTextFieldEnd.getText();

                    int beginInt = Integer.parseInt(begin);
                    int endInt = Integer.parseInt(end);
                    rCall = "result = filter(dataset, time.low=" + beginInt + ", time.up=" + endInt + ")";

                    parameters.put("begin", begin);
                    parameters.put("end", end);

                    filter = new JavaFilterByTime();

                } else if (jRBBySolarLongitude.isSelected()) {
                    String low = jTextFieldSolLongLow.getText();
                    String up = jTextFieldSolLongUp.getText();

                    double lowDouble = Double.parseDouble(low);
                    double upDouble = Double.parseDouble(up);

                    rCall = "result = filter(dataset, sol.low=" + lowDouble + ", sol.up=" + upDouble + ")";

                    parameters.put("low", low);
                    parameters.put("up", up);

                    filter = new JavaFilterBySolarLongitude();
                } else if (jRBByElevation.isSelected()) {
                    String low = jTextFieldElevLow.getText();
                    String up = jTextFieldElevUp.getText();
                    String shw = jTextFieldElevShw.getText();
//                    String type = jTextFieldElevType.getText();

                    int lowInt = Integer.parseInt(low);
                    int upInt = Integer.parseInt(up);

                    //test this!
//                    if (shw != null && type != null && !shw.equalsIgnoreCase("") && !type.equalsIgnoreCase("")) {
//                        rCall = "result = filter(dataset, Ralpha=NULL, Delta=NULL, shw=\"" + shw + "\", type=\"" + type + "\", h.low=" + lowInt + ", h.up=" + upInt + ")";
//                    } else {
//                        rCall = "result = filter(dataset, Ralpha=NULL, Delta=NULL, shw=\"PER\", type=\"rate\", h.low=" + lowInt + ", h.up=" + upInt + ")";
//                    }
                    parameters.put("lowInt", lowInt);
                    parameters.put("upInt", upInt);
                    parameters.put("shw", shw);

                    filter = new JavaFilterByH();

                } else if (jRBGlobalFilter.isSelected()) {
                    String type = jTextFieldElevType.getText();

                    String shw = jTextFieldShowerCode.getText();

                    String yearText = jTextFieldYear.getText();
                    String monthBegText = jTextFieldMonth.getText();
                    String dayBeginText = jTextFieldDayBegining.getText();
                    String dayEndText = jTextFieldDayEnding.getText();
                    String imoCode = jTextFieldIMOCode.getText();
                    String lowLongText = jTextFieldLowerLongitude.getText();
                    String upLongText = jTextFieldUpperLongitude.getText();
                    String ewText = jTextFieldEW.getText();
                    String lowLatText = jTextFieldLowerLatitude.getText();
                    String upLatText = jTextFieldUpperLatitude.getText();
                    String nsText = jTextFieldNS.getText();
                    String firstName = jTextFieldFirstName.getText();

                    String lastName = jTextFieldLastName.getText();
                    String siteName = jTextFieldSiteName.getText();
                    String countryName = jTextFieldCountryName.getText();
                    String lowerMagnitudeText = jTextFieldLowerMagnitude.getText();
                    String upperMagnitudeText = jTextFieldUpperMagnitude.getText();
                    String fLowText = jTextFieldFLow.getText();
                    String fUpText = jTextFieldFUp.getText();
                    String beginText = jTextFieldBegin.getText();
                    String endText = jTextFieldEnd.getText();
                    String solLongLowText = jTextFieldSolLongLow.getText();
                    String solLongUpText = jTextFieldSolLongUp.getText();
                    String rAlphaText = jTextFieldRAlpha.getText();
                    String deltaText = jTextFieldElevDelta.getText();
                    String elevLowText = jTextFieldElevLow.getText();
                    String elevUpText = jTextFieldElevUp.getText();

                    Exception exceptionNumeric = null;

                    int year = 0;
                    int monthBeg = 0;
                    int monthEnd = 0;
                    int dayBeg = 0;
                    int dayEnd = 0;
                    int lowLong = 0;
                    int upLong = 0;
                    int lowLat = 0;
                    int upLat = 0;
                    double lowerMagnitude = 0;
                    double upperMagnitude = 0;
                    double fLow = 0;
                    double fUp = 0;
                    double solLongLow = 0;
                    double solLongUp = 0;
                    int rAlpha = 0;
                    int delta = 0;
                    int elevLow = 0;
                    int elevUp = 0;

                    try {
                        year = Integer.parseInt(yearText);
                        monthBeg = Integer.parseInt(monthBegText);
                        dayBeg = Integer.parseInt(dayBeginText);
                        dayEnd = Integer.parseInt(dayEndText);
                        lowLong = Integer.parseInt(lowLongText);
                        upLong = Integer.parseInt(upLongText);
                        lowLat = Integer.parseInt(lowLatText);
                        upLat = Integer.parseInt(upLatText);
                        lowerMagnitude = Double.parseDouble(lowerMagnitudeText);
                        upperMagnitude = Double.parseDouble(upperMagnitudeText);
                        fLow = Double.parseDouble(fLowText);
                        fUp = Double.parseDouble(fUpText);
                        solLongLow = Double.parseDouble(solLongLowText);
                        solLongUp = Double.parseDouble(solLongUpText);
                        rAlpha = Integer.parseInt(rAlphaText);
                        delta = Integer.parseInt(deltaText);
                        elevLow = Integer.parseInt(elevLowText);
                        elevUp = Integer.parseInt(elevUpText);
                    } catch (Exception e) {
                        exceptionNumeric = e;
                    }

                    if (exceptionNumeric == null) {
                        JOptionPane.showMessageDialog(this, "Please insert numerical values where you should. :D", "Error", JOptionPane.ERROR_MESSAGE);
                        return;
                    }

                    if (shw.equals("") || shw.isEmpty()) {
                        JOptionPane.showMessageDialog(this, "Please select shower.", "Error", JOptionPane.ERROR_MESSAGE);
                        return;
                    }

                    if (type.equals("") || type.isEmpty()) {
                        JOptionPane.showMessageDialog(this, "Please select shower.", "Error", JOptionPane.ERROR_MESSAGE);
                        return;
                    }

                    rCall = "result<-filter(dataset, type=\"" + type + "\",year=" + (year == 0 ? "NULL" : "" + year) + ", "
                            + "month.beg=" + (monthBeg == 0 ? "NULL" : "" + monthBeg) + ", month.end=" + (monthEnd == 0 ? "NULL" : "" + monthEnd) + ",\n"
                            + " day.beg=" + (dayBeg == 0 ? "NULL" : "" + dayBeg) + ", day.end=" + (dayEnd == 0 ? "NULL" : "" + dayEnd) + ", shw=\"" + shw + "\", "
                            + "imocode=" + (imoCode.equals("") ? "NULL" : "\"" + imoCode + "\"") + ", "
                            + "long.low=" + (lowLong == 0 ? 0 : lowLong) + ", long.up=" + (upLong == 0 ? 180 : upLong) + ", ew=" + (ewText.equals("") ? "c(\"E\",\"W\")" : "\"" + ewText + "\"")
                            + ", lat.low=" + (lowLat == 0 ? 0 : lowLat) + ", lat.up=" + (upLat == 0 ? 90 : upLat)
                            + ", ns=" + (nsText.equals("") ? "c(\"N\",\"S\")" : "\"" + nsText + "\"")
                            + ", name=" + (firstName.equals("") ? "NULL" : "\"" + firstName + "\"")
                            + ",fname=" + (lastName.equals("") ? "NULL" : "\"" + lastName + "\"")
                            + ", site=" + (siteName.equals("") ? "NULL" : "\"" + siteName + "\"")
                            + ", "
                            + "country=" + (countryName.equals("") ? "NULL" : "\"" + countryName + "\"")
                            + ", mag.low=" + (lowerMagnitude == 0 ? "2.0" : "" + lowerMagnitude)
                            + ",mag.up=" + (upperMagnitude == 0 ? "7.5" : "" + upperMagnitude)
                            + ", F.low=" + (fLow == 0 ? "1.0" : "" + fLow)
                            + ",F.up=" + (fUp == 0 ? "2.0" : "" + fUp)
                            + ",time.low=" + (beginText.equals("") ? "0" : "" + beginText)
                            + ",time.up=" + (endText.equals("") ? "2359" : "" + endText)
                            + ",\n"
                            + " sol.low=" + (solLongLow == 0 ? "0" : "" + solLongLow)
                            + ",sol.up=" + (solLongUp == 0 ? "359.999" : "" + solLongUp)
                            + ",Ralpha=" + (rAlpha == 0 ? "NULL" : "" + rAlpha)
                            + ",Delta=" + (delta == 0 ? "NULL" : "" + delta)
                            + ",h.low=" + (elevLow == 0 ? "10" : "" + elevLow)
                            + ",h.up=" + (elevUp == 0 ? "90" : "" + elevUp) + ")";
                }

                Controller.getInstance().executeRCode(2, loadingFile, rCall);
                filter.filterData(parameters);

            } else {
                JOptionPane.showMessageDialog(this, "Please select file containing your data.", "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
    }//GEN-LAST:event_jButton1ActionPerformed

    private void jTextFieldIMOCodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldIMOCodeActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextFieldIMOCodeActionPerformed

    private void jRBLimitingMagnitudeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBLimitingMagnitudeActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelLowerMagnitude.setVisible(true);
        jTextFieldLowerMagnitude.setVisible(true);
        jLabelUpperMagnitude.setVisible(true);
        jTextFieldUpperMagnitude.setVisible(true);
    }//GEN-LAST:event_jRBLimitingMagnitudeActionPerformed

    private void jRBCountryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBCountryActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelCountryName.setVisible(true);
        jTextFieldCountryName.setVisible(true);
    }//GEN-LAST:event_jRBCountryActionPerformed

    private void jRBObserversSiteNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBObserversSiteNameActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelSiteName.setVisible(true);
        jTextFieldSiteName.setVisible(true);
    }//GEN-LAST:event_jRBObserversSiteNameActionPerformed

    private void jRBLatitudeAndLongitudeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBLatitudeAndLongitudeActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelLowerLatitude.setVisible(true);
        jLabelUpperLatitude.setVisible(true);
        jLabelLowerLongitude.setVisible(true);
        jLabelUpperLongitude.setVisible(true);
        jLabelNS.setVisible(true);
        jLabelEW.setVisible(true);
        jTextFieldLowerLatitude.setVisible(true);
        jTextFieldUpperLatitude.setVisible(true);
        jTextFieldLowerLongitude.setVisible(true);
        jTextFieldUpperLongitude.setVisible(true);
        jTextFieldNS.setVisible(true);
        jTextFieldEW.setVisible(true);
    }//GEN-LAST:event_jRBLatitudeAndLongitudeActionPerformed

    private void jRBObserversFirstAndLastNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBObserversFirstAndLastNameActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelFirstName.setVisible(true);
        jTextFieldFirstName.setVisible(true);
        jLabelLastName.setVisible(true);
        jTextFieldLastName.setVisible(true);
    }//GEN-LAST:event_jRBObserversFirstAndLastNameActionPerformed

    private void jRBObserversIMOCodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBObserversIMOCodeActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelIMOCode.setVisible(true);
        jTextFieldIMOCode.setVisible(true);
    }//GEN-LAST:event_jRBObserversIMOCodeActionPerformed

    private void jRBDateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBDateActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelYear.setVisible(true);
        jTextFieldYear.setVisible(true);
        jLabelMonth.setVisible(true);
        jTextFieldMonth.setVisible(true);
        jLabelDayBegining.setVisible(true);
        jTextFieldDayBegining.setVisible(true);
        jLabelDayEnding.setVisible(true);
        jTextFieldDayEnding.setVisible(true);
    }//GEN-LAST:event_jRBDateActionPerformed

    private void jRBShowerCodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBShowerCodeActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelShowerCode.setVisible(true);
        jTextFieldShowerCode.setVisible(true);
    }//GEN-LAST:event_jRBShowerCodeActionPerformed

    private void jRBByFActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBByFActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelFLow.setVisible(true);
        jLabelFUp.setVisible(true);
        jTextFieldFLow.setVisible(true);
        jTextFieldFUp.setVisible(true);
    }//GEN-LAST:event_jRBByFActionPerformed

    private void jRBByTimePeriodActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBByTimePeriodActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelBegin.setVisible(true);
        jLabelEnd.setVisible(true);
        jTextFieldBegin.setVisible(true);
        jTextFieldEnd.setVisible(true);
    }//GEN-LAST:event_jRBByTimePeriodActionPerformed

    private void jRBBySolarLongitudeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBBySolarLongitudeActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelSolLongLow.setVisible(true);
        jLabelSolLongUp.setVisible(true);
        jTextFieldSolLongLow.setVisible(true);
        jTextFieldSolLongUp.setVisible(true);
    }//GEN-LAST:event_jRBBySolarLongitudeActionPerformed

    private void jRBByElevationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBByElevationActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelElevLow.setVisible(true);
        jLabelElevUp.setVisible(true);
        jLabelElevDelta.setVisible(true);
        jLabelElevRAlpha.setVisible(true);
        jLabelElevShw.setVisible(true);
        jLabelElevType.setVisible(true);
        jTextFieldElevLow.setVisible(true);
        jTextFieldElevUp.setVisible(true);
        jTextFieldElevDelta.setVisible(true);
        jTextFieldRAlpha.setVisible(true);
        jTextFieldElevShw.setVisible(true);
        jTextFieldElevType.setVisible(true);
    }//GEN-LAST:event_jRBByElevationActionPerformed

    private void jRadioButtonZHRActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButtonZHRActionPerformed
        setAllMethodPanelsInvisible();
        setAllTextFieldsEmpty();
        jPanelZHR.setVisible(true);
    }//GEN-LAST:event_jRadioButtonZHRActionPerformed

    private void jRadioButtonPopulationIndexActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButtonPopulationIndexActionPerformed
        setAllMethodPanelsInvisible();
        setAllTextFieldsEmpty();
        jPanelPopulationIndex.setVisible(true);
    }//GEN-LAST:event_jRadioButtonPopulationIndexActionPerformed

    private void jRadioButtonMagnitudeDistributionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButtonMagnitudeDistributionActionPerformed
        setAllMethodPanelsInvisible();
        setAllTextFieldsEmpty();
        jPanelMagnitudeDistribution.setVisible(true);
    }//GEN-LAST:event_jRadioButtonMagnitudeDistributionActionPerformed

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        if (Controller.getInstance().getrScriptExecutablePath().equals("")) {
            JOptionPane.showMessageDialog(this, "First you need to load your paths.", "Error", JOptionPane.ERROR_MESSAGE);
        } else {
            String textYear = jTextFieldMethodsYear.getText();
            String textMonth = jTextFieldMethodsMonth.getText();
            String textDay = jTextFieldMethodsDay.getText();
            String time = jTextFieldMethodsTime.getText();

            Exception exceptionNumeric = null;

            int year = 0;
            int month = 0;
            int day = 0;

            try {
                year = Integer.parseInt(textYear);
                month = Integer.parseInt(textMonth);
                day = Integer.parseInt(textDay);
            } catch (Exception e) {
                exceptionNumeric = e;
            }

            boolean run = true;

            if (exceptionNumeric != null) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: all parameters must be numeric!", "Error", JOptionPane.ERROR_MESSAGE);
                run = false;
            }

            if (year < 1 || month < 1 || day < 1) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: all parameters must be > 0!", "Error", JOptionPane.ERROR_MESSAGE);
                run = false;
            }

            if (month > 12) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: months must be < 13!", "Error", JOptionPane.ERROR_MESSAGE);
                run = false;
            }

            if (day > 31) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: days must be < 32!", "Error", JOptionPane.ERROR_MESSAGE);
                run = false;
            }

            if (year < 1984) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: year must be > 1983!", "Error", JOptionPane.ERROR_MESSAGE);
                run = false;
            }

            boolean isTimeInGoodFormat = time.matches("[1-9]{2}");

            if (isTimeInGoodFormat == false) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Time must be entered in format HH:MM!", "Error", JOptionPane.ERROR_MESSAGE);
                run = false;
            }

            if (run == true) {
                String rCall = "result = solar.long(year=" + year + ", month=" + month + ", day=" + day + ", time=" + time + ")";
                Controller.getInstance().executeRCode(3, "", rCall);
                String solar = Controller.getInstance().getSolarLong();
                if (solar.equals("")) {
                    System.out.println("this doesn't work...");
                } else {
                    jTextFieldMethodsSolarLongitudeCalculated.setText(solar);
                }
            }
        }
    }//GEN-LAST:event_jButton2ActionPerformed

    private void jMenuItemPathsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemPathsActionPerformed
        PathsEntry pe = new PathsEntry();
        JDialog dialog = new JDialog(this, false);
        dialog.add(pe);
        dialog.pack();
        dialog.setVisible(true);
        System.out.println("new dataframe loaded");
    }//GEN-LAST:event_jMenuItemPathsActionPerformed

    private void jBTZHRActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBTZHRActionPerformed
        if (Controller.getInstance().getPath() != null) {
            String loadingFile = "dataset = read.csv(\"" + Controller.getInstance().getPath() + "\", header=TRUE, sep=\",\")";
            String textYear = jTextFieldZHRYear.getText();
            String textMonth = jTextFieldZHRMonth.getText();
            String textDayBegining = jTextFieldZHRDayBegin.getText();
            String textDayEnding = jTextFieldZHRDayEnd.getText();
            String shower = jTextFieldZHRShower.getText();
            String rText = jTextFieldZHRr.getText();
            String rAlphaText = jTextFieldZHRRAlpha.getText();
            String deltaText = jTextFieldPIDelta.getText();
            String kText = jTextFieldZHRk.getText();
            boolean graph = jLabelZHRPlot.isSelected();
            boolean calculate = jLabelZHRCalculate.isSelected();
            System.out.println("graph is selected: " + graph);
            System.out.println("calculate is selected: " + calculate);

            Exception exceptionNumeric = null;

            int year = 0;
            int month = 0;
            int dayBegining = 0;
            int dayEnding = 0;
            int k = 0;
            double r = 0;
            double rAlpha = 0;
            double delta = 0;

            try {
                year = Integer.parseInt(textYear);
                month = Integer.parseInt(textMonth);
                dayBegining = Integer.parseInt(textDayBegining);
                dayEnding = Integer.parseInt(textDayEnding);
                k = Integer.parseInt(kText);
                r = Double.parseDouble(rText);
                rAlpha = Double.parseDouble(rAlphaText);
                delta = Double.parseDouble(deltaText);
            } catch (Exception e) {
                exceptionNumeric = e;
            }

            boolean run = true;

//            if (exceptionNumeric != null) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: all parameters must be numeric!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
//
//            if (year < 1 || month < 1 || day < 1) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: all parameters must be > 0!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
//
//            if (month > 12) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: months must be < 13!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
//
//            if (day > 31) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: days must be < 32!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
//
//            if (year < 1984) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: year must be > 1983!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
//
//            boolean isTimeInGoodFormat = time.matches("[1-9]{2}");
//
//            if (isTimeInGoodFormat == false) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: Time must be entered in format HH:MM!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
            if (run == true) {
                if (calculate == true) {
                    String rCall = "result = zhr.period(dataset,year = " + year + ",month = " + month + ",day.beg = " + dayBegining + ", day.end =" + dayEnding + ", shw=\"" + shower + "\", r=NULL, Ralpha=NULL, Delta=NULL, k=" + k + ")";
                    Controller.getInstance().executeRCode(2, loadingFile, rCall);
                }

                if (graph == true) {

                    String rCall = "graph.zhr(dataset,year = " + year + ",month ="
                            + " " + month + ",day.beg = " + dayBegining + ", day.end ="
                            + "" + dayEnding + ", shw=\"" + shower + "\","
                            + " r=" + (r == 0 ? "NULL" : "" + r) + ""
                            + ", Ralpha=" + (rAlpha == 0 ? "NULL" : "" + rAlpha) + ""
                            + ", Delta=" + (delta == 0 ? "NULL" : "" + delta) + ", k=" + k + ")";
                    Controller.getInstance().executeRCode(4, loadingFile, rCall);
                    if (Controller.getInstance().getGraph() != null) {
                        try {
                            setGraph();
                        } catch (IOException ex) {
                            System.out.println("Couldn't add a graph to gui");
                            Logger.getLogger(NewGUI.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } else {
                        System.out.println("Graph is null!");
                    }
                }
                if (calculate == false && graph == false) {
                    JOptionPane.showMessageDialog(this, "Nothing is selected.", "Error", JOptionPane.ERROR_MESSAGE);
                }
            }
        } else {
            JOptionPane.showMessageDialog(this, "Please select file containing your data.", "Error", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jBTZHRActionPerformed

    private void jBTPopulationIndexActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBTPopulationIndexActionPerformed
        if (Controller.getInstance().getPath() != null) {
            String loadingFile = "dataset = read.csv(\"" + Controller.getInstance().getPath() + "\", header=TRUE, sep=\",\")";
            String yearText = jTextFieldPIYear.getText();
            String monthText = jTextFieldPIMonth.getText();
            String dayBeginText = jTextFieldPIDayBegin.getText();
            String dayEndText = jTextFieldPIDayEnd.getText();
            String shower = jTextFieldPIShower.getText();
            String magnitude = jTextFieldPIMagnitude.getText();
            String rAlphaText = jTextFieldPIrAlpha.getText();
            String deltaText = jTextFieldPIDelta.getText();
            boolean calculate = jCheckBoxCalculate.isSelected();
            boolean plot = jCheckBoxPlot.isSelected();
            Exception exceptionNumeric = null;

            int year = 0;
            int month = 0;
            int dayBegining = 0;
            int dayEnding = 0;
            double rAlpha = 0;
            double delta = 0;

            try {
                year = Integer.parseInt(yearText);
                month = Integer.parseInt(monthText);
                dayBegining = Integer.parseInt(dayBeginText);
                dayEnding = Integer.parseInt(dayEndText);
                rAlpha = Double.parseDouble(rAlphaText);
                delta = Double.parseDouble(deltaText);
            } catch (Exception e) {
                exceptionNumeric = e;
            }

            boolean run = true;

//            if (exceptionNumeric != null) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: all parameters must be numeric!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
//
//            if (year < 1 || month < 1 || day < 1) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: all parameters must be > 0!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
//
//            if (month > 12) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: months must be < 13!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
//
//            if (day > 31) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: days must be < 32!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
//
//            if (year < 1984) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: year must be > 1983!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
//
//            boolean isTimeInGoodFormat = time.matches("[1-9]{2}");
//
//            if (isTimeInGoodFormat == false) {
//                JOptionPane.showMessageDialog(this, "Invalid input parameter: Time must be entered in format HH:MM!", "Error", JOptionPane.ERROR_MESSAGE);
//                run = false;
//            }
            if (run == true) {
                if (calculate == true) {
                    String rCall = "dbs = filter(dataset, year=" + year + ", month.beg=" + month + ", day.beg=" + dayBegining + ", day.end= " + dayEnding + ") \n"
                            + "result = popI.period(dbs, year=" + year + ", month=" + month + ", day.beg=" + dayBegining + ", day.end=" + dayEnding + ", shw=\"" + shower + "\","
                            + " mag=" + (magnitude.equals("") ? "-6:7" : "\"" + magnitude + "\"") + ""
                            + ",Ralpha=" + (rAlpha == 0 ? "NULL" : "" + rAlpha) + ", "
                            + "Delta=" + (delta == 0 ? "NULL" : "" + delta) + ")";
                    Controller.getInstance().executeRCode(2, loadingFile, rCall);
                }
                if (plot == true) {
                    String rCall = "dbs = filter(dataset, year=" + year + ", month.beg=" + month + ", day.beg=" + dayBegining + ", day.end= " + dayEnding + ") \n"
                            + "result = graph.popI(dbs, year=" + year + ", month=" + month + ", day.beg=" + dayBegining + ", day.end=" + dayEnding + ", shw=\"" + shower + "\","
                            + " mag=" + (magnitude.equals("") ? "-6:7" : "\"" + magnitude + "\"") + ""
                            + ",Ralpha=" + (rAlpha == 0 ? "NULL" : "" + rAlpha) + ", "
                            + "Delta=" + (delta == 0 ? "NULL" : "" + delta) + ")";
                    Controller.getInstance().executeRCode(4, loadingFile, rCall);
                    if (Controller.getInstance().getGraph() != null) {
                        try {
                            setGraph();
                        } catch (IOException ex) {
                            System.out.println("Couldn't add a graph to gui");
                            Logger.getLogger(NewGUI.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } else {
                        System.out.println("Graph is null!");
                    }
                }
                if (calculate == false && plot == false) {
                    JOptionPane.showMessageDialog(this, "Nothing is selected.", "Error", JOptionPane.ERROR_MESSAGE);
                }
            }
        } else {
            JOptionPane.showMessageDialog(this, "Please select file containing your data.", "Error", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jBTPopulationIndexActionPerformed

    private void jBTMagnitudeDistributionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBTMagnitudeDistributionActionPerformed
        if (Controller.getInstance().getPath() != null) {
            String loadingFile = "dataset = read.csv(\"" + Controller.getInstance().getPath() + "\", header=TRUE, sep=\",\")";
            String yearText = jTextFieldMagnitudeDistributionYear.getText();
            String monthText = jTextFieldMagnitudeDistributionMonth.getText();
            String dayText = jTextFieldMagnitudeDistributionDay.getText();
            String shw = jTextFieldMagnitudeDistributionShower.getText();
            String rAlphaText = jTextFieldMagnitudeDistributionRAlpha.getText();
            String deltaText = jTextFieldMagnitudeDistributionDelta.getText();

            Exception exceptionNumeric = null;

            int year = 0;
            int month = 0;
            int day = 0;
            double rAlpha = 0;
            double delta = 0;

            try {
                year = Integer.parseInt(yearText);
                month = Integer.parseInt(monthText);
                day = Integer.parseInt(dayText);
                rAlpha = Double.parseDouble(rAlphaText);
                delta = Double.parseDouble(deltaText);
            } catch (Exception e) {
                exceptionNumeric = e;
            }

//            if (exceptionNumeric != null) {
//                JOptionPane.showMessageDialog(this, "Please insert numerical values.", "Error", JOptionPane.ERROR_MESSAGE);
//            }
            boolean run = true;

            if (run == true) {

                String rCall = "result<-graph.popI(dataset, year=" + year + ", month=" + month + ""
                        + ", day=" + day + ","
                        + "shw = \"" + shw + "\""
                        + ", Ralpha=" + (rAlpha == 0 ? "NULL" : "" + rAlpha) + ", "
                        + "Delta=" + (delta == 0 ? "NULL" : "" + delta) + ")";
                Controller.getInstance().executeRCode(4, loadingFile, rCall);
                if (Controller.getInstance().getGraph() != null) {
                    try {
                        setGraph();
                    } catch (IOException ex) {
                        System.out.println("Couldn't add a graph to gui");
                        Logger.getLogger(NewGUI.class.getName()).log(Level.SEVERE, null, ex);
                    }
                } else {
                    System.out.println("Graph is null!");
                }

            }
        } else {
            JOptionPane.showMessageDialog(this, "Please select file containing your data.", "Error", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jBTMagnitudeDistributionActionPerformed

    private void jRBGlobalFilterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRBGlobalFilterActionPerformed
        setAllLabelsAndTextFieldsInvisible();
        setAllTextFieldsEmpty();
        jLabelElevType.setVisible(true);
        jTextFieldElevType.setVisible(true);
        jLabelYear.setVisible(true);
        jTextFieldYear.setVisible(true);
        jLabelMonth.setVisible(true);
        jTextFieldMonth.setVisible(true);
        jLabelDayBegining.setVisible(true);
        jTextFieldDayBegining.setVisible(true);
        jLabelDayEnding.setVisible(true);
        jTextFieldDayEnding.setVisible(true);
        jLabelIMOCode.setVisible(true);
        jTextFieldIMOCode.setVisible(true);
        jLabelLowerLongitude.setVisible(true);
        jTextFieldLowerLongitude.setVisible(true);
        jLabelUpperLongitude.setVisible(true);
        jTextFieldUpperLongitude.setVisible(true);
        jLabelEW.setVisible(true);
        jTextFieldEW.setVisible(true);
        jLabelLowerLatitude.setVisible(true);
        jTextFieldLowerLatitude.setVisible(true);
        jLabelUpperLatitude.setVisible(true);
        jTextFieldUpperLatitude.setVisible(true);
        jLabelNS.setVisible(true);
        jTextFieldNS.setVisible(true);
        jLabelFirstName.setVisible(true);
        jTextFieldFirstName.setVisible(true);
        jLabelLastName.setVisible(true);
        jTextFieldLastName.setVisible(true);
        jLabelSiteName.setVisible(true);
        jTextFieldSiteName.setVisible(true);
        jLabelCountryName.setVisible(true);
        jTextFieldCountryName.setVisible(true);
        jLabelLowerMagnitude.setVisible(true);
        jTextFieldLowerMagnitude.setVisible(true);
        jLabelUpperMagnitude.setVisible(true);
        jTextFieldUpperMagnitude.setVisible(true);
        jLabelFLow.setVisible(true);
        jTextFieldFLow.setVisible(true);
        jLabelFUp.setVisible(true);
        jTextFieldFUp.setVisible(true);
        jLabelBegin.setVisible(true);
        jTextFieldBegin.setVisible(true);
        jLabelEnd.setVisible(true);
        jTextFieldEnd.setVisible(true);
        jLabelSolLongLow.setVisible(true);
        jTextFieldSolLongLow.setVisible(true);
        jLabelSolLongUp.setVisible(true);
        jTextFieldSolLongUp.setVisible(true);
        jLabelElevRAlpha.setVisible(true);
        jTextFieldRAlpha.setVisible(true);
        jLabelElevDelta.setVisible(true);
        jTextFieldElevDelta.setVisible(true);
        jLabelElevLow.setVisible(true);
        jTextFieldElevLow.setVisible(true);
        jLabelElevUp.setVisible(true);
        jTextFieldElevUp.setVisible(true);
    }//GEN-LAST:event_jRBGlobalFilterActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(NewGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(NewGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(NewGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(NewGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewGUI().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.ButtonGroup buttonGroupMethods;
    private javax.swing.JButton jBTMagnitudeDistribution;
    private javax.swing.JButton jBTPopulationIndex;
    private javax.swing.JButton jBTZHR;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButtonChooseFile;
    private javax.swing.JCheckBox jCheckBoxCalculate;
    private javax.swing.JCheckBox jCheckBoxPlot;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JLabel jLabelBegin;
    private javax.swing.JLabel jLabelCountryName;
    private javax.swing.JLabel jLabelDayBegining;
    private javax.swing.JLabel jLabelDayEnding;
    private javax.swing.JLabel jLabelEW;
    private javax.swing.JLabel jLabelElevDelta;
    private javax.swing.JLabel jLabelElevLow;
    private javax.swing.JLabel jLabelElevRAlpha;
    private javax.swing.JLabel jLabelElevShw;
    private javax.swing.JLabel jLabelElevType;
    private javax.swing.JLabel jLabelElevUp;
    private javax.swing.JLabel jLabelEnd;
    private javax.swing.JLabel jLabelFLow;
    private javax.swing.JLabel jLabelFUp;
    private javax.swing.JLabel jLabelFirstName;
    private javax.swing.JLabel jLabelGraph;
    private javax.swing.JLabel jLabelIMOCode;
    private javax.swing.JLabel jLabelLastName;
    private javax.swing.JLabel jLabelLowerLatitude;
    private javax.swing.JLabel jLabelLowerLongitude;
    private javax.swing.JLabel jLabelLowerMagnitude;
    private javax.swing.JLabel jLabelMagnitudeDistributionDay;
    private javax.swing.JLabel jLabelMagnitudeDistributionDelta;
    private javax.swing.JLabel jLabelMagnitudeDistributionMonth;
    private javax.swing.JLabel jLabelMagnitudeDistributionRAlpha;
    private javax.swing.JLabel jLabelMagnitudeDistributionShower;
    private javax.swing.JLabel jLabelMethodsDay;
    private javax.swing.JLabel jLabelMethodsMonth;
    private javax.swing.JLabel jLabelMethodsSolarLongitudeCalculated;
    private javax.swing.JLabel jLabelMethodsTime;
    private javax.swing.JLabel jLabelMethodsYear;
    private javax.swing.JLabel jLabelMonth;
    private javax.swing.JLabel jLabelNS;
    private javax.swing.JLabel jLabelPIDayBegin;
    private javax.swing.JLabel jLabelPIDayEnd;
    private javax.swing.JLabel jLabelPIDelta;
    private javax.swing.JLabel jLabelPIMagnitude;
    private javax.swing.JLabel jLabelPIMonth;
    private javax.swing.JLabel jLabelPIRAlpha;
    private javax.swing.JLabel jLabelPIShower;
    private javax.swing.JLabel jLabelPIYear;
    private javax.swing.JLabel jLabelShowerCode;
    private javax.swing.JLabel jLabelSiteName;
    private javax.swing.JLabel jLabelSolLongLow;
    private javax.swing.JLabel jLabelSolLongUp;
    private javax.swing.JLabel jLabelUpperLatitude;
    private javax.swing.JLabel jLabelUpperLongitude;
    private javax.swing.JLabel jLabelUpperMagnitude;
    private javax.swing.JLabel jLabelYear;
    private javax.swing.JCheckBox jLabelZHRCalculate;
    private javax.swing.JLabel jLabelZHRDayBegin;
    private javax.swing.JLabel jLabelZHRDayEnd;
    private javax.swing.JLabel jLabelZHRMonth;
    private javax.swing.JCheckBox jLabelZHRPlot;
    private javax.swing.JLabel jLabelZHRRAlpha;
    private javax.swing.JLabel jLabelZHRShower;
    private javax.swing.JLabel jLabelZHRYear;
    private javax.swing.JLabel jLabelZHRk;
    private javax.swing.JLabel jLabelZHRr;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItemPaths;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanelMagnitudeDistribution;
    private javax.swing.JPanel jPanelPopulationIndex;
    private javax.swing.JPanel jPanelSolarLongitude;
    private javax.swing.JPanel jPanelZHR;
    private javax.swing.JRadioButton jRBByElevation;
    private javax.swing.JRadioButton jRBByF;
    private javax.swing.JRadioButton jRBBySolarLongitude;
    private javax.swing.JRadioButton jRBByTimePeriod;
    private javax.swing.JRadioButton jRBCountry;
    private javax.swing.JRadioButton jRBDate;
    private javax.swing.JRadioButton jRBGlobalFilter;
    private javax.swing.JRadioButton jRBLatitudeAndLongitude;
    private javax.swing.JRadioButton jRBLimitingMagnitude;
    private javax.swing.JRadioButton jRBObserversFirstAndLastName;
    private javax.swing.JRadioButton jRBObserversIMOCode;
    private javax.swing.JRadioButton jRBObserversSiteName;
    private javax.swing.JRadioButton jRBShowerCode;
    private javax.swing.JRadioButton jRadioButtonMagnitudeDistribution;
    private javax.swing.JRadioButton jRadioButtonPopulationIndex;
    private javax.swing.JRadioButton jRadioButtonZHR;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JTabbedPane jTabbedPane;
    private javax.swing.JTable jTableResult;
    private javax.swing.JTextField jTextFieldBegin;
    private javax.swing.JTextField jTextFieldCountryName;
    private javax.swing.JTextField jTextFieldDayBegining;
    private javax.swing.JTextField jTextFieldDayEnding;
    private javax.swing.JTextField jTextFieldEW;
    private javax.swing.JTextField jTextFieldElevDelta;
    private javax.swing.JTextField jTextFieldElevLow;
    private javax.swing.JTextField jTextFieldElevShw;
    private javax.swing.JTextField jTextFieldElevType;
    private javax.swing.JTextField jTextFieldElevUp;
    private javax.swing.JTextField jTextFieldEnd;
    private javax.swing.JTextField jTextFieldFLow;
    private javax.swing.JTextField jTextFieldFUp;
    private javax.swing.JTextField jTextFieldFirstName;
    private javax.swing.JTextField jTextFieldIMOCode;
    private javax.swing.JTextField jTextFieldLastName;
    private javax.swing.JTextField jTextFieldLowerLatitude;
    private javax.swing.JTextField jTextFieldLowerLongitude;
    private javax.swing.JTextField jTextFieldLowerMagnitude;
    private javax.swing.JTextField jTextFieldMagnitudeDistributionDay;
    private javax.swing.JTextField jTextFieldMagnitudeDistributionDelta;
    private javax.swing.JTextField jTextFieldMagnitudeDistributionMonth;
    private javax.swing.JTextField jTextFieldMagnitudeDistributionRAlpha;
    private javax.swing.JTextField jTextFieldMagnitudeDistributionShower;
    private javax.swing.JTextField jTextFieldMagnitudeDistributionYear;
    private javax.swing.JTextField jTextFieldMethodsDay;
    private javax.swing.JTextField jTextFieldMethodsMonth;
    private javax.swing.JTextField jTextFieldMethodsSolarLongitudeCalculated;
    private javax.swing.JTextField jTextFieldMethodsTime;
    private javax.swing.JTextField jTextFieldMethodsYear;
    private javax.swing.JTextField jTextFieldMonth;
    private javax.swing.JTextField jTextFieldNS;
    private javax.swing.JTextField jTextFieldPIDayBegin;
    private javax.swing.JTextField jTextFieldPIDayEnd;
    private javax.swing.JTextField jTextFieldPIDelta;
    private javax.swing.JTextField jTextFieldPIMagnitude;
    private javax.swing.JTextField jTextFieldPIMonth;
    private javax.swing.JTextField jTextFieldPIShower;
    private javax.swing.JTextField jTextFieldPIYear;
    private javax.swing.JTextField jTextFieldPIrAlpha;
    private javax.swing.JTextField jTextFieldRAlpha;
    private javax.swing.JTextField jTextFieldShowerCode;
    private javax.swing.JTextField jTextFieldSiteName;
    private javax.swing.JTextField jTextFieldSolLongLow;
    private javax.swing.JTextField jTextFieldSolLongUp;
    private javax.swing.JTextField jTextFieldUpperLatitude;
    private javax.swing.JTextField jTextFieldUpperLongitude;
    private javax.swing.JTextField jTextFieldUpperMagnitude;
    private javax.swing.JTextField jTextFieldYear;
    private javax.swing.JTextField jTextFieldZHRDayBegin;
    private javax.swing.JTextField jTextFieldZHRDayEnd;
    private javax.swing.JTextField jTextFieldZHRMonth;
    private javax.swing.JTextField jTextFieldZHRRAlpha;
    private javax.swing.JTextField jTextFieldZHRShower;
    private javax.swing.JTextField jTextFieldZHRYear;
    private javax.swing.JTextField jTextFieldZHRk;
    private javax.swing.JTextField jTextFieldZHRr;
    // End of variables declaration//GEN-END:variables

    private boolean validateFields() {
        if (jRBShowerCode.isSelected()) {
            String text = jTextFieldShowerCode.getText();
            if (text.length() > 3) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Shower code", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            return true;
        } else if (jRBDate.isSelected()) {
            String textYear = jTextFieldYear.getText();
            String textMonth = jTextFieldMonth.getText();
            String textDayBegining = jTextFieldDayBegining.getText();
            String textDayEnding = jTextFieldDayEnding.getText();

            Exception exceptionNumeric = null;

            int year = 0;
            int month = 0;
            int dayBegining = 0;
            int dayEnding = 0;

            try {
                year = Integer.parseInt(textYear);
                month = Integer.parseInt(textMonth);
                dayBegining = Integer.parseInt(textDayBegining);
                dayEnding = Integer.parseInt(textDayEnding);
            } catch (Exception e) {
                exceptionNumeric = e;
            }

            if (exceptionNumeric != null) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: all parameters must be numeric!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (year < 1 || month < 1 || dayBegining < 1 || dayEnding < 1) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: all parameters must be > 0!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (month > 12) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: months must be < 13!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (dayBegining > 31 || dayEnding > 31) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: days must be < 32!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            Calendar now = Calendar.getInstance();
            int currentYear = now.get(Calendar.YEAR);
            if (year < 1984 || year > currentYear) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: year must be > 1983 and before " + currentYear, "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            return true;
        } else if (jRBObserversIMOCode.isSelected()) {
            String text = jTextFieldIMOCode.getText();
            if (text.length() != 5) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: IMO code consists of 5 letters!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            boolean areAllLetters = text.matches("[a-zA-Z]+");

            if (areAllLetters == false) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: IMO code consists of only letters!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            return true;
        } else if (jRBObserversFirstAndLastName.isSelected()) {
            String firstName = jTextFieldFirstName.getText();
            String lastName = jTextFieldLastName.getText();

            boolean areAllLettersFirstName = firstName.matches("[a-zA-Z]+");
            boolean areAllLettersLastName = lastName.matches("[a-zA-Z]+");

            if (areAllLettersFirstName == false || areAllLettersLastName == false) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: First name and last name must consist only of letters!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            return true;
        } else if (jRBLatitudeAndLongitude.isSelected()) {
            String longLow = jTextFieldLowerLongitude.getText();
            String longUp = jTextFieldUpperLongitude.getText();
            String ew = jTextFieldEW.getText();
            String latLow = jTextFieldLowerLatitude.getText();
            String latUp = jTextFieldUpperLatitude.getText();
            String ns = jTextFieldNS.getText();

            double longLowDouble = 0;
            double longUpDouble = 0;
            double latLowDouble = 0;
            double latUpDouble = 0;

            Exception exceptionNumeric = null;
            try {
                longLowDouble = Double.parseDouble(longLow);
                longUpDouble = Double.parseDouble(longUp);
                latLowDouble = Double.parseDouble(latLow);
                latUpDouble = Double.parseDouble(latUp);
            } catch (Exception e) {
                exceptionNumeric = e;
            }

            if (exceptionNumeric != null) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Latitude and longitude must be numeric!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (longLowDouble < 0 || latLowDouble < 0) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Latitude and longitude cannot be <0!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (latUpDouble > 90) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Latitude cannot be >90!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (longUpDouble > 180) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Longitude cannot be >180!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (longLowDouble > longUpDouble) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Lower longitude cannot be greater than upper longitude!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (latLowDouble > latUpDouble) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Lower latitude cannot be greater than upper latitude!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            boolean compare = ns.equals("N") || ns.equals("S");
            if (compare == false) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: You can enter only \"N\" or \"S\"!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            boolean compare2 = ew.equals("E") || ew.equals("W");
            if (compare2 == false) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: You can enter only \"E\" or \"W\"!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            return true;
        } else if (jRBObserversSiteName.isSelected()) {
            String text = jTextFieldSiteName.getText();

            boolean areAllLettersSiteName = text.matches("[a-zA-Z]+");
            if (areAllLettersSiteName == false) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Site name must consist only of letters!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            return true;
        } else if (jRBCountry.isSelected()) {
            String text = jTextFieldCountryName.getText();

            boolean areAllLettersSiteName = text.matches("[a-zA-Z]+");
            if (areAllLettersSiteName == false) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Country name must consist only of letters!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            return true;
        } else if (jRBLimitingMagnitude.isSelected()) {
            String lowMag = jTextFieldLowerMagnitude.getText();
            String upMag = jTextFieldUpperMagnitude.getText();

            double lowMagDouble = 0;
            double upMagDouble = 0;

            Exception exceptionNumeric = null;
            try {
                lowMagDouble = Double.parseDouble(lowMag);
                upMagDouble = Double.parseDouble(upMag);

            } catch (Exception e) {
                exceptionNumeric = e;
            }

            if (exceptionNumeric != null) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Magnitude must be numeric!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (lowMagDouble < 2.0 || upMagDouble > 7.5) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Magnitude must be within 2.0 and 7.5!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (lowMagDouble > upMagDouble) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Lower magnitude cannot be greater than upper magnitude!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            return true;
        } else if (jRBByF.isSelected()) {
            String lowF = jTextFieldFLow.getText();
            String upF = jTextFieldFUp.getText();

            double lowFDouble = 0;
            double upFDouble = 0;

            Exception exceptionNumeric = null;
            try {
                lowFDouble = Double.parseDouble(lowF);
                upFDouble = Double.parseDouble(upF);

            } catch (Exception e) {
                exceptionNumeric = e;
            }

            if (exceptionNumeric != null) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: values must be numeric!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (lowFDouble < 1.0 || upFDouble > 2.0) {
                System.out.println("test1: " + lowFDouble);
                System.out.println("test2: " + upFDouble);
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Magnitude must be within 1.0 and 2.0!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (lowFDouble > upFDouble) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Lower magnitude cannot be greater than upper magnitude!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            return true;
        } else if (jRBByTimePeriod.isSelected()) {
            String begin = jTextFieldBegin.getText();
            String end = jTextFieldEnd.getText();

            int beginInt = 0;
            int endInt = 0;

            Exception exceptionNumeric = null;
            try {
                beginInt = Integer.parseInt(begin);
                endInt = Integer.parseInt(end);

            } catch (Exception e) {
                exceptionNumeric = e;
            }

            if (exceptionNumeric != null) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: values must be integer!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (begin.length() != 4 || end.length() != 4) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: enter time in format HHMM!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (beginInt < 0 || endInt > 2359) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Time must be between 0000 and 2359!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (beginInt > endInt) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: beggining time must be before ending time!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            return true;
        } else if (jRBBySolarLongitude.isSelected()) {
            String low = jTextFieldSolLongLow.getText();
            String up = jTextFieldSolLongUp.getText();

            double lowDouble = 0;
            double upDouble = 0;

            Exception exceptionNumeric = null;
            try {
                lowDouble = Double.parseDouble(low);
                upDouble = Double.parseDouble(up);

            } catch (Exception e) {
                exceptionNumeric = e;
            }

            if (exceptionNumeric != null) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: values must be numerical!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (lowDouble < 0 || upDouble > 359.999) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Time must be between 0 and 360!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (lowDouble > upDouble) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: up must be bigger than low!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            return true;
        } else if (jRBByElevation.isSelected()) {
            String low = jTextFieldElevLow.getText();
            String up = jTextFieldElevUp.getText();
            String shw = jTextFieldElevShw.getText();
            String type = jTextFieldElevType.getText();

            int lowInt = 0;
            int upInt = 0;

            Exception exceptionNumeric = null;
            try {
                lowInt = Integer.parseInt(low);
                upInt = Integer.parseInt(up);

            } catch (Exception e) {
                exceptionNumeric = e;
            }

            if (exceptionNumeric != null) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: values must be integer!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (lowInt < 10 || upInt > 90) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Time must be between 10 and 90!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (lowInt > upInt) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: up must be bigger than low!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (shw.length() != 3) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Shower code has 3 letters!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (type.equalsIgnoreCase("rate") || type.equalsIgnoreCase("magn")) {
            } else {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Type must be rate or magn!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            return true;
        } else if (jRBByElevation.isSelected()) {
            String low = jTextFieldElevLow.getText();
            String up = jTextFieldElevUp.getText();
            String shw = jTextFieldElevShw.getText();
            String type = jTextFieldElevType.getText();

            int lowInt = 0;
            int upInt = 0;

            Exception exceptionNumeric = null;
            try {
                lowInt = Integer.parseInt(low);
                upInt = Integer.parseInt(up);

            } catch (Exception e) {
                exceptionNumeric = e;
            }

            if (exceptionNumeric != null) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: values must be integer!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (lowInt < 10 || upInt > 90) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Time must be between 10 and 90!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (lowInt > upInt) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: up must be bigger than low!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (shw.length() != 3) {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Shower code has 3 letters!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }

            if (type.equalsIgnoreCase("rate") || type.equalsIgnoreCase("magn")) {
            } else {
                JOptionPane.showMessageDialog(this, "Invalid input parameter: Type must be rate or magn!", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            return true;
        } else if (jRBGlobalFilter.isSelected()) {
            //uraditi validaciju
            return true;
        } else {
            return false;
        }
    }

    private void initLabelsAndTextFieldLists() {
        labels = new LinkedList<>();
        textFields = new LinkedList<>();
        Component[] components = jTabbedPane.getComponents();

        for (Component c : components) {
            JPanel panel = (JPanel) c;

            for (Component comp : panel.getComponents()) {

                if (comp instanceof JLabel) {
                    JLabel label = (JLabel) comp;
                    labels.add(label);
                }
                if (comp instanceof JTextField) {
                    JTextField jtf = (JTextField) comp;
                    textFields.add(jtf);
                }
            }
        }
    }

    public void setAllLabelsAndTextFieldsInvisible() {
        for (JLabel jl : labels) {
            jl.setVisible(false);
        }
        for (JTextField jtf : textFields) {
            jtf.setVisible(false);
        }
    }

    public void setAllTextFieldsEmpty() {
        for (JTextField jtf : textFields) {
            jtf.setText("");
        }
    }

    public void update(Subject subject) {
        TableModel model = new DefaultTableModel(Controller.getInstance().getDataFrame().getMatrix(), Controller.getInstance().getDataFrame().getVariableNames());
        jTableResult.setModel(model);
        JOptionPane.showMessageDialog(null, "Your data is loaded.");
    }

    public void setAllMethodPanelsInvisible() {
        jPanelMagnitudeDistribution.setVisible(false);
        jPanelPopulationIndex.setVisible(false);
//        jPanelSolarLongitude.setVisible(false);
        jPanelZHR.setVisible(false);
    }

    public void setGraph() throws IOException {

        Image image = null;
        try {
            // Read from a file
            File sourceimage = new File(Controller.getInstance().getGraph().getPath());
            System.out.println("PUTANJA: " + Controller.getInstance().getGraph().getPath());
//            image = ImageIO.read(sourceimage);
//   
            // Read from an input stream
            InputStream is = new BufferedInputStream(
                    new FileInputStream(sourceimage));
            image = ImageIO.read(is);
//   
//        // Read from a URL
//        URL url = new URL("http://java-tips.org/source.gif");
//        image = ImageIO.read(url);
        } catch (IOException e) {
        }

        jLabelGraph.setIcon(new ImageIcon(image));
        // Use a label to display the image
//    JFrame frame = new JFrame();
//    JLabel label = new JLabel(new ImageIcon(image));
//    frame.getContentPane().add(label, BorderLayout.CENTER);
//    frame.pack();
//    frame.setVisible(true);
//       
//       
//       
//       
//       
//        jLabelGraph.setIcon(new ImageIcon(ImageIO.read(Controller.getInstance().getGraph())));
    }
}
TOP

Related Classes of org.metrapp.visual.NewGUI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.