package event.editor;

import java.awt.event.*;
import java.util.ArrayList;
import java.util.Observable;
import javax.swing.JCheckBox;
import scriptbuilder.structures.events.ParamicsEvent;
import scriptbuilder.structures.events.I_ScriptEvent;

/**
 *
 * @author nathaniellehrer
 */
public class ParamicsPanel extends javax.swing.JPanel implements I_ScriptEventEditorPanel
{

    private ActionListener removeListener;
    private ParamicsEvent event;
    ArrayList<JCheckBox> lanes = new ArrayList<JCheckBox>();

    /**
     * Creates new form ParamicsPanel
     */
    public ParamicsPanel()
    {
        initComponents();
    }

    @Override
    public void getEventObject(I_ScriptEvent sei)
    {
        event = (ParamicsEvent) sei;
        boolean containsItem = false;
        for (int i = 0; i < LocationDropdown.getItemCount() && !containsItem; i++)
        {
            if (event.locationID.equalsIgnoreCase(LocationDropdown.getItemAt(i).toString()))
            {
                LocationDropdown.setSelectedIndex(i);
                containsItem = true;
            }
        }

        if (!containsItem)
        {
            LocationDropdown.addItem(event.locationID);
            LocationDropdown.setSelectedItem(LocationDropdown.getItemCount() - 1);
        }

        for (int i = 0; i < StatusDropdown.getItemCount(); i++)
        {
            if (event.status.equalsIgnoreCase(StatusDropdown.getItemAt(i).toString()))
            {
                StatusDropdown.setSelectedIndex(i);
            }
        }

        for (int i = 0; i < TypeDropdown.getItemCount(); i++)
        {
            if (event.type.equalsIgnoreCase(TypeDropdown.getItemAt(i).toString()))
            {
                TypeDropdown.setSelectedIndex(i);
            }
        }

        lanes.add(jCheckBox1);
        lanes.add(jCheckBox2);
        lanes.add(jCheckBox3);
        lanes.add(jCheckBox4);
        lanes.add(jCheckBox5);
        lanes.add(jCheckBox6);
        lanes.add(jCheckBox7);
        lanes.add(jCheckBox8);
        lanes.add(jCheckBox9);
        lanes.add(jCheckBox10);
        for (Integer num : event.laneNums)
        {
            lanes.get(num - 1).doClick();
        }
    }

