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

Revision 103, 89.5 KB checked in by bmcguffin, 9 years ago (diff)

Individual incident editor window now shows the relevant incident as though it started at 00:00:00. When window is closed, the incident is re-inserted into the correct position.

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