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

Revision 89, 87.0 KB checked in by bmcguffin, 9 years ago (diff)

Added dropdown menu item to ScriptBuilderFrame?: "Delete Incident". When clicked, user may select an existing incident to delete. Program will prompt user to confirm the deletion, then remove the incident from the script and refresh the display.

Added button to individual event editor window: "Remove this event". When clicked, the currently displayed event will be removed from the timeslice it is in. The display will be refreshed accordingly. NOTE: This still has some bugs, namely that the last remaining event in a timeslice fails to be deleted.

Restructured Interface ScriptEventEditorPanel? to include a removeAssociatedEvent method, which calls a new method in I_ScriptEvent called removeThis, which causes the event to be removed from its timeslice.

Editor.Java previously contained several classes and enums, none of which were set to private scope. Moved these extra classes to their own files to decrease clutter in Editor.java and increase readability of all files.

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