    @Override
    public void update(Observable o, Object arg)
    {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public boolean removeAssociatedEvent()
    {
        event.removeThis();
        event = null;
        return true;
    }

    @Override
    public void uponClose()
    {
        event.locationID = LocationDropdown.getSelectedItem().toString();
        event.status = StatusDropdown.getSelectedItem().toString();
        event.type = TypeDropdown.getSelectedItem().toString();
        for (JCheckBox lane : lanes)
        {
            lane.getActionListeners()[0].actionPerformed(new ActionEvent(lane, 0, "record"));
        }
    }

    /**
     * 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()
    {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        StatusDropdown = new javax.swing.JComboBox();
        TypeDropdown = new javax.swing.JComboBox();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jCheckBox1 = new javax.swing.JCheckBox();
        jCheckBox2 = new javax.swing.JCheckBox();
        jCheckBox3 = new javax.swing.JCheckBox();
        jCheckBox4 = new javax.swing.JCheckBox();
        jCheckBox5 = new javax.swing.JCheckBox();
        jCheckBox6 = new javax.swing.JCheckBox();
        jCheckBox7 = new javax.swing.JCheckBox();
        jCheckBox8 = new javax.swing.JCheckBox();
        jCheckBox9 = new javax.swing.JCheckBox();
        jCheckBox10 = new javax.swing.JCheckBox();
        LocationDropdown = new javax.swing.JComboBox();

        jLabel1.setText("Location");

        jLabel2.setText("Status");

        StatusDropdown.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "New", "Changed", "Cleared" }));

        TypeDropdown.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Lane Breakdown", "Lane Obstruction" }));

        jLabel3.setText("Incident Type");

        jLabel4.setText("Lanes affected:");

        jCheckBox1.setText("Lane 1");
        jCheckBox1.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jCheckBox1ActionPerformed(evt);
            }
        });

        jCheckBox2.setText("Lane 2");
        jCheckBox2.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jCheckBox2ActionPerformed(evt);
            }
        });

        jCheckBox3.setText("Lane 3");
        jCheckBox3.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jCheckBox3ActionPerformed(evt);
            }
        });

        jCheckBox4.setText("Lane 4");
        jCheckBox4.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jCheckBox4ActionPerformed(evt);
            }
        });

        jCheckBox5.setText("Lane 5");
        jCheckBox5.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jCheckBox5ActionPerformed(evt);
            }
        });

        jCheckBox6.setText("Lane 8");
        jCheckBox6.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jCheckBox6ActionPerformed(evt);
            }
        });

        jCheckBox7.setText("Lane 6");
        jCheckBox7.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jCheckBox7ActionPerformed(evt);
            }
        });

        jCheckBox8.setText("Lane 7");
        jCheckBox8.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jCheckBox8ActionPerformed(evt);
            }
        });

        jCheckBox9.setText("Lane 10");
        jCheckBox9.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jCheckBox9ActionPerformed(evt);
            }
        });

        jCheckBox10.setText("Lane 9");
        jCheckBox10.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                jCheckBox10ActionPerformed(evt);
            }
        });

        LocationDropdown.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "187_S_55_ML", "187_N_405_HV" }));

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jLabel3)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
                        .add(jLabel4)
                        .add(18, 18, 18)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jCheckBox2)
                            .add(jCheckBox1))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jCheckBox3)
                            .add(jCheckBox4))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                            .add(jCheckBox7)
                            .add(jCheckBox5))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jCheckBox8)
                            .add(jCheckBox6))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jCheckBox10)
                            .add(jCheckBox9)))
                    .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jLabel1)
                            .add(jLabel2))
                        .add(36, 36, 36)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(org.jdesktop.layout.GroupLayout.TRAILING, TypeDropdown, 0, 597, Short.MAX_VALUE)
                            .add(StatusDropdown, 0, 597, Short.MAX_VALUE)
                            .add(LocationDropdown, 0, 597, Short.MAX_VALUE))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(41, 41, 41)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel1)
                    .add(LocationDropdown, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(StatusDropdown, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jLabel2))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel3)
                    .add(TypeDropdown, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .add(18, 18, 18)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                    .add(layout.createSequentialGroup()
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                            .add(jLabel4)
                            .add(jCheckBox1))
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(jCheckBox2))
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(layout.createSequentialGroup()
                            .add(jCheckBox5)
                            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                            .add(jCheckBox7))
                        .add(layout.createSequentialGroup()
                            .add(jCheckBox3)
                            .add(2, 2, 2)
                            .add(jCheckBox4))
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                            .add(layout.createSequentialGroup()
                                .add(jCheckBox10)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(jCheckBox9))
                            .add(layout.createSequentialGroup()
                                .add(jCheckBox8)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(jCheckBox6)))))
                .addContainerGap(116, Short.MAX_VALUE))
        );
    }// </editor-fold>//GEN-END:initComponents

    private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox1ActionPerformed
        if (jCheckBox1.isSelected())
        {
            if (!event.laneNums.contains(1))
            {
                event.laneNums.add(1);
            }
        }
        else
        {
            if (event.laneNums.contains(1))
            {
                event.laneNums.remove(1);
            }
        }
    }//GEN-LAST:event_jCheckBox1ActionPerformed

    private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox2ActionPerformed
        if (jCheckBox2.isSelected())
        {
            if (!event.laneNums.contains(2))
            {
                event.laneNums.add(2);
            }
        }
        else
        {
            if (event.laneNums.contains(2))
            {
                event.laneNums.remove(2);
            }
        }
    }//GEN-LAST:event_jCheckBox2ActionPerformed

    private void jCheckBox3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox3ActionPerformed
        if (jCheckBox3.isSelected())
        {
            if (!event.laneNums.contains(3))
            {
                event.laneNums.add(3);
            }
        }
        else
        {
            if (event.laneNums.contains(3))
            {
                event.laneNums.remove(3);
            }
        }
    }//GEN-LAST:event_jCheckBox3ActionPerformed

    private void jCheckBox4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox4ActionPerformed
        if (jCheckBox4.isSelected())
        {
            if (!event.laneNums.contains(4))
            {
                event.laneNums.add(4);
            }
        }
        else
        {
            if (event.laneNums.contains(4))
            {
                event.laneNums.remove(4);
            }
        }
    }//GEN-LAST:event_jCheckBox4ActionPerformed

    private void jCheckBox5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox5ActionPerformed
        if (jCheckBox5.isSelected())
        {
            if (!event.laneNums.contains(5))
            {
                event.laneNums.add(5);
            }
        }
        else
        {
            if (event.laneNums.contains(5))
            {
                event.laneNums.remove(5);
            }
        }
    }//GEN-LAST:event_jCheckBox5ActionPerformed

    private void jCheckBox6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox6ActionPerformed
        if (jCheckBox6.isSelected())
        {
            if (!event.laneNums.contains(6))
            {
                event.laneNums.add(6);
            }
        }
        else
        {
            if (event.laneNums.contains(6))
            {
                event.laneNums.remove(6);
            }
        }
    }//GEN-LAST:event_jCheckBox6ActionPerformed

    private void jCheckBox7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox7ActionPerformed
        if (jCheckBox7.isSelected())
        {
            if (!event.laneNums.contains(7))
            {
                event.laneNums.add(7);
            }
        }
        else
        {
            if (event.laneNums.contains(7))
            {
                event.laneNums.remove(7);
            }
        }
    }//GEN-LAST:event_jCheckBox7ActionPerformed

    private void jCheckBox8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox8ActionPerformed
        if (jCheckBox8.isSelected())
        {
            if (!event.laneNums.contains(8))
            {
                event.laneNums.add(8);
            }
        }
        else
        {
            if (event.laneNums.contains(8))
            {
                event.laneNums.remove(8);
            }
        }
    }//GEN-LAST:event_jCheckBox8ActionPerformed

    private void jCheckBox9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox9ActionPerformed
        if (jCheckBox9.isSelected())
        {
            if (!event.laneNums.contains(9))
            {
                event.laneNums.add(9);
            }
        }
        else
        {
            if (event.laneNums.contains(9))
            {
                event.laneNums.remove(9);
            }
        }
    }//GEN-LAST:event_jCheckBox9ActionPerformed

    private void jCheckBox10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox10ActionPerformed
        if (jCheckBox10.isSelected())
        {
            if (!event.laneNums.contains(10))
            {
                event.laneNums.add(10);
            }
        }
        else
        {
            if (event.laneNums.contains(10))
            {
                event.laneNums.remove(10);
            }
        }
    }//GEN-LAST:event_jCheckBox10ActionPerformed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox LocationDropdown;
    private javax.swing.JComboBox StatusDropdown;
    private javax.swing.JComboBox TypeDropdown;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox10;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JCheckBox jCheckBox3;
    private javax.swing.JCheckBox jCheckBox4;
    private javax.swing.JCheckBox jCheckBox5;
    private javax.swing.JCheckBox jCheckBox6;
    private javax.swing.JCheckBox jCheckBox7;
    private javax.swing.JCheckBox jCheckBox8;
    private javax.swing.JCheckBox jCheckBox9;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    // End of variables declaration//GEN-END:variables

}
