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

Revision 104, 89.0 KB checked in by jdalbey, 9 years ago (diff)

IncidentEditor?: Changed text in title bar from "Script Builder" to "Incident Editor"

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