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

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

Added javadoc for several files.

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