Index: trunk/src/scriptbuilder/gui/ScriptOverviewWindow.java
===================================================================
--- trunk/src/scriptbuilder/gui/ScriptOverviewWindow.java	(revision 144)
+++ trunk/src/scriptbuilder/gui/ScriptOverviewWindow.java	(revision 144)
@@ -0,0 +1,1718 @@
+package scriptbuilder.gui;
+
+import java.awt.Adjustable;
+import java.awt.Color;
+import java.awt.event.AdjustmentEvent;
+import java.awt.event.AdjustmentListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.io.File;
+import java.io.IOException;
+import java.util.Observable;
+import java.util.Observer;
+import java.util.Properties;
+import java.util.Random;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.DefaultListModel;
+import javax.swing.JFileChooser;
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import scriptbuilder.gui.drawers.RangeSlider;
+import scriptbuilder.structures.ScriptEvent;
+import scriptbuilder.structures.ScriptEvent.ScriptEventType;
+import scriptbuilder.structures.ScriptIncident;
+import scriptbuilder.structures.ScriptIncident.IncidentFocusedEvent;
+import scriptbuilder.structures.ScriptIncident.SliceChangedEvent;
+import scriptbuilder.structures.SimulationScript;
+import scriptbuilder.structures.TimeSlice;
+import scriptbuilder.structures.events.I_ScriptEvent;
+
+/**
+ * Overview window shows high level view of all incidents in the script.
+ * 
+ * @author Greg Eddington
+ * @author Bryan McGuffin
+ * @author jdalbey
+ */
+public class ScriptOverviewWindow extends javax.swing.JFrame implements Observer
+{
+
+    /**
+     * The script model.
+     */
+    private SimulationScript script;
+    /**
+     * The current type of selected event.
+     */
+    public ScriptEventType currentEventType;
+    /**
+     * True if we are currently editing an incident.
+     */
+    private boolean editingIncident;
+    /**
+     * Index of the previous incident.
+     */
+    private int oldIncidentIndex;
+
+    /**
+     * Get the script currently in use.
+     *
+     * @return the script model object
+     */
+    public SimulationScript getScript()
+    {
+        return script;
+    }
+
+    /**
+     * Listener for the scroll pane.
+     */
+    class MyAdjustmentListener implements AdjustmentListener
+    {
+
+        /**
+         * If the incident timeline is scrolled horizontally, the timestamp
+         * panel is updated to reflect it.
+         *
+         * @param evt the adjustment event
+         */
+        @Override
+        public void adjustmentValueChanged(AdjustmentEvent evt)
+        {
+            if (evt.getAdjustable().getOrientation() == Adjustable.HORIZONTAL)
+            {
+                timeStampScrollPane.getHorizontalScrollBar()
+                        .setValue(timelinesScrollPane.getHorizontalScrollBar().getValue());
+            }
+            else
+            {
+                // Event from vertical scrollbar
+            }
+
+            repaint();
+        }
+    }
+
+    /**
+     * Listener for key presses. Used for hotkeys for different event types.
+     */
+    private class TimelineKeyListener implements KeyListener
+    {
+
+        /**
+         * If a hotkey is pressed, select that type of event.
+         *
+         * @param e the key event
+         */
+        @Override
+        public void keyPressed(KeyEvent e)
+        {
+            repaint();
+        }
+
+        /**
+         * Take no action upon key release.
+         *
+         * @param e the key event
+         */
+        @Override
+        public void keyReleased(KeyEvent e)
+        {
+        }
+
+        /**
+         * Take no action upon key release.
+         *
+         * @param e the key event
+         */
+        @Override
+        public void keyTyped(KeyEvent e)
+        {
+        }
+    }
+
+    /**
+     * Constructor. Prep new script model, initialize the GUI, and add listeners
+     * for all buttons.
+     */
+    public ScriptOverviewWindow()
+    {
+        script = new SimulationScript();
+        script.addObserver(this);
+        initComponents();
+        this.update(null, script);
+
+        // Hack to refresh the zoom
+        /*
+         zoomSlider.setValue(zoomSlider.getValue() - 1);
+         zoomSlider.setValue(zoomSlider.getValue() + 1);
+         */
+        // Set listener for scroll pane
+        AdjustmentListener listener = new MyAdjustmentListener();
+        timelinesScrollPane.getHorizontalScrollBar().addAdjustmentListener(listener);
+        timelinesScrollPane.getVerticalScrollBar().addAdjustmentListener(listener);
+    }
+
+    /**
+     * Update the GUI to reflect the model. If the script changed, update all
+     * the incident panels. If a timeslice changed, add any new events to the
+     * model. If an incident gained focus, update the incident info screen to
+     * display its details.
+     *
+     * @param o The observed object
+     * @param arg Either the script model or an incident event, depending on who
+     * called this update
+     */
+    @Override
+    public void update(Observable o, Object arg)
+    {
+        if (arg instanceof SimulationScript)
+        {
+            script = (SimulationScript) arg;
+
+            if (script.incidents.size() != 10)
+            {
+                return;
+            }
+
+            timelineTickPanel.update(script);
+            timeStampPanel.update(script);
+
+            incidentTimelinePanel1.timelinePanelUpdate(script.incidents.get(0));
+
+
+            incidentNumberPanel1.update(script.incidents.get(0));
+
+
+            /**
+             * DefaultComboBoxModel model = new DefaultComboBoxModel(); for
+             * (ScriptIncident i : script.incidents) { if (i != null)
+             * model.addElement(i); } gotoIncident.setModel(model);*
+             */
+            this.setPreferredSize(this.getSize());
+            pack();
+        }
+        else if (arg instanceof SliceChangedEvent)
+        {
+            TimeSlice slice = ((SliceChangedEvent) arg).slice;
+
+            DefaultListModel model = new DefaultListModel();
+            for (I_ScriptEvent e : slice.events)
+            {
+                model.addElement(e);
+            }
+        }
+        else if (arg instanceof IncidentFocusedEvent)
+        {
+            ScriptIncident i = ((IncidentFocusedEvent) arg).incident;
+
+            //gotoIncident.setSelectedItem(i);
+        }
+
+        zoomSlider.setMinimum(((timelineTickPanel.getVisibleRect().width - 20)
+                * ScriptBuilderGuiConstants.HORIZONTAL_TICK_RESOLUTION)
+                / Math.max(script.absoluteLength(), ScriptBuilderGuiConstants.TICK_TIMELINE_SMALLEST_LENGTH));
+        zoomSlider.setMaximum(zoomSlider.getMinimum() + 20);
+    }
+
+    /**
+     * 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() {
+
+        incidentPopupMenu = new javax.swing.JPopupMenu();
+        popupDeleteIncident = new javax.swing.JMenuItem();
+        eventPopupMenu = new javax.swing.JPopupMenu();
+        cadEvent = new javax.swing.JMenuItem();
+        jMenuItem2 = new javax.swing.JMenuItem();
+        radioEvent = new javax.swing.JMenuItem();
+        jMenuItem4 = new javax.swing.JMenuItem();
+        jMenuItem5 = new javax.swing.JMenuItem();
+        jMenuItem6 = new javax.swing.JMenuItem();
+        cadEventFrame = new javax.swing.JFrame();
+        jLabel5 = new javax.swing.JLabel();
+        radioEventFrame = new javax.swing.JFrame();
+        radioTypeLabel = new javax.swing.JLabel();
+        jLabel7 = new javax.swing.JLabel();
+        radioTypeComboBox = new javax.swing.JComboBox();
+        radioMessageScrollPane = new javax.swing.JScrollPane();
+        radioMessage = new javax.swing.JTextArea();
+        okButton = new javax.swing.JButton();
+        cancelButton = new javax.swing.JButton();
+        eventListPopupMenu = new javax.swing.JPopupMenu();
+        editEventList = new javax.swing.JMenuItem();
+        deleteEventList = new javax.swing.JMenuItem();
+        incidentFrame = new javax.swing.JFrame();
+        jLabel6 = new javax.swing.JLabel();
+        jLabel8 = new javax.swing.JLabel();
+        jLabel9 = new javax.swing.JLabel();
+        jLabel10 = new javax.swing.JLabel();
+        jScrollPane1 = new javax.swing.JScrollPane();
+        addIncidentDescription = new javax.swing.JTextArea();
+        incidentOkButton = new javax.swing.JButton();
+        incidentCancelButton = new javax.swing.JButton();
+        addIncidentNumber = new javax.swing.JSpinner();
+        addIncidentName = new javax.swing.JTextField();
+        jLabel11 = new javax.swing.JLabel();
+        addIncidentLength = new javax.swing.JSpinner();
+        jLabel12 = new javax.swing.JLabel();
+        addIncidentStart = new javax.swing.JSpinner();
+        jButton3 = new javax.swing.JButton();
+        incidentColorField = new javax.swing.JTextField();
+        addNoiseFrame = new javax.swing.JFrame();
+        jLabel13 = new javax.swing.JLabel();
+        jSlider1 = new javax.swing.JSlider();
+        jSlider2 = new javax.swing.JSlider();
+        jLabel14 = new javax.swing.JLabel();
+        jSlider3 = new javax.swing.JSlider();
+        jLabel15 = new javax.swing.JLabel();
+        jTextArea1 = new javax.swing.JTextArea();
+        jSlider4 = new javax.swing.JSlider();
+        jLabel16 = new javax.swing.JLabel();
+        jSlider5 = new javax.swing.JSlider();
+        jLabel17 = new javax.swing.JLabel();
+        jButton1 = new javax.swing.JButton();
+        jButton2 = new javax.swing.JButton();
+        jLabel20 = new javax.swing.JLabel();
+        jLabel21 = new javax.swing.JLabel();
+        incidentColorChooser = new javax.swing.JColorChooser();
+        timelinesScrollPane = new javax.swing.JScrollPane();
+        timelineTickPanel = new scriptbuilder.gui.panels.TimelineTickPanel();
+        incidentTimelinePanel1 = new scriptbuilder.gui.panels.IncidentTimelinePanel();
+        incidentNumberPanel1 = new scriptbuilder.gui.panels.IncidentNumberPanel();
+        zoomSlider = new javax.swing.JSlider();
+        zoomInIcon = new javax.swing.JLabel();
+        zoomOutIcon = new javax.swing.JLabel();
+        timeStampScrollPane = new javax.swing.JScrollPane();
+        timeStampPanel = new scriptbuilder.gui.panels.TimeStampPanel();
+        scriptBuilderMenuBar = new javax.swing.JMenuBar();
+        fileMenu = new javax.swing.JMenu();
+        fileNew = new javax.swing.JMenuItem();
+        jSeparator1 = new javax.swing.JPopupMenu.Separator();
+        fileOpen = new javax.swing.JMenuItem();
+        jSeparator2 = new javax.swing.JPopupMenu.Separator();
+        fileSave = new javax.swing.JMenuItem();
+        fileSaveAs = new javax.swing.JMenuItem();
+        generateMenu = new javax.swing.JMenu();
+        generateNotebooks = new javax.swing.JMenuItem();
+        jMenuItem3 = new javax.swing.JMenuItem();
+        generateScorecards = new javax.swing.JMenuItem();
+        generateOrganizationChart = new javax.swing.JMenuItem();
+        jSeparator3 = new javax.swing.JPopupMenu.Separator();
+        generateProjectRequirements = new javax.swing.JMenuItem();
+        incidentMenu = new javax.swing.JMenu();
+        newIncident = new javax.swing.JMenuItem();
+        editIncident = new javax.swing.JMenuItem();
+        incidentDetails = new javax.swing.JMenuItem();
+        jSeparator4 = new javax.swing.JPopupMenu.Separator();
+        saveIncident = new javax.swing.JMenuItem();
+        loadIncident = new javax.swing.JMenuItem();
+        generateNoiseMenu = new javax.swing.JMenu();
+        generateNoiseOption = new javax.swing.JMenuItem();
+        helpMenu = new javax.swing.JMenu();
+        helpTutorial = new javax.swing.JMenuItem();
+        helpAbout = new javax.swing.JMenuItem();
+
+        popupDeleteIncident.setText("Delete Incident...");
+        incidentPopupMenu.add(popupDeleteIncident);
+
+        cadEvent.setText("CAD Event");
+        cadEvent.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mousePressed(java.awt.event.MouseEvent evt) {
+                cadEventMousePressed(evt);
+            }
+            public void mouseReleased(java.awt.event.MouseEvent evt) {
+                cadEventMouseReleased(evt);
+            }
+        });
+        eventPopupMenu.add(cadEvent);
+
+        jMenuItem2.setText("Paramics Event");
+        eventPopupMenu.add(jMenuItem2);
+
+        radioEvent.setText("Radio Event");
+        radioEvent.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mousePressed(java.awt.event.MouseEvent evt) {
+                radioEventMousePressed(evt);
+            }
+        });
+        eventPopupMenu.add(radioEvent);
+
+        jMenuItem4.setText("Telephone Event");
+        eventPopupMenu.add(jMenuItem4);
+
+        jMenuItem5.setText("Video Event");
+        eventPopupMenu.add(jMenuItem5);
+
+        jMenuItem6.setText("Evaluation Event");
+        eventPopupMenu.add(jMenuItem6);
+
+        cadEventFrame.setMinimumSize(new java.awt.Dimension(400, 300));
+
+        jLabel5.setText("CAD Entry");
+
+        javax.swing.GroupLayout cadEventFrameLayout = new javax.swing.GroupLayout(cadEventFrame.getContentPane());
+        cadEventFrame.getContentPane().setLayout(cadEventFrameLayout);
+        cadEventFrameLayout.setHorizontalGroup(
+            cadEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(cadEventFrameLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+        cadEventFrameLayout.setVerticalGroup(
+            cadEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(cadEventFrameLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jLabel5)
+                .addContainerGap(1357, Short.MAX_VALUE))
+        );
+
+        radioEventFrame.setTitle("Add Radio Event");
+        radioEventFrame.setMinimumSize(new java.awt.Dimension(400, 300));
+
+        radioTypeLabel.setText("Radio Type:");
+
+        jLabel7.setText("Radio Message:");
+
+        radioTypeComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TMT", "Maintanence" }));
+
+        radioMessageScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
+
+        radioMessage.setColumns(20);
+        radioMessage.setLineWrap(true);
+        radioMessage.setRows(5);
+        radioMessage.setWrapStyleWord(true);
+        radioMessageScrollPane.setViewportView(radioMessage);
+
+        okButton.setText("OK");
+        okButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                okButtonActionPerformed(evt);
+            }
+        });
+
+        cancelButton.setText("Cancel");
+        cancelButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                cancelButtonActionPerformed(evt);
+            }
+        });
+
+        javax.swing.GroupLayout radioEventFrameLayout = new javax.swing.GroupLayout(radioEventFrame.getContentPane());
+        radioEventFrame.getContentPane().setLayout(radioEventFrameLayout);
+        radioEventFrameLayout.setHorizontalGroup(
+            radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, radioEventFrameLayout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(radioMessageScrollPane, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
+                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, radioEventFrameLayout.createSequentialGroup()
+                        .addComponent(radioTypeLabel)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                        .addComponent(radioTypeComboBox, 0, 312, Short.MAX_VALUE))
+                    .addComponent(jLabel7, javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, radioEventFrameLayout.createSequentialGroup()
+                        .addComponent(cancelButton)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 246, Short.MAX_VALUE)
+                        .addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE)))
+                .addContainerGap())
+        );
+        radioEventFrameLayout.setVerticalGroup(
+            radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(radioEventFrameLayout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(radioTypeLabel)
+                    .addComponent(radioTypeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addComponent(jLabel7)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(radioMessageScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 198, Short.MAX_VALUE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(okButton)
+                    .addComponent(cancelButton))
+                .addContainerGap())
+        );
+
+        editEventList.setText("Edit...");
+        editEventList.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                editEventListActionPerformed(evt);
+            }
+        });
+        eventListPopupMenu.add(editEventList);
+
+        deleteEventList.setText("Delete...");
+        eventListPopupMenu.add(deleteEventList);
+
+        incidentFrame.setTitle("Incident");
+        incidentFrame.setMinimumSize(new java.awt.Dimension(400, 400));
+
+        jLabel6.setText("Incident Number: ");
+
+        jLabel8.setText("Incident Name:");
+
+        jLabel9.setText("Incident Color: ");
+
+        jLabel10.setText("Incident Description:");
+
+        jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
+        jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
+
+        addIncidentDescription.setColumns(20);
+        addIncidentDescription.setLineWrap(true);
+        addIncidentDescription.setRows(5);
+        addIncidentDescription.setWrapStyleWord(true);
+        jScrollPane1.setViewportView(addIncidentDescription);
+
+        incidentOkButton.setText("OK");
+        incidentOkButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                incidentOkButtonActionPerformed(evt);
+            }
+        });
+
+        incidentCancelButton.setText("Cancel");
+        incidentCancelButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                incidentCancelButtonActionPerformed(evt);
+            }
+        });
+
+        addIncidentNumber.setModel(new javax.swing.SpinnerNumberModel(101, 101, null, 1));
+
+        jLabel11.setText("Incident Length in Minutes: ");
+
+        addIncidentLength.setModel(new javax.swing.SpinnerNumberModel(0, 0, null, 1));
+
+        jLabel12.setText("Incident Start Time in Minutes:");
+
+        addIncidentStart.setModel(new javax.swing.SpinnerNumberModel(0, 0, null, 1));
+
+        jButton3.setText("Choose...");
+        jButton3.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton3ActionPerformed(evt);
+            }
+        });
+
+        incidentColorField.setEditable(false);
+        incidentColorField.setBackground(new java.awt.Color(0, 0, 0));
+
+        javax.swing.GroupLayout incidentFrameLayout = new javax.swing.GroupLayout(incidentFrame.getContentPane());
+        incidentFrame.getContentPane().setLayout(incidentFrameLayout);
+        incidentFrameLayout.setHorizontalGroup(
+            incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, incidentFrameLayout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 322, Short.MAX_VALUE)
+                    .addComponent(jLabel10, javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, incidentFrameLayout.createSequentialGroup()
+                        .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(jLabel6)
+                            .addComponent(jLabel8)
+                            .addComponent(jLabel9))
+                        .addGap(18, 18, 18)
+                        .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(addIncidentName, javax.swing.GroupLayout.DEFAULT_SIZE, 218, Short.MAX_VALUE)
+                            .addComponent(addIncidentNumber, javax.swing.GroupLayout.DEFAULT_SIZE, 218, Short.MAX_VALUE)
+                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, incidentFrameLayout.createSequentialGroup()
+                                .addComponent(incidentColorField, javax.swing.GroupLayout.DEFAULT_SIZE, 119, Short.MAX_VALUE)
+                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                                .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE))))
+                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, incidentFrameLayout.createSequentialGroup()
+                        .addComponent(incidentCancelButton)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 188, Short.MAX_VALUE)
+                        .addComponent(incidentOkButton, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE))
+                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, incidentFrameLayout.createSequentialGroup()
+                        .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(jLabel12)
+                            .addComponent(jLabel11))
+                        .addGap(18, 18, 18)
+                        .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(addIncidentStart, javax.swing.GroupLayout.DEFAULT_SIZE, 158, Short.MAX_VALUE)
+                            .addComponent(addIncidentLength, javax.swing.GroupLayout.DEFAULT_SIZE, 158, Short.MAX_VALUE))))
+                .addContainerGap())
+        );
+        incidentFrameLayout.setVerticalGroup(
+            incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(incidentFrameLayout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel6)
+                    .addComponent(addIncidentNumber, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel8)
+                    .addComponent(addIncidentName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel9)
+                    .addComponent(jButton3)
+                    .addComponent(incidentColorField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(jLabel10)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 106, Short.MAX_VALUE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(addIncidentStart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel12))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(addIncidentLength, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel11))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(incidentCancelButton)
+                    .addComponent(incidentOkButton))
+                .addContainerGap())
+        );
+
+        addNoiseFrame.setTitle("Generate Noise");
+        addNoiseFrame.setMinimumSize(new java.awt.Dimension(395, 315));
+        addNoiseFrame.setResizable(false);
+
+        jLabel13.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+        jLabel13.setText("Radio Chatter: ");
+
+        jLabel14.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+        jLabel14.setText("Lane Closures:");
+
+        jLabel15.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+        jLabel15.setText("TMCAL Logs:");
+
+        jTextArea1.setEditable(false);
+        jTextArea1.setColumns(20);
+        jTextArea1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+        jTextArea1.setLineWrap(true);
+        jTextArea1.setRows(5);
+        jTextArea1.setText("Noise events will be randomly generated for the simulation with frequencies based on the control selections made below");
+        jTextArea1.setWrapStyleWord(true);
+        jTextArea1.setAutoscrolls(false);
+        jTextArea1.setBorder(null);
+        jTextArea1.setDisabledTextColor(new java.awt.Color(0, 0, 0));
+        jTextArea1.setFocusable(false);
+        jTextArea1.setOpaque(false);
+
+        jLabel16.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+        jLabel16.setText("Background Noise: ");
+
+        jLabel17.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+        jLabel17.setText("Minor Events:");
+
+        jButton1.setText("Cancel");
+        jButton1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton1ActionPerformed(evt);
+            }
+        });
+
+        jButton2.setText("Generate");
+        jButton2.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton2ActionPerformed(evt);
+            }
+        });
+
+        jLabel20.setText("Least Frequent");
+
+        jLabel21.setText("Most Frequent");
+
+        javax.swing.GroupLayout addNoiseFrameLayout = new javax.swing.GroupLayout(addNoiseFrame.getContentPane());
+        addNoiseFrame.getContentPane().setLayout(addNoiseFrameLayout);
+        addNoiseFrameLayout.setHorizontalGroup(
+            addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, addNoiseFrameLayout.createSequentialGroup()
+                .addContainerGap(21, Short.MAX_VALUE)
+                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(jTextArea1, javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, addNoiseFrameLayout.createSequentialGroup()
+                            .addComponent(jButton1)
+                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(jButton2))
+                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, addNoiseFrameLayout.createSequentialGroup()
+                            .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                                    .addComponent(jLabel16)
+                                    .addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                    .addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                    .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE))
+                                .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))
+                            .addGap(4, 4, 4)
+                            .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                                .addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addComponent(jSlider2, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addComponent(jSlider3, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addComponent(jSlider5, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addComponent(jSlider4, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, addNoiseFrameLayout.createSequentialGroup()
+                                    .addComponent(jLabel20)
+                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                    .addComponent(jLabel21))))))
+                .addGap(20, 20, 20))
+        );
+        addNoiseFrameLayout.setVerticalGroup(
+            addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, addNoiseFrameLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jTextArea1, javax.swing.GroupLayout.DEFAULT_SIZE, 39, Short.MAX_VALUE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(jLabel21)
+                    .addComponent(jLabel20))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jSlider2, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+                    .addComponent(jLabel15)
+                    .addComponent(jSlider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(jSlider4, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(jSlider5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel17))
+                .addGap(18, 18, 18)
+                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(jButton1)
+                    .addComponent(jButton2))
+                .addContainerGap())
+        );
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        setTitle("Script Builder");
+        setBounds(new java.awt.Rectangle(0, 23, 800, 700));
+        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+        setMinimumSize(new java.awt.Dimension(800, 700));
+
+        timelinesScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
+        timelinesScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
+        timelinesScrollPane.setFocusCycleRoot(true);
+        timelinesScrollPane.setFocusTraversalPolicyProvider(true);
+        timelinesScrollPane.setPreferredSize(new java.awt.Dimension(72000, 1341));
+        timelinesScrollPane.setWheelScrollingEnabled(false);
+
+        timelineTickPanel.setMaximumSize(new java.awt.Dimension(7200, 32767));
+        timelineTickPanel.setMinimumSize(new java.awt.Dimension(7200, 0));
+        timelineTickPanel.setPreferredSize(new java.awt.Dimension(7200, 1317));
+
+        incidentTimelinePanel1.setMaximumSize(new java.awt.Dimension(32767, 100));
+        incidentTimelinePanel1.setOpaque(false);
+        incidentTimelinePanel1.setPreferredSize(new java.awt.Dimension(691, 100));
+
+        javax.swing.GroupLayout incidentTimelinePanel1Layout = new javax.swing.GroupLayout(incidentTimelinePanel1);
+        incidentTimelinePanel1.setLayout(incidentTimelinePanel1Layout);
+        incidentTimelinePanel1Layout.setHorizontalGroup(
+            incidentTimelinePanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 691, Short.MAX_VALUE)
+        );
+        incidentTimelinePanel1Layout.setVerticalGroup(
+            incidentTimelinePanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 100, Short.MAX_VALUE)
+        );
+
+        incidentNumberPanel1.setOpaque(false);
+
+        javax.swing.GroupLayout incidentNumberPanel1Layout = new javax.swing.GroupLayout(incidentNumberPanel1);
+        incidentNumberPanel1.setLayout(incidentNumberPanel1Layout);
+        incidentNumberPanel1Layout.setHorizontalGroup(
+            incidentNumberPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 0, Short.MAX_VALUE)
+        );
+        incidentNumberPanel1Layout.setVerticalGroup(
+            incidentNumberPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 0, Short.MAX_VALUE)
+        );
+
+        javax.swing.GroupLayout timelineTickPanelLayout = new javax.swing.GroupLayout(timelineTickPanel);
+        timelineTickPanel.setLayout(timelineTickPanelLayout);
+        timelineTickPanelLayout.setHorizontalGroup(
+            timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(timelineTickPanelLayout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(incidentNumberPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(10, 10, 10)
+                .addComponent(incidentTimelinePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(6487, Short.MAX_VALUE))
+        );
+        timelineTickPanelLayout.setVerticalGroup(
+            timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(timelineTickPanelLayout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(incidentNumberPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(incidentTimelinePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addContainerGap(1205, Short.MAX_VALUE))
+        );
+
+        timelinesScrollPane.setViewportView(timelineTickPanel);
+
+        zoomSlider.setMaximum(22);
+        zoomSlider.setMinimum(4);
+        zoomSlider.setValue(4);
+        zoomSlider.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+        zoomSlider.setFocusable(false);
+        zoomSlider.addChangeListener(new javax.swing.event.ChangeListener() {
+            public void stateChanged(javax.swing.event.ChangeEvent evt) {
+                zoomSliderStateChanged(evt);
+            }
+        });
+
+        zoomInIcon.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ZoomIn.png"))); // NOI18N
+        zoomInIcon.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        zoomInIcon.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                zoomInIconMouseClicked(evt);
+            }
+        });
+
+        zoomOutIcon.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ZoomOut.png"))); // NOI18N
+        zoomOutIcon.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+        zoomOutIcon.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                zoomOutIconMouseClicked(evt);
+            }
+        });
+
+        timeStampScrollPane.setBorder(null);
+        timeStampScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
+        timeStampScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
+
+        javax.swing.GroupLayout timeStampPanelLayout = new javax.swing.GroupLayout(timeStampPanel);
+        timeStampPanel.setLayout(timeStampPanelLayout);
+        timeStampPanelLayout.setHorizontalGroup(
+            timeStampPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 0, Short.MAX_VALUE)
+        );
+        timeStampPanelLayout.setVerticalGroup(
+            timeStampPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 0, Short.MAX_VALUE)
+        );
+
+        timeStampScrollPane.setViewportView(timeStampPanel);
+
+        fileMenu.setText("File");
+        fileMenu.setMargin(new java.awt.Insets(0, 10, 0, 10));
+        fileMenu.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                fileMenuActionPerformed(evt);
+            }
+        });
+
+        fileNew.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        fileNew.setText("New");
+        fileNew.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                fileNewActionPerformed(evt);
+            }
+        });
+        fileMenu.add(fileNew);
+        fileMenu.add(jSeparator1);
+
+        fileOpen.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        fileOpen.setText("Open...");
+        fileOpen.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                fileOpenActionPerformed(evt);
+            }
+        });
+        fileMenu.add(fileOpen);
+        fileMenu.add(jSeparator2);
+
+        fileSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
+        fileSave.setText("Save");
+        fileSave.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                fileSaveActionPerformed(evt);
+            }
+        });
+        fileMenu.add(fileSave);
+
+        fileSaveAs.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        fileSaveAs.setText("Save as...");
+        fileSaveAs.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                fileSaveAsActionPerformed(evt);
+            }
+        });
+        fileMenu.add(fileSaveAs);
+
+        scriptBuilderMenuBar.add(fileMenu);
+
+        generateMenu.setLabel("Generate");
+        generateMenu.setMargin(new java.awt.Insets(0, 10, 0, 10));
+
+        generateNotebooks.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        generateNotebooks.setText("Generate Notebooks...");
+        generateNotebooks.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                generateNotebooksActionPerformed(evt);
+            }
+        });
+        generateMenu.add(generateNotebooks);
+
+        jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        jMenuItem3.setText("Generate Web Notebook...");
+        generateMenu.add(jMenuItem3);
+
+        generateScorecards.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        generateScorecards.setText("Generate Scorecards...");
+        generateScorecards.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                generateScorecardsActionPerformed(evt);
+            }
+        });
+        generateMenu.add(generateScorecards);
+
+        generateOrganizationChart.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        generateOrganizationChart.setText("Generate D14 TMC Org Chart...");
+        generateOrganizationChart.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                generateOrganizationChartActionPerformed(evt);
+            }
+        });
+        generateMenu.add(generateOrganizationChart);
+        generateMenu.add(jSeparator3);
+
+        generateProjectRequirements.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        generateProjectRequirements.setText("Generate Project Worklist...");
+        generateProjectRequirements.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                generateProjectRequirementsActionPerformed(evt);
+            }
+        });
+        generateMenu.add(generateProjectRequirements);
+
+        scriptBuilderMenuBar.add(generateMenu);
+
+        incidentMenu.setText("Incidents");
+        incidentMenu.setMargin(new java.awt.Insets(0, 10, 0, 10));
+
+        newIncident.setText("New Incident...");
+        newIncident.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                newIncidentActionPerformed(evt);
+            }
+        });
+        incidentMenu.add(newIncident);
+
+        editIncident.setText("Edit Incident...");
+        editIncident.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                editIncidentActionPerformed(evt);
+            }
+        });
+        incidentMenu.add(editIncident);
+
+        incidentDetails.setText("Incident Details...");
+        incidentDetails.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                incidentDetailsActionPerformed(evt);
+            }
+        });
+        incidentMenu.add(incidentDetails);
+        incidentMenu.add(jSeparator4);
+
+        saveIncident.setText("Save Incident...");
+        saveIncident.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                saveIncidentActionPerformed(evt);
+            }
+        });
+        incidentMenu.add(saveIncident);
+
+        loadIncident.setText("Load Incident...");
+        loadIncident.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                loadIncidentActionPerformed(evt);
+            }
+        });
+        incidentMenu.add(loadIncident);
+
+        scriptBuilderMenuBar.add(incidentMenu);
+
+        generateNoiseMenu.setText("Noise");
+
+        generateNoiseOption.setText("Generate Noise...");
+        generateNoiseOption.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                generateNoiseOptionActionPerformed(evt);
+            }
+        });
+        generateNoiseMenu.add(generateNoiseOption);
+
+        scriptBuilderMenuBar.add(generateNoiseMenu);
+
+        helpMenu.setText("Help");
+        helpMenu.setMargin(new java.awt.Insets(0, 10, 0, 10));
+
+        helpTutorial.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0));
+        helpTutorial.setText("Tutorial...");
+        helpMenu.add(helpTutorial);
+
+        helpAbout.setText("About...");
+        helpAbout.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                helpAboutActionPerformed(evt);
+            }
+        });
+        helpMenu.add(helpAbout);
+
+        scriptBuilderMenuBar.add(helpMenu);
+
+        setJMenuBar(scriptBuilderMenuBar);
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(timelinesScrollPane, 0, 0, Short.MAX_VALUE)
+                    .addComponent(timeStampScrollPane)
+                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+                        .addGap(0, 597, Short.MAX_VALUE)
+                        .addComponent(zoomOutIcon)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(zoomSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(zoomInIcon)
+                        .addGap(136, 136, 136)))
+                .addContainerGap())
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(zoomOutIcon)
+                    .addComponent(zoomSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(zoomInIcon))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(timeStampScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(timelinesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 1289, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    /**
+     * Scale the timeline width based on zoom slider position.
+     *
+     * @param evt the state change event
+     */
+    private void zoomSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_zoomSliderStateChanged
+        ScriptBuilderGuiConstants.PIXEL_WIDTH_PER_HORIZONTAL_TICK = zoomSlider.getValue();
+        this.update(script, script);
+        pack();
+        repaint();
+    }//GEN-LAST:event_zoomSliderStateChanged
+
+    private void cadEventMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cadEventMousePressed
+    }//GEN-LAST:event_cadEventMousePressed
+
+    private void radioEventMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_radioEventMousePressed
+    }//GEN-LAST:event_radioEventMousePressed
+
+    private void cadEventMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cadEventMouseReleased
+    }//GEN-LAST:event_cadEventMouseReleased
+
+    private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
+    }//GEN-LAST:event_okButtonActionPerformed
+
+    /**
+     * If cancel button is pressed, close radio event editor
+     *
+     * @param evt the button press event
+     */
+    private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
+        radioMessage.setText("");
+        radioTypeComboBox.setSelectedIndex(0);
+        radioEventFrame.setVisible(false);
+    }//GEN-LAST:event_cancelButtonActionPerformed
+
+    private void editEventListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editEventListActionPerformed
+    }//GEN-LAST:event_editEventListActionPerformed
+
+    /**
+     * Executed when the "OK" button is pressed on the Incident editor. If
+     * incident is new, and is valid, adds it to the model and updates. If
+     * editing existing incident, verifies changes are valid and applies them.
+     * Then closes editor window.
+     *
+     * @param evt the button press event
+     */
+    private void incidentOkButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_incidentOkButtonActionPerformed
+        if (!editingIncident)
+        {
+            boolean found = false;
+            int indx = 0;
+            // ALERT: Wacky logic follows
+            // Examine all the incidents contained in this script
+            for (ScriptIncident inci : script.incidents)
+            {
+                // If this spot in the list of incidents hasn't been assigned yet
+                if (inci == null)
+                {
+                    found = true;
+                    break;
+                }
+                ++indx;
+                // Does the new incident number match an existing one?
+                if (inci.number == (Integer) addIncidentNumber.getValue())
+                {
+                    JOptionPane.showMessageDialog(this, "Incident number already in use.",
+                            "Unable to Create Incident", JOptionPane.ERROR_MESSAGE);
+                    incidentFrame.setVisible(true);
+                    return;
+                }
+            }
+            // We examined all incidents and there wasn't an empty slot
+            if (!found)
+            {
+                JOptionPane.showMessageDialog(this, "Script already has the max number of incidents.",
+                        "Unable to Create Incident", JOptionPane.ERROR_MESSAGE);
+                incidentFrame.setVisible(true);
+                // ALERT: exit from middle of method
+                return;
+            }
+
+            // We found a spot for the new incident
+            script.incidents.remove(indx); // remove the null incident placeholder
+            SimulationScript.incidentColors[indx] = selectedColor;
+            // Add the new incident to the list
+            script.incidents.add(indx,
+                    new ScriptIncident(SimulationScript.incidentColors[indx],
+                            (Integer) addIncidentNumber.getValue(), addIncidentName.getText(), addIncidentDescription.getText(),
+                            script));
+            script.incidents.get(indx).length = (Integer) addIncidentLength.getValue() * 60;
+            script.incidents.get(indx).setOffset((Integer) addIncidentStart.getValue() * 60);
+            script.numberOfIncidents++;
+        }
+        else
+        {
+            ScriptIncident backup = script.incidents.get(oldIncidentIndex);
+            script.incidents.remove(oldIncidentIndex);
+            script.incidents.add(oldIncidentIndex, null);
+
+            for (ScriptIncident i : script.incidents)
+            {
+                if (i != null && i.number == (Integer) addIncidentNumber.getValue())
+                {
+                    script.incidents.remove(oldIncidentIndex);
+                    script.incidents.add(oldIncidentIndex, backup);
+                    JOptionPane.showMessageDialog(this, "Incident number already in use.",
+                            "Unable to Create Incident", JOptionPane.ERROR_MESSAGE);
+                    incidentFrame.setVisible(true);
+                    return;
+                }
+            }
+
+            script.incidents.remove(oldIncidentIndex);
+            SimulationScript.incidentColors[oldIncidentIndex] = selectedColor;
+            script.incidents.add(oldIncidentIndex,
+                    new ScriptIncident(SimulationScript.incidentColors[oldIncidentIndex],
+                            (Integer) addIncidentNumber.getValue(), addIncidentName.getText(), addIncidentDescription.getText(),
+                            script));
+            script.incidents.get(oldIncidentIndex).length = (Integer) addIncidentLength.getValue() * 60;
+            script.incidents.get(oldIncidentIndex).slices = backup.slices;
+            script.incidents.get(oldIncidentIndex).offset = backup.offset;
+            script.incidents.get(oldIncidentIndex).setOffset((Integer) addIncidentStart.getValue() * 60);
+            script.numberOfIncidents++;
+        }
+
+        incidentFrame.setVisible(false);
+        update(script, script);
+        repaint();
+    }//GEN-LAST:event_incidentOkButtonActionPerformed
+
+    /**
+     * Closes editor window upon click of cancel button.
+     *
+     * @param evt the button press event
+     */
+    private void incidentCancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_incidentCancelButtonActionPerformed
+        incidentFrame.setVisible(false);
+    }//GEN-LAST:event_incidentCancelButtonActionPerformed
+
+    /**
+     * Opens incident editor window and preps for addition of new incident, upon
+     * click of "New Incident" menu option.
+     *
+     * @param evt the button press event
+     */
+    private void newIncidentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newIncidentActionPerformed
+        editingIncident = false;
+
+        addIncidentName.setText("");
+        addIncidentNumber.setValue(101);
+        addIncidentStart.setValue(0);
+        addIncidentLength.setValue(0);
+        incidentColorField.setBackground(Color.BLACK);
+        selectedColor = Color.BLACK;
+        addIncidentDescription.setText("");
+
+        incidentFrame.setVisible(true);
+    }//GEN-LAST:event_newIncidentActionPerformed
+
+    private void fileMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileMenuActionPerformed
+    }//GEN-LAST:event_fileMenuActionPerformed
+
+    /**
+     * Upon click of "Open file" menu option, opens a window to load a new .sim
+     * file.
+     *
+     * @param evt the button press event
+     */
+    private void fileOpenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileOpenActionPerformed
+        JFileChooser fc = new JFileChooser();
+
+        fc.setFileFilter(new ExtensionFileFilter("Simulation Script XML (.xml)",
+                new String[]
+                {
+                    "xml"
+                }));
+        if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
+        {
+            script = new SimulationScript();
+            System.out.println(fc.getSelectedFile().getName());
+            script.loadScriptFromFile(fc.getSelectedFile());
+            script.saveFile = fc.getSelectedFile();
+        }
+        update(script, script);
+        zoomSlider.setValue(zoomSlider.getMinimum());
+        repaint();
+    }//GEN-LAST:event_fileOpenActionPerformed
+
+    /**
+     * Upon click of "Save as" menu option, opens a window to choose a .sim file
+     * to save this as.
+     *
+     * @param evt the button press event
+     */
+    private void fileSaveAsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileSaveAsActionPerformed
+        JFileChooser fc = new JFileChooser();
+
+        fc.setFileFilter(new ExtensionFileFilter("Simulation Script XML (.xml)",
+                new String[]
+                {
+                    "xml"
+                }));
+
+        if (fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
+        {
+            script.saveScriptToFile(fc.getSelectedFile());
+            script.saveFile = fc.getSelectedFile();
+        }
+    }//GEN-LAST:event_fileSaveAsActionPerformed
+
+    /**
+     * Upon click of "Save" menu option, opens a window to choose a .sim file to
+     * save this as.
+     *
+     * @param evt the button press event
+     */
+    private void fileSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileSaveActionPerformed
+        if (script.saveFile == null)
+        {
+            fileSaveAsActionPerformed(evt);
+        }
+        else
+        {
+            script.saveScriptToFile(script.saveFile);
+        }
+    }//GEN-LAST:event_fileSaveActionPerformed
+
+    /**
+     * Upon click of "Edit incident" menu option, brings up a dropdown menu of
+     * all existing incidents. Once an incident is selected, opens incident
+     * editor window with that event's details loaded.
+     *
+     * @param evt the button press event
+     */
+    private void incidentDetailsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_incidentDetailsActionPerformed
+        Object[] incidentList = script.incidents.toArray();
+        ScriptIncident i = (ScriptIncident) JOptionPane.showInputDialog(
+                this,
+                "Select Incident:",
+                "Edit Incident",
+                JOptionPane.PLAIN_MESSAGE,
+                null,
+                incidentList,
+                script.incidents.get(0));
+
+        // If a valid incident was selected
+        if (i != null)
+        {
+            editingIncident = true;
+            oldIncidentIndex = script.incidents.indexOf(i);
+
+            addIncidentName.setText(i.name);
+            addIncidentNumber.setValue(i.number);
+            addIncidentStart.setValue(i.offset / 60);
+            addIncidentLength.setValue(i.length / 60);
+            incidentColorField.setBackground(i.color);
+            selectedColor = i.color;
+            addIncidentDescription.setText(i.description);
+
+            incidentFrame.setVisible(true);
+        }
+    }//GEN-LAST:event_incidentDetailsActionPerformed
+
+    /**
+     * Brings up the noise generation screen upon click of the "Generate Noise"
+     * menu option.
+     *
+     * @param evt the button press event
+     */
+    private void generateNoiseOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateNoiseOptionActionPerformed
+        addNoiseFrame.setVisible(true);
+    }//GEN-LAST:event_generateNoiseOptionActionPerformed
+
+    /**
+     * Hides the noise generation screen upon click of the "Cancel" button.
+     *
+     * @param evt the button press event
+     */
+    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+        addNoiseFrame.setVisible(false);
+    }//GEN-LAST:event_jButton1ActionPerformed
+
+    /**
+     * Generates random noise upon click of the "OK" button, then hides the
+     * noise generation screen.
+     *
+     * @param evt the button press event
+     */
+    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
+        Random rng = new Random();
+        ScriptEventType[] eventTypes = ScriptEventType.values();
+
+        /* For prototyping purpose, ignore the sliders and average their values */
+        int total = jSlider1.getValue() + jSlider2.getValue() + jSlider3.getValue() + jSlider5.getValue() + jSlider4.getValue();
+        total /= 5;
+
+        for (int i = 0; i < script.incidents.get(9).slices.size(); i++)
+        {
+            script.incidents.get(9).slices.get(i).events.clear();
+        }
+
+        for (int i = 0; i < total; i++)
+        {
+            int n = rng.nextInt();
+            int s = rng.nextInt();
+            int e = rng.nextInt();
+            if (n < 0)
+            {
+                n *= -1;
+            }
+            if (s < 0)
+            {
+                s *= -1;
+            }
+            if (e < 0)
+            {
+                e *= -1;
+            }
+
+            script.incidents.get(9).slices.get(s % (script.incidents.get(9).slices.size())).addEvent(ScriptEvent.factoryByType(eventTypes[e % eventTypes.length]));
+        }
+
+        addNoiseFrame.setVisible(false);
+
+        update(script, script);
+}//GEN-LAST:event_jButton2ActionPerformed
+
+    /**
+     * Allow the user to pick an incident from a dropdown, then save it to an
+     * XML file.
+     *
+     * @param evt the button press event
+     */
+    private void saveIncidentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveIncidentActionPerformed
+        Object[] incidentList = script.incidents.toArray();
+        String input = "";
+        ScriptIncident inc = null;
+        Object result = JOptionPane.showInputDialog(
+                this,
+                "Select Incident:",
+                "Save Incident",
+                JOptionPane.PLAIN_MESSAGE,
+                null,
+                incidentList,
+                script.incidents.get(0));
+
+        System.out.println("RESULT = " + result.toString());
+
+        input = result.toString();
+
+        System.out.println("INPUT = " + input);
+
+        int i = 0;
+        for (ScriptIncident incident : script.incidents)
+        {
+            if (incident == null)
+            {
+                continue;
+            }
+            System.out.println((++i) + ": " + incident.toString());
+            if (incident.toString().equals(input))
+            {
+                inc = incident;
+            }
+        }
+
+        if (inc == null)
+        {
+            System.out.println("DIDN'T FIND ANYTHING");
+            return;
+        }
+
+        JFileChooser fc = new JFileChooser();
+        fc.setFileFilter(new ExtensionFileFilter("Script Incident (.xml)", new String[]
+        {
+            "xml"
+        }));
+        if (fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
+        {
+            inc.saveIncidentToFile(fc.getSelectedFile());
+        }
+    }//GEN-LAST:event_saveIncidentActionPerformed
+
+    private void loadIncidentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadIncidentActionPerformed
+    //    new IncidentPaletteFrame(script, this).setVisible(true);
+        JOptionPane.showMessageDialog(this, "Incident Palette will appear here", "Message", JOptionPane.INFORMATION_MESSAGE);
+        zoomSlider.setValue(zoomSlider.getMinimum());
+    }//GEN-LAST:event_loadIncidentActionPerformed
+
+    private void generateProjectRequirementsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateProjectRequirementsActionPerformed
+        JFileChooser fc = new JFileChooser();
+        fc.setFileFilter(new ExtensionFileFilter("Portable Document Format (.pdf)", new String[]
+        {
+            "pdf"
+        }));
+        fc.setSelectedFile(new File("Requirements.pdf"));
+        fc.showSaveDialog(this);
+    }//GEN-LAST:event_generateProjectRequirementsActionPerformed
+
+    private void generateNotebooksActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateNotebooksActionPerformed
+        JFileChooser fc = new JFileChooser();
+        fc.setFileFilter(new ExtensionFileFilter("Portable Document Format (.pdf)", new String[]
+        {
+            "pdf"
+        }));
+        fc.setSelectedFile(new File("Notebooks.pdf"));
+        fc.showSaveDialog(this);
+    }//GEN-LAST:event_generateNotebooksActionPerformed
+
+    private void generateScorecardsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateScorecardsActionPerformed
+        JFileChooser fc = new JFileChooser();
+        fc.setFileFilter(new ExtensionFileFilter("Portable Document Format (.pdf)", new String[]
+        {
+            "pdf"
+        }));
+        fc.setSelectedFile(new File("Scorecards.pdf"));
+        fc.showSaveDialog(this);
+    }//GEN-LAST:event_generateScorecardsActionPerformed
+
+    private void generateOrganizationChartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateOrganizationChartActionPerformed
+        JFileChooser fc = new JFileChooser();
+        fc.setFileFilter(new ExtensionFileFilter("Portable Document Format (.pdf)", new String[]
+        {
+            "pdf"
+        }));
+        fc.setSelectedFile(new File("OrganizationChart.pdf"));
+        fc.showSaveDialog(this);
+    }//GEN-LAST:event_generateOrganizationChartActionPerformed
+
+    /**
+     * Increases zoom level upon click of the "Zoom in" icon.
+     *
+     * @param evt the mouse event
+     */
+    private void zoomInIconMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_zoomInIconMouseClicked
+        zoomSlider.setValue(zoomSlider.getValue() >= 21 ? 21 : zoomSlider.getValue() + 1);
+    }//GEN-LAST:event_zoomInIconMouseClicked
+
+    /**
+     * Decreases zoom level upon click of the "Zoom out" icon.
+     *
+     * @param evt the mouse event
+     */
+    private void zoomOutIconMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_zoomOutIconMouseClicked
+        zoomSlider.setValue(zoomSlider.getValue() <= 5 ? 5 : zoomSlider.getValue() - 1);
+    }//GEN-LAST:event_zoomOutIconMouseClicked
+    private Color selectedColor = Color.BLACK;
+
+    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
+        Color newColor = incidentColorChooser.showDialog(this, "Incident Color", incidentColorField.getBackground());
+        if (newColor != null)
+        {
+            selectedColor = newColor;
+            incidentColorField.setBackground(newColor);
+        }
+    }//GEN-LAST:event_jButton3ActionPerformed
+
+    /* Help > About simply displays the current SVN revision number so
+     * the user can determine which version of the source code was used to
+     * build the executable she is running.
+     */
+    private void helpAboutActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_helpAboutActionPerformed
+    {//GEN-HEADEREND:event_helpAboutActionPerformed
+        JOptionPane.showMessageDialog(rootPane, "Revision: " + getAppVersion(), "About", JOptionPane.INFORMATION_MESSAGE);
+    }//GEN-LAST:event_helpAboutActionPerformed
+
+    private void fileNewActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_fileNewActionPerformed
+    {//GEN-HEADEREND:event_fileNewActionPerformed
+        script = new SimulationScript();
+        script.update();
+        update(null, script);
+        repaint();
+    }//GEN-LAST:event_fileNewActionPerformed
+
+    private void editIncidentActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_editIncidentActionPerformed
+    {//GEN-HEADEREND:event_editIncidentActionPerformed
+        Object[] incidentList = script.incidents.toArray();
+        String input = "";
+        ScriptIncident inc = null;
+        Object result = JOptionPane.showInputDialog(
+                this,
+                "Select Incident:",
+                "Save Incident",
+                JOptionPane.PLAIN_MESSAGE,
+                null,
+                incidentList,
+                script.incidents.get(0));
+
+        if (result != null)
+        {
+            System.out.println("RESULT = " + result.toString());
+
+            input = result.toString();
+
+            System.out.println("INPUT = " + input);
+
+            int i = 0;
+            for (ScriptIncident incident : script.incidents)
+            {
+                if (incident == null)
+                {
+                    continue;
+                }
+                System.out.println((++i) + ": " + incident.toString());
+                if (incident.toString().equals(input))
+                {
+                    inc = incident;
+                }
+            }
+
+            if (inc != null)
+            {
+                IncidentEditorFrame editor = new IncidentEditorFrame(inc, null);
+                script.addObserver(editor);
+                editor.setVisible(true);
+            }
+        }
+        update(script, script);
+    }//GEN-LAST:event_editIncidentActionPerformed
+
+    /**
+     * Read the version number from the application properties. The file
+     * 'application.properties' is generated by build.xml.
+     *
+     * @return a version string obtained from application.properties file, or
+     * "Version: unknown" if an IOerror prevents us from reading the file.
+     */
+    private String getAppVersion()
+    {
+        String propfilename = "/scriptbuilder/gui/application.properties";
+        String propKey = "Application.revision";
+        String version = "unknown";
+        // Load the application properties (created by build.xml)
+        try
+        {
+            Properties props = new Properties();
+            props.load(this.getClass().getResourceAsStream(propfilename));
+            version = (String) props.get(propKey);
+        }
+        catch (IOException ex)
+        {
+            Logger.getLogger("scriptbuilder.gui").log(Level.SEVERE,
+                    "ScriptBuilderFrame.getAppVersion()."
+                    + " IOError reading " + propfilename);
+        }
+        catch (NullPointerException npe)
+        {
+            Logger.getLogger("scriptbuilder.gui").log(Level.SEVERE,
+                    "ScriptBuilderFrame.getAppVersion().load."
+                    + " Missing file: " + propfilename);
+        }
+        return version;
+    }
+
+    /**
+     * Runs the script builder.
+     *
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        try
+        {
+            UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
+        }
+        catch (ClassNotFoundException ex)
+        {
+        }
+        catch (InstantiationException ex)
+        {
+        }
+        catch (IllegalAccessException ex)
+        {
+        }
+        catch (UnsupportedLookAndFeelException ex)
+        {
+        }
+
+        try
+        {
+            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
+        }
+        catch (ClassNotFoundException ex)
+        {
+        }
+        catch (InstantiationException ex)
+        {
+        }
+        catch (IllegalAccessException ex)
+        {
+        }
+        catch (UnsupportedLookAndFeelException ex)
+        {
+        }
+
+        java.awt.EventQueue.invokeLater(new Runnable()
+                {
+                    public void run()
+                    {
+                        new ScriptOverviewWindow().setVisible(true);
+                    }
+                });
+    }
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JTextArea addIncidentDescription;
+    private javax.swing.JSpinner addIncidentLength;
+    private javax.swing.JTextField addIncidentName;
+    private javax.swing.JSpinner addIncidentNumber;
+    private javax.swing.JSpinner addIncidentStart;
+    private javax.swing.JFrame addNoiseFrame;
+    private javax.swing.JMenuItem cadEvent;
+    private javax.swing.JFrame cadEventFrame;
+    private javax.swing.JButton cancelButton;
+    private javax.swing.JMenuItem deleteEventList;
+    private javax.swing.JMenuItem editEventList;
+    private javax.swing.JMenuItem editIncident;
+    private javax.swing.JPopupMenu eventListPopupMenu;
+    private javax.swing.JPopupMenu eventPopupMenu;
+    private javax.swing.JMenu fileMenu;
+    private javax.swing.JMenuItem fileNew;
+    private javax.swing.JMenuItem fileOpen;
+    private javax.swing.JMenuItem fileSave;
+    private javax.swing.JMenuItem fileSaveAs;
+    private javax.swing.JMenu generateMenu;
+    private javax.swing.JMenu generateNoiseMenu;
+    private javax.swing.JMenuItem generateNoiseOption;
+    private javax.swing.JMenuItem generateNotebooks;
+    private javax.swing.JMenuItem generateOrganizationChart;
+    private javax.swing.JMenuItem generateProjectRequirements;
+    private javax.swing.JMenuItem generateScorecards;
+    private javax.swing.JMenuItem helpAbout;
+    private javax.swing.JMenu helpMenu;
+    private javax.swing.JMenuItem helpTutorial;
+    private javax.swing.JButton incidentCancelButton;
+    private javax.swing.JColorChooser incidentColorChooser;
+    private javax.swing.JTextField incidentColorField;
+    private javax.swing.JMenuItem incidentDetails;
+    private javax.swing.JFrame incidentFrame;
+    private javax.swing.JMenu incidentMenu;
+    private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel1;
+    private javax.swing.JButton incidentOkButton;
+    private javax.swing.JPopupMenu incidentPopupMenu;
+    private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel1;
+    private javax.swing.JButton jButton1;
+    private javax.swing.JButton jButton2;
+    private javax.swing.JButton jButton3;
+    private javax.swing.JLabel jLabel10;
+    private javax.swing.JLabel jLabel11;
+    private javax.swing.JLabel jLabel12;
+    private javax.swing.JLabel jLabel13;
+    private javax.swing.JLabel jLabel14;
+    private javax.swing.JLabel jLabel15;
+    private javax.swing.JLabel jLabel16;
+    private javax.swing.JLabel jLabel17;
+    private javax.swing.JLabel jLabel20;
+    private javax.swing.JLabel jLabel21;
+    private javax.swing.JLabel jLabel5;
+    private javax.swing.JLabel jLabel6;
+    private javax.swing.JLabel jLabel7;
+    private javax.swing.JLabel jLabel8;
+    private javax.swing.JLabel jLabel9;
+    private javax.swing.JMenuItem jMenuItem2;
+    private javax.swing.JMenuItem jMenuItem3;
+    private javax.swing.JMenuItem jMenuItem4;
+    private javax.swing.JMenuItem jMenuItem5;
+    private javax.swing.JMenuItem jMenuItem6;
+    private javax.swing.JScrollPane jScrollPane1;
+    private javax.swing.JPopupMenu.Separator jSeparator1;
+    private javax.swing.JPopupMenu.Separator jSeparator2;
+    private javax.swing.JPopupMenu.Separator jSeparator3;
+    private javax.swing.JPopupMenu.Separator jSeparator4;
+    private javax.swing.JSlider jSlider1;
+    private javax.swing.JSlider jSlider2;
+    private javax.swing.JSlider jSlider3;
+    private javax.swing.JSlider jSlider4;
+    private javax.swing.JSlider jSlider5;
+    private javax.swing.JTextArea jTextArea1;
+    private javax.swing.JMenuItem loadIncident;
+    private javax.swing.JMenuItem newIncident;
+    private javax.swing.JButton okButton;
+    private javax.swing.JMenuItem popupDeleteIncident;
+    private javax.swing.JMenuItem radioEvent;
+    private javax.swing.JFrame radioEventFrame;
+    private javax.swing.JTextArea radioMessage;
+    private javax.swing.JScrollPane radioMessageScrollPane;
+    private javax.swing.JComboBox radioTypeComboBox;
+    private javax.swing.JLabel radioTypeLabel;
+    private javax.swing.JMenuItem saveIncident;
+    private javax.swing.JMenuBar scriptBuilderMenuBar;
+    private scriptbuilder.gui.panels.TimeStampPanel timeStampPanel;
+    private javax.swing.JScrollPane timeStampScrollPane;
+    private scriptbuilder.gui.panels.TimelineTickPanel timelineTickPanel;
+    private javax.swing.JScrollPane timelinesScrollPane;
+    private javax.swing.JLabel zoomInIcon;
+    private javax.swing.JLabel zoomOutIcon;
+    private javax.swing.JSlider zoomSlider;
+    // End of variables declaration//GEN-END:variables
+}
Index: trunk/src/scriptbuilder/gui/ScriptOverviewWindow.form
===================================================================
--- trunk/src/scriptbuilder/gui/ScriptOverviewWindow.form	(revision 144)
+++ trunk/src/scriptbuilder/gui/ScriptOverviewWindow.form	(revision 144)
@@ -0,0 +1,1099 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Container class="javax.swing.JPopupMenu" name="incidentPopupMenu">
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+        <Property name="useNullLayout" type="boolean" value="true"/>
+      </Layout>
+      <SubComponents>
+        <MenuItem class="javax.swing.JMenuItem" name="popupDeleteIncident">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Delete Incident..."/>
+          </Properties>
+        </MenuItem>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JPopupMenu" name="eventPopupMenu">
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+        <Property name="useNullLayout" type="boolean" value="true"/>
+      </Layout>
+      <SubComponents>
+        <MenuItem class="javax.swing.JMenuItem" name="cadEvent">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="CAD Event"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="cadEventMousePressed"/>
+            <EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="cadEventMouseReleased"/>
+          </Events>
+        </MenuItem>
+        <MenuItem class="javax.swing.JMenuItem" name="jMenuItem2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Paramics Event"/>
+          </Properties>
+        </MenuItem>
+        <MenuItem class="javax.swing.JMenuItem" name="radioEvent">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Radio Event"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="radioEventMousePressed"/>
+          </Events>
+        </MenuItem>
+        <MenuItem class="javax.swing.JMenuItem" name="jMenuItem4">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Telephone Event"/>
+          </Properties>
+        </MenuItem>
+        <MenuItem class="javax.swing.JMenuItem" name="jMenuItem5">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Video Event"/>
+          </Properties>
+        </MenuItem>
+        <MenuItem class="javax.swing.JMenuItem" name="jMenuItem6">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Evaluation Event"/>
+          </Properties>
+        </MenuItem>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JFrame" name="cadEventFrame">
+      <Properties>
+        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+          <Dimension value="[400, 300]"/>
+        </Property>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="jLabel5" min="-2" pref="68" max="-2" attributes="0"/>
+                  <EmptySpace max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="jLabel5" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace pref="1357" max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="jLabel5">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="CAD Entry"/>
+          </Properties>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JFrame" name="radioEventFrame">
+      <Properties>
+        <Property name="title" type="java.lang.String" value="Add Radio Event"/>
+        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+          <Dimension value="[400, 300]"/>
+        </Property>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="1" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Component id="radioMessageScrollPane" alignment="0" pref="380" max="32767" attributes="0"/>
+                      <Group type="102" alignment="0" attributes="0">
+                          <Component id="radioTypeLabel" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                          <Component id="radioTypeComboBox" pref="312" max="32767" attributes="0"/>
+                      </Group>
+                      <Component id="jLabel7" alignment="0" min="-2" max="-2" attributes="0"/>
+                      <Group type="102" alignment="0" attributes="0">
+                          <Component id="cancelButton" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace pref="246" max="32767" attributes="0"/>
+                          <Component id="okButton" min="-2" pref="69" max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="radioTypeLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="radioTypeComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                  <Component id="jLabel7" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="radioMessageScrollPane" pref="198" max="32767" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="okButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="cancelButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="radioTypeLabel">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Radio Type:"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel7">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Radio Message:"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="radioTypeComboBox">
+          <Properties>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="2">
+                <StringItem index="0" value="TMT"/>
+                <StringItem index="1" value="Maintanence"/>
+              </StringArray>
+            </Property>
+          </Properties>
+        </Component>
+        <Container class="javax.swing.JScrollPane" name="radioMessageScrollPane">
+          <Properties>
+            <Property name="verticalScrollBarPolicy" type="int" value="22"/>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+          </AuxValues>
+
+          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+          <SubComponents>
+            <Component class="javax.swing.JTextArea" name="radioMessage">
+              <Properties>
+                <Property name="columns" type="int" value="20"/>
+                <Property name="lineWrap" type="boolean" value="true"/>
+                <Property name="rows" type="int" value="5"/>
+                <Property name="wrapStyleWord" type="boolean" value="true"/>
+              </Properties>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Component class="javax.swing.JButton" name="okButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="OK"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="cancelButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Cancel"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelButtonActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JPopupMenu" name="eventListPopupMenu">
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+        <Property name="useNullLayout" type="boolean" value="true"/>
+      </Layout>
+      <SubComponents>
+        <MenuItem class="javax.swing.JMenuItem" name="editEventList">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Edit..."/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="editEventListActionPerformed"/>
+          </Events>
+        </MenuItem>
+        <MenuItem class="javax.swing.JMenuItem" name="deleteEventList">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Delete..."/>
+          </Properties>
+        </MenuItem>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JFrame" name="incidentFrame">
+      <Properties>
+        <Property name="title" type="java.lang.String" value="Incident"/>
+        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+          <Dimension value="[400, 400]"/>
+        </Property>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="1" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Component id="jScrollPane1" alignment="0" pref="322" max="32767" attributes="0"/>
+                      <Component id="jLabel10" alignment="0" min="-2" max="-2" attributes="0"/>
+                      <Group type="102" alignment="0" attributes="0">
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="jLabel6" alignment="0" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel8" alignment="0" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel9" alignment="0" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace type="separate" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="addIncidentName" pref="218" max="32767" attributes="0"/>
+                              <Component id="addIncidentNumber" alignment="0" pref="218" max="32767" attributes="0"/>
+                              <Group type="102" alignment="1" attributes="0">
+                                  <Component id="incidentColorField" pref="119" max="32767" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="jButton3" min="-2" pref="93" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <Component id="incidentCancelButton" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace pref="188" max="32767" attributes="0"/>
+                          <Component id="incidentOkButton" min="-2" pref="69" max="-2" attributes="0"/>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="jLabel12" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel11" alignment="0" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace min="-2" pref="18" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="addIncidentStart" alignment="0" pref="158" max="32767" attributes="0"/>
+                              <Component id="addIncidentLength" alignment="0" pref="158" max="32767" attributes="0"/>
+                          </Group>
+                      </Group>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel6" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="addIncidentNumber" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel8" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="addIncidentName" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel9" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jButton3" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="incidentColorField" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="jLabel10" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="jScrollPane1" pref="106" max="32767" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="addIncidentStart" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel12" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="addIncidentLength" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel11" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="incidentCancelButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="incidentOkButton" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="jLabel6">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Incident Number: "/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel8">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Incident Name:"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel9">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Incident Color: "/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel10">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Incident Description:"/>
+          </Properties>
+        </Component>
+        <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+          <Properties>
+            <Property name="horizontalScrollBarPolicy" type="int" value="31"/>
+            <Property name="verticalScrollBarPolicy" type="int" value="22"/>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+          </AuxValues>
+
+          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+          <SubComponents>
+            <Component class="javax.swing.JTextArea" name="addIncidentDescription">
+              <Properties>
+                <Property name="columns" type="int" value="20"/>
+                <Property name="lineWrap" type="boolean" value="true"/>
+                <Property name="rows" type="int" value="5"/>
+                <Property name="wrapStyleWord" type="boolean" value="true"/>
+              </Properties>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Component class="javax.swing.JButton" name="incidentOkButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="OK"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="incidentOkButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="incidentCancelButton">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Cancel"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="incidentCancelButtonActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JSpinner" name="addIncidentNumber">
+          <Properties>
+            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
+              <SpinnerModel initial="101" minimum="101" numberType="java.lang.Integer" stepSize="1" type="number"/>
+            </Property>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="addIncidentName">
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel11">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Incident Length in Minutes: "/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JSpinner" name="addIncidentLength">
+          <Properties>
+            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
+              <SpinnerModel initial="0" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
+            </Property>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel12">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Incident Start Time in Minutes:"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JSpinner" name="addIncidentStart">
+          <Properties>
+            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
+              <SpinnerModel initial="0" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
+            </Property>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton3">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Choose..."/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton3ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JTextField" name="incidentColorField">
+          <Properties>
+            <Property name="editable" type="boolean" value="false"/>
+            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="0" green="0" red="0" type="rgb"/>
+            </Property>
+          </Properties>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JFrame" name="addNoiseFrame">
+      <Properties>
+        <Property name="title" type="java.lang.String" value="Generate Noise"/>
+        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+          <Dimension value="[395, 315]"/>
+        </Property>
+        <Property name="resizable" type="boolean" value="false"/>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="1" attributes="0">
+                  <EmptySpace pref="21" max="32767" attributes="0"/>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Component id="jTextArea1" alignment="0" max="32767" attributes="1"/>
+                      <Group type="103" alignment="1" groupAlignment="1" max="-2" attributes="0">
+                          <Group type="102" alignment="0" attributes="1">
+                              <Component id="jButton1" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace max="32767" attributes="0"/>
+                              <Component id="jButton2" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <Group type="102" alignment="0" attributes="0">
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Group type="103" alignment="0" groupAlignment="1" attributes="0">
+                                      <Component id="jLabel16" alignment="1" min="-2" max="-2" attributes="0"/>
+                                      <Component id="jLabel14" alignment="1" min="-2" pref="105" max="-2" attributes="0"/>
+                                      <Component id="jLabel15" alignment="1" min="-2" pref="105" max="-2" attributes="0"/>
+                                      <Component id="jLabel13" alignment="1" min="-2" pref="105" max="-2" attributes="0"/>
+                                  </Group>
+                                  <Component id="jLabel17" alignment="0" min="-2" pref="81" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                                  <Component id="jSlider1" alignment="0" min="-2" pref="245" max="-2" attributes="0"/>
+                                  <Component id="jSlider2" alignment="0" min="-2" pref="245" max="-2" attributes="0"/>
+                                  <Component id="jSlider3" alignment="0" min="-2" pref="245" max="-2" attributes="0"/>
+                                  <Component id="jSlider5" alignment="0" min="-2" pref="245" max="-2" attributes="0"/>
+                                  <Component id="jSlider4" alignment="0" min="-2" pref="245" max="-2" attributes="0"/>
+                                  <Group type="102" alignment="1" attributes="1">
+                                      <Component id="jLabel20" min="-2" max="-2" attributes="0"/>
+                                      <EmptySpace max="32767" attributes="0"/>
+                                      <Component id="jLabel21" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                              </Group>
+                          </Group>
+                      </Group>
+                  </Group>
+                  <EmptySpace min="-2" pref="20" max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="1" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="jTextArea1" pref="39" max="32767" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Component id="jLabel21" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel20" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Component id="jLabel13" min="-2" pref="30" max="-2" attributes="1"/>
+                      <Component id="jSlider1" alignment="1" min="-2" pref="30" max="-2" attributes="1"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Component id="jLabel14" min="-2" pref="28" max="-2" attributes="1"/>
+                      <Component id="jSlider2" alignment="1" min="-2" pref="28" max="-2" attributes="1"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="1" max="-2" attributes="0">
+                      <Component id="jLabel15" min="-2" max="-2" attributes="1"/>
+                      <Component id="jSlider3" alignment="1" min="-2" max="-2" attributes="1"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Component id="jSlider4" min="-2" pref="29" max="-2" attributes="1"/>
+                      <Component id="jLabel16" min="-2" pref="29" max="-2" attributes="1"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Component id="jSlider5" min="-2" max="-2" attributes="1"/>
+                      <Component id="jLabel17" min="-2" max="-2" attributes="1"/>
+                  </Group>
+                  <EmptySpace type="separate" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Component id="jButton1" min="-2" max="-2" attributes="0"/>
+                      <Component id="jButton2" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="jLabel13">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="12" style="0"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Radio Chatter: "/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JSlider" name="jSlider1">
+        </Component>
+        <Component class="javax.swing.JSlider" name="jSlider2">
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel14">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="12" style="0"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Lane Closures:"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JSlider" name="jSlider3">
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel15">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="12" style="0"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="TMCAL Logs:"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextArea" name="jTextArea1">
+          <Properties>
+            <Property name="editable" type="boolean" value="false"/>
+            <Property name="columns" type="int" value="20"/>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="12" style="0"/>
+            </Property>
+            <Property name="lineWrap" type="boolean" value="true"/>
+            <Property name="rows" type="int" value="5"/>
+            <Property name="text" type="java.lang.String" value="Noise events will be randomly generated for the simulation with frequencies based on the control selections made below"/>
+            <Property name="wrapStyleWord" type="boolean" value="true"/>
+            <Property name="autoscrolls" type="boolean" value="false"/>
+            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+              <Border info="null"/>
+            </Property>
+            <Property name="disabledTextColor" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="0" green="0" red="0" type="rgb"/>
+            </Property>
+            <Property name="focusable" type="boolean" value="false"/>
+            <Property name="opaque" type="boolean" value="false"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JSlider" name="jSlider4">
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel16">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="12" style="0"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Background Noise: "/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JSlider" name="jSlider5">
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel17">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="12" style="0"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Minor Events:"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Cancel"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Generate"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton2ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel20">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Least Frequent"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel21">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Most Frequent"/>
+          </Properties>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Component class="javax.swing.JColorChooser" name="incidentColorChooser">
+    </Component>
+    <Menu class="javax.swing.JMenuBar" name="scriptBuilderMenuBar">
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="fileMenu">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="File"/>
+            <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
+              <Insets value="[0, 10, 0, 10]"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fileMenuActionPerformed"/>
+          </Events>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="fileNew">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Shift+Ctrl+N"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="New"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fileNewActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator1">
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="fileOpen">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Shift+Ctrl+O"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Open..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fileOpenActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator2">
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="fileSave">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+S"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Save"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fileSaveActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="fileSaveAs">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Shift+Ctrl+S"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Save as..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fileSaveAsActionPerformed"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="generateMenu">
+          <Properties>
+            <Property name="label" type="java.lang.String" value="Generate"/>
+            <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
+              <Insets value="[0, 10, 0, 10]"/>
+            </Property>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="generateNotebooks">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+Alt+N"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Generate Notebooks..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="generateNotebooksActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="jMenuItem3">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+Alt+W"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Generate Web Notebook..."/>
+              </Properties>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="generateScorecards">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+Alt+S"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Generate Scorecards..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="generateScorecardsActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="generateOrganizationChart">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+Alt+O"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Generate D14 TMC Org Chart..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="generateOrganizationChartActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator3">
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="generateProjectRequirements">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+Alt+R"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Generate Project Worklist..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="generateProjectRequirementsActionPerformed"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="incidentMenu">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Incidents"/>
+            <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
+              <Insets value="[0, 10, 0, 10]"/>
+            </Property>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="newIncident">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="New Incident..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="newIncidentActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="editIncident">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Edit Incident..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="editIncidentActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="incidentDetails">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Incident Details..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="incidentDetailsActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator4">
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="saveIncident">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Save Incident..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveIncidentActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="loadIncident">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Load Incident..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="loadIncidentActionPerformed"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="generateNoiseMenu">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Noise"/>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="generateNoiseOption">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Generate Noise..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="generateNoiseOptionActionPerformed"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="helpMenu">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Help"/>
+            <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
+              <Insets value="[0, 10, 0, 10]"/>
+            </Property>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="helpTutorial">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="F1"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Tutorial..."/>
+              </Properties>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="helpAbout">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="About..."/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="helpAboutActionPerformed"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+    <Property name="title" type="java.lang.String" value="Script Builder"/>
+    <Property name="bounds" type="java.awt.Rectangle" editor="org.netbeans.beaninfo.editors.RectangleEditor">
+      <Rectangle value="[0, 23, 800, 700]"/>
+    </Property>
+    <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+      <Color id="Default Cursor"/>
+    </Property>
+    <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+      <Dimension value="[800, 700]"/>
+    </Property>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="scriptBuilderMenuBar"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Component id="timelinesScrollPane" alignment="0" min="0" pref="0" max="32767" attributes="1"/>
+                  <Component id="timeStampScrollPane" alignment="0" max="32767" attributes="0"/>
+                  <Group type="102" alignment="1" attributes="0">
+                      <EmptySpace min="0" pref="597" max="32767" attributes="0"/>
+                      <Component id="zoomOutIcon" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="zoomSlider" min="-2" pref="140" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="zoomInIcon" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" pref="136" max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="1" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="1" attributes="0">
+                  <Component id="zoomOutIcon" min="-2" max="-2" attributes="0"/>
+                  <Component id="zoomSlider" min="-2" max="-2" attributes="1"/>
+                  <Component id="zoomInIcon" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace min="-2" max="-2" attributes="0"/>
+              <Component id="timeStampScrollPane" min="-2" pref="20" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="timelinesScrollPane" pref="1289" max="32767" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JScrollPane" name="timelinesScrollPane">
+      <Properties>
+        <Property name="horizontalScrollBarPolicy" type="int" value="32"/>
+        <Property name="verticalScrollBarPolicy" type="int" value="22"/>
+        <Property name="focusCycleRoot" type="boolean" value="true"/>
+        <Property name="focusTraversalPolicyProvider" type="boolean" value="true"/>
+        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+          <Dimension value="[72000, 1341]"/>
+        </Property>
+        <Property name="wheelScrollingEnabled" type="boolean" value="false"/>
+      </Properties>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+      <SubComponents>
+        <Container class="scriptbuilder.gui.panels.TimelineTickPanel" name="timelineTickPanel">
+          <Properties>
+            <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+              <Dimension value="[7200, 32767]"/>
+            </Property>
+            <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+              <Dimension value="[7200, 0]"/>
+            </Property>
+            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+              <Dimension value="[7200, 1317]"/>
+            </Property>
+          </Properties>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="incidentNumberPanel1" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" pref="10" max="-2" attributes="0"/>
+                      <Component id="incidentTimelinePanel1" min="-2" max="-2" attributes="1"/>
+                      <EmptySpace pref="6487" max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="incidentNumberPanel1" min="-2" max="-2" attributes="0"/>
+                          <Component id="incidentTimelinePanel1" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace pref="1205" max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Container class="scriptbuilder.gui.panels.IncidentTimelinePanel" name="incidentTimelinePanel1">
+              <Properties>
+                <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+                  <Dimension value="[32767, 100]"/>
+                </Property>
+                <Property name="opaque" type="boolean" value="false"/>
+                <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+                  <Dimension value="[691, 100]"/>
+                </Property>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <EmptySpace min="0" pref="691" max="32767" attributes="0"/>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <EmptySpace min="0" pref="100" max="32767" attributes="0"/>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+            </Container>
+            <Container class="scriptbuilder.gui.panels.IncidentNumberPanel" name="incidentNumberPanel1">
+              <Properties>
+                <Property name="opaque" type="boolean" value="false"/>
+              </Properties>
+
+              <Layout>
+                <DimensionLayout dim="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                  </Group>
+                </DimensionLayout>
+                <DimensionLayout dim="1">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                  </Group>
+                </DimensionLayout>
+              </Layout>
+            </Container>
+          </SubComponents>
+        </Container>
+      </SubComponents>
+    </Container>
+    <Component class="javax.swing.JSlider" name="zoomSlider">
+      <Properties>
+        <Property name="maximum" type="int" value="22"/>
+        <Property name="minimum" type="int" value="4"/>
+        <Property name="value" type="int" value="4"/>
+        <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+          <Color id="Default Cursor"/>
+        </Property>
+        <Property name="focusable" type="boolean" value="false"/>
+      </Properties>
+      <Events>
+        <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="zoomSliderStateChanged"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JLabel" name="zoomInIcon">
+      <Properties>
+        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+          <Image iconType="3" name="/images/ZoomIn.png"/>
+        </Property>
+        <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+          <Color id="Hand Cursor"/>
+        </Property>
+      </Properties>
+      <Events>
+        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="zoomInIconMouseClicked"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JLabel" name="zoomOutIcon">
+      <Properties>
+        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+          <Image iconType="3" name="/images/ZoomOut.png"/>
+        </Property>
+        <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
+          <Color id="Hand Cursor"/>
+        </Property>
+      </Properties>
+      <Events>
+        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="zoomOutIconMouseClicked"/>
+      </Events>
+    </Component>
+    <Container class="javax.swing.JScrollPane" name="timeStampScrollPane">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="null"/>
+        </Property>
+        <Property name="horizontalScrollBarPolicy" type="int" value="31"/>
+        <Property name="verticalScrollBarPolicy" type="int" value="21"/>
+      </Properties>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+      <SubComponents>
+        <Container class="scriptbuilder.gui.panels.TimeStampPanel" name="timeStampPanel">
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+        </Container>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
Index: trunk/src/scriptbuilder/gui/application.properties
===================================================================
--- trunk/src/scriptbuilder/gui/application.properties	(revision 137)
+++ trunk/src/scriptbuilder/gui/application.properties	(revision 144)
@@ -1,7 +1,7 @@
-#Mon, 23 Oct 2017 19:57:14 -0700
+#Tue, 09 Jan 2018 11:31:37 -0800
 
-Application.revision=0
+Application.revision=143
 
-Application.buildnumber=37
+Application.buildnumber=38
 
 Incidents.directory=Incidents
