/* * ScriptBuilderFrame.java * * Created on May 8, 2010, 12:01:46 PM */ package scriptbuilder.gui; import java.awt.Adjustable; import java.awt.Color; import java.awt.event.AdjustmentEvent; import java.awt.event.AdjustmentListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.File; import java.io.IOException; import java.util.Observable; import java.util.Observer; import java.util.Properties; import java.util.Random; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.DefaultListModel; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.event.ChangeEvent; import scriptbuilder.gui.panels.IncidentTimelinePanel; import scriptbuilder.structures.ScriptEvent; import scriptbuilder.structures.ScriptEvent.ScriptEventType; import scriptbuilder.structures.ScriptIncident; import scriptbuilder.structures.ScriptIncident.IncidentFocusedEvent; import scriptbuilder.structures.ScriptIncident.SliceChangedEvent; import scriptbuilder.structures.SimulationScript; import scriptbuilder.structures.TimeSlice; import scriptbuilder.structures.events.I_ScriptEvent; /** * GUI for the script builder. Contains all panels and editor elements. Performs * updates to reflect script model, which it observes. * * @author Greg Eddington * @author Bryan McGuffin */ public class ScriptBuilderFrame extends javax.swing.JFrame implements Observer { /** * The script model. */ private SimulationScript script; /** * The current type of selected event. */ public ScriptEventType currentEventType; /** * True if we are currently editing an incident. */ private boolean editingIncident; /** * Index of the previous incident. */ private int oldIncidentIndex; /** * Get the script currently in use. * * @return the script model object */ public SimulationScript getScript() { return script; } /** * Listener for the scroll pane. */ class MyAdjustmentListener implements AdjustmentListener { /** * If the incident timeline is scrolled horizontally, the timestamp * panel is updated to reflect it. * * @param evt the adjustment event */ @Override public void adjustmentValueChanged(AdjustmentEvent evt) { if (evt.getAdjustable().getOrientation() == Adjustable.HORIZONTAL) { timeStampScrollPane.getHorizontalScrollBar() .setValue(timelinesScrollPane.getHorizontalScrollBar().getValue()); } else { // Event from vertical scrollbar } repaint(); } } /** * Listener for key presses. Used for hotkeys for different event types. */ private class TimelineKeyListener implements KeyListener { /** * If a hotkey is pressed, select that type of event. * * @param e the key event */ @Override public void keyPressed(KeyEvent e) { repaint(); } /** * Take no action upon key release. * * @param e the key event */ @Override public void keyReleased(KeyEvent e) { } /** * Take no action upon key release. * * @param e the key event */ @Override public void keyTyped(KeyEvent e) { } } /** * Constructor. Prep new script model, initialize the GUI, and add listeners * for all buttons. */ public ScriptBuilderFrame() { script = new SimulationScript(); script.addObserver(this); initComponents(); //We don't currently want the button to be present in this window btnAddTime.setVisible(false); this.update(null, script); // Hack to refresh the zoom /* zoomSlider.setValue(zoomSlider.getValue() - 1); zoomSlider.setValue(zoomSlider.getValue() + 1); */ // Set listener for scroll pane AdjustmentListener listener = new MyAdjustmentListener(); timelinesScrollPane.getHorizontalScrollBar().addAdjustmentListener(listener); timelinesScrollPane.getVerticalScrollBar().addAdjustmentListener(listener); repaint(); } /** * Update the GUI to reflect the model. If the script changed, update all * the incident panels. If a timeslice changed, add any new events to the * model. If an incident gained focus, update the incident info screen to * display its details. * * @param o The observed object * @param arg Either the script model or an incident event, depending on who * called this update */ @Override public void update(Observable o, Object arg) { //Three major update types: whole script, and 2 event updates if (arg instanceof SimulationScript) { script = (SimulationScript) arg; //If we don't have exactly 10 events something is wrong if (script.incidents.size() != 10) { return; } //Call update on major panels timelineTickPanel.update(script); timeStampPanel.update(script); //Call update on all timeline panels incidentTimelinePanel1.timelinePanelUpdate(script.incidents.get(0)); incidentTimelinePanel2.timelinePanelUpdate(script.incidents.get(1)); incidentTimelinePanel3.timelinePanelUpdate(script.incidents.get(2)); incidentTimelinePanel4.timelinePanelUpdate(script.incidents.get(3)); incidentTimelinePanel5.timelinePanelUpdate(script.incidents.get(4)); incidentTimelinePanel6.timelinePanelUpdate(script.incidents.get(5)); incidentTimelinePanel7.timelinePanelUpdate(script.incidents.get(6)); incidentTimelinePanel8.timelinePanelUpdate(script.incidents.get(7)); incidentTimelinePanel9.timelinePanelUpdate(script.incidents.get(8)); incidentTimelinePanel10.timelinePanelUpdate(script.incidents.get(9)); //Cal update on number panels incidentNumberPanel1.update(script.incidents.get(0)); incidentNumberPanel2.update(script.incidents.get(1)); incidentNumberPanel3.update(script.incidents.get(2)); incidentNumberPanel4.update(script.incidents.get(3)); incidentNumberPanel5.update(script.incidents.get(4)); incidentNumberPanel6.update(script.incidents.get(5)); incidentNumberPanel7.update(script.incidents.get(6)); incidentNumberPanel8.update(script.incidents.get(7)); incidentNumberPanel9.update(script.incidents.get(8)); incidentNumberPanel10.update(script.incidents.get(9)); /** * DefaultComboBoxModel model = new DefaultComboBoxModel(); for * (ScriptIncident i : script.incidents) { if (i != null) * model.addElement(i); } gotoIncident.setModel(model);* */ this.setPreferredSize(this.getSize()); pack(); } //Mouse has changed focus to a different timeslice else if (arg instanceof SliceChangedEvent) { TimeSlice slice = ((SliceChangedEvent) arg).slice; DefaultListModel model = new DefaultListModel(); for (I_ScriptEvent e : slice.events) { model.addElement(e); } } //Mouse has changed focus to a different incident timeline panel else if (arg instanceof IncidentFocusedEvent) { ScriptIncident i = ((IncidentFocusedEvent) arg).incident; //gotoIncident.setSelectedItem(i); } //Regardless of update type, refresh window by doing these things: //Enable "+15:00" button if script is not empty btnAddTime.setEnabled(script != null && script.numberOfIncidents > 0); //enable zoom slider if script is not empty zoomSlider.setEnabled(script != null && script.numberOfIncidents > 0); //scale the zoom slider such that the most zoomed-out point allows the //entire script to be visible at once zoomSlider.setMinimum(((timelineTickPanel.getVisibleRect().width - 20) * ScriptBuilderGuiConstants.HORIZONTAL_TICK_RESOLUTION) / Math.max(script.absoluteLength(), ScriptBuilderGuiConstants.TICK_TIMELINE_SMALLEST_LENGTH)); zoomSlider.setMaximum(zoomSlider.getMinimum() + 20); repaint(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { incidentPopupMenu = new javax.swing.JPopupMenu(); popupDeleteIncident = new javax.swing.JMenuItem(); eventPopupMenu = new javax.swing.JPopupMenu(); cadEvent = new javax.swing.JMenuItem(); jMenuItem2 = new javax.swing.JMenuItem(); radioEvent = new javax.swing.JMenuItem(); jMenuItem4 = new javax.swing.JMenuItem(); jMenuItem5 = new javax.swing.JMenuItem(); jMenuItem6 = new javax.swing.JMenuItem(); cadEventFrame = new javax.swing.JFrame(); labelCADEntry = new javax.swing.JLabel(); radioEventFrame = new javax.swing.JFrame(); labelRadioType = new javax.swing.JLabel(); labelRadioMessage = new javax.swing.JLabel(); radioTypeComboBox = new javax.swing.JComboBox(); radioMessageScrollPane = new javax.swing.JScrollPane(); radioMessage = new javax.swing.JTextArea(); okButton = new javax.swing.JButton(); cancelButton = new javax.swing.JButton(); eventListPopupMenu = new javax.swing.JPopupMenu(); editEventList = new javax.swing.JMenuItem(); deleteEventList = new javax.swing.JMenuItem(); incidentFrame = new javax.swing.JFrame(); labelIncidentNumber = new javax.swing.JLabel(); labelIncidentName = new javax.swing.JLabel(); labelIncidentColor = new javax.swing.JLabel(); labelIncidentDescription = new javax.swing.JLabel(); incidentPropertiesScrollPane = new javax.swing.JScrollPane(); addIncidentDescription = new javax.swing.JTextArea(); incidentOkButton = new javax.swing.JButton(); incidentCancelButton = new javax.swing.JButton(); addIncidentNumber = new javax.swing.JSpinner(); addIncidentName = new javax.swing.JTextField(); labelIncidentLength = new javax.swing.JLabel(); labelIncidentStart = new javax.swing.JLabel(); addIncidentStart = new javax.swing.JSpinner(); btnChooseColor = new javax.swing.JButton(); incidentColorField = new javax.swing.JTextField(); txtIncidentLength = new javax.swing.JLabel(); addNoiseFrame = new javax.swing.JFrame(); labelRadioChatter = new javax.swing.JLabel(); radioChatterSlider = new javax.swing.JSlider(); laneClosuresSlider = new javax.swing.JSlider(); labelLaneClosures = new javax.swing.JLabel(); TMCALSlider = new javax.swing.JSlider(); labelTMCALLogs = new javax.swing.JLabel(); txtNoiseDescription = new javax.swing.JTextArea(); backgroundNoiseSlider = new javax.swing.JSlider(); labelBackgroundNoise = new javax.swing.JLabel(); minorEventsSlider = new javax.swing.JSlider(); labelMinorEvents = new javax.swing.JLabel(); btnCancelNoise = new javax.swing.JButton(); btnGenerateNoise = new javax.swing.JButton(); labelLeastFreq = new javax.swing.JLabel(); labelMostFreq = new javax.swing.JLabel(); incidentColorChooser = new javax.swing.JColorChooser(); timelinesScrollPane = new javax.swing.JScrollPane(); timelineTickPanel = new scriptbuilder.gui.panels.TimelineTickPanel(); incidentTimelinePanel1 = new scriptbuilder.gui.panels.IncidentTimelinePanel(); incidentTimelinePanel2 = new scriptbuilder.gui.panels.IncidentTimelinePanel(); incidentTimelinePanel8 = new scriptbuilder.gui.panels.IncidentTimelinePanel(); incidentTimelinePanel3 = new scriptbuilder.gui.panels.IncidentTimelinePanel(); incidentTimelinePanel6 = new scriptbuilder.gui.panels.IncidentTimelinePanel(); incidentTimelinePanel5 = new scriptbuilder.gui.panels.IncidentTimelinePanel(); incidentTimelinePanel4 = new scriptbuilder.gui.panels.IncidentTimelinePanel(); incidentTimelinePanel7 = new scriptbuilder.gui.panels.IncidentTimelinePanel(); incidentTimelinePanel10 = new scriptbuilder.gui.panels.IncidentTimelinePanel(); incidentTimelinePanel9 = new scriptbuilder.gui.panels.IncidentTimelinePanel(); incidentNumberPanel1 = new scriptbuilder.gui.panels.IncidentNumberPanel(); incidentNumberPanel2 = new scriptbuilder.gui.panels.IncidentNumberPanel(); incidentNumberPanel3 = new scriptbuilder.gui.panels.IncidentNumberPanel(); incidentNumberPanel4 = new scriptbuilder.gui.panels.IncidentNumberPanel(); incidentNumberPanel5 = new scriptbuilder.gui.panels.IncidentNumberPanel(); incidentNumberPanel6 = new scriptbuilder.gui.panels.IncidentNumberPanel(); incidentNumberPanel7 = new scriptbuilder.gui.panels.IncidentNumberPanel(); incidentNumberPanel8 = new scriptbuilder.gui.panels.IncidentNumberPanel(); incidentNumberPanel9 = new scriptbuilder.gui.panels.IncidentNumberPanel(); incidentNumberPanel10 = new scriptbuilder.gui.panels.IncidentNumberPanel(); zoomSlider = new javax.swing.JSlider(); zoomInIcon = new javax.swing.JLabel(); zoomOutIcon = new javax.swing.JLabel(); timeStampScrollPane = new javax.swing.JScrollPane(); timeStampPanel = new scriptbuilder.gui.panels.TimeStampPanel(); btnAddTime = new javax.swing.JButton(); scriptBuilderMenuBar = new javax.swing.JMenuBar(); fileMenu = new javax.swing.JMenu(); fileNew = new javax.swing.JMenuItem(); jSeparator1 = new javax.swing.JPopupMenu.Separator(); fileOpen = new javax.swing.JMenuItem(); jSeparator2 = new javax.swing.JPopupMenu.Separator(); fileSave = new javax.swing.JMenuItem(); fileSaveAs = new javax.swing.JMenuItem(); generateMenu = new javax.swing.JMenu(); generateNotebooks = new javax.swing.JMenuItem(); jMenuItem3 = new javax.swing.JMenuItem(); generateScorecards = new javax.swing.JMenuItem(); generateOrganizationChart = new javax.swing.JMenuItem(); jSeparator3 = new javax.swing.JPopupMenu.Separator(); generateProjectRequirements = new javax.swing.JMenuItem(); incidentMenu = new javax.swing.JMenu(); newIncident = new javax.swing.JMenuItem(); deleteIncident = new javax.swing.JMenuItem(); jSeparator4 = new javax.swing.JPopupMenu.Separator(); saveIncident = new javax.swing.JMenuItem(); loadIncident = new javax.swing.JMenuItem(); generateNoiseMenu = new javax.swing.JMenu(); generateNoiseOption = new javax.swing.JMenuItem(); helpMenu = new javax.swing.JMenu(); helpTutorial = new javax.swing.JMenuItem(); helpAbout = new javax.swing.JMenuItem(); popupDeleteIncident.setText("Delete Incident..."); incidentPopupMenu.add(popupDeleteIncident); cadEvent.setText("CAD Event"); cadEvent.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(java.awt.event.MouseEvent evt) { cadEventMousePressed(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { cadEventMouseReleased(evt); } }); cadEvent.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cadEventActionPerformed(evt); } }); eventPopupMenu.add(cadEvent); jMenuItem2.setText("Paramics Event"); eventPopupMenu.add(jMenuItem2); radioEvent.setText("Radio Event"); radioEvent.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(java.awt.event.MouseEvent evt) { radioEventMousePressed(evt); } }); eventPopupMenu.add(radioEvent); jMenuItem4.setText("Telephone Event"); eventPopupMenu.add(jMenuItem4); jMenuItem5.setText("Video Event"); eventPopupMenu.add(jMenuItem5); jMenuItem6.setText("Evaluation Event"); eventPopupMenu.add(jMenuItem6); cadEventFrame.setMinimumSize(new java.awt.Dimension(400, 300)); labelCADEntry.setText("CAD Entry"); javax.swing.GroupLayout cadEventFrameLayout = new javax.swing.GroupLayout(cadEventFrame.getContentPane()); cadEventFrame.getContentPane().setLayout(cadEventFrameLayout); cadEventFrameLayout.setHorizontalGroup( cadEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(cadEventFrameLayout.createSequentialGroup() .addContainerGap() .addComponent(labelCADEntry, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); cadEventFrameLayout.setVerticalGroup( cadEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(cadEventFrameLayout.createSequentialGroup() .addContainerGap() .addComponent(labelCADEntry) .addContainerGap(1357, Short.MAX_VALUE)) ); radioEventFrame.setTitle("Add Radio Event"); radioEventFrame.setMinimumSize(new java.awt.Dimension(400, 300)); labelRadioType.setText("Radio Type:"); labelRadioMessage.setText("Radio Message:"); radioTypeComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TMT", "Maintanence" })); radioMessageScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); radioMessage.setColumns(20); radioMessage.setLineWrap(true); radioMessage.setRows(5); radioMessage.setWrapStyleWord(true); radioMessageScrollPane.setViewportView(radioMessage); okButton.setText("OK"); okButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okButtonActionPerformed(evt); } }); cancelButton.setText("Cancel"); cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); } }); javax.swing.GroupLayout radioEventFrameLayout = new javax.swing.GroupLayout(radioEventFrame.getContentPane()); radioEventFrame.getContentPane().setLayout(radioEventFrameLayout); radioEventFrameLayout.setHorizontalGroup( radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, radioEventFrameLayout.createSequentialGroup() .addContainerGap() .addGroup(radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(radioMessageScrollPane, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, radioEventFrameLayout.createSequentialGroup() .addComponent(labelRadioType) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(radioTypeComboBox, 0, 312, Short.MAX_VALUE)) .addComponent(labelRadioMessage, javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, radioEventFrameLayout.createSequentialGroup() .addComponent(cancelButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 246, Short.MAX_VALUE) .addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); radioEventFrameLayout.setVerticalGroup( radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(radioEventFrameLayout.createSequentialGroup() .addContainerGap() .addGroup(radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelRadioType) .addComponent(radioTypeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(labelRadioMessage) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(radioMessageScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 198, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(radioEventFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(okButton) .addComponent(cancelButton)) .addContainerGap()) ); editEventList.setText("Edit..."); editEventList.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { editEventListActionPerformed(evt); } }); eventListPopupMenu.add(editEventList); deleteEventList.setText("Delete..."); eventListPopupMenu.add(deleteEventList); incidentFrame.setTitle("Incident"); incidentFrame.setMinimumSize(new java.awt.Dimension(400, 400)); labelIncidentNumber.setText("Incident Number: "); labelIncidentName.setText("Incident Name:"); labelIncidentColor.setText("Incident Color: "); labelIncidentDescription.setText("Incident Description:"); incidentPropertiesScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); incidentPropertiesScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); addIncidentDescription.setColumns(20); addIncidentDescription.setLineWrap(true); addIncidentDescription.setRows(5); addIncidentDescription.setWrapStyleWord(true); incidentPropertiesScrollPane.setViewportView(addIncidentDescription); incidentOkButton.setText("OK"); incidentOkButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { incidentOkButtonActionPerformed(evt); } }); incidentCancelButton.setText("Cancel"); incidentCancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { incidentCancelButtonActionPerformed(evt); } }); addIncidentNumber.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(101), Integer.valueOf(101), null, Integer.valueOf(1))); labelIncidentLength.setText("Incident Length in Minutes: "); labelIncidentStart.setText("Incident Start Time in Minutes:"); addIncidentStart.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(0), Integer.valueOf(0), null, Integer.valueOf(1))); btnChooseColor.setText("Choose..."); btnChooseColor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnChooseColorActionPerformed(evt); } }); incidentColorField.setEditable(false); incidentColorField.setBackground(new java.awt.Color(0, 0, 0)); txtIncidentLength.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); txtIncidentLength.setText("0"); txtIncidentLength.setToolTipText(""); javax.swing.GroupLayout incidentFrameLayout = new javax.swing.GroupLayout(incidentFrame.getContentPane()); incidentFrame.getContentPane().setLayout(incidentFrameLayout); incidentFrameLayout.setHorizontalGroup( incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, incidentFrameLayout.createSequentialGroup() .addContainerGap() .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(incidentPropertiesScrollPane, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 322, Short.MAX_VALUE) .addComponent(labelIncidentDescription, javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, incidentFrameLayout.createSequentialGroup() .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(labelIncidentNumber) .addComponent(labelIncidentName) .addComponent(labelIncidentColor)) .addGap(18, 18, 18) .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(addIncidentName, javax.swing.GroupLayout.DEFAULT_SIZE, 218, Short.MAX_VALUE) .addComponent(addIncidentNumber, javax.swing.GroupLayout.DEFAULT_SIZE, 218, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, incidentFrameLayout.createSequentialGroup() .addComponent(incidentColorField, javax.swing.GroupLayout.DEFAULT_SIZE, 119, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnChooseColor, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, incidentFrameLayout.createSequentialGroup() .addComponent(incidentCancelButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 188, Short.MAX_VALUE) .addComponent(incidentOkButton, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, incidentFrameLayout.createSequentialGroup() .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(labelIncidentStart) .addComponent(labelIncidentLength)) .addGap(18, 18, 18) .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(incidentFrameLayout.createSequentialGroup() .addGap(6, 6, 6) .addComponent(txtIncidentLength, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(22, 22, 22)) .addComponent(addIncidentStart, javax.swing.GroupLayout.DEFAULT_SIZE, 158, Short.MAX_VALUE)))) .addContainerGap()) ); incidentFrameLayout.setVerticalGroup( incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(incidentFrameLayout.createSequentialGroup() .addContainerGap() .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelIncidentNumber) .addComponent(addIncidentNumber, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelIncidentName) .addComponent(addIncidentName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelIncidentColor) .addComponent(btnChooseColor) .addComponent(incidentColorField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(labelIncidentDescription) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentPropertiesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 118, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(addIncidentStart, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelIncidentStart)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelIncidentLength) .addComponent(txtIncidentLength)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(incidentFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(incidentCancelButton) .addComponent(incidentOkButton)) .addContainerGap()) ); addNoiseFrame.setTitle("Generate Noise"); addNoiseFrame.setMinimumSize(new java.awt.Dimension(395, 315)); addNoiseFrame.setResizable(false); labelRadioChatter.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N labelRadioChatter.setText("Radio Chatter: "); labelLaneClosures.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N labelLaneClosures.setText("Lane Closures:"); labelTMCALLogs.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N labelTMCALLogs.setText("TMCAL Logs:"); txtNoiseDescription.setEditable(false); txtNoiseDescription.setColumns(20); txtNoiseDescription.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N txtNoiseDescription.setLineWrap(true); txtNoiseDescription.setRows(5); txtNoiseDescription.setText("Noise events will be randomly generated for the simulation with frequencies based on the control selections made below"); txtNoiseDescription.setWrapStyleWord(true); txtNoiseDescription.setAutoscrolls(false); txtNoiseDescription.setBorder(null); txtNoiseDescription.setDisabledTextColor(new java.awt.Color(0, 0, 0)); txtNoiseDescription.setFocusable(false); txtNoiseDescription.setOpaque(false); labelBackgroundNoise.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N labelBackgroundNoise.setText("Background Noise: "); labelMinorEvents.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N labelMinorEvents.setText("Minor Events:"); btnCancelNoise.setText("Cancel"); btnCancelNoise.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCancelNoiseActionPerformed(evt); } }); btnGenerateNoise.setText("Generate"); btnGenerateNoise.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnGenerateNoiseActionPerformed(evt); } }); labelLeastFreq.setText("Least Frequent"); labelMostFreq.setText("Most Frequent"); javax.swing.GroupLayout addNoiseFrameLayout = new javax.swing.GroupLayout(addNoiseFrame.getContentPane()); addNoiseFrame.getContentPane().setLayout(addNoiseFrameLayout); addNoiseFrameLayout.setHorizontalGroup( addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, addNoiseFrameLayout.createSequentialGroup() .addContainerGap(21, Short.MAX_VALUE) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(txtNoiseDescription, javax.swing.GroupLayout.Alignment.LEADING) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, addNoiseFrameLayout.createSequentialGroup() .addComponent(btnCancelNoise) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btnGenerateNoise)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, addNoiseFrameLayout.createSequentialGroup() .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(labelBackgroundNoise) .addComponent(labelLaneClosures, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelTMCALLogs, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelRadioChatter, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(labelMinorEvents, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(4, 4, 4) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(radioChatterSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(laneClosuresSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(TMCALSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(minorEventsSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(backgroundNoiseSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, addNoiseFrameLayout.createSequentialGroup() .addComponent(labelLeastFreq) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(labelMostFreq)))))) .addGap(20, 20, 20)) ); addNoiseFrameLayout.setVerticalGroup( addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, addNoiseFrameLayout.createSequentialGroup() .addContainerGap() .addComponent(txtNoiseDescription, javax.swing.GroupLayout.DEFAULT_SIZE, 39, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(labelMostFreq) .addComponent(labelLeastFreq)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(labelRadioChatter, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(radioChatterSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(labelLaneClosures, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(laneClosuresSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(labelTMCALLogs) .addComponent(TMCALSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(backgroundNoiseSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelBackgroundNoise, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(minorEventsSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelMinorEvents)) .addGap(18, 18, 18) .addGroup(addNoiseFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(btnCancelNoise) .addComponent(btnGenerateNoise)) .addContainerGap()) ); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Script Builder"); setBounds(new java.awt.Rectangle(0, 23, 800, 700)); setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); setMinimumSize(new java.awt.Dimension(800, 700)); timelinesScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); timelinesScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); timelinesScrollPane.setFocusCycleRoot(true); timelinesScrollPane.setFocusTraversalPolicyProvider(true); timelinesScrollPane.setPreferredSize(new java.awt.Dimension(72000, 1341)); timelinesScrollPane.setWheelScrollingEnabled(false); timelineTickPanel.setMaximumSize(new java.awt.Dimension(7200, 32767)); timelineTickPanel.setMinimumSize(new java.awt.Dimension(7200, 0)); timelineTickPanel.setPreferredSize(new java.awt.Dimension(7200, 1317)); incidentTimelinePanel1.setMaximumSize(new java.awt.Dimension(32767, 100)); incidentTimelinePanel1.setOpaque(false); incidentTimelinePanel1.setPreferredSize(new java.awt.Dimension(691, 100)); javax.swing.GroupLayout incidentTimelinePanel1Layout = new javax.swing.GroupLayout(incidentTimelinePanel1); incidentTimelinePanel1.setLayout(incidentTimelinePanel1Layout); incidentTimelinePanel1Layout.setHorizontalGroup( incidentTimelinePanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 691, Short.MAX_VALUE) ); incidentTimelinePanel1Layout.setVerticalGroup( incidentTimelinePanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 100, Short.MAX_VALUE) ); incidentTimelinePanel2.setOpaque(false); javax.swing.GroupLayout incidentTimelinePanel2Layout = new javax.swing.GroupLayout(incidentTimelinePanel2); incidentTimelinePanel2.setLayout(incidentTimelinePanel2Layout); incidentTimelinePanel2Layout.setHorizontalGroup( incidentTimelinePanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel2Layout.setVerticalGroup( incidentTimelinePanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel8.setOpaque(false); javax.swing.GroupLayout incidentTimelinePanel8Layout = new javax.swing.GroupLayout(incidentTimelinePanel8); incidentTimelinePanel8.setLayout(incidentTimelinePanel8Layout); incidentTimelinePanel8Layout.setHorizontalGroup( incidentTimelinePanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel8Layout.setVerticalGroup( incidentTimelinePanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel3.setOpaque(false); javax.swing.GroupLayout incidentTimelinePanel3Layout = new javax.swing.GroupLayout(incidentTimelinePanel3); incidentTimelinePanel3.setLayout(incidentTimelinePanel3Layout); incidentTimelinePanel3Layout.setHorizontalGroup( incidentTimelinePanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel3Layout.setVerticalGroup( incidentTimelinePanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel6.setOpaque(false); javax.swing.GroupLayout incidentTimelinePanel6Layout = new javax.swing.GroupLayout(incidentTimelinePanel6); incidentTimelinePanel6.setLayout(incidentTimelinePanel6Layout); incidentTimelinePanel6Layout.setHorizontalGroup( incidentTimelinePanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel6Layout.setVerticalGroup( incidentTimelinePanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel5.setOpaque(false); javax.swing.GroupLayout incidentTimelinePanel5Layout = new javax.swing.GroupLayout(incidentTimelinePanel5); incidentTimelinePanel5.setLayout(incidentTimelinePanel5Layout); incidentTimelinePanel5Layout.setHorizontalGroup( incidentTimelinePanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel5Layout.setVerticalGroup( incidentTimelinePanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel4.setOpaque(false); javax.swing.GroupLayout incidentTimelinePanel4Layout = new javax.swing.GroupLayout(incidentTimelinePanel4); incidentTimelinePanel4.setLayout(incidentTimelinePanel4Layout); incidentTimelinePanel4Layout.setHorizontalGroup( incidentTimelinePanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel4Layout.setVerticalGroup( incidentTimelinePanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel7.setOpaque(false); javax.swing.GroupLayout incidentTimelinePanel7Layout = new javax.swing.GroupLayout(incidentTimelinePanel7); incidentTimelinePanel7.setLayout(incidentTimelinePanel7Layout); incidentTimelinePanel7Layout.setHorizontalGroup( incidentTimelinePanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel7Layout.setVerticalGroup( incidentTimelinePanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel10.setOpaque(false); javax.swing.GroupLayout incidentTimelinePanel10Layout = new javax.swing.GroupLayout(incidentTimelinePanel10); incidentTimelinePanel10.setLayout(incidentTimelinePanel10Layout); incidentTimelinePanel10Layout.setHorizontalGroup( incidentTimelinePanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel10Layout.setVerticalGroup( incidentTimelinePanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel9.setOpaque(false); javax.swing.GroupLayout incidentTimelinePanel9Layout = new javax.swing.GroupLayout(incidentTimelinePanel9); incidentTimelinePanel9.setLayout(incidentTimelinePanel9Layout); incidentTimelinePanel9Layout.setHorizontalGroup( incidentTimelinePanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentTimelinePanel9Layout.setVerticalGroup( incidentTimelinePanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel1.setOpaque(false); javax.swing.GroupLayout incidentNumberPanel1Layout = new javax.swing.GroupLayout(incidentNumberPanel1); incidentNumberPanel1.setLayout(incidentNumberPanel1Layout); incidentNumberPanel1Layout.setHorizontalGroup( incidentNumberPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel1Layout.setVerticalGroup( incidentNumberPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel2.setOpaque(false); javax.swing.GroupLayout incidentNumberPanel2Layout = new javax.swing.GroupLayout(incidentNumberPanel2); incidentNumberPanel2.setLayout(incidentNumberPanel2Layout); incidentNumberPanel2Layout.setHorizontalGroup( incidentNumberPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel2Layout.setVerticalGroup( incidentNumberPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel3.setOpaque(false); javax.swing.GroupLayout incidentNumberPanel3Layout = new javax.swing.GroupLayout(incidentNumberPanel3); incidentNumberPanel3.setLayout(incidentNumberPanel3Layout); incidentNumberPanel3Layout.setHorizontalGroup( incidentNumberPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel3Layout.setVerticalGroup( incidentNumberPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel4.setOpaque(false); javax.swing.GroupLayout incidentNumberPanel4Layout = new javax.swing.GroupLayout(incidentNumberPanel4); incidentNumberPanel4.setLayout(incidentNumberPanel4Layout); incidentNumberPanel4Layout.setHorizontalGroup( incidentNumberPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel4Layout.setVerticalGroup( incidentNumberPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel5.setOpaque(false); javax.swing.GroupLayout incidentNumberPanel5Layout = new javax.swing.GroupLayout(incidentNumberPanel5); incidentNumberPanel5.setLayout(incidentNumberPanel5Layout); incidentNumberPanel5Layout.setHorizontalGroup( incidentNumberPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel5Layout.setVerticalGroup( incidentNumberPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel6.setOpaque(false); javax.swing.GroupLayout incidentNumberPanel6Layout = new javax.swing.GroupLayout(incidentNumberPanel6); incidentNumberPanel6.setLayout(incidentNumberPanel6Layout); incidentNumberPanel6Layout.setHorizontalGroup( incidentNumberPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel6Layout.setVerticalGroup( incidentNumberPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel7.setOpaque(false); javax.swing.GroupLayout incidentNumberPanel7Layout = new javax.swing.GroupLayout(incidentNumberPanel7); incidentNumberPanel7.setLayout(incidentNumberPanel7Layout); incidentNumberPanel7Layout.setHorizontalGroup( incidentNumberPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel7Layout.setVerticalGroup( incidentNumberPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel8.setOpaque(false); javax.swing.GroupLayout incidentNumberPanel8Layout = new javax.swing.GroupLayout(incidentNumberPanel8); incidentNumberPanel8.setLayout(incidentNumberPanel8Layout); incidentNumberPanel8Layout.setHorizontalGroup( incidentNumberPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel8Layout.setVerticalGroup( incidentNumberPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel9.setOpaque(false); javax.swing.GroupLayout incidentNumberPanel9Layout = new javax.swing.GroupLayout(incidentNumberPanel9); incidentNumberPanel9.setLayout(incidentNumberPanel9Layout); incidentNumberPanel9Layout.setHorizontalGroup( incidentNumberPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel9Layout.setVerticalGroup( incidentNumberPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel10.setOpaque(false); javax.swing.GroupLayout incidentNumberPanel10Layout = new javax.swing.GroupLayout(incidentNumberPanel10); incidentNumberPanel10.setLayout(incidentNumberPanel10Layout); incidentNumberPanel10Layout.setHorizontalGroup( incidentNumberPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); incidentNumberPanel10Layout.setVerticalGroup( incidentNumberPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); javax.swing.GroupLayout timelineTickPanelLayout = new javax.swing.GroupLayout(timelineTickPanel); timelineTickPanel.setLayout(timelineTickPanelLayout); timelineTickPanelLayout.setHorizontalGroup( timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(timelineTickPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(incidentNumberPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentNumberPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(incidentNumberPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentNumberPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentNumberPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentNumberPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentNumberPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentNumberPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentNumberPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(incidentNumberPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(10, 10, 10) .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(incidentTimelinePanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(incidentTimelinePanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(incidentTimelinePanel5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(incidentTimelinePanel4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(incidentTimelinePanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentTimelinePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentTimelinePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentTimelinePanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentTimelinePanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentTimelinePanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(190, 190, 190)) ); timelineTickPanelLayout.setVerticalGroup( timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(timelineTickPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(incidentNumberPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentTimelinePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(timelineTickPanelLayout.createSequentialGroup() .addComponent(incidentNumberPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentNumberPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentNumberPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentNumberPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentNumberPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(timelineTickPanelLayout.createSequentialGroup() .addComponent(incidentTimelinePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentTimelinePanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentTimelinePanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentTimelinePanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentTimelinePanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(incidentTimelinePanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentNumberPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(timelineTickPanelLayout.createSequentialGroup() .addComponent(incidentTimelinePanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentTimelinePanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(timelineTickPanelLayout.createSequentialGroup() .addComponent(incidentNumberPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(incidentNumberPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(timelineTickPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(incidentNumberPanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(incidentTimelinePanel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); timelinesScrollPane.setViewportView(timelineTickPanel); zoomSlider.setMaximum(22); zoomSlider.setMinimum(4); zoomSlider.setValue(4); zoomSlider.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); zoomSlider.setFocusable(false); zoomSlider.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { zoomSliderStateChanged(evt); } }); zoomInIcon.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ZoomIn.png"))); // NOI18N zoomInIcon.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); zoomInIcon.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { zoomInIconMouseClicked(evt); } }); zoomOutIcon.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ZoomOut.png"))); // NOI18N zoomOutIcon.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); zoomOutIcon.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { zoomOutIconMouseClicked(evt); } }); timeStampScrollPane.setBorder(null); timeStampScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); timeStampScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); javax.swing.GroupLayout timeStampPanelLayout = new javax.swing.GroupLayout(timeStampPanel); timeStampPanel.setLayout(timeStampPanelLayout); timeStampPanelLayout.setHorizontalGroup( timeStampPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); timeStampPanelLayout.setVerticalGroup( timeStampPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); timeStampScrollPane.setViewportView(timeStampPanel); btnAddTime.setText("+15:00"); btnAddTime.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAddTimeActionPerformed(evt); } }); fileMenu.setText("File"); fileMenu.setMargin(new java.awt.Insets(0, 10, 0, 10)); fileMenu.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fileMenuActionPerformed(evt); } }); fileNew.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); fileNew.setText("New"); fileNew.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fileNewActionPerformed(evt); } }); fileMenu.add(fileNew); fileMenu.add(jSeparator1); fileOpen.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); fileOpen.setText("Open..."); fileOpen.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fileOpenActionPerformed(evt); } }); fileMenu.add(fileOpen); fileMenu.add(jSeparator2); fileSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); fileSave.setText("Save"); fileSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fileSaveActionPerformed(evt); } }); fileMenu.add(fileSave); fileSaveAs.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); fileSaveAs.setText("Save as..."); fileSaveAs.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fileSaveAsActionPerformed(evt); } }); fileMenu.add(fileSaveAs); scriptBuilderMenuBar.add(fileMenu); generateMenu.setLabel("Generate"); generateMenu.setMargin(new java.awt.Insets(0, 10, 0, 10)); generateNotebooks.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); generateNotebooks.setText("Generate Notebooks..."); generateNotebooks.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { generateNotebooksActionPerformed(evt); } }); generateMenu.add(generateNotebooks); jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); jMenuItem3.setText("Generate Web Notebook..."); generateMenu.add(jMenuItem3); generateScorecards.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); generateScorecards.setText("Generate Scorecards..."); generateScorecards.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { generateScorecardsActionPerformed(evt); } }); generateMenu.add(generateScorecards); generateOrganizationChart.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); generateOrganizationChart.setText("Generate D14 TMC Org Chart..."); generateOrganizationChart.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { generateOrganizationChartActionPerformed(evt); } }); generateMenu.add(generateOrganizationChart); generateMenu.add(jSeparator3); generateProjectRequirements.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); generateProjectRequirements.setText("Generate Project Worklist..."); generateProjectRequirements.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { generateProjectRequirementsActionPerformed(evt); } }); generateMenu.add(generateProjectRequirements); scriptBuilderMenuBar.add(generateMenu); incidentMenu.setText("Incidents"); incidentMenu.setMargin(new java.awt.Insets(0, 10, 0, 10)); newIncident.setText("New Incident..."); newIncident.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { newIncidentActionPerformed(evt); } }); incidentMenu.add(newIncident); deleteIncident.setText("Delete Incident"); deleteIncident.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { deleteIncidentActionPerformed(evt); } }); incidentMenu.add(deleteIncident); incidentMenu.add(jSeparator4); saveIncident.setText("Save Incident..."); saveIncident.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveIncidentActionPerformed(evt); } }); incidentMenu.add(saveIncident); loadIncident.setText("Load Incident..."); loadIncident.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { loadIncidentActionPerformed(evt); } }); incidentMenu.add(loadIncident); scriptBuilderMenuBar.add(incidentMenu); generateNoiseMenu.setText("Noise"); generateNoiseOption.setText("Generate Noise..."); generateNoiseOption.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { generateNoiseOptionActionPerformed(evt); } }); generateNoiseMenu.add(generateNoiseOption); scriptBuilderMenuBar.add(generateNoiseMenu); helpMenu.setText("Help"); helpMenu.setMargin(new java.awt.Insets(0, 10, 0, 10)); helpTutorial.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0)); helpTutorial.setText("Tutorial..."); helpMenu.add(helpTutorial); helpAbout.setText("About..."); helpAbout.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { helpAboutActionPerformed(evt); } }); helpMenu.add(helpAbout); scriptBuilderMenuBar.add(helpMenu); setJMenuBar(scriptBuilderMenuBar); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(timelinesScrollPane, 0, 0, Short.MAX_VALUE) .addComponent(timeStampScrollPane) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 604, Short.MAX_VALUE) .addComponent(zoomOutIcon) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(zoomSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(zoomInIcon) .addGap(18, 18, 18) .addComponent(btnAddTime) .addGap(21, 21, 21))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(zoomOutIcon) .addComponent(zoomSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(zoomInIcon) .addComponent(btnAddTime)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(timeStampScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(timelinesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 1289, Short.MAX_VALUE) .addContainerGap()) ); pack(); }// //GEN-END:initComponents /** * Scale the timeline width based on zoom slider position. * * @param evt the state change event */ private void zoomSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_zoomSliderStateChanged //Changing the zoom level always refreshes the window ScriptBuilderGuiConstants.PIXEL_WIDTH_PER_HORIZONTAL_TICK = zoomSlider.getValue(); this.update(script, script); pack(); repaint(); }//GEN-LAST:event_zoomSliderStateChanged private void cadEventMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cadEventMousePressed }//GEN-LAST:event_cadEventMousePressed private void radioEventMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_radioEventMousePressed }//GEN-LAST:event_radioEventMousePressed private void cadEventMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cadEventMouseReleased }//GEN-LAST:event_cadEventMouseReleased private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed }//GEN-LAST:event_okButtonActionPerformed /** * If cancel button is pressed, close radio event editor * * @param evt the button press event */ private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed radioMessage.setText(""); radioTypeComboBox.setSelectedIndex(0); radioEventFrame.setVisible(false); }//GEN-LAST:event_cancelButtonActionPerformed private void editEventListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editEventListActionPerformed }//GEN-LAST:event_editEventListActionPerformed /** * Executed when the "OK" button is pressed on the Incident editor. If * incident is new, and is valid, adds it to the model and updates. If * editing existing incident, verifies changes are valid and applies them. * Then closes editor window. * * @param evt the button press event */ private void incidentOkButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_incidentOkButtonActionPerformed if (!editingIncident)//adding new incident { boolean found = false; int indx = 0; // ALERT: Wacky logic follows // Examine all the incidents contained in this script for (ScriptIncident inci : script.incidents) { // If this spot in the list of incidents hasn't been assigned yet if (inci == null) { found = true; break; } ++indx; // Does the new incident number match an existing one? if (inci.number == (Integer) addIncidentNumber.getValue()) { JOptionPane.showMessageDialog(this, "Incident number already in use.", "Unable to Create Incident", JOptionPane.ERROR_MESSAGE); incidentFrame.setVisible(true); return; } } // We examined all incidents and there wasn't an empty slot if (!found) { JOptionPane.showMessageDialog(this, "Script already has the max number of incidents.", "Unable to Create Incident", JOptionPane.ERROR_MESSAGE); incidentFrame.setVisible(true); // ALERT: exit from middle of method return; } // We found a spot for the new incident script.incidents.remove(indx); // remove the null incident placeholder SimulationScript.incidentColors[indx] = selectedColor; // Add the new incident to the list script.incidents.add(indx, new ScriptIncident(SimulationScript.incidentColors[indx], (Integer) addIncidentNumber.getValue(), addIncidentName.getText(), addIncidentDescription.getText(), script)); script.incidents.get(indx).setOffset((Integer) addIncidentStart.getValue() * 60); script.numberOfIncidents++; IncidentEditorFrame editor = new IncidentEditorFrame(script.incidents.get(indx), this); editor.setVisible(true); } else//editing existing incident { //adjust incident color script.incidents.get(oldIncidentIndex).color = selectedColor; //adjust incident name script.incidents.get(oldIncidentIndex).name = addIncidentName.getText(); //adjust incident description script.incidents.get(oldIncidentIndex).description = addIncidentDescription.getText(); //change offset of incident script.incidents.get(oldIncidentIndex).setOffset(((int) addIncidentStart.getValue()) * 60); //update incident number, if it was changed if ((int) addIncidentNumber.getValue() == script.incidents.get(oldIncidentIndex).number || !scriptContainsLogNum(script, (int) addIncidentNumber.getValue())) { script.incidents.get(oldIncidentIndex).number = (int) addIncidentNumber.getValue(); } else//if the updated value conflicts with an existing inc number, //the inc number update fails { JOptionPane.showMessageDialog(this, "Incident number already in use.", "Unable To Alter Incident Detail", JOptionPane.ERROR_MESSAGE); } } //close this frame incidentFrame.setVisible(false); this.update(script, script); repaint(); }//GEN-LAST:event_incidentOkButtonActionPerformed /** * Determine if the given incident number is already present in the script. * * @param script the current simulation script * @param num the incident log number to check * @return true if one of the existing incidents in the script uses that log * number */ private boolean scriptContainsLogNum(SimulationScript script, int num) { for (ScriptIncident incident : script.incidents) { if (incident != null && incident.number == num) { return true; } } return false; } /** * Closes editor window upon click of cancel button. * * @param evt the button press event */ private void incidentCancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_incidentCancelButtonActionPerformed incidentFrame.setVisible(false); }//GEN-LAST:event_incidentCancelButtonActionPerformed /** * Opens incident editor window and preps for addition of new incident, upon * click of "New Incident" menu option. * * @param evt the button press event */ private void newIncidentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newIncidentActionPerformed editingIncident = false; addIncidentName.setText(""); int newLogNum = 100; boolean found = false; while (!found) { newLogNum++; if (!scriptContainsLogNum(script, newLogNum)) { found = true; for (ScriptIncident incident : script.incidents) { if (incident != null && incident.number == newLogNum) { found = false; } } } } addIncidentNumber.setValue(newLogNum); addIncidentStart.setValue(0); txtIncidentLength.setText("0"); incidentColorField.setBackground(Color.BLACK); selectedColor = Color.BLACK; addIncidentDescription.setText(""); incidentFrame.setVisible(true); }//GEN-LAST:event_newIncidentActionPerformed private void fileMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileMenuActionPerformed }//GEN-LAST:event_fileMenuActionPerformed /** * Upon click of "Open file" menu option, opens a window to load a new .sim * file. * * @param evt the button press event */ private void fileOpenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileOpenActionPerformed JFileChooser fc = new JFileChooser(); //Search for .xml files fc.setFileFilter(new ExtensionFileFilter("Simulation Script XML (.xml)", new String[] { "xml" })); if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { //make a new script and load it with values from the selected file script = new SimulationScript(); script.loadScriptFromFile(fc.getSelectedFile()); script.saveFile = fc.getSelectedFile(); } this.update(script, script); //zoom out all the way so that the whole imported script is visible zoomSlider.setValue(zoomSlider.getMinimum()); repaint(); }//GEN-LAST:event_fileOpenActionPerformed /** * Upon click of "Save as" menu option, opens a window to choose a .sim file * to save this as. * * @param evt the button press event */ private void fileSaveAsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileSaveAsActionPerformed JFileChooser fc = new JFileChooser(); fc.setFileFilter(new ExtensionFileFilter("Simulation Script XML (.xml)", new String[] { "xml" })); if (fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { script.saveScriptToFile(fc.getSelectedFile()); script.saveFile = fc.getSelectedFile(); } }//GEN-LAST:event_fileSaveAsActionPerformed /** * Upon click of "Save" menu option, opens a window to choose a .sim file to * save this as. * * @param evt the button press event */ private void fileSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileSaveActionPerformed //If the script has never been saved before, we need to name or create a //file in which to save it if (script.saveFile == null) { fileSaveAsActionPerformed(evt); } //Otherwise, just save to the previously selected save spot else { script.saveScriptToFile(script.saveFile); } }//GEN-LAST:event_fileSaveActionPerformed /** * Allow this window to refresh itself, after a different window loses * focus. */ public void returnFocus() { zoomSlider.setValue(zoomSlider.getMinimum()); zoomSliderStateChanged(new ChangeEvent(script)); } /** * Set up the incident details/properties window so that it reflects the * values of the selected incident. Then, make the window visible. * * @param i the incident to be represented by this details window */ public void incidentDetailsScreen(ScriptIncident i) { editingIncident = true; oldIncidentIndex = script.incidents.indexOf(i); addIncidentName.setText(i.name); addIncidentNumber.setValue(i.number); addIncidentStart.setValue(i.offset / 60); txtIncidentLength.setText("" + (i.length / 60)); txtIncidentLength.setHorizontalTextPosition(SwingConstants.RIGHT); //addIncidentLength.setValue(i.length / 60); incidentColorField.setBackground(i.color); selectedColor = i.color; addIncidentDescription.setText(i.description); incidentFrame.setVisible(true); } /** * Brings up the noise generation screen upon click of the "Generate Noise" * menu option. * * @param evt the button press event */ private void generateNoiseOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateNoiseOptionActionPerformed addNoiseFrame.setVisible(true); }//GEN-LAST:event_generateNoiseOptionActionPerformed /** * Hides the noise generation screen upon click of the "Cancel" button. * * @param evt the button press event */ private void btnCancelNoiseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelNoiseActionPerformed addNoiseFrame.setVisible(false); }//GEN-LAST:event_btnCancelNoiseActionPerformed /** * Generates random noise upon click of the "Generate" button, then hides * the noise generation screen. * * @param evt the button press event */ private void btnGenerateNoiseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGenerateNoiseActionPerformed Random rng = new Random(); ScriptEventType[] eventTypes = ScriptEventType.values(); /* For prototyping purpose, ignore the sliders and average their values */ int total = radioChatterSlider.getValue() + laneClosuresSlider.getValue() + TMCALSlider.getValue() + minorEventsSlider.getValue() + backgroundNoiseSlider.getValue(); total /= 5; for (int i = 0; i < script.incidents.get(9).slices.size(); i++) { script.incidents.get(9).slices.get(i).events.clear(); } for (int i = 0; i < total; i++) { int n = rng.nextInt(); int s = rng.nextInt(); int e = rng.nextInt(); if (n < 0) { n *= -1; } if (s < 0) { s *= -1; } if (e < 0) { e *= -1; } script.incidents.get(9).slices.get(s % (script.incidents.get(9).slices.size())).addEvent(ScriptEvent.factoryByType(eventTypes[e % eventTypes.length])); } addNoiseFrame.setVisible(false); this.update(script, script); repaint(); }//GEN-LAST:event_btnGenerateNoiseActionPerformed /** * Allow the user to pick an incident from a dropdown, then save it to an * XML file. * * @param evt the button press event */ private void saveIncidentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveIncidentActionPerformed Object[] incidentList = script.incidents.toArray(); String input = ""; ScriptIncident inc = null; //Pick the incident to save Object result = JOptionPane.showInputDialog( this, "Select Incident:", "Save Incident", JOptionPane.PLAIN_MESSAGE, null, incidentList, script.incidents.get(0)); if (result == null) { return; } input = result.toString(); int i = 0; for (ScriptIncident incident : script.incidents) { if (incident == null) { continue; } if (incident.toString().equals(input)) { inc = incident; } } if (inc == null) { return; } //Pick the file to save it to JFileChooser fc = new JFileChooser(); fc.setFileFilter(new ExtensionFileFilter("Script Incident (.xml)", new String[] { "xml" })); if (fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { inc.saveIncidentToFile(fc.getSelectedFile()); } }//GEN-LAST:event_saveIncidentActionPerformed /** * Bring up the incident palette for loading of new incidents. * * @param evt the menu click event */ private void loadIncidentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadIncidentActionPerformed new IncidentPaletteFrame(script, this).setVisible(true); zoomSlider.setValue(zoomSlider.getMinimum()); }//GEN-LAST:event_loadIncidentActionPerformed //Unsupported as of 2017/09/05 private void generateProjectRequirementsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateProjectRequirementsActionPerformed JFileChooser fc = new JFileChooser(); fc.setFileFilter(new ExtensionFileFilter("Portable Document Format (.pdf)", new String[] { "pdf" })); fc.setSelectedFile(new File("Requirements.pdf")); fc.showSaveDialog(this); }//GEN-LAST:event_generateProjectRequirementsActionPerformed //Unsupported as of 2017/09/05 private void generateNotebooksActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateNotebooksActionPerformed JFileChooser fc = new JFileChooser(); fc.setFileFilter(new ExtensionFileFilter("Portable Document Format (.pdf)", new String[] { "pdf" })); fc.setSelectedFile(new File("Notebooks.pdf")); fc.showSaveDialog(this); }//GEN-LAST:event_generateNotebooksActionPerformed //Unsupported as of 2017/09/05 private void generateScorecardsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateScorecardsActionPerformed JFileChooser fc = new JFileChooser(); fc.setFileFilter(new ExtensionFileFilter("Portable Document Format (.pdf)", new String[] { "pdf" })); fc.setSelectedFile(new File("Scorecards.pdf")); fc.showSaveDialog(this); }//GEN-LAST:event_generateScorecardsActionPerformed //Unsupported as of 2017/09/05 private void generateOrganizationChartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_generateOrganizationChartActionPerformed JFileChooser fc = new JFileChooser(); fc.setFileFilter(new ExtensionFileFilter("Portable Document Format (.pdf)", new String[] { "pdf" })); fc.setSelectedFile(new File("OrganizationChart.pdf")); fc.showSaveDialog(this); }//GEN-LAST:event_generateOrganizationChartActionPerformed /** * Increases zoom level upon click of the "Zoom in" icon. * * @param evt the mouse event */ private void zoomInIconMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_zoomInIconMouseClicked if (script != null && script.numberOfIncidents > 0) { zoomSlider.setValue(zoomSlider.getValue() >= 22 ? 22 : zoomSlider.getValue() + 1); } }//GEN-LAST:event_zoomInIconMouseClicked /** * Decreases zoom level upon click of the "Zoom out" icon. * * @param evt the mouse event */ private void zoomOutIconMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_zoomOutIconMouseClicked if (script != null && script.numberOfIncidents > 0) { zoomSlider.setValue(zoomSlider.getValue() <= 4 ? 4 : zoomSlider.getValue() - 1); } }//GEN-LAST:event_zoomOutIconMouseClicked private Color selectedColor = Color.BLACK; private void btnChooseColorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnChooseColorActionPerformed //For whatever reason, this causes the incident properties frame to be hidden Color newColor = incidentColorChooser.showDialog(this, "Incident Color", incidentColorField.getBackground()); if (newColor != null) { //If the user selected a color, apply it to the properties frame selectedColor = newColor; incidentColorField.setBackground(newColor); } //Return focus to the properties frame incidentFrame.setVisible(true); }//GEN-LAST:event_btnChooseColorActionPerformed /* Help > About simply displays the current SVN revision number so * the user can determine which version of the source code was used to * build the executable she is running. */ private void helpAboutActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_helpAboutActionPerformed {//GEN-HEADEREND:event_helpAboutActionPerformed JOptionPane.showMessageDialog(rootPane, "Revision: " + getAppVersion(), "About", JOptionPane.INFORMATION_MESSAGE); }//GEN-LAST:event_helpAboutActionPerformed /** * Replaces the current script with a new, blank script. * * @param evt the menu selection event */ private void fileNewActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_fileNewActionPerformed {//GEN-HEADEREND:event_fileNewActionPerformed script = new SimulationScript(); script.update(); this.update(null, script); repaint(); }//GEN-LAST:event_fileNewActionPerformed /** * Allows the user to delete an incident from the current script. * * @param evt the menu selection event */ private void deleteIncidentActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_deleteIncidentActionPerformed {//GEN-HEADEREND:event_deleteIncidentActionPerformed Object[] incidentList = script.incidents.toArray(); String input = ""; ScriptIncident inc = null; //Choose the incident to be deleted Object result = JOptionPane.showInputDialog( this, "Select Incident:", "Delete Incident", JOptionPane.PLAIN_MESSAGE, null, incidentList, script.incidents.get(0)); if (result != null) { input = result.toString(); for (ScriptIncident incident : script.incidents) { if (incident == null) { continue; } if (incident.toString().equals(input)) { inc = incident; } } //Allow user to verify deletion before proceeding if (inc != null) { int confirm = JOptionPane.showConfirmDialog(this, "Are you sure you want to delete " + inc.toString() + "?"); if (confirm == JOptionPane.YES_OPTION) { //Remove the incident and replace it with a null placeholder script.incidents.remove(inc); script.incidents.add(null); script.numberOfIncidents--; } } } //Refresh this.update(script, script); repaint(); }//GEN-LAST:event_deleteIncidentActionPerformed /** * Add 15 minutes to the end of the visible timeline. * * @param evt the button press event. */ private void btnAddTimeActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnAddTimeActionPerformed {//GEN-HEADEREND:event_btnAddTimeActionPerformed IncidentTimelinePanel.requestedScriptBuilderFillerTime += IncidentTimelinePanel.FILLER_INTERVAL_SECONDS; this.update(script, script); }//GEN-LAST:event_btnAddTimeActionPerformed private void cadEventActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cadEventActionPerformed {//GEN-HEADEREND:event_cadEventActionPerformed // TODO add your handling code here: }//GEN-LAST:event_cadEventActionPerformed /** * Read the version number from the application properties. The file * 'application.properties' is generated by build.xml. * * @return a version string obtained from application.properties file, or * "Version: unknown" if an IOerror prevents us from reading the file. */ private String getAppVersion() { String propfilename = "/scriptbuilder/gui/application.properties"; String propKey = "Application.revision"; String version = "unknown"; // Load the application properties (created by build.xml) try { Properties props = new Properties(); props.load(this.getClass().getResourceAsStream(propfilename)); version = (String) props.get(propKey); } catch (IOException ex) { Logger.getLogger("scriptbuilder.gui").log(Level.SEVERE, "ScriptBuilderFrame.getAppVersion()." + " IOError reading " + propfilename); } catch (NullPointerException npe) { Logger.getLogger("scriptbuilder.gui").log(Level.SEVERE, "ScriptBuilderFrame.getAppVersion().load." + " Missing file: " + propfilename); } return version; } /** * Runs the script builder. This is the main method for the whole program. * * @param args the command line arguments */ public static void main(String args[]) { try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel"); } catch (Exception ex) { //Apparently we don't do any special exception processing } try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ex) { //Apparently we don't do any special exception processing } java.awt.EventQueue.invokeLater( new Runnable() { public void run() { new ScriptBuilderFrame().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JSlider TMCALSlider; private javax.swing.JTextArea addIncidentDescription; private javax.swing.JTextField addIncidentName; private javax.swing.JSpinner addIncidentNumber; private javax.swing.JSpinner addIncidentStart; private javax.swing.JFrame addNoiseFrame; private javax.swing.JSlider backgroundNoiseSlider; private javax.swing.JButton btnAddTime; private javax.swing.JButton btnCancelNoise; private javax.swing.JButton btnChooseColor; private javax.swing.JButton btnGenerateNoise; private javax.swing.JMenuItem cadEvent; private javax.swing.JFrame cadEventFrame; private javax.swing.JButton cancelButton; private javax.swing.JMenuItem deleteEventList; private javax.swing.JMenuItem deleteIncident; private javax.swing.JMenuItem editEventList; private javax.swing.JPopupMenu eventListPopupMenu; private javax.swing.JPopupMenu eventPopupMenu; private javax.swing.JMenu fileMenu; private javax.swing.JMenuItem fileNew; private javax.swing.JMenuItem fileOpen; private javax.swing.JMenuItem fileSave; private javax.swing.JMenuItem fileSaveAs; private javax.swing.JMenu generateMenu; private javax.swing.JMenu generateNoiseMenu; private javax.swing.JMenuItem generateNoiseOption; private javax.swing.JMenuItem generateNotebooks; private javax.swing.JMenuItem generateOrganizationChart; private javax.swing.JMenuItem generateProjectRequirements; private javax.swing.JMenuItem generateScorecards; private javax.swing.JMenuItem helpAbout; private javax.swing.JMenu helpMenu; private javax.swing.JMenuItem helpTutorial; private javax.swing.JButton incidentCancelButton; private javax.swing.JColorChooser incidentColorChooser; private javax.swing.JTextField incidentColorField; private javax.swing.JFrame incidentFrame; private javax.swing.JMenu incidentMenu; private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel1; private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel10; private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel2; private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel3; private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel4; private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel5; private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel6; private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel7; private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel8; private scriptbuilder.gui.panels.IncidentNumberPanel incidentNumberPanel9; private javax.swing.JButton incidentOkButton; private javax.swing.JPopupMenu incidentPopupMenu; private javax.swing.JScrollPane incidentPropertiesScrollPane; private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel1; private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel10; private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel2; private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel3; private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel4; private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel5; private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel6; private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel7; private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel8; private scriptbuilder.gui.panels.IncidentTimelinePanel incidentTimelinePanel9; private javax.swing.JMenuItem jMenuItem2; private javax.swing.JMenuItem jMenuItem3; private javax.swing.JMenuItem jMenuItem4; private javax.swing.JMenuItem jMenuItem5; private javax.swing.JMenuItem jMenuItem6; private javax.swing.JPopupMenu.Separator jSeparator1; private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JPopupMenu.Separator jSeparator3; private javax.swing.JPopupMenu.Separator jSeparator4; private javax.swing.JLabel labelBackgroundNoise; private javax.swing.JLabel labelCADEntry; private javax.swing.JLabel labelIncidentColor; private javax.swing.JLabel labelIncidentDescription; private javax.swing.JLabel labelIncidentLength; private javax.swing.JLabel labelIncidentName; private javax.swing.JLabel labelIncidentNumber; private javax.swing.JLabel labelIncidentStart; private javax.swing.JLabel labelLaneClosures; private javax.swing.JLabel labelLeastFreq; private javax.swing.JLabel labelMinorEvents; private javax.swing.JLabel labelMostFreq; private javax.swing.JLabel labelRadioChatter; private javax.swing.JLabel labelRadioMessage; private javax.swing.JLabel labelRadioType; private javax.swing.JLabel labelTMCALLogs; private javax.swing.JSlider laneClosuresSlider; private javax.swing.JMenuItem loadIncident; private javax.swing.JSlider minorEventsSlider; private javax.swing.JMenuItem newIncident; private javax.swing.JButton okButton; private javax.swing.JMenuItem popupDeleteIncident; private javax.swing.JSlider radioChatterSlider; private javax.swing.JMenuItem radioEvent; private javax.swing.JFrame radioEventFrame; private javax.swing.JTextArea radioMessage; private javax.swing.JScrollPane radioMessageScrollPane; private javax.swing.JComboBox radioTypeComboBox; private javax.swing.JMenuItem saveIncident; private javax.swing.JMenuBar scriptBuilderMenuBar; private scriptbuilder.gui.panels.TimeStampPanel timeStampPanel; private javax.swing.JScrollPane timeStampScrollPane; private scriptbuilder.gui.panels.TimelineTickPanel timelineTickPanel; private javax.swing.JScrollPane timelinesScrollPane; private javax.swing.JLabel txtIncidentLength; private javax.swing.JTextArea txtNoiseDescription; private javax.swing.JLabel zoomInIcon; private javax.swing.JLabel zoomOutIcon; private javax.swing.JSlider zoomSlider; // End of variables declaration//GEN-END:variables }