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

Revision 78, 87.2 KB checked in by bmcguffin, 9 years ago (diff)

Changed algorithm that calculated minimum possible zoom.

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