source: tmcsimulator-scriptbuilder/trunk/src/scriptbuilder/gui/IncidentEditorFrame.java @ 107

Revision 107, 89.3 KB checked in by bmcguffin, 9 years ago (diff)

Fixed a bug where deleting the first timeslice of an incident would not alter the reported start time of the incident.

Line 
1/**
2 * Frame for the Individual Incident Editor.
3 *
4 * @author Bryan McGuffin
5 * @version 2017/08/08
6 */
7package scriptbuilder.gui;
8
9import java.awt.Adjustable;
10import java.awt.event.AdjustmentEvent;
11import java.awt.event.AdjustmentListener;
12import java.awt.event.KeyEvent;
13import java.awt.event.KeyListener;
14import java.awt.event.WindowAdapter;
15import java.awt.event.WindowEvent;
16import java.io.IOException;
17import java.util.ArrayList;
18import java.util.Observable;
19import java.util.Observer;
20import java.util.Properties;
21import java.util.Random;
22import java.util.logging.Level;
23import java.util.logging.Logger;
24import javax.swing.DefaultListModel;
25import javax.swing.JButton;
26import scriptbuilder.gui.panels.IncidentTimelinePanel;
27import scriptbuilder.structures.ScriptEvent;
28import scriptbuilder.structures.ScriptEvent.ScriptEventType;
29import scriptbuilder.structures.ScriptIncident;
30import scriptbuilder.structures.ScriptIncident.IncidentFocusedEvent;
31import scriptbuilder.structures.ScriptIncident.SliceChangedEvent;
32import scriptbuilder.structures.TimeSlice;
33import scriptbuilder.structures.events.I_ScriptEvent;
34
35/**
36 * GUI for the script builder. Contains all panels and editor elements. Performs
37 * updates to reflect script model, which it observes.
38 *
39 * @author Greg Eddington
40 * @author Bryan McGuffin
41 */
42public class IncidentEditorFrame extends javax.swing.JFrame implements Observer
43{
44
45    /**
46     * The script incident currently being edited.
47     */
48    private ScriptIncident theIncident;
49
50    private ScriptBuilderFrame parent;
51
52    private int savedOffset;
53
54    /**
55     * The current type of selected event.
56     */
57    public ScriptEventType currentEventType;
58    /**
59     * A list of all the event type buttons.
60     */
61    private ArrayList<JButton> eventButtons = null;
62
63    /**
64     * Get the script currently in use.
65     *
66     * @return the script model object
67     */
68    public ScriptIncident getIncident()
69    {
70        return theIncident;
71    }
72
73    /**
74     * Listener for the scroll pane.
75     */
76    class MyAdjustmentListener implements AdjustmentListener
77    {
78
79        /**
80         * If the incident timeline is scrolled horizontally, the timestamp
81         * panel is updated to reflect it.
82         *
83         * @param evt the adjustment event
84         */
85        @Override
86        public void adjustmentValueChanged(AdjustmentEvent evt)
87        {
88            if (evt.getAdjustable().getOrientation() == Adjustable.HORIZONTAL)
89            {
90                timeStampScrollPane.getHorizontalScrollBar()
91                        .setValue(timelinesScrollPane.getHorizontalScrollBar().getValue());
92            }
93            else
94            {
95                // Event from vertical scrollbar
96            }
97
98            repaint();
99        }
100    }
101
102    /**
103     * Listener for key presses. Used for hotkeys for different event types.
104     */
105    private class TimelineKeyListener implements KeyListener
106    {
107
108        /**
109         * If a hotkey is pressed, select that type of event.
110         *
111         * @param e the key event
112         */
113        @Override
114        public void keyPressed(KeyEvent e)
115        {
116            JButton lastButton = null;
117            for (JButton eb : eventButtons)
118            {
119                eb.setFocusPainted(false);
120                if (eb.isSelected())
121                {
122                    lastButton = eb;
123                }
124                eb.setSelected(false);
125            }
126
127            JButton newButton = lastButton;
128            switch (e.getKeyChar())
129            {
130                case 'u':
131                    currentEventType = ScriptEventType.AUDIO_EVENT;
132                    newButton = audioButton;
133                    break;
134                case 'c':
135                    currentEventType = ScriptEventType.CAD_EVENT;
136                    newButton = cadButton;
137                    break;
138                case 'v':
139                    currentEventType = ScriptEventType.CCTV_EVENT;
140                    newButton = cctvButton;
141                    break;
142                case 'h':
143                    currentEventType = ScriptEventType.CHP_RADIO_EVENT;
144                    newButton = chpRadioButton;
145                    break;
146                case 'p':
147                    currentEventType = ScriptEventType.PARAMICS_EVENT;
148                    newButton = paramicsButton;
149                    break;
150                case 'o':
151                    currentEventType = ScriptEventType.TOW_EVENT;
152                    newButton = towButton;
153                    break;
154                case 'n':
155                    currentEventType = ScriptEventType.UNIT_EVENT;
156                    newButton = unitButton;
157                    break;
158                case 'w':
159                    currentEventType = ScriptEventType.WITNESS_EVENT;
160                    newButton = witnessButton;
161                    break;
162                case 'm':
163                    currentEventType = ScriptEventType.MAINTENANCE_RADIO_EVENT;
164                    newButton = maintenanceRadioButton;
165                    break;
166                case 't':
167                    currentEventType = ScriptEventType.TMT_RADIO_EVENT;
168                    newButton = tmtRadioButton;
169                    break;
170                case 'e':
171                    currentEventType = ScriptEventType.TELEPHONE_EVENT;
172                    newButton = telephoneButton;
173                    break;
174                case 'a':
175                    currentEventType = ScriptEventType.ATMS_EVAL_EVENT;
176                    newButton = atmsEvalButton;
177                    break;
178                case 'l':
179                    currentEventType = ScriptEventType.ACTIVITY_LOG_EVAL_EVENT;
180                    newButton = activityLogEvalButton;
181                    break;
182                case 'd':
183                    currentEventType = ScriptEventType.CAD_EVAL_EVENT;
184                    newButton = cadEvalButton;
185                    break;
186                case 's':
187                    currentEventType = ScriptEventType.CMS_EVAL_EVENT;
188                    newButton = cmsEvalButton;
189                    break;
190                case 'f':
191                    currentEventType = ScriptEventType.FACILITATOR_EVAL_EVENT;
192                    newButton = facilitatorEvalButton;
193                    break;
194                case 'r':
195                    currentEventType = ScriptEventType.RADIO_EVAL_EVENT;
196                    newButton = radioEvalButton;
197                    break;
198                default:
199                    newButton = lastButton;
200            }
201
202            if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
203            {
204                currentEventType = null;
205                newButton = selectButton;
206            }
207
208            if (newButton != null)
209            {
210                newButton.setSelected(true);
211            }
212
213            repaint();
214        }
215
216        /**
217         * Take no action upon key release.
218         *
219         * @param e the key event
220         */
221        @Override
222        public void keyReleased(KeyEvent e)
223        {
224        }
225
226        /**
227         * Take no action upon key release.
228         *
229         * @param e the key event
230         */
231        @Override
232        public void keyTyped(KeyEvent e)
233        {
234        }
235    }
236
237    /**
238     * Constructor. Prep new script model, initialize the GUI, and add listeners
239     * for all buttons.
240     *
241     * @param inc the Script Incident which this window will edit.
242     */
243    public IncidentEditorFrame(ScriptIncident inc, ScriptBuilderFrame topFrame)
244    {
245        this.theIncident = inc;
246        this.savedOffset = this.theIncident.offset;
247        this.theIncident.setOffset(0);
248        this.parent = topFrame;
249        initComponents();
250
251        timelineTickPanel.update(theIncident, incidentTimelinePanel1);
252        timeStampPanel.update(theIncident, incidentTimelinePanel1);
253
254        incidentTimelinePanel1.timelinePanelUpdate(theIncident);
255
256        incidentNumberPanel1.update(theIncident);
257        selectButton.addKeyListener(new TimelineKeyListener());
258        cadButton.addKeyListener(new TimelineKeyListener());
259        cctvButton.addKeyListener(new TimelineKeyListener());
260        chpRadioButton.addKeyListener(new TimelineKeyListener());
261        paramicsButton.addKeyListener(new TimelineKeyListener());
262        towButton.addKeyListener(new TimelineKeyListener());
263        unitButton.addKeyListener(new TimelineKeyListener());
264        witnessButton.addKeyListener(new TimelineKeyListener());
265        maintenanceRadioButton.addKeyListener(new TimelineKeyListener());
266        tmtRadioButton.addKeyListener(new TimelineKeyListener());
267        telephoneButton.addKeyListener(new TimelineKeyListener());
268        atmsEvalButton.addKeyListener(new TimelineKeyListener());
269        activityLogEvalButton.addKeyListener(new TimelineKeyListener());
270        cadEvalButton.addKeyListener(new TimelineKeyListener());
271        cmsEvalButton.addKeyListener(new TimelineKeyListener());
272        facilitatorEvalButton.addKeyListener(new TimelineKeyListener());
273        radioEvalButton.addKeyListener(new TimelineKeyListener());
274
275//        // Hack to refresh the zoom
276//        zoomSlider.setValue(zoomSlider.getValue() - 1);
277//        zoomSlider.setValue(zoomSlider.getValue() + 1);
278        // Set listener for scroll pane
279        AdjustmentListener listener = new MyAdjustmentListener();
280        timelinesScrollPane.getHorizontalScrollBar().addAdjustmentListener(listener);
281        timelinesScrollPane.getVerticalScrollBar().addAdjustmentListener(listener);
282
283        // Button list
284        eventButtons = new ArrayList<JButton>();
285        eventButtons.add(maintenanceRadioButton);
286        eventButtons.add(tmtRadioButton);
287        eventButtons.add(telephoneButton);
288        eventButtons.add(paramicsButton);
289        eventButtons.add(towButton);
290        eventButtons.add(witnessButton);
291        eventButtons.add(unitButton);
292        eventButtons.add(audioButton);
293        eventButtons.add(cadButton);
294        eventButtons.add(cctvButton);
295        eventButtons.add(chpRadioButton);
296        eventButtons.add(selectButton);
297        eventButtons.add(cmsEvalButton);
298        eventButtons.add(atmsEvalButton);
299        eventButtons.add(cadEvalButton);
300        eventButtons.add(activityLogEvalButton);
301        eventButtons.add(facilitatorEvalButton);
302        eventButtons.add(radioEvalButton);
303
304        this.addWindowListener(new WindowAdapter()
305        {
306            @Override
307            public void windowClosing(WindowEvent e)
308            {
309                //Add previous offset back in
310                //If we didn't adjust the offset, this will just set it to the old value
311                //If we deleted the first event(s), this will add the offsets,
312                //to ensure that events stay at the correct times
313                theIncident.setOffset(theIncident.offset + savedOffset);
314                parent.returnFocus();
315            }
316        });
317
318        incidentNumber.setText("" + this.theIncident.number);
319        incidentName.setText("" + this.theIncident.name);
320        incidentDescription.setText("" + this.theIncident.description);
321        zoomSlider.setValue(zoomSlider.getMinimum());
322        this.update(null, this.theIncident);
323    }
324
325    /**
326     * Update the GUI to reflect the model. If the script changed, update all
327     * the incident panels. If a timeslice changed, add any new events to the
328     * model. If an incident gained focus, update the incident info screen to
329     * display its details.
330     *
331     * @param o The observed object
332     * @param arg Either the script model or an incident event, depending on who
333     * called this update
334     */
335    @Override
336    public void update(Observable o, Object arg)
337    {
338        if (arg instanceof ScriptIncident)
339        {
340            theIncident = (ScriptIncident) arg;
341
342            timelineTickPanel.update(theIncident, incidentTimelinePanel1);
343            timeStampPanel.update(theIncident, incidentTimelinePanel1);
344
345            incidentTimelinePanel1.timelinePanelUpdate(theIncident);
346
347            incidentNumberPanel1.update(theIncident);
348
349            /**
350             * DefaultComboBoxModel model = new DefaultComboBoxModel(); for
351             * (ScriptIncident i : script.incidents) { if (i != null)
352             * model.addElement(i); } gotoIncident.setModel(model);*
353             */
354            this.setPreferredSize(this.getSize());
355            pack();
356        }
357        else if (arg instanceof SliceChangedEvent)
358        {
359            TimeSlice slice = ((SliceChangedEvent) arg).slice;
360
361            DefaultListModel model = new DefaultListModel();
362            for (I_ScriptEvent e : slice.events)
363            {
364                model.addElement(e);
365            }
366            scriptEventsList.setModel(model);
367        }
368        else if (arg instanceof IncidentFocusedEvent)
369        {
370            ScriptIncident i = ((IncidentFocusedEvent) arg).incident;
371
372            incidentNumber.setText(Integer.toString(i.number));
373            incidentName.setText(i.name);
374            incidentDescription.setText(i.description);
375
376            //gotoIncident.setSelectedItem(i);
377        }
378        zoomSlider.setMinimum(((timelineTickPanel.getVisibleRect().width - 20)
379                * ScriptBuilderGuiConstants.HORIZONTAL_TICK_RESOLUTION)
380                / Math.max(theIncident.length, ScriptBuilderGuiConstants.TICK_TIMELINE_SMALLEST_LENGTH));
381        zoomSlider.setMaximum(zoomSlider.getMinimum() + 20);
382    }
383
384    /**
385     * This method is called from within the constructor to initialize the form.
386     * WARNING: Do NOT modify this code. The content of this method is always
387     * regenerated by the Form Editor.
388     */
389    @SuppressWarnings("unchecked")
390    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
391    private void initComponents() {
392
393        eventPopupMenu = new javax.swing.JPopupMenu();
394        cadEvent = new javax.swing.JMenuItem();
395        jMenuItem2 = new javax.swing.JMenuItem();
396        radioEvent = new javax.swing.JMenuItem();
397        jMenuItem4 = new javax.swing.JMenuItem();
398        jMenuItem5 = new javax.swing.JMenuItem();
399        jMenuItem6 = new javax.swing.JMenuItem();
400        cadEventFrame = new javax.swing.JFrame();
401        jLabel5 = new javax.swing.JLabel();
402        radioEventFrame = new javax.swing.JFrame();
403        radioTypeLabel = new javax.swing.JLabel();
404        jLabel7 = new javax.swing.JLabel();
405        radioTypeComboBox = new javax.swing.JComboBox();
406        radioMessageScrollPane = new javax.swing.JScrollPane();
407        radioMessage = new javax.swing.JTextArea();
408        okButton = new javax.swing.JButton();
409        cancelButton = new javax.swing.JButton();
410        eventListPopupMenu = new javax.swing.JPopupMenu();
411        editEventList = new javax.swing.JMenuItem();
412        deleteEventList = new javax.swing.JMenuItem();
413        addNoiseFrame = new javax.swing.JFrame();
414        jLabel13 = new javax.swing.JLabel();
415        jSlider1 = new javax.swing.JSlider();
416        jSlider2 = new javax.swing.JSlider();
417        jLabel14 = new javax.swing.JLabel();
418        jSlider3 = new javax.swing.JSlider();
419        jLabel15 = new javax.swing.JLabel();
420        jTextArea1 = new javax.swing.JTextArea();
421        jSlider4 = new javax.swing.JSlider();
422        jLabel16 = new javax.swing.JLabel();
423        jSlider5 = new javax.swing.JSlider();
424        jLabel17 = new javax.swing.JLabel();
425        jButton1 = new javax.swing.JButton();
426        jButton2 = new javax.swing.JButton();
427        jLabel20 = new javax.swing.JLabel();
428        jLabel21 = new javax.swing.JLabel();
429        timelinesScrollPane = new javax.swing.JScrollPane();
430        timelineTickPanel = new scriptbuilder.gui.panels.TimelineTickPanel();
431        incidentTimelinePanel1 = new scriptbuilder.gui.panels.IncidentTimelinePanel();
432        incidentNumberPanel1 = new scriptbuilder.gui.panels.IncidentNumberPanel();
433        scriptEventsPanel = new javax.swing.JPanel();
434        scriptEventsPane = new javax.swing.JScrollPane();
435        scriptEventsList = new javax.swing.JList();
436        zoomSlider = new javax.swing.JSlider();
437        scriptEventsPanel1 = new javax.swing.JPanel();
438        jLabel2 = new javax.swing.JLabel();
439        jLabel3 = new javax.swing.JLabel();
440        jLabel4 = new javax.swing.JLabel();
441        incidentName = new javax.swing.JTextField();
442        incidentDescriptionPane = new javax.swing.JScrollPane();
443        incidentDescription = new javax.swing.JTextArea();
444        incidentNumber = new javax.swing.JTextField();
445        selectButton = new javax.swing.JButton();
446        incidentEventsPanel = new javax.swing.JPanel();
447        maintenanceRadioButton = new javax.swing.JButton();
448        tmtRadioButton = new javax.swing.JButton();
449        telephoneButton = new javax.swing.JButton();
450        unitButton = new javax.swing.JButton();
451        witnessButton = new javax.swing.JButton();
452        paramicsButton = new javax.swing.JButton();
453        towButton = new javax.swing.JButton();
454        audioButton = new javax.swing.JButton();
455        cctvButton = new javax.swing.JButton();
456        cadButton = new javax.swing.JButton();
457        chpRadioButton = new javax.swing.JButton();
458        evaluationEventsPanel = new javax.swing.JPanel();
459        atmsEvalButton = new javax.swing.JButton();
460        cmsEvalButton = new javax.swing.JButton();
461        cadEvalButton = new javax.swing.JButton();
462        facilitatorEvalButton = new javax.swing.JButton();
463        activityLogEvalButton = new javax.swing.JButton();
464        radioEvalButton = new javax.swing.JButton();
465        zoomInIcon = new javax.swing.JLabel();
466        zoomOutIcon = new javax.swing.JLabel();
467        timeStampScrollPane = new javax.swing.JScrollPane();
468        timeStampPanel = new scriptbuilder.gui.panels.TimeStampPanel();
469        btnAddTime = new javax.swing.JButton();
470
471        cadEvent.setText("CAD Event");
472        cadEvent.addMouseListener(new java.awt.event.MouseAdapter() {
473            public void mousePressed(java.awt.event.MouseEvent evt) {
474                cadEventMousePressed(evt);
475            }
476            public void mouseReleased(java.awt.event.MouseEvent evt) {
477                cadEventMouseReleased(evt);
478            }
479        });
480        eventPopupMenu.add(cadEvent);
481
482        jMenuItem2.setText("Paramics Event");
483        eventPopupMenu.add(jMenuItem2);
484
485        radioEvent.setText("Radio Event");
486        radioEvent.addMouseListener(new java.awt.event.MouseAdapter() {
487            public void mousePressed(java.awt.event.MouseEvent evt) {
488                radioEventMousePressed(evt);
489            }
490        });
491        eventPopupMenu.add(radioEvent);
492
493        jMenuItem4.setText("Telephone Event");
494        eventPopupMenu.add(jMenuItem4);
495
496        jMenuItem5.setText("Video Event");
497        eventPopupMenu.add(jMenuItem5);
498
499        jMenuItem6.setText("Evaluation Event");
500        eventPopupMenu.add(jMenuItem6);
501
502        cadEventFrame.setMinimumSize(new java.awt.Dimension(400, 300));
503
504        jLabel5.setText("CAD Entry");
505
506        javax.swing.GroupLayout cadEventFrameLayout = new javax.swing.GroupLayout(cadEventFrame.getContentPane());
507        cadEventFrame.getContentPane().setLayout(cadEventFrameLayout);
508        cadEventFrameLayout.setHorizontalGroup(
509            cadEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
510            .addGroup(cadEventFrameLayout.createSequentialGroup()
511                .addContainerGap()
512                .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)
513                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
514        );
515        cadEventFrameLayout.setVerticalGroup(
516            cadEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
517            .addGroup(cadEventFrameLayout.createSequentialGroup()
518                .addContainerGap()
519                .addComponent(jLabel5)
520                .addContainerGap(1357, Short.MAX_VALUE))
521        );
522
523        radioEventFrame.setTitle("Add Radio Event");
524        radioEventFrame.setMinimumSize(new java.awt.Dimension(400, 300));
525
526        radioTypeLabel.setText("Radio Type:");
527
528        jLabel7.setText("Radio Message:");
529
530        radioTypeComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TMT", "Maintanence" }));
531
532        radioMessageScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
533
534        radioMessage.setColumns(20);
535        radioMessage.setLineWrap(true);
536        radioMessage.setRows(5);
537        radioMessage.setWrapStyleWord(true);
538        radioMessageScrollPane.setViewportView(radioMessage);
539
540        okButton.setText("OK");
541        okButton.addActionListener(new java.awt.event.ActionListener() {
542            public void actionPerformed(java.awt.event.ActionEvent evt) {
543                okButtonActionPerformed(evt);
544            }
545        });
546
547        cancelButton.setText("Cancel");
548        cancelButton.addActionListener(new java.awt.event.ActionListener() {
549            public void actionPerformed(java.awt.event.ActionEvent evt) {
550                cancelButtonActionPerformed(evt);
551            }
552        });
553
554        javax.swing.GroupLayout radioEventFrameLayout = new javax.swing.GroupLayout(radioEventFrame.getContentPane());
555        radioEventFrame.getContentPane().setLayout(radioEventFrameLayout);
556        radioEventFrameLayout.setHorizontalGroup(
557            radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
558            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, radioEventFrameLayout.createSequentialGroup()
559                .addContainerGap()
560                .addGroup(radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
561                    .addComponent(radioMessageScrollPane, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
562                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, radioEventFrameLayout.createSequentialGroup()
563                        .addComponent(radioTypeLabel)
564                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
565                        .addComponent(radioTypeComboBox, 0, 312, Short.MAX_VALUE))
566                    .addComponent(jLabel7, javax.swing.GroupLayout.Alignment.LEADING)
567                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, radioEventFrameLayout.createSequentialGroup()
568                        .addComponent(cancelButton)
569                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 246, Short.MAX_VALUE)
570                        .addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE)))
571                .addContainerGap())
572        );
573        radioEventFrameLayout.setVerticalGroup(
574            radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
575            .addGroup(radioEventFrameLayout.createSequentialGroup()
576                .addContainerGap()
577                .addGroup(radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
578                    .addComponent(radioTypeLabel)
579                    .addComponent(radioTypeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
580                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
581                .addComponent(jLabel7)
582                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
583                .addComponent(radioMessageScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 198, Short.MAX_VALUE)
584                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
585                .addGroup(radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
586                    .addComponent(okButton)
587                    .addComponent(cancelButton))
588                .addContainerGap())
589        );
590
591        editEventList.setText("Edit...");
592        editEventList.addActionListener(new java.awt.event.ActionListener() {
593            public void actionPerformed(java.awt.event.ActionEvent evt) {
594                editEventListActionPerformed(evt);
595            }
596        });
597        eventListPopupMenu.add(editEventList);
598
599        deleteEventList.setText("Delete...");
600        eventListPopupMenu.add(deleteEventList);
601
602        addNoiseFrame.setTitle("Generate Noise");
603        addNoiseFrame.setMinimumSize(new java.awt.Dimension(395, 315));
604        addNoiseFrame.setResizable(false);
605
606        jLabel13.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
607        jLabel13.setText("Radio Chatter: ");
608
609        jLabel14.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
610        jLabel14.setText("Lane Closures:");
611
612        jLabel15.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
613        jLabel15.setText("TMCAL Logs:");
614
615        jTextArea1.setEditable(false);
616        jTextArea1.setColumns(20);
617        jTextArea1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
618        jTextArea1.setLineWrap(true);
619        jTextArea1.setRows(5);
620        jTextArea1.setText("Noise events will be randomly generated for the simulation with frequencies based on the control selections made below");
621        jTextArea1.setWrapStyleWord(true);
622        jTextArea1.setAutoscrolls(false);
623        jTextArea1.setBorder(null);
624        jTextArea1.setDisabledTextColor(new java.awt.Color(0, 0, 0));
625        jTextArea1.setFocusable(false);
626        jTextArea1.setOpaque(false);
627
628        jLabel16.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
629        jLabel16.setText("Background Noise: ");
630
631        jLabel17.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
632        jLabel17.setText("Minor Events:");
633
634        jButton1.setText("Cancel");
635        jButton1.addActionListener(new java.awt.event.ActionListener() {
636            public void actionPerformed(java.awt.event.ActionEvent evt) {
637                jButton1ActionPerformed(evt);
638            }
639        });
640
641        jButton2.setText("Generate");
642        jButton2.addActionListener(new java.awt.event.ActionListener() {
643            public void actionPerformed(java.awt.event.ActionEvent evt) {
644                jButton2ActionPerformed(evt);
645            }
646        });
647
648        jLabel20.setText("Least Frequent");
649
650        jLabel21.setText("Most Frequent");
651
652        javax.swing.GroupLayout addNoiseFrameLayout = new javax.swing.GroupLayout(addNoiseFrame.getContentPane());
653        addNoiseFrame.getContentPane().setLayout(addNoiseFrameLayout);
654        addNoiseFrameLayout.setHorizontalGroup(
655            addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
656            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, addNoiseFrameLayout.createSequentialGroup()
657                .addContainerGap(21, Short.MAX_VALUE)
658                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
659                    .addComponent(jTextArea1, javax.swing.GroupLayout.Alignment.LEADING)
660                    .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
661                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, addNoiseFrameLayout.createSequentialGroup()
662                            .addComponent(jButton1)
663                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
664                            .addComponent(jButton2))
665                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, addNoiseFrameLayout.createSequentialGroup()
666                            .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
667                                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
668                                    .addComponent(jLabel16)
669                                    .addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
670                                    .addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
671                                    .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE))
672                                .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))
673                            .addGap(4, 4, 4)
674                            .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
675                                .addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
676                                .addComponent(jSlider2, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
677                                .addComponent(jSlider3, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
678                                .addComponent(jSlider5, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
679                                .addComponent(jSlider4, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
680                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, addNoiseFrameLayout.createSequentialGroup()
681                                    .addComponent(jLabel20)
682                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
683                                    .addComponent(jLabel21))))))
684                .addGap(20, 20, 20))
685        );
686        addNoiseFrameLayout.setVerticalGroup(
687            addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
688            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, addNoiseFrameLayout.createSequentialGroup()
689                .addContainerGap()
690                .addComponent(jTextArea1, javax.swing.GroupLayout.DEFAULT_SIZE, 39, Short.MAX_VALUE)
691                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
692                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
693                    .addComponent(jLabel21)
694                    .addComponent(jLabel20))
695                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
696                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
697                    .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
698                    .addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
699                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
700                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
701                    .addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
702                    .addComponent(jSlider2, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE))
703                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
704                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
705                    .addComponent(jLabel15)
706                    .addComponent(jSlider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
707                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
708                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
709                    .addComponent(jSlider4, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
710                    .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE))
711                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
712                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
713                    .addComponent(jSlider5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
714                    .addComponent(jLabel17))
715                .addGap(18, 18, 18)
716                .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
717                    .addComponent(jButton1)
718                    .addComponent(jButton2))
719                .addContainerGap())
720        );
721
722        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
723        setTitle("Incident Editor");
724        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
725        setMinimumSize(new java.awt.Dimension(800, 700));
726
727        timelinesScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
728        timelinesScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
729        timelinesScrollPane.setFocusCycleRoot(true);
730        timelinesScrollPane.setFocusTraversalPolicyProvider(true);
731        timelinesScrollPane.setPreferredSize(new java.awt.Dimension(72000, 1341));
732
733        timelineTickPanel.setMaximumSize(new java.awt.Dimension(7200, 32767));
734        timelineTickPanel.setMinimumSize(new java.awt.Dimension(7200, 0));
735        timelineTickPanel.setPreferredSize(new java.awt.Dimension(7200, 1317));
736
737        incidentTimelinePanel1.setMaximumSize(new java.awt.Dimension(32767, 100));
738        incidentTimelinePanel1.setOpaque(false);
739        incidentTimelinePanel1.setPreferredSize(new java.awt.Dimension(691, 100));
740
741        javax.swing.GroupLayout incidentTimelinePanel1Layout = new javax.swing.GroupLayout(incidentTimelinePanel1);
742        incidentTimelinePanel1.setLayout(incidentTimelinePanel1Layout);
743        incidentTimelinePanel1Layout.setHorizontalGroup(
744            incidentTimelinePanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
745            .addGap(0, 6776, Short.MAX_VALUE)
746        );
747        incidentTimelinePanel1Layout.setVerticalGroup(
748            incidentTimelinePanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
749            .addGap(0, 334, Short.MAX_VALUE)
750        );
751
752        incidentNumberPanel1.setOpaque(false);
753
754        javax.swing.GroupLayout incidentNumberPanel1Layout = new javax.swing.GroupLayout(incidentNumberPanel1);
755        incidentNumberPanel1.setLayout(incidentNumberPanel1Layout);
756        incidentNumberPanel1Layout.setHorizontalGroup(
757            incidentNumberPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
758            .addGap(0, 106, Short.MAX_VALUE)
759        );
760        incidentNumberPanel1Layout.setVerticalGroup(
761            incidentNumberPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
762            .addGap(0, 0, Short.MAX_VALUE)
763        );
764
765        javax.swing.GroupLayout timelineTickPanelLayout = new javax.swing.GroupLayout(timelineTickPanel);
766        timelineTickPanel.setLayout(timelineTickPanelLayout);
767        timelineTickPanelLayout.setHorizontalGroup(
768            timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
769            .addGroup(timelineTickPanelLayout.createSequentialGroup()
770                .addContainerGap()
771                .addComponent(incidentNumberPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
772                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
773                .addComponent(incidentTimelinePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 6776, javax.swing.GroupLayout.PREFERRED_SIZE)
774                .addContainerGap(300, Short.MAX_VALUE))
775        );
776        timelineTickPanelLayout.setVerticalGroup(
777            timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
778            .addGroup(timelineTickPanelLayout.createSequentialGroup()
779                .addContainerGap()
780                .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
781                    .addComponent(incidentTimelinePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE)
782                    .addComponent(incidentNumberPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
783                .addContainerGap(977, Short.MAX_VALUE))
784        );
785
786        timelinesScrollPane.setViewportView(timelineTickPanel);
787
788        scriptEventsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Script Events"));
789
790        scriptEventsPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
791
792        scriptEventsList.setModel(new DefaultListModel());
793        scriptEventsList.setComponentPopupMenu(eventListPopupMenu);
794        scriptEventsPane.setViewportView(scriptEventsList);
795
796        javax.swing.GroupLayout scriptEventsPanelLayout = new javax.swing.GroupLayout(scriptEventsPanel);
797        scriptEventsPanel.setLayout(scriptEventsPanelLayout);
798        scriptEventsPanelLayout.setHorizontalGroup(
799            scriptEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
800            .addGroup(scriptEventsPanelLayout.createSequentialGroup()
801                .addContainerGap()
802                .addComponent(scriptEventsPane)
803                .addContainerGap())
804        );
805        scriptEventsPanelLayout.setVerticalGroup(
806            scriptEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
807            .addGroup(scriptEventsPanelLayout.createSequentialGroup()
808                .addComponent(scriptEventsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 215, Short.MAX_VALUE)
809                .addContainerGap())
810        );
811
812        zoomSlider.setMaximum(22);
813        zoomSlider.setMinimum(4);
814        zoomSlider.setOrientation(javax.swing.JSlider.VERTICAL);
815        zoomSlider.setValue(4);
816        zoomSlider.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
817        zoomSlider.setFocusable(false);
818        zoomSlider.addChangeListener(new javax.swing.event.ChangeListener() {
819            public void stateChanged(javax.swing.event.ChangeEvent evt) {
820                zoomSliderStateChanged(evt);
821            }
822        });
823
824        scriptEventsPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Incident Information"));
825
826        jLabel2.setText("Incident Number:");
827
828        jLabel3.setText("Incident Name:");
829
830        jLabel4.setText("Incident Description:");
831
832        incidentName.setEditable(false);
833        incidentName.setText("Media");
834
835        incidentDescriptionPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
836
837        incidentDescription.setEditable(false);
838        incidentDescription.setColumns(20);
839        incidentDescription.setLineWrap(true);
840        incidentDescription.setRows(5);
841        incidentDescription.setText("All media message events are found in this incident.");
842        incidentDescription.setWrapStyleWord(true);
843        incidentDescriptionPane.setViewportView(incidentDescription);
844
845        incidentNumber.setEditable(false);
846        incidentNumber.setText("100");
847
848        javax.swing.GroupLayout scriptEventsPanel1Layout = new javax.swing.GroupLayout(scriptEventsPanel1);
849        scriptEventsPanel1.setLayout(scriptEventsPanel1Layout);
850        scriptEventsPanel1Layout.setHorizontalGroup(
851            scriptEventsPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
852            .addGroup(scriptEventsPanel1Layout.createSequentialGroup()
853                .addContainerGap()
854                .addGroup(scriptEventsPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
855                    .addComponent(incidentDescriptionPane, javax.swing.GroupLayout.Alignment.TRAILING)
856                    .addComponent(jLabel4)
857                    .addGroup(scriptEventsPanel1Layout.createSequentialGroup()
858                        .addGroup(scriptEventsPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
859                            .addComponent(jLabel2)
860                            .addComponent(jLabel3))
861                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
862                        .addGroup(scriptEventsPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
863                            .addComponent(incidentName)
864                            .addComponent(incidentNumber))))
865                .addContainerGap())
866        );
867        scriptEventsPanel1Layout.setVerticalGroup(
868            scriptEventsPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
869            .addGroup(scriptEventsPanel1Layout.createSequentialGroup()
870                .addGroup(scriptEventsPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
871                    .addComponent(jLabel2)
872                    .addComponent(incidentNumber, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
873                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
874                .addGroup(scriptEventsPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
875                    .addComponent(incidentName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
876                    .addComponent(jLabel3))
877                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
878                .addComponent(jLabel4)
879                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
880                .addComponent(incidentDescriptionPane, javax.swing.GroupLayout.DEFAULT_SIZE, 125, Short.MAX_VALUE)
881                .addContainerGap())
882        );
883
884        selectButton.setToolTipText("Select");
885        selectButton.setFocusPainted(false);
886        selectButton.setIconTextGap(0);
887        selectButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
888        selectButton.setPreferredSize(new java.awt.Dimension(30, 25));
889        selectButton.addActionListener(new java.awt.event.ActionListener() {
890            public void actionPerformed(java.awt.event.ActionEvent evt) {
891                selectButtonActionPerformed(evt);
892            }
893        });
894
895        incidentEventsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Incident Events"));
896
897        maintenanceRadioButton.setText("Maintenance Radio");
898        maintenanceRadioButton.setToolTipText("");
899        maintenanceRadioButton.setFocusPainted(false);
900        maintenanceRadioButton.setIconTextGap(0);
901        maintenanceRadioButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
902        maintenanceRadioButton.setPreferredSize(new java.awt.Dimension(30, 25));
903        maintenanceRadioButton.addActionListener(new java.awt.event.ActionListener() {
904            public void actionPerformed(java.awt.event.ActionEvent evt) {
905                maintenanceRadioButtonActionPerformed(evt);
906            }
907        });
908
909        tmtRadioButton.setText("TMT Radio");
910        tmtRadioButton.setToolTipText("");
911        tmtRadioButton.setFocusPainted(false);
912        tmtRadioButton.setIconTextGap(0);
913        tmtRadioButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
914        tmtRadioButton.setPreferredSize(new java.awt.Dimension(30, 25));
915        tmtRadioButton.addActionListener(new java.awt.event.ActionListener() {
916            public void actionPerformed(java.awt.event.ActionEvent evt) {
917                tmtRadioButtonActionPerformed(evt);
918            }
919        });
920
921        telephoneButton.setText("Telephone");
922        telephoneButton.setToolTipText("");
923        telephoneButton.setFocusPainted(false);
924        telephoneButton.setIconTextGap(0);
925        telephoneButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
926        telephoneButton.setPreferredSize(new java.awt.Dimension(30, 25));
927        telephoneButton.addActionListener(new java.awt.event.ActionListener() {
928            public void actionPerformed(java.awt.event.ActionEvent evt) {
929                telephoneButtonActionPerformed(evt);
930            }
931        });
932
933        unitButton.setText("Unit");
934        unitButton.setToolTipText("");
935        unitButton.setFocusPainted(false);
936        unitButton.setIconTextGap(0);
937        unitButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
938        unitButton.setPreferredSize(new java.awt.Dimension(30, 25));
939        unitButton.addActionListener(new java.awt.event.ActionListener() {
940            public void actionPerformed(java.awt.event.ActionEvent evt) {
941                unitButtonActionPerformed(evt);
942            }
943        });
944
945        witnessButton.setText("Witness");
946        witnessButton.setToolTipText("");
947        witnessButton.setFocusPainted(false);
948        witnessButton.setIconTextGap(0);
949        witnessButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
950        witnessButton.setPreferredSize(new java.awt.Dimension(30, 25));
951        witnessButton.addActionListener(new java.awt.event.ActionListener() {
952            public void actionPerformed(java.awt.event.ActionEvent evt) {
953                witnessButtonActionPerformed(evt);
954            }
955        });
956
957        paramicsButton.setText("Paramics");
958        paramicsButton.setToolTipText("");
959        paramicsButton.setFocusPainted(false);
960        paramicsButton.setIconTextGap(0);
961        paramicsButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
962        paramicsButton.setPreferredSize(new java.awt.Dimension(30, 25));
963        paramicsButton.addActionListener(new java.awt.event.ActionListener() {
964            public void actionPerformed(java.awt.event.ActionEvent evt) {
965                paramicsButtonActionPerformed(evt);
966            }
967        });
968
969        towButton.setText("Tow");
970        towButton.setToolTipText("");
971        towButton.setFocusPainted(false);
972        towButton.setIconTextGap(0);
973        towButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
974        towButton.setPreferredSize(new java.awt.Dimension(30, 25));
975        towButton.addActionListener(new java.awt.event.ActionListener() {
976            public void actionPerformed(java.awt.event.ActionEvent evt) {
977                towButtonActionPerformed(evt);
978            }
979        });
980
981        audioButton.setText("Audio");
982        audioButton.setToolTipText("");
983        audioButton.setFocusPainted(false);
984        audioButton.setIconTextGap(0);
985        audioButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
986        audioButton.setPreferredSize(new java.awt.Dimension(30, 25));
987        audioButton.addActionListener(new java.awt.event.ActionListener() {
988            public void actionPerformed(java.awt.event.ActionEvent evt) {
989                audioButtonActionPerformed(evt);
990            }
991        });
992
993        cctvButton.setText("CCTV");
994        cctvButton.setToolTipText("");
995        cctvButton.setFocusPainted(false);
996        cctvButton.setIconTextGap(0);
997        cctvButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
998        cctvButton.setPreferredSize(new java.awt.Dimension(30, 25));
999        cctvButton.addActionListener(new java.awt.event.ActionListener() {
1000            public void actionPerformed(java.awt.event.ActionEvent evt) {
1001                cctvButtonActionPerformed(evt);
1002            }
1003        });
1004
1005        cadButton.setText("CAD");
1006        cadButton.setToolTipText("");
1007        cadButton.setFocusPainted(false);
1008        cadButton.setIconTextGap(0);
1009        cadButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
1010        cadButton.setPreferredSize(new java.awt.Dimension(30, 25));
1011        cadButton.addActionListener(new java.awt.event.ActionListener() {
1012            public void actionPerformed(java.awt.event.ActionEvent evt) {
1013                cadButtonActionPerformed(evt);
1014            }
1015        });
1016
1017        chpRadioButton.setText("CHP Radio");
1018        chpRadioButton.setToolTipText("");
1019        chpRadioButton.setFocusPainted(false);
1020        chpRadioButton.setIconTextGap(0);
1021        chpRadioButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
1022        chpRadioButton.setPreferredSize(new java.awt.Dimension(30, 25));
1023        chpRadioButton.addActionListener(new java.awt.event.ActionListener() {
1024            public void actionPerformed(java.awt.event.ActionEvent evt) {
1025                chpRadioButtonActionPerformed(evt);
1026            }
1027        });
1028
1029        javax.swing.GroupLayout incidentEventsPanelLayout = new javax.swing.GroupLayout(incidentEventsPanel);
1030        incidentEventsPanel.setLayout(incidentEventsPanelLayout);
1031        incidentEventsPanelLayout.setHorizontalGroup(
1032            incidentEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1033            .addGroup(incidentEventsPanelLayout.createSequentialGroup()
1034                .addContainerGap()
1035                .addGroup(incidentEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1036                    .addGroup(incidentEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1037                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, incidentEventsPanelLayout.createSequentialGroup()
1038                            .addComponent(maintenanceRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
1039                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1040                            .addComponent(tmtRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
1041                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1042                            .addComponent(telephoneButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
1043                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1044                            .addComponent(paramicsButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
1045                        .addGroup(incidentEventsPanelLayout.createSequentialGroup()
1046                            .addComponent(towButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
1047                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1048                            .addComponent(unitButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
1049                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1050                            .addComponent(witnessButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
1051                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1052                            .addComponent(audioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)))
1053                    .addGroup(incidentEventsPanelLayout.createSequentialGroup()
1054                        .addComponent(cadButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
1055                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1056                        .addComponent(cctvButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
1057                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1058                        .addComponent(chpRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)))
1059                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
1060        );
1061        incidentEventsPanelLayout.setVerticalGroup(
1062            incidentEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1063            .addGroup(incidentEventsPanelLayout.createSequentialGroup()
1064                .addGroup(incidentEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1065                    .addGroup(incidentEventsPanelLayout.createSequentialGroup()
1066                        .addGroup(incidentEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
1067                            .addComponent(maintenanceRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
1068                            .addComponent(tmtRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
1069                            .addComponent(telephoneButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
1070                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1071                        .addGroup(incidentEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
1072                            .addComponent(towButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
1073                            .addComponent(unitButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
1074                            .addComponent(witnessButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
1075                            .addComponent(audioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)))
1076                    .addComponent(paramicsButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
1077                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1078                .addGroup(incidentEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
1079                    .addGroup(incidentEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
1080                        .addComponent(cctvButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
1081                        .addComponent(chpRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
1082                    .addComponent(cadButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)))
1083        );
1084
1085        evaluationEventsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Evaluation Events"));
1086
1087        atmsEvalButton.setText("ATMS Evaluation");
1088        atmsEvalButton.setToolTipText("");
1089        atmsEvalButton.setFocusPainted(false);
1090        atmsEvalButton.setIconTextGap(0);
1091        atmsEvalButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
1092        atmsEvalButton.setPreferredSize(new java.awt.Dimension(30, 25));
1093        atmsEvalButton.addActionListener(new java.awt.event.ActionListener() {
1094            public void actionPerformed(java.awt.event.ActionEvent evt) {
1095                atmsEvalButtonActionPerformed(evt);
1096            }
1097        });
1098
1099        cmsEvalButton.setText("CMS Evaluation");
1100        cmsEvalButton.setToolTipText("");
1101        cmsEvalButton.setFocusPainted(false);
1102        cmsEvalButton.setIconTextGap(0);
1103        cmsEvalButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
1104        cmsEvalButton.setPreferredSize(new java.awt.Dimension(30, 25));
1105        cmsEvalButton.addActionListener(new java.awt.event.ActionListener() {
1106            public void actionPerformed(java.awt.event.ActionEvent evt) {
1107                cmsEvalButtonActionPerformed(evt);
1108            }
1109        });
1110
1111        cadEvalButton.setText("CAD Evaluation");
1112        cadEvalButton.setToolTipText("");
1113        cadEvalButton.setFocusPainted(false);
1114        cadEvalButton.setIconTextGap(0);
1115        cadEvalButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
1116        cadEvalButton.setPreferredSize(new java.awt.Dimension(30, 25));
1117        cadEvalButton.addActionListener(new java.awt.event.ActionListener() {
1118            public void actionPerformed(java.awt.event.ActionEvent evt) {
1119                cadEvalButtonActionPerformed(evt);
1120            }
1121        });
1122
1123        facilitatorEvalButton.setText("Facilitator Evaluation");
1124        facilitatorEvalButton.setToolTipText("");
1125        facilitatorEvalButton.setFocusPainted(false);
1126        facilitatorEvalButton.setIconTextGap(0);
1127        facilitatorEvalButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
1128        facilitatorEvalButton.setPreferredSize(new java.awt.Dimension(30, 25));
1129        facilitatorEvalButton.addActionListener(new java.awt.event.ActionListener() {
1130            public void actionPerformed(java.awt.event.ActionEvent evt) {
1131                facilitatorEvalButtonActionPerformed(evt);
1132            }
1133        });
1134
1135        activityLogEvalButton.setText("Activity Log Evaluation");
1136        activityLogEvalButton.setToolTipText("");
1137        activityLogEvalButton.setFocusPainted(false);
1138        activityLogEvalButton.setIconTextGap(0);
1139        activityLogEvalButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
1140        activityLogEvalButton.setPreferredSize(new java.awt.Dimension(30, 25));
1141        activityLogEvalButton.addActionListener(new java.awt.event.ActionListener() {
1142            public void actionPerformed(java.awt.event.ActionEvent evt) {
1143                activityLogEvalButtonActionPerformed(evt);
1144            }
1145        });
1146
1147        radioEvalButton.setText("Radio Evaluation");
1148        radioEvalButton.setToolTipText("");
1149        radioEvalButton.setFocusPainted(false);
1150        radioEvalButton.setIconTextGap(0);
1151        radioEvalButton.setMargin(new java.awt.Insets(2, 10, 2, 10));
1152        radioEvalButton.setPreferredSize(new java.awt.Dimension(30, 25));
1153        radioEvalButton.addActionListener(new java.awt.event.ActionListener() {
1154            public void actionPerformed(java.awt.event.ActionEvent evt) {
1155                radioEvalButtonActionPerformed(evt);
1156            }
1157        });
1158
1159        javax.swing.GroupLayout evaluationEventsPanelLayout = new javax.swing.GroupLayout(evaluationEventsPanel);
1160        evaluationEventsPanel.setLayout(evaluationEventsPanelLayout);
1161        evaluationEventsPanelLayout.setHorizontalGroup(
1162            evaluationEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1163            .addGroup(evaluationEventsPanelLayout.createSequentialGroup()
1164                .addContainerGap()
1165                .addGroup(evaluationEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1166                    .addGroup(evaluationEventsPanelLayout.createSequentialGroup()
1167                        .addComponent(atmsEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
1168                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1169                        .addComponent(activityLogEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE))
1170                    .addGroup(evaluationEventsPanelLayout.createSequentialGroup()
1171                        .addComponent(cmsEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
1172                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1173                        .addComponent(facilitatorEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE))
1174                    .addGroup(evaluationEventsPanelLayout.createSequentialGroup()
1175                        .addComponent(cadEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
1176                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1177                        .addComponent(radioEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)))
1178                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
1179        );
1180        evaluationEventsPanelLayout.setVerticalGroup(
1181            evaluationEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1182            .addGroup(evaluationEventsPanelLayout.createSequentialGroup()
1183                .addGroup(evaluationEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1184                    .addComponent(cmsEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
1185                    .addComponent(facilitatorEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
1186                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1187                .addGroup(evaluationEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1188                    .addComponent(atmsEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
1189                    .addComponent(activityLogEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
1190                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1191                .addGroup(evaluationEventsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
1192                    .addComponent(cadEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
1193                    .addComponent(radioEvalButton, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)))
1194        );
1195
1196        zoomInIcon.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ZoomIn.png"))); // NOI18N
1197        zoomInIcon.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
1198        zoomInIcon.addMouseListener(new java.awt.event.MouseAdapter() {
1199            public void mouseClicked(java.awt.event.MouseEvent evt) {
1200                zoomInIconMouseClicked(evt);
1201            }
1202        });
1203
1204        zoomOutIcon.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ZoomOut.png"))); // NOI18N
1205        zoomOutIcon.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
1206        zoomOutIcon.addMouseListener(new java.awt.event.MouseAdapter() {
1207            public void mouseClicked(java.awt.event.MouseEvent evt) {
1208                zoomOutIconMouseClicked(evt);
1209            }
1210        });
1211
1212        timeStampScrollPane.setBorder(null);
1213        timeStampScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
1214        timeStampScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
1215
1216        javax.swing.GroupLayout timeStampPanelLayout = new javax.swing.GroupLayout(timeStampPanel);
1217        timeStampPanel.setLayout(timeStampPanelLayout);
1218        timeStampPanelLayout.setHorizontalGroup(
1219            timeStampPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1220            .addGap(0, 1036, Short.MAX_VALUE)
1221        );
1222        timeStampPanelLayout.setVerticalGroup(
1223            timeStampPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1224            .addGap(0, 100, Short.MAX_VALUE)
1225        );
1226
1227        timeStampScrollPane.setViewportView(timeStampPanel);
1228
1229        btnAddTime.setText("+15:00");
1230        btnAddTime.addActionListener(new java.awt.event.ActionListener() {
1231            public void actionPerformed(java.awt.event.ActionEvent evt) {
1232                btnAddTimeActionPerformed(evt);
1233            }
1234        });
1235
1236        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
1237        getContentPane().setLayout(layout);
1238        layout.setHorizontalGroup(
1239            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1240            .addGroup(layout.createSequentialGroup()
1241                .addContainerGap()
1242                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1243                    .addGroup(layout.createSequentialGroup()
1244                        .addComponent(selectButton, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
1245                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1246                        .addComponent(incidentEventsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1247                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1248                        .addComponent(evaluationEventsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1249                        .addGap(18, 18, 18)
1250                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1251                            .addGroup(layout.createSequentialGroup()
1252                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1253                                    .addComponent(zoomInIcon)
1254                                    .addComponent(zoomOutIcon))
1255                                .addGap(0, 0, Short.MAX_VALUE))
1256                            .addGroup(layout.createSequentialGroup()
1257                                .addComponent(zoomSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
1258                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1259                                .addComponent(btnAddTime, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
1260                    .addComponent(timelinesScrollPane, 0, 0, Short.MAX_VALUE)
1261                    .addComponent(timeStampScrollPane)
1262                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
1263                        .addComponent(scriptEventsPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1264                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1265                        .addComponent(scriptEventsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
1266                .addContainerGap())
1267        );
1268        layout.setVerticalGroup(
1269            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1270            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
1271                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1272                    .addGroup(layout.createSequentialGroup()
1273                        .addContainerGap()
1274                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1275                            .addComponent(evaluationEventsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1276                            .addComponent(incidentEventsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1277                            .addGroup(layout.createSequentialGroup()
1278                                .addGap(47, 47, 47)
1279                                .addComponent(selectButton, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE))))
1280                    .addGroup(layout.createSequentialGroup()
1281                        .addGap(20, 20, 20)
1282                        .addComponent(zoomInIcon)
1283                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1284                            .addGroup(layout.createSequentialGroup()
1285                                .addGap(1, 1, 1)
1286                                .addComponent(zoomSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE))
1287                            .addGroup(layout.createSequentialGroup()
1288                                .addGap(17, 17, 17)
1289                                .addComponent(btnAddTime, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)))
1290                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1291                        .addComponent(zoomOutIcon)))
1292                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1293                .addComponent(timeStampScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
1294                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1295                .addComponent(timelinesScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 324, javax.swing.GroupLayout.PREFERRED_SIZE)
1296                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1297                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1298                    .addComponent(scriptEventsPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1299                    .addComponent(scriptEventsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
1300                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
1301        );
1302
1303        pack();
1304    }// </editor-fold>//GEN-END:initComponents
1305
1306    /**
1307     * Scale the timeline width based on zoom slider position.
1308     *
1309     * @param evt the state change event
1310     */
1311    private void zoomSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_zoomSliderStateChanged
1312        ScriptBuilderGuiConstants.PIXEL_WIDTH_PER_HORIZONTAL_TICK = zoomSlider.getValue();
1313        this.update(null, theIncident);
1314        pack();
1315        repaint();
1316    }//GEN-LAST:event_zoomSliderStateChanged
1317
1318    private void cadEventMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cadEventMousePressed
1319    }//GEN-LAST:event_cadEventMousePressed
1320
1321    private void radioEventMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_radioEventMousePressed
1322    }//GEN-LAST:event_radioEventMousePressed
1323
1324    private void cadEventMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cadEventMouseReleased
1325    }//GEN-LAST:event_cadEventMouseReleased
1326
1327    private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
1328    }//GEN-LAST:event_okButtonActionPerformed
1329
1330    /**
1331     * If cancel button is pressed, close radio event editor
1332     *
1333     * @param evt the button press event
1334     */
1335    private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
1336        radioMessage.setText("");
1337        radioTypeComboBox.setSelectedIndex(0);
1338        radioEventFrame.setVisible(false);
1339    }//GEN-LAST:event_cancelButtonActionPerformed
1340
1341    private void editEventListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editEventListActionPerformed
1342    }//GEN-LAST:event_editEventListActionPerformed
1343
1344    /**
1345     * Deselects new event type upon click of blank "select" button.
1346     *
1347     * @param evt the button press event
1348     */
1349    private void selectButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectButtonActionPerformed
1350        currentEventType = null;
1351        for (JButton eb : eventButtons)
1352        {
1353            eb.setSelected(false);
1354        }
1355        selectButton.setSelected(true);
1356    }//GEN-LAST:event_selectButtonActionPerformed
1357
1358    /**
1359     * Selects CAD_EVENT as the current type of new event, upon click of "CAD
1360     * Event" button.
1361     *
1362     * @param evt the button press event
1363     */
1364    private void cadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cadButtonActionPerformed
1365        currentEventType = ScriptEventType.CAD_EVENT;
1366        for (JButton eb : eventButtons)
1367        {
1368            eb.setSelected(false);
1369        }
1370        cadButton.setSelected(true);
1371    }//GEN-LAST:event_cadButtonActionPerformed
1372
1373    /**
1374     * Selects CCTV_EVENT as the current type of new event, upon click of "CCTV
1375     * Event" button.
1376     *
1377     * @param evt the button press event
1378     */
1379    private void cctvButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cctvButtonActionPerformed
1380        currentEventType = ScriptEventType.CCTV_EVENT;
1381        for (JButton eb : eventButtons)
1382        {
1383            eb.setSelected(false);
1384        }
1385        cctvButton.setSelected(true);
1386    }//GEN-LAST:event_cctvButtonActionPerformed
1387
1388    /**
1389     * Selects CHP_RADIO_EVENT as the current type of new event, upon click of
1390     * "CHP Radio Event" button.
1391     *
1392     * @param evt the button press event
1393     */
1394    private void chpRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chpRadioButtonActionPerformed
1395        currentEventType = ScriptEventType.CHP_RADIO_EVENT;
1396        for (JButton eb : eventButtons)
1397        {
1398            eb.setSelected(false);
1399        }
1400        chpRadioButton.setSelected(true);
1401    }//GEN-LAST:event_chpRadioButtonActionPerformed
1402
1403    /**
1404     * Hides the noise generation screen upon click of the "Cancel" button.
1405     *
1406     * @param evt the button press event
1407     */
1408    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
1409        addNoiseFrame.setVisible(false);
1410    }//GEN-LAST:event_jButton1ActionPerformed
1411
1412    /**
1413     * Generates random noise upon click of the "OK" button, then hides the
1414     * noise generation screen.
1415     *
1416     * @param evt the button press event
1417     */
1418    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
1419        Random rng = new Random();
1420        ScriptEventType[] eventTypes = ScriptEventType.values();
1421
1422        /* For prototyping purpose, ignore the sliders and average their values */
1423        int total = jSlider1.getValue() + jSlider2.getValue() + jSlider3.getValue() + jSlider5.getValue() + jSlider4.getValue();
1424        total /= 5;
1425
1426        for (int i = 0; i < theIncident.slices.size(); i++)
1427        {
1428            theIncident.slices.get(i).events.clear();
1429        }
1430
1431        for (int i = 0; i < total; i++)
1432        {
1433            int n = rng.nextInt();
1434            int s = rng.nextInt();
1435            int e = rng.nextInt();
1436            if (n < 0)
1437            {
1438                n *= -1;
1439            }
1440            if (s < 0)
1441            {
1442                s *= -1;
1443            }
1444            if (e < 0)
1445            {
1446                e *= -1;
1447            }
1448
1449            theIncident.slices.get(s % (theIncident.slices.size())).addEvent(ScriptEvent.factoryByType(eventTypes[e % eventTypes.length]));
1450        }
1451
1452        addNoiseFrame.setVisible(false);
1453
1454        this.update(null, theIncident);
1455}//GEN-LAST:event_jButton2ActionPerformed
1456
1457    /**
1458     * Selects WITNESS_EVENT as the current type of new event, upon click of
1459     * "Witness Event" button.
1460     *
1461     * @param evt the button press event
1462     */
1463    private void witnessButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_witnessButtonActionPerformed
1464        currentEventType = ScriptEventType.WITNESS_EVENT;
1465        for (JButton eb : eventButtons)
1466        {
1467            eb.setSelected(false);
1468        }
1469        witnessButton.setSelected(true);
1470    }//GEN-LAST:event_witnessButtonActionPerformed
1471
1472    /**
1473     * Selects UNIT_EVENT as the current type of new event, upon click of "Unit
1474     * Event" button.
1475     *
1476     * @param evt the button press event
1477     */
1478    private void unitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_unitButtonActionPerformed
1479        currentEventType = ScriptEventType.UNIT_EVENT;
1480        for (JButton eb : eventButtons)
1481        {
1482            eb.setSelected(false);
1483        }
1484        unitButton.setSelected(true);
1485    }//GEN-LAST:event_unitButtonActionPerformed
1486
1487    /**
1488     * Selects TOW_EVENT as the current type of new event, upon click of "TOW
1489     * Event" button.
1490     *
1491     * @param evt the button press event
1492     */
1493    private void towButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_towButtonActionPerformed
1494        currentEventType = ScriptEventType.TOW_EVENT;
1495        for (JButton eb : eventButtons)
1496        {
1497            eb.setSelected(false);
1498        }
1499        towButton.setSelected(true);
1500    }//GEN-LAST:event_towButtonActionPerformed
1501
1502    /**
1503     * Selects PARAMICS_EVENT as the current type of new event, upon click of
1504     * "Paramics Event" button.
1505     *
1506     * @param evt the button press event
1507     */
1508    private void paramicsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_paramicsButtonActionPerformed
1509        currentEventType = ScriptEventType.PARAMICS_EVENT;
1510        for (JButton eb : eventButtons)
1511        {
1512            eb.setSelected(false);
1513        }
1514        paramicsButton.setSelected(true);
1515    }//GEN-LAST:event_paramicsButtonActionPerformed
1516
1517    /**
1518     * Selects MAINTENANCE_RADIO_EVENT as the current type of new event, upon
1519     * click of "Maintenance Radio Event" button.
1520     *
1521     * @param evt the button press event
1522     */
1523    private void maintenanceRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_maintenanceRadioButtonActionPerformed
1524        currentEventType = ScriptEventType.MAINTENANCE_RADIO_EVENT;
1525        for (JButton eb : eventButtons)
1526        {
1527            eb.setSelected(false);
1528        }
1529        maintenanceRadioButton.setSelected(true);
1530    }//GEN-LAST:event_maintenanceRadioButtonActionPerformed
1531
1532    /**
1533     * Selects ATMS_EVAL_EVENT as the current type of new event, upon click of
1534     * "ATMS Evaluation Event" button.
1535     *
1536     * @param evt the button press event
1537     */
1538    private void atmsEvalButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_atmsEvalButtonActionPerformed
1539        currentEventType = ScriptEventType.ATMS_EVAL_EVENT;
1540        for (JButton eb : eventButtons)
1541        {
1542            eb.setSelected(false);
1543        }
1544        atmsEvalButton.setSelected(true);
1545    }//GEN-LAST:event_atmsEvalButtonActionPerformed
1546
1547    /**
1548     * Selects TELEPHONE_EVENT as the current type of new event, upon click of
1549     * "Telephone Event" button.
1550     *
1551     * @param evt the button press event
1552     */
1553    private void telephoneButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_telephoneButtonActionPerformed
1554        currentEventType = ScriptEventType.TELEPHONE_EVENT;
1555        for (JButton eb : eventButtons)
1556        {
1557            eb.setSelected(false);
1558        }
1559        telephoneButton.setSelected(true);
1560    }//GEN-LAST:event_telephoneButtonActionPerformed
1561
1562    /**
1563     * Selects TMT_RADIO_EVENT as the current type of new event, upon click of
1564     * "TMT Radio Event" button.
1565     *
1566     * @param evt the button press event
1567     */
1568    private void tmtRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tmtRadioButtonActionPerformed
1569        currentEventType = ScriptEventType.TMT_RADIO_EVENT;
1570        for (JButton eb : eventButtons)
1571        {
1572            eb.setSelected(false);
1573        }
1574        tmtRadioButton.setSelected(true);
1575    }//GEN-LAST:event_tmtRadioButtonActionPerformed
1576
1577    /**
1578     * Selects CMS_EVAL_EVENT as the current type of new event, upon click of
1579     * "CMS Evaluation Event" button.
1580     *
1581     * @param evt the button press event
1582     */
1583    private void cmsEvalButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmsEvalButtonActionPerformed
1584        currentEventType = ScriptEventType.CMS_EVAL_EVENT;
1585        for (JButton eb : eventButtons)
1586        {
1587            eb.setSelected(false);
1588        }
1589        cmsEvalButton.setSelected(true);
1590    }//GEN-LAST:event_cmsEvalButtonActionPerformed
1591
1592    /**
1593     * Selects CAD_EVAL_EVENT as the current type of new event, upon click of
1594     * "CAD Evaluation Event" button.
1595     *
1596     * @param evt the button press event
1597     */
1598    private void cadEvalButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cadEvalButtonActionPerformed
1599        currentEventType = ScriptEventType.CAD_EVAL_EVENT;
1600        for (JButton eb : eventButtons)
1601        {
1602            eb.setSelected(false);
1603        }
1604        cadEvalButton.setSelected(true);
1605    }//GEN-LAST:event_cadEvalButtonActionPerformed
1606
1607    /**
1608     * Selects ACTIVITY_LOG_EVAL_EVENT as the current type of new event, upon
1609     * click of "Activity Log Evaluation Event" button.
1610     *
1611     * @param evt the button press event
1612     */
1613    private void activityLogEvalButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_activityLogEvalButtonActionPerformed
1614        currentEventType = ScriptEventType.ACTIVITY_LOG_EVAL_EVENT;
1615        for (JButton eb : eventButtons)
1616        {
1617            eb.setSelected(false);
1618        }
1619        activityLogEvalButton.setSelected(true);
1620    }//GEN-LAST:event_activityLogEvalButtonActionPerformed
1621
1622    /**
1623     * Selects RADIO_EVAL_EVENT as the current type of new event, upon click of
1624     * "Radio Evaluation Event" button.
1625     *
1626     * @param evt the button press event
1627     */
1628    private void radioEvalButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioEvalButtonActionPerformed
1629        currentEventType = ScriptEventType.RADIO_EVAL_EVENT;
1630        for (JButton eb : eventButtons)
1631        {
1632            eb.setSelected(false);
1633        }
1634        radioEvalButton.setSelected(true);
1635    }//GEN-LAST:event_radioEvalButtonActionPerformed
1636
1637    /**
1638     * Selects FACILITATOR_EVAL_EVENT as the current type of new event, upon
1639     * click of "Facilitator Evaluation Event" button.
1640     *
1641     * @param evt the button press event
1642     */
1643    private void facilitatorEvalButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_facilitatorEvalButtonActionPerformed
1644        currentEventType = ScriptEventType.FACILITATOR_EVAL_EVENT;
1645        for (JButton eb : eventButtons)
1646        {
1647            eb.setSelected(false);
1648        }
1649        facilitatorEvalButton.setSelected(true);
1650    }//GEN-LAST:event_facilitatorEvalButtonActionPerformed
1651
1652    /**
1653     * Selects AUDIO_EVENT as the current type of new event, upon click of
1654     * "Audio Event" button.
1655     *
1656     * @param evt the button press event
1657     */
1658    private void audioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_audioButtonActionPerformed
1659        currentEventType = ScriptEventType.AUDIO_EVENT;
1660        for (JButton eb : eventButtons)
1661        {
1662            eb.setSelected(false);
1663        }
1664        audioButton.setSelected(true);
1665    }//GEN-LAST:event_audioButtonActionPerformed
1666
1667    /**
1668     * Increases zoom level upon click of the "Zoom in" icon.
1669     *
1670     * @param evt the mouse event
1671     */
1672    private void zoomInIconMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_zoomInIconMouseClicked
1673        zoomSlider.setValue(zoomSlider.getValue() >= 21 ? 21 : zoomSlider.getValue() + 1);
1674    }//GEN-LAST:event_zoomInIconMouseClicked
1675
1676    /**
1677     * Decreases zoom level upon click of the "Zoom out" icon.
1678     *
1679     * @param evt the mouse event
1680     */
1681    private void zoomOutIconMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_zoomOutIconMouseClicked
1682        zoomSlider.setValue(zoomSlider.getValue() <= 5 ? 5 : zoomSlider.getValue() - 1);
1683    }//GEN-LAST:event_zoomOutIconMouseClicked
1684
1685    private void btnAddTimeActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnAddTimeActionPerformed
1686    {//GEN-HEADEREND:event_btnAddTimeActionPerformed
1687        incidentTimelinePanel1.requestedEditorFillerTime += IncidentTimelinePanel.FILLER_INTERVAL_SECONDS;
1688        this.update(null, theIncident);
1689    }//GEN-LAST:event_btnAddTimeActionPerformed
1690
1691    /**
1692     * Read the version number from the application properties. The file
1693     * 'application.properties' is generated by build.xml.
1694     *
1695     * @return a version string obtained from application.properties file, or
1696     * "Version: unknown" if an IOerror prevents us from reading the file.
1697     */
1698    private String getAppVersion()
1699    {
1700        String propfilename = "/scriptbuilder/gui/application.properties";
1701        String propKey = "Application.revision";
1702        String version = "unknown";
1703        // Load the application properties (created by build.xml)
1704        try
1705        {
1706            Properties props = new Properties();
1707            props.load(this.getClass().getResourceAsStream(propfilename));
1708            version = (String) props.get(propKey);
1709        }
1710        catch (IOException ex)
1711        {
1712            Logger.getLogger("scriptbuilder.gui").log(Level.SEVERE,
1713                    "ScriptBuilderFrame.getAppVersion()."
1714                    + " IOError reading " + propfilename);
1715        }
1716        catch (NullPointerException npe)
1717        {
1718            Logger.getLogger("scriptbuilder.gui").log(Level.SEVERE,
1719                    "ScriptBuilderFrame.getAppVersion().load."
1720                    + " Missing file: " + propfilename);
1721        }
1722        return version;
1723    }
1724
1725//    /**
1726//     * Runs the script builder.
1727//     *
1728//     * @param args the command line arguments
1729//     */
1730//    public static void main(String args[])
1731//    {
1732//        try
1733//        {
1734//            UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
1735//        }
1736//        catch (ClassNotFoundException ex)
1737//        {
1738//        }
1739//        catch (InstantiationException ex)
1740//        {
1741//        }
1742//        catch (IllegalAccessException ex)
1743//        {
1744//        }
1745//        catch (UnsupportedLookAndFeelException ex)
1746//        {
1747//        }
1748//
1749//        try
1750//        {
1751//            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
1752//        }
1753//        catch (ClassNotFoundException ex)
1754//        {
1755//        }
1756//        catch (InstantiationException ex)
1757//        {
1758//        }
1759//        catch (IllegalAccessException ex)
1760//        {
1761//        }
1762//        catch (UnsupportedLookAndFeelException ex)
1763//        {
1764//        }
1765//
1766//        java.awt.EventQueue.invokeLater(
1767//                new Runnable()
1768//                {
1769//                    public void run()
1770//                    {
1771//                        new IncidentEditorFrame().setVisible(true);
1772//                    }
1773//                });
1774//    }
1775    // Variables declaration - do not modify//GEN-BEGIN:variables
1776    private javax.swing.JButton activityLogEvalButton;
1777    private javax.swing.JFrame addNoiseFrame;
1778    private javax.swing.JButton atmsEvalButton;
1779    private javax.swing.JButton audioButton;
1780    private javax.swing.JButton btnAddTime;
1781    private javax.swing.JButton cadButton;
1782    private javax.swing.JButton cadEvalButton;
1783    private javax.swing.JMenuItem cadEvent;
1784    private javax.swing.JFrame cadEventFrame;
1785    private javax.swing.JButton cancelButton;
1786    private javax.swing.JButton cctvButton;
1787    private javax.swing.JButton chpRadioButton;
1788    private javax.swing.JButton cmsEvalButton;
1789    private javax.swing.JMenuItem deleteEventList;
1790    private javax.swing.JMenuItem editEventList;
1791    private javax.swing.JPanel evaluationEventsPanel;
1792    private javax.swing.JPopupMenu eventListPopupMenu;
1793    private javax.swing.JPopupMenu eventPopupMenu;
1794    private javax.swing.JButton facilitatorEvalButton;
1795    private javax.swing.JTextArea incidentDescription;
1796    private javax.swing.JScrollPane incidentDescriptionPane;
1797    private javax.swing.JPanel incidentEventsPanel;
1798    private javax.swing.JTextField incidentName;
1799    private javax.swing.JTextField incidentNumber;
1800    private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel1;
1801    private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel1;
1802    private javax.swing.JButton jButton1;
1803    private javax.swing.JButton jButton2;
1804    private javax.swing.JLabel jLabel13;
1805    private javax.swing.JLabel jLabel14;
1806    private javax.swing.JLabel jLabel15;
1807    private javax.swing.JLabel jLabel16;
1808    private javax.swing.JLabel jLabel17;
1809    private javax.swing.JLabel jLabel2;
1810    private javax.swing.JLabel jLabel20;
1811    private javax.swing.JLabel jLabel21;
1812    private javax.swing.JLabel jLabel3;
1813    private javax.swing.JLabel jLabel4;
1814    private javax.swing.JLabel jLabel5;
1815    private javax.swing.JLabel jLabel7;
1816    private javax.swing.JMenuItem jMenuItem2;
1817    private javax.swing.JMenuItem jMenuItem4;
1818    private javax.swing.JMenuItem jMenuItem5;
1819    private javax.swing.JMenuItem jMenuItem6;
1820    private javax.swing.JSlider jSlider1;
1821    private javax.swing.JSlider jSlider2;
1822    private javax.swing.JSlider jSlider3;
1823    private javax.swing.JSlider jSlider4;
1824    private javax.swing.JSlider jSlider5;
1825    private javax.swing.JTextArea jTextArea1;
1826    private javax.swing.JButton maintenanceRadioButton;
1827    private javax.swing.JButton okButton;
1828    private javax.swing.JButton paramicsButton;
1829    private javax.swing.JButton radioEvalButton;
1830    private javax.swing.JMenuItem radioEvent;
1831    private javax.swing.JFrame radioEventFrame;
1832    private javax.swing.JTextArea radioMessage;
1833    private javax.swing.JScrollPane radioMessageScrollPane;
1834    private javax.swing.JComboBox radioTypeComboBox;
1835    private javax.swing.JLabel radioTypeLabel;
1836    private javax.swing.JList scriptEventsList;
1837    private javax.swing.JScrollPane scriptEventsPane;
1838    private javax.swing.JPanel scriptEventsPanel;
1839    private javax.swing.JPanel scriptEventsPanel1;
1840    private javax.swing.JButton selectButton;
1841    private javax.swing.JButton telephoneButton;
1842    private scriptbuilder.gui.panels.TimeStampPanel timeStampPanel;
1843    private javax.swing.JScrollPane timeStampScrollPane;
1844    private scriptbuilder.gui.panels.TimelineTickPanel timelineTickPanel;
1845    private javax.swing.JScrollPane timelinesScrollPane;
1846    private javax.swing.JButton tmtRadioButton;
1847    private javax.swing.JButton towButton;
1848    private javax.swing.JButton unitButton;
1849    private javax.swing.JButton witnessButton;
1850    private javax.swing.JLabel zoomInIcon;
1851    private javax.swing.JLabel zoomOutIcon;
1852    private javax.swing.JSlider zoomSlider;
1853    // End of variables declaration//GEN-END:variables
1854}
Note: See TracBrowser for help on using the repository browser.