package fireworkslauncher; import gnu.io.*; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.TooManyListenersException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.AbstractButton; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.metal.MetalToggleButtonUI; /** * * @author Kyle */ public class LauncherFrame extends javax.swing.JFrame implements SerialPortEventListener { /** * Creates new form LauncherFrame */ boolean isArmed = false; public LauncherFrame() { initComponents(); addWindowListener(new WindowListener() { @Override public void windowOpened(WindowEvent we) { } @Override public void windowClosing(WindowEvent we) { close(); System.exit(0); } @Override public void windowClosed(WindowEvent we) { } @Override public void windowIconified(WindowEvent we) { } @Override public void windowDeiconified(WindowEvent we) { } @Override public void windowActivated(WindowEvent we) { } @Override public void windowDeactivated(WindowEvent we) { } }); jToggleButton1.setUI(new ModifButtonUI()); } public void printToLog(String in) { debugArea.append(in); debugArea.setCaretPosition(debugArea.getText().length() - 1); } @Override public void paint(Graphics g) { super.paint(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); if (isArmed) { g2.setColor(Color.RED); } else { g2.setColor(Color.GREEN); } g2.fillOval(20, 45, 20, 20); } /** * 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") // private void initComponents() { jPanel2 = new javax.swing.JPanel(); jToggleButton1 = new javax.swing.JToggleButton(); jPanel1 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); jButton7 = new javax.swing.JButton(); jButton8 = new javax.swing.JButton(); jButton9 = new javax.swing.JButton(); jButton10 = new javax.swing.JButton(); jButton11 = new javax.swing.JButton(); jButton12 = new javax.swing.JButton(); jButton13 = new javax.swing.JButton(); jButton14 = new javax.swing.JButton(); jButton15 = new javax.swing.JButton(); jButton16 = new javax.swing.JButton(); jButton17 = new javax.swing.JButton(); jButton18 = new javax.swing.JButton(); jButton19 = new javax.swing.JButton(); jButton20 = new javax.swing.JButton(); jButton21 = new javax.swing.JButton(); jButton22 = new javax.swing.JButton(); jButton23 = new javax.swing.JButton(); jButton24 = new javax.swing.JButton(); jButton25 = new javax.swing.JButton(); jButton26 = new javax.swing.JButton(); jButton27 = new javax.swing.JButton(); jButton28 = new javax.swing.JButton(); jButton29 = new javax.swing.JButton(); jButton30 = new javax.swing.JButton(); jButton31 = new javax.swing.JButton(); jButton32 = new javax.swing.JButton(); jPanel3 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); debugArea = new javax.swing.JTextArea(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Launch Panel"); setAlwaysOnTop(true); setMinimumSize(new java.awt.Dimension(600, 400)); setPreferredSize(new java.awt.Dimension(1000, 700)); getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS)); jPanel2.setMaximumSize(new java.awt.Dimension(32767, 2)); jPanel2.setMinimumSize(new java.awt.Dimension(100, 5)); jPanel2.setPreferredSize(new java.awt.Dimension(555, 5)); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 566, Short.MAX_VALUE) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 5, Short.MAX_VALUE) ); getContentPane().add(jPanel2); jToggleButton1.setText("Arm System"); jToggleButton1.setToolTipText(""); jToggleButton1.setAlignmentX(0.5F); jToggleButton1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jToggleButton1.setEnabled(false); jToggleButton1.setFocusable(false); jToggleButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); jToggleButton1.setMargin(new java.awt.Insets(10, 14, 1, 14)); jToggleButton1.setMaximumSize(new java.awt.Dimension(200, 45)); jToggleButton1.setMinimumSize(new java.awt.Dimension(200, 35)); jToggleButton1.setPreferredSize(new java.awt.Dimension(200, 45)); jToggleButton1.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { jToggleButton1ItemStateChanged(evt); } }); getContentPane().add(jToggleButton1); jPanel1.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createEmptyBorder(8, 8, 1, 8), javax.swing.BorderFactory.createEtchedBorder())); jPanel1.setLayout(new java.awt.GridLayout(4, 8, 5, 5)); jButton1.setText("Fire 1"); jButton1.setActionCommand("1"); jButton1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton1.setEnabled(false); jButton1.setFocusable(false); jButton1.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton1.setMaximumSize(new java.awt.Dimension(31, 25)); jButton1.setMinimumSize(new java.awt.Dimension(31, 25)); jButton1.setPreferredSize(new java.awt.Dimension(31, 25)); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton1); jButton2.setText("Fire 2"); jButton2.setActionCommand("2"); jButton2.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton2.setEnabled(false); jButton2.setFocusable(false); jButton2.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton2.setMaximumSize(new java.awt.Dimension(31, 25)); jButton2.setMinimumSize(new java.awt.Dimension(31, 25)); jButton2.setPreferredSize(new java.awt.Dimension(31, 25)); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton2); jButton3.setText("Fire 3"); jButton3.setActionCommand("3"); jButton3.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton3.setEnabled(false); jButton3.setFocusable(false); jButton3.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton3.setMaximumSize(new java.awt.Dimension(31, 25)); jButton3.setMinimumSize(new java.awt.Dimension(31, 25)); jButton3.setPreferredSize(new java.awt.Dimension(31, 25)); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton3); jButton4.setText("Fire 4"); jButton4.setActionCommand("4"); jButton4.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton4.setEnabled(false); jButton4.setFocusable(false); jButton4.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton4.setMaximumSize(new java.awt.Dimension(31, 25)); jButton4.setMinimumSize(new java.awt.Dimension(31, 25)); jButton4.setPreferredSize(new java.awt.Dimension(31, 25)); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton4); jButton5.setText("Fire 5"); jButton5.setActionCommand("5"); jButton5.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton5.setEnabled(false); jButton5.setFocusable(false); jButton5.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton5.setMaximumSize(new java.awt.Dimension(31, 25)); jButton5.setMinimumSize(new java.awt.Dimension(31, 25)); jButton5.setPreferredSize(new java.awt.Dimension(31, 25)); jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton5); jButton6.setText("Fire 6"); jButton6.setActionCommand("6"); jButton6.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton6.setEnabled(false); jButton6.setFocusable(false); jButton6.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton6.setMaximumSize(new java.awt.Dimension(31, 25)); jButton6.setMinimumSize(new java.awt.Dimension(31, 25)); jButton6.setPreferredSize(new java.awt.Dimension(31, 25)); jButton6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton6); jButton7.setText("Fire 7"); jButton7.setActionCommand("7"); jButton7.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton7.setEnabled(false); jButton7.setFocusable(false); jButton7.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton7.setMaximumSize(new java.awt.Dimension(31, 25)); jButton7.setMinimumSize(new java.awt.Dimension(31, 25)); jButton7.setPreferredSize(new java.awt.Dimension(31, 25)); jButton7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton7); jButton8.setText("Fire 8"); jButton8.setActionCommand("8"); jButton8.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton8.setEnabled(false); jButton8.setFocusable(false); jButton8.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton8.setMaximumSize(new java.awt.Dimension(31, 25)); jButton8.setMinimumSize(new java.awt.Dimension(31, 25)); jButton8.setPreferredSize(new java.awt.Dimension(31, 25)); jButton8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton8); jButton9.setText("Fire 9"); jButton9.setActionCommand("9"); jButton9.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton9.setEnabled(false); jButton9.setFocusable(false); jButton9.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton9.setMaximumSize(new java.awt.Dimension(31, 25)); jButton9.setMinimumSize(new java.awt.Dimension(31, 25)); jButton9.setPreferredSize(new java.awt.Dimension(31, 25)); jButton9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton9); jButton10.setText("Fire 10"); jButton10.setActionCommand("10"); jButton10.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton10.setEnabled(false); jButton10.setFocusable(false); jButton10.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton10.setMaximumSize(new java.awt.Dimension(31, 25)); jButton10.setMinimumSize(new java.awt.Dimension(31, 25)); jButton10.setPreferredSize(new java.awt.Dimension(31, 25)); jButton10.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton10); jButton11.setText("Fire 11"); jButton11.setActionCommand("11"); jButton11.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton11.setEnabled(false); jButton11.setFocusable(false); jButton11.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton11.setMaximumSize(new java.awt.Dimension(31, 25)); jButton11.setMinimumSize(new java.awt.Dimension(31, 25)); jButton11.setPreferredSize(new java.awt.Dimension(31, 25)); jButton11.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton11); jButton12.setText("Fire 12"); jButton12.setActionCommand("12"); jButton12.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton12.setEnabled(false); jButton12.setFocusable(false); jButton12.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton12.setMaximumSize(new java.awt.Dimension(31, 25)); jButton12.setMinimumSize(new java.awt.Dimension(31, 25)); jButton12.setPreferredSize(new java.awt.Dimension(31, 25)); jButton12.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton12); jButton13.setText("Fire 13"); jButton13.setActionCommand("13"); jButton13.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton13.setEnabled(false); jButton13.setFocusable(false); jButton13.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton13.setMaximumSize(new java.awt.Dimension(31, 25)); jButton13.setMinimumSize(new java.awt.Dimension(31, 25)); jButton13.setPreferredSize(new java.awt.Dimension(31, 25)); jButton13.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton13); jButton14.setText("Fire 14"); jButton14.setActionCommand("14"); jButton14.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton14.setEnabled(false); jButton14.setFocusable(false); jButton14.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton14.setMaximumSize(new java.awt.Dimension(31, 25)); jButton14.setMinimumSize(new java.awt.Dimension(31, 25)); jButton14.setPreferredSize(new java.awt.Dimension(31, 25)); jButton14.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton14); jButton15.setText("Fire 15"); jButton15.setActionCommand("15"); jButton15.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton15.setEnabled(false); jButton15.setFocusable(false); jButton15.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton15.setMaximumSize(new java.awt.Dimension(31, 25)); jButton15.setMinimumSize(new java.awt.Dimension(31, 25)); jButton15.setPreferredSize(new java.awt.Dimension(31, 25)); jButton15.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton15); jButton16.setText("Fire 16"); jButton16.setActionCommand("16"); jButton16.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton16.setEnabled(false); jButton16.setFocusable(false); jButton16.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton16.setMaximumSize(new java.awt.Dimension(31, 25)); jButton16.setMinimumSize(new java.awt.Dimension(31, 25)); jButton16.setPreferredSize(new java.awt.Dimension(31, 25)); jButton16.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton16); jButton17.setText("Fire 17"); jButton17.setActionCommand("17"); jButton17.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton17.setEnabled(false); jButton17.setFocusable(false); jButton17.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton17.setMaximumSize(new java.awt.Dimension(31, 25)); jButton17.setMinimumSize(new java.awt.Dimension(31, 25)); jButton17.setPreferredSize(new java.awt.Dimension(31, 25)); jButton17.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton17); jButton18.setText("Fire 18"); jButton18.setActionCommand("18"); jButton18.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton18.setEnabled(false); jButton18.setFocusable(false); jButton18.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton18.setMaximumSize(new java.awt.Dimension(31, 25)); jButton18.setMinimumSize(new java.awt.Dimension(31, 25)); jButton18.setPreferredSize(new java.awt.Dimension(31, 25)); jButton18.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton18); jButton19.setText("Fire 19"); jButton19.setActionCommand("19"); jButton19.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton19.setEnabled(false); jButton19.setFocusable(false); jButton19.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton19.setMaximumSize(new java.awt.Dimension(31, 25)); jButton19.setMinimumSize(new java.awt.Dimension(31, 25)); jButton19.setPreferredSize(new java.awt.Dimension(31, 25)); jButton19.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton19); jButton20.setText("Fire 20"); jButton20.setActionCommand("20"); jButton20.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton20.setEnabled(false); jButton20.setFocusable(false); jButton20.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton20.setMaximumSize(new java.awt.Dimension(31, 25)); jButton20.setMinimumSize(new java.awt.Dimension(31, 25)); jButton20.setPreferredSize(new java.awt.Dimension(31, 25)); jButton20.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton20); jButton21.setText("Fire 21"); jButton21.setActionCommand("21"); jButton21.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton21.setEnabled(false); jButton21.setFocusable(false); jButton21.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton21.setMaximumSize(new java.awt.Dimension(31, 25)); jButton21.setMinimumSize(new java.awt.Dimension(31, 25)); jButton21.setPreferredSize(new java.awt.Dimension(31, 25)); jButton21.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton21); jButton22.setText("Fire 22"); jButton22.setActionCommand("22"); jButton22.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton22.setEnabled(false); jButton22.setFocusable(false); jButton22.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton22.setMaximumSize(new java.awt.Dimension(31, 25)); jButton22.setMinimumSize(new java.awt.Dimension(31, 25)); jButton22.setPreferredSize(new java.awt.Dimension(31, 25)); jButton22.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton22); jButton23.setText("Fire 23"); jButton23.setActionCommand("23"); jButton23.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton23.setEnabled(false); jButton23.setFocusable(false); jButton23.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton23.setMaximumSize(new java.awt.Dimension(31, 25)); jButton23.setMinimumSize(new java.awt.Dimension(31, 25)); jButton23.setPreferredSize(new java.awt.Dimension(31, 25)); jButton23.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton23); jButton24.setText("Fire 24"); jButton24.setActionCommand("24"); jButton24.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton24.setEnabled(false); jButton24.setFocusable(false); jButton24.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton24.setMaximumSize(new java.awt.Dimension(31, 25)); jButton24.setMinimumSize(new java.awt.Dimension(31, 25)); jButton24.setPreferredSize(new java.awt.Dimension(31, 25)); jButton24.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton24); jButton25.setText("Fire 25"); jButton25.setActionCommand("25"); jButton25.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton25.setEnabled(false); jButton25.setFocusable(false); jButton25.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton25.setMaximumSize(new java.awt.Dimension(31, 25)); jButton25.setMinimumSize(new java.awt.Dimension(31, 25)); jButton25.setPreferredSize(new java.awt.Dimension(31, 25)); jButton25.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton25); jButton26.setText("Fire 26"); jButton26.setActionCommand("26"); jButton26.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton26.setEnabled(false); jButton26.setFocusable(false); jButton26.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton26.setMaximumSize(new java.awt.Dimension(31, 25)); jButton26.setMinimumSize(new java.awt.Dimension(31, 25)); jButton26.setPreferredSize(new java.awt.Dimension(31, 25)); jButton26.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton26); jButton27.setText("Fire 27"); jButton27.setActionCommand("27"); jButton27.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton27.setEnabled(false); jButton27.setFocusable(false); jButton27.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton27.setMaximumSize(new java.awt.Dimension(31, 25)); jButton27.setMinimumSize(new java.awt.Dimension(31, 25)); jButton27.setPreferredSize(new java.awt.Dimension(31, 25)); jButton27.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton27); jButton28.setText("Fire 28"); jButton28.setActionCommand("28"); jButton28.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton28.setEnabled(false); jButton28.setFocusable(false); jButton28.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton28.setMaximumSize(new java.awt.Dimension(31, 25)); jButton28.setMinimumSize(new java.awt.Dimension(31, 25)); jButton28.setPreferredSize(new java.awt.Dimension(31, 25)); jButton28.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton28); jButton29.setText("Fire 29"); jButton29.setActionCommand("29"); jButton29.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton29.setEnabled(false); jButton29.setFocusable(false); jButton29.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton29.setMaximumSize(new java.awt.Dimension(31, 25)); jButton29.setMinimumSize(new java.awt.Dimension(31, 25)); jButton29.setPreferredSize(new java.awt.Dimension(31, 25)); jButton29.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton29); jButton30.setText("Fire 30"); jButton30.setActionCommand("30"); jButton30.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton30.setEnabled(false); jButton30.setFocusable(false); jButton30.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton30.setMaximumSize(new java.awt.Dimension(31, 25)); jButton30.setMinimumSize(new java.awt.Dimension(31, 25)); jButton30.setPreferredSize(new java.awt.Dimension(31, 25)); jButton30.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton30); jButton31.setText("Fire 31"); jButton31.setActionCommand("31"); jButton31.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton31.setEnabled(false); jButton31.setFocusable(false); jButton31.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton31.setMaximumSize(new java.awt.Dimension(31, 25)); jButton31.setMinimumSize(new java.awt.Dimension(31, 25)); jButton31.setPreferredSize(new java.awt.Dimension(31, 25)); jButton31.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton31); jButton32.setText("Fire 32"); jButton32.setActionCommand("32"); jButton32.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jButton32.setEnabled(false); jButton32.setFocusable(false); jButton32.setMargin(new java.awt.Insets(0, 14, 0, 14)); jButton32.setMaximumSize(new java.awt.Dimension(31, 25)); jButton32.setMinimumSize(new java.awt.Dimension(31, 25)); jButton32.setPreferredSize(new java.awt.Dimension(31, 25)); jButton32.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { buttonActionPerformed(evt); } }); jPanel1.add(jButton32); getContentPane().add(jPanel1); jPanel3.setMaximumSize(new java.awt.Dimension(32767, 250)); jPanel3.setMinimumSize(new java.awt.Dimension(100, 40)); jPanel3.setPreferredSize(new java.awt.Dimension(566, 75)); debugArea.setColumns(20); debugArea.setEditable(false); debugArea.setLineWrap(true); debugArea.setRows(1); debugArea.setTabSize(4); debugArea.setFocusable(false); debugArea.setMargin(new java.awt.Insets(2, 5, 2, 2)); jScrollPane1.setViewportView(debugArea); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 546, Short.MAX_VALUE) .addContainerGap()) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE) .addContainerGap()) ); getContentPane().add(jPanel3); pack(); }// SerialPort serialPort; /** * The port we're normally going to use. */ private static final String PORT_NAMES[] = { "/dev/tty.usbserial-A9007UX1", // Mac OS X "COM4", // windows2 "COM3", // Windows }; /** * Buffered input stream from the port */ private InputStream input; /** * The output stream to the port */ public OutputStream output; /** * Milliseconds to block while waiting for port open */ private static final int TIME_OUT = 2000; /** * Default bits per second for COM port. */ private static final int DATA_RATE = 4800; public void initialize() { CommPortIdentifier portId = null; Enumeration portEnum = CommPortIdentifier.getPortIdentifiers(); // iterate through, looking for the port while (portEnum.hasMoreElements()) { CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement(); for (String portName : PORT_NAMES) { if (currPortId.getName().equals(portName)) { portId = currPortId; break; } } } if (portId == null) { printToLog("Could not find COM port. Please (re)connect Arduino.\n"); return; } else { printToLog("Connected\n"); } try { // open serial port, and use class name for the appName. serialPort = (SerialPort) portId.open(this.getClass().getName(), TIME_OUT); // set port parameters serialPort.setSerialPortParams(DATA_RATE, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); // open the streams input = serialPort.getInputStream(); output = serialPort.getOutputStream(); // add event listeners serialPort.addEventListener(this); serialPort.notifyOnDataAvailable(true); try { printToLog("Loading...\n"); Thread.sleep(10000); printToLog("Done!\n"); jToggleButton1.setEnabled(true); jToggleButton1.setBackground(Color.GREEN); } catch (InterruptedException e) { printToLog(e.toString() + "\n"); } } catch (PortInUseException | UnsupportedCommOperationException | IOException | TooManyListenersException e) { printToLog(e.toString() + "\n"); } } /** * This should be called when you stop using the port. This will prevent * port locking on platforms like Linux. */ public synchronized void close() { if (serialPort != null) { serialPort.removeEventListener(); serialPort.close(); } } /** * Handle an event on the serial port. Read the data and print it. */ @Override public synchronized void serialEvent(SerialPortEvent oEvent) { if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) { try { int available = input.available(); byte chunk[] = new byte[available]; input.read(chunk, 0, available); // Displayed results are codepage dependent System.out.print(new String(chunk)); } catch (Exception e) { printToLog(e.toString() + "\n"); } } // Ignore all the other eventTypes, but you should consider the other ones. } public static void main(String[] args) throws Exception { final LauncherFrame f = new LauncherFrame(); f.setVisible(true); f.initialize(); System.out.println("Started"); } private void buttonActionPerformed(java.awt.event.ActionEvent evt) { if (isArmed) { try { int pinToFire = (Integer.parseInt(((JButton) evt.getSource()).getActionCommand())); printToLog(pinToFire + "\n"); output.write(pinToFire); output.write(253); //isClearForLaunch output.write(pinToFire); // confirm launch pin ((JButton) evt.getSource()).setBackground(Color.LIGHT_GRAY); } catch (IOException ex) { Logger.getLogger(LauncherFrame.class.getName()).log(Level.SEVERE, null, ex); printToLog(ex.getLocalizedMessage() + "\n"); } } } private void jToggleButton1ItemStateChanged(java.awt.event.ItemEvent evt) { this.repaint(); if (evt.getStateChange() == ItemEvent.SELECTED) { isArmed = true; try { output.write(254); Thread.sleep(10); output.write(254); Thread.sleep(10); output.write(254); } catch (InterruptedException | IOException ex) { printToLog(ex.getLocalizedMessage() + "\n"); Logger.getLogger(LauncherFrame.class.getName()).log(Level.SEVERE, null, ex); } jToggleButton1.setText("SYSTEM ARMED"); printToLog("SYSTEM IS LIVE\n"); jButton1.setEnabled(true); jButton2.setEnabled(true); jButton3.setEnabled(true); jButton4.setEnabled(true); jButton5.setEnabled(true); jButton6.setEnabled(true); jButton7.setEnabled(true); jButton8.setEnabled(true); jButton9.setEnabled(true); jButton10.setEnabled(true); jButton11.setEnabled(true); jButton12.setEnabled(true); jButton13.setEnabled(true); jButton14.setEnabled(true); jButton15.setEnabled(true); jButton16.setEnabled(true); jButton17.setEnabled(true); jButton18.setEnabled(true); jButton19.setEnabled(true); jButton20.setEnabled(true); jButton21.setEnabled(true); jButton22.setEnabled(true); jButton23.setEnabled(true); jButton24.setEnabled(true); jButton25.setEnabled(true); jButton26.setEnabled(true); jButton27.setEnabled(true); jButton28.setEnabled(true); jButton29.setEnabled(true); jButton30.setEnabled(true); jButton31.setEnabled(true); jButton32.setEnabled(true); } else { isArmed = false; try { output.write(255); Thread.sleep(10); output.write(255); Thread.sleep(10); output.write(255); } catch (InterruptedException | IOException ex) { printToLog(ex.getLocalizedMessage() + "\n"); Logger.getLogger(LauncherFrame.class.getName()).log(Level.SEVERE, null, ex); } jToggleButton1.setText("Arm System"); printToLog("System unarmed\n"); jButton1.setEnabled(false); jButton2.setEnabled(false); jButton3.setEnabled(false); jButton4.setEnabled(false); jButton5.setEnabled(false); jButton6.setEnabled(false); jButton7.setEnabled(false); jButton8.setEnabled(false); jButton9.setEnabled(false); jButton10.setEnabled(false); jButton11.setEnabled(false); jButton12.setEnabled(false); jButton13.setEnabled(false); jButton14.setEnabled(false); jButton15.setEnabled(false); jButton16.setEnabled(false); jButton17.setEnabled(false); jButton18.setEnabled(false); jButton19.setEnabled(false); jButton20.setEnabled(false); jButton21.setEnabled(false); jButton22.setEnabled(false); jButton23.setEnabled(false); jButton24.setEnabled(false); jButton25.setEnabled(false); jButton26.setEnabled(false); jButton27.setEnabled(false); jButton28.setEnabled(false); jButton29.setEnabled(false); jButton30.setEnabled(false); jButton31.setEnabled(false); jButton32.setEnabled(false); } } // Variables declaration - do not modify private javax.swing.JTextArea debugArea; private javax.swing.JButton jButton1; private javax.swing.JButton jButton10; private javax.swing.JButton jButton11; private javax.swing.JButton jButton12; private javax.swing.JButton jButton13; private javax.swing.JButton jButton14; private javax.swing.JButton jButton15; private javax.swing.JButton jButton16; private javax.swing.JButton jButton17; private javax.swing.JButton jButton18; private javax.swing.JButton jButton19; private javax.swing.JButton jButton2; private javax.swing.JButton jButton20; private javax.swing.JButton jButton21; private javax.swing.JButton jButton22; private javax.swing.JButton jButton23; private javax.swing.JButton jButton24; private javax.swing.JButton jButton25; private javax.swing.JButton jButton26; private javax.swing.JButton jButton27; private javax.swing.JButton jButton28; private javax.swing.JButton jButton29; private javax.swing.JButton jButton3; private javax.swing.JButton jButton30; private javax.swing.JButton jButton31; private javax.swing.JButton jButton32; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JButton jButton7; private javax.swing.JButton jButton8; private javax.swing.JButton jButton9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JToggleButton jToggleButton1; // End of variables declaration } class ModifButtonUI extends MetalToggleButtonUI { ModifButtonUI() { } public static ComponentUI createUI(JComponent c) { return new ModifButtonUI(); } @Override public void paint(Graphics g, JComponent c) { super.paint(g, c); } @Override public void paintButtonPressed(Graphics g, AbstractButton b) { paintText(g, b, b.getBounds(), b.getText()); g.setColor(Color.red.brighter()); g.fillRect(0, 0, b.getSize().width, b.getSize().height); } public void paintBorder(Graphics g) { } @Override protected void paintFocus(Graphics g, AbstractButton b, Rectangle viewRect, Rectangle textRect, Rectangle iconRect) { } }