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

Revision 113, 90.3 KB checked in by bmcguffin, 9 years ago (diff)

Added constructor to IncidentTimelinePanel? with a boolean parameter to determine whether the panel can display a popup menu. The incident editor frame no longer displays the popup menu upon right-click.

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