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

Revision 73, 87.1 KB checked in by bmcguffin, 9 years ago (diff)

Updated details in incident editor window allowing editor to more accurately reflect details in the incident.

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