content: /*
   * HalfNES by Andrew Hoffman
   * Licensed under the GNU GPL Version 3. See LICENSE file
   */
  
  /*
   * OptionsDialog.java
   *
   * Created on Jan 16, 2011, 4:21:43 PM
   */
  package com.grapeshot.halfnes.ui;
  
  import com.grapeshot.halfnes.PrefsSingleton;
  import java.awt.event.KeyEvent;
  import java.util.logging.Level;
  import java.util.logging.Logger;
  import java.util.prefs.BackingStoreException;
  import java.util.prefs.Preferences;
  
  /**
   *
   * @author Andrew
   */
  public class ControlsDialog extends javax.swing.JDialog {
  
      private int[][] keys;
      private boolean okClicked = false;
  
      /**
       * Creates new form ControlsDialog
       */
      public ControlsDialog(java.awt.Frame parent) {
          super(parent, true);
          Preferences prefs = PrefsSingleton.get();
          int[][] keys = {{prefs.getInt("keyUp1", KeyEvent.VK_UP),
                  prefs.getInt("keyDown1", KeyEvent.VK_DOWN),
                  prefs.getInt("keyLeft1", KeyEvent.VK_LEFT),
                  prefs.getInt("keyRight1", KeyEvent.VK_RIGHT),
                  prefs.getInt("keyA1", KeyEvent.VK_X),
                  prefs.getInt("keyB1", KeyEvent.VK_Z),
                  prefs.getInt("keySelect1", KeyEvent.VK_SHIFT),
                  prefs.getInt("keyStart1", KeyEvent.VK_ENTER),}, {
                  prefs.getInt("keyUp2", KeyEvent.VK_W),
                  prefs.getInt("keyDown2", KeyEvent.VK_S),
                  prefs.getInt("keyLeft2", KeyEvent.VK_A),
                  prefs.getInt("keyRight2", KeyEvent.VK_D),
                  prefs.getInt("keyA2", KeyEvent.VK_G),
                  prefs.getInt("keyB2", KeyEvent.VK_F),
                  prefs.getInt("keySelect2", KeyEvent.VK_R),
                  prefs.getInt("keyStart2", KeyEvent.VK_T)}};
          this.keys = keys;
          initComponents();
          this.setTitle("HalfNES Controller Settings");
          //set all of the text boxes
          jField1Up.setText(KeyEvent.getKeyText(keys[0][0]));
          jField1Down.setText(KeyEvent.getKeyText(keys[0][1]));
          jField1Left.setText(KeyEvent.getKeyText(keys[0][2]));
          jField1Right.setText(KeyEvent.getKeyText(keys[0][3]));
          jField1A.setText(KeyEvent.getKeyText(keys[0][4]));
          jField1B.setText(KeyEvent.getKeyText(keys[0][5]));
          jField1Select.setText(KeyEvent.getKeyText(keys[0][6]));
          jField1Start.setText(KeyEvent.getKeyText(keys[0][7]));
  
          jField2Up.setText(KeyEvent.getKeyText(keys[1][0]));
          jField2Down.setText(KeyEvent.getKeyText(keys[1][1]));
          jField2Left.setText(KeyEvent.getKeyText(keys[1][2]));
          jField2Right.setText(KeyEvent.getKeyText(keys[1][3]));
          jField2A.setText(KeyEvent.getKeyText(keys[1][4]));
          jField2B.setText(KeyEvent.getKeyText(keys[1][5]));
          jField2Select.setText(KeyEvent.getKeyText(keys[1][6]));
          jField2Start.setText(KeyEvent.getKeyText(keys[1][7]));
          //set the controller text if we've detected some
          String ctrl1 = prefs.get("controller0", "");
          String ctrl2 = prefs.get("controller1", "");
          if (!ctrl1.isEmpty()) {
              jLabelCtrl1.setText(ctrl1);
          }
          if (!ctrl2.isEmpty()) {
              jLabelCtrl2.setText(ctrl2);
          }
          jButtonOK.setActionCommand("OK");
          jButtonCancel.setActionCommand("Cancel");
      }
  
      /**
       * 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")
      // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
      private void initComponents() {
  
          buttonGroup1 = new javax.swing.ButtonGroup();
          jLabel3 = new javax.swing.JLabel();
          jLabel4 = new javax.swing.JLabel();
          jLabel5 = new javax.swing.JLabel();
          jLabel6 = new javax.swing.JLabel();
          jLabel7 = new javax.swing.JLabel();
          jLabel8 = new javax.swing.JLabel();
          jLabel9 = new javax.swing.JLabel();
          jLabel10 = new javax.swing.JLabel();
          jLabel11 = new javax.swing.JLabel();
          jLabel12 = new javax.swing.JLabel();
          jLabel13 = new javax.swing.JLabel();
          jField1Up = new javax.swing.JTextField();
          jField1Down = new javax.swing.JTextField();
          jField1Right = new javax.swing.JTextField();
          jField1Left = new javax.swing.JTextField();
          jField1Start = new javax.swing.JTextField();
          jField1Select = new javax.swing.JTextField();
          jField1B = new javax.swing.JTextField();
          jField1A = new javax.swing.JTextField();
          jField2Up = new javax.swing.JTextField();
          jField2Down = new javax.swing.JTextField();
          jField2Left = new javax.swing.JTextField();
          jField2Right = new javax.swing.JTextField();
          jField2A = new javax.swing.JTextField();
          jField2B = new javax.swing.JTextField();
          jField2Select = new javax.swing.JTextField();
          jField2Start = new javax.swing.JTextField();
          jButtonCancel = new javax.swing.JButton();
          jButtonOK = new javax.swing.JButton();
          jLabel16 = new javax.swing.JLabel();
          jLabel1 = new javax.swing.JLabel();
          jLabelCtrl1 = new javax.swing.JLabel();
          jButton1 = new javax.swing.JButton();
          jButton2 = new javax.swing.JButton();
          jLabelCtrl2 = new javax.swing.JLabel();
  
          setModalityType(java.awt.Dialog.ModalityType.APPLICATION_MODAL);
          setName("ControlsDialog"); // NOI18N
          setResizable(false);
  
          jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
          jLabel3.setText("Keybindings:"); // NOI18N
  
          jLabel4.setText("Controller 1"); // NOI18N
  
          jLabel5.setText("Controller 2"); // NOI18N
  
          jLabel6.setText("Up"); // NOI18N
  
          jLabel7.setText("Down"); // NOI18N
  
          jLabel8.setText("Left"); // NOI18N
  
          jLabel9.setText("Right"); // NOI18N
  
          jLabel10.setText("A"); // NOI18N
  
          jLabel11.setText("B"); // NOI18N
  
          jLabel12.setText("Select"); // NOI18N
  
          jLabel13.setText("Start"); // NOI18N
  
          jField1Up.setMinimumSize(new java.awt.Dimension(120, 20));
          jField1Up.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  jField2StartActionPerformed(evt);
              }
          });
          jField1Up.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField1UpKeyReleased(evt);
              }
          });
  
          jField1Down.setMinimumSize(new java.awt.Dimension(120, 20));
          jField1Down.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  jField2StartActionPerformed(evt);
              }
          });
          jField1Down.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField1DownKeyReleased(evt);
              }
          });
  
          jField1Right.setMinimumSize(new java.awt.Dimension(120, 20));
          jField1Right.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  jField2StartActionPerformed(evt);
              }
          });
          jField1Right.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField1RightKeyReleased(evt);
              }
          });
  
          jField1Left.setMinimumSize(new java.awt.Dimension(120, 20));
          jField1Left.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  jField2StartActionPerformed(evt);
              }
          });
          jField1Left.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField1LeftKeyReleased(evt);
              }
          });
  
          jField1Start.setMinimumSize(new java.awt.Dimension(120, 20));
          jField1Start.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField1StartKeyReleased(evt);
              }
          });
  
          jField1Select.setMinimumSize(new java.awt.Dimension(120, 20));
          jField1Select.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField1SelectKeyReleased(evt);
              }
          });
  
          jField1B.setMinimumSize(new java.awt.Dimension(120, 20));
          jField1B.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField1BKeyReleased(evt);
              }
          });
  
          jField1A.setMinimumSize(new java.awt.Dimension(120, 20));
          jField1A.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField1AKeyReleased(evt);
              }
          });
  
          jField2Up.setMinimumSize(new java.awt.Dimension(120, 20));
          jField2Up.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField2UpKeyReleased(evt);
              }
          });
  
          jField2Down.setMinimumSize(new java.awt.Dimension(120, 20));
          jField2Down.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField2DownKeyReleased(evt);
              }
          });
  
          jField2Left.setMinimumSize(new java.awt.Dimension(120, 20));
          jField2Left.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField2LeftKeyReleased(evt);
              }
          });
  
          jField2Right.setMinimumSize(new java.awt.Dimension(120, 20));
          jField2Right.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField2RightKeyReleased(evt);
              }
          });
  
          jField2A.setMinimumSize(new java.awt.Dimension(120, 20));
          jField2A.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField2AKeyReleased(evt);
              }
          });
  
          jField2B.setMinimumSize(new java.awt.Dimension(120, 20));
          jField2B.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField2BKeyReleased(evt);
              }
          });
  
          jField2Select.setMinimumSize(new java.awt.Dimension(120, 20));
          jField2Select.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField2SelectKeyReleased(evt);
              }
          });
  
          jField2Start.setMinimumSize(new java.awt.Dimension(120, 20));
          jField2Start.addKeyListener(new java.awt.event.KeyAdapter() {
              public void keyReleased(java.awt.event.KeyEvent evt) {
                  jField2StartKeyReleased(evt);
              }
          });
  
          jButtonCancel.setText("Cancel"); // NOI18N
          jButtonCancel.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  jButtonCancelActionPerformed(evt);
              }
          });
  
          jButtonOK.setText("OK"); // NOI18N
          jButtonOK.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  jButtonOKActionPerformed(evt);
              }
          });
  
          jLabel16.setText(" Click in text box and type a key to change that binding."); // NOI18N
  
          jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
          jLabel1.setText("Detected Game Controllers:");
  
          jLabelCtrl1.setText("No Player 1 controller connected");
          jLabelCtrl1.setEnabled(false);
  
          jButton1.setText("Set Buttons");
          jButton1.setEnabled(false);
          jButton1.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  jButton1ActionPerformed(evt);
              }
          });
  
          jButton2.setText("Set Buttons");
          jButton2.setEnabled(false);
          jButton2.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  jButton2ActionPerformed(evt);
              }
          });
  
          jLabelCtrl2.setText("No Player 2 controller connected");
          jLabelCtrl2.setEnabled(false);
  
          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(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                      .addComponent(jLabel1)
                      .addComponent(jLabel16)
                      .addGroup(layout.createSequentialGroup()
                          .addGap(49, 49, 49)
                          .addComponent(jLabel4)
                          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                          .addComponent(jLabel5))
                      .addComponent(jLabel3)
                      .addGroup(layout.createSequentialGroup()
                          .addGap(10, 10, 10)
                          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                              .addComponent(jLabel7)
                              .addComponent(jLabel8)
                              .addComponent(jLabel9)
                              .addComponent(jLabel10)
                              .addComponent(jLabel11)
                              .addComponent(jLabel13)
                              .addComponent(jLabel6)
                              .addComponent(jLabel12))
                          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                              .addComponent(jField1Right, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField1Left, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField1B, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField1A, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField1Start, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField1Select, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField1Up, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField1Down, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE))
                          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                              .addComponent(jField2Select, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField2B, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField2Start, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField2A, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField2Right, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField2Up, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField2Down, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jField2Left, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)))
                      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                          .addGroup(layout.createSequentialGroup()
                              .addComponent(jButtonOK, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                              .addComponent(jButtonCancel))
                          .addGroup(layout.createSequentialGroup()
                              .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                  .addComponent(jLabelCtrl1)
                                  .addComponent(jLabelCtrl2))
                              .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                              .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                  .addComponent(jButton2)
                                  .addComponent(jButton1))))))
          );
  
          layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jField1A, jField1B, jField1Down, jField1Left, jField1Right, jField1Select, jField1Start, jField1Up, jField2A, jField2B, jField2Down, jField2Left, jField2Right, jField2Select, jField2Start, jField2Up});
  
          layout.setVerticalGroup(
              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
              .addGroup(layout.createSequentialGroup()
                  .addComponent(jLabel3)
                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                  .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                  .addGap(11, 11, 11)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                      .addComponent(jLabel4)
                      .addComponent(jLabel5))
                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                      .addComponent(jField2Up, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                      .addGroup(layout.createSequentialGroup()
                          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                              .addGroup(layout.createSequentialGroup()
                                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                      .addComponent(jLabel6)
                                      .addComponent(jField1Up, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                      .addComponent(jField1Down, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                      .addComponent(jLabel7))
                                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                      .addComponent(jField1Left, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                      .addComponent(jLabel8))
                                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                      .addComponent(jField1Right, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                      .addComponent(jLabel9)
                                      .addComponent(jField2Right, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                      .addComponent(jField1A, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                      .addComponent(jLabel10)
                                      .addComponent(jField2A, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                              .addGroup(layout.createSequentialGroup()
                                  .addGap(31, 31, 31)
                                  .addComponent(jField2Down, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                  .addComponent(jField2Left, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                              .addComponent(jField1B, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jLabel11)
                              .addComponent(jField2B, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                              .addComponent(jField1Select, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jLabel12)
                              .addComponent(jField2Select, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                          .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                              .addComponent(jField1Start, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                              .addComponent(jLabel13)
                              .addComponent(jField2Start, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                  .addComponent(jLabel1)
                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                      .addComponent(jLabelCtrl1)
                      .addComponent(jButton2))
                  .addGap(12, 12, 12)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                      .addComponent(jLabelCtrl2)
                      .addComponent(jButton1))
                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                      .addComponent(jButtonOK)
                      .addComponent(jButtonCancel))
                  .addGap(0, 8, Short.MAX_VALUE))
          );
  
          layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jField1A, jField1B, jField1Down, jField1Left, jField1Right, jField1Select, jField1Start, jField1Up, jField2A, jField2B, jField2Down, jField2Left, jField2Right, jField2Select, jField2Start, jField2Up});
  
          pack();
      }// </editor-fold>//GEN-END:initComponents
  
      private void jButtonCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCancelActionPerformed
          if ("Cancel".equals(evt.getActionCommand())) {
              this.setVisible(false);
          }
      }//GEN-LAST:event_jButtonCancelActionPerformed
  
      private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOKActionPerformed
          //    if ("OK".equals(evt.getActionCommand())) {
          //here we go... save everything and hide the window
          Preferences prefs = PrefsSingleton.get();
          prefs.putInt("keyUp1", keys[0][0]);
          prefs.putInt("keyDown1", keys[0][1]);
          prefs.putInt("keyLeft1", keys[0][2]);
          prefs.putInt("keyRight1", keys[0][3]);
          prefs.putInt("keyA1", keys[0][4]);
          prefs.putInt("keyB1", keys[0][5]);
          prefs.putInt("keySelect1", keys[0][6]);
          prefs.putInt("keyStart1", keys[0][7]);
          prefs.putInt("keyUp2", keys[1][0]);
          prefs.putInt("keyDown2", keys[1][1]);
          prefs.putInt("keyLeft2", keys[1][2]);
          prefs.putInt("keyRight2", keys[1][3]);
          prefs.putInt("keyA2", keys[1][4]);
          prefs.putInt("keyB2", keys[1][5]);
          prefs.putInt("keySelect2", keys[1][6]);
          prefs.putInt("keyStart2", keys[1][7]);
          try {
              prefs.flush();
          } catch (BackingStoreException ex) {
              Logger.getLogger(ControlsDialog.class.getName()).log(Level.SEVERE, null, ex);
          }
          okClicked = true;
          this.setVisible(false);
          //   }
      }//GEN-LAST:event_jButtonOKActionPerformed
      public boolean okClicked() {
          return okClicked;
      }
      private void jField1UpKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField1UpKeyReleased
          int k = evt.getKeyCode();
          jField1Up.setText(KeyEvent.getKeyText(k));
          keys[0][0] = k;
      }//GEN-LAST:event_jField1UpKeyReleased
  
      private void jField1DownKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField1DownKeyReleased
          int k = evt.getKeyCode();
          jField1Down.setText(KeyEvent.getKeyText(k));
          keys[0][1] = k;
      }//GEN-LAST:event_jField1DownKeyReleased
  
      private void jField1LeftKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField1LeftKeyReleased
          int k = evt.getKeyCode();
          jField1Left.setText(KeyEvent.getKeyText(k));
          keys[0][2] = k;
      }//GEN-LAST:event_jField1LeftKeyReleased
  
      private void jField1RightKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField1RightKeyReleased
          int k = evt.getKeyCode();
          jField1Right.setText(KeyEvent.getKeyText(k));
          keys[0][3] = k;
      }//GEN-LAST:event_jField1RightKeyReleased
  
      private void jField2StartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jField2StartActionPerformed
          // TODO add your handling code here:
      }//GEN-LAST:event_jField2StartActionPerformed
  
      private void jField1AKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField1AKeyReleased
          int k = evt.getKeyCode();
          jField1A.setText(KeyEvent.getKeyText(k));
          keys[0][4] = k;
      }//GEN-LAST:event_jField1AKeyReleased
  
      private void jField1BKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField1BKeyReleased
          int k = evt.getKeyCode();
          jField1B.setText(KeyEvent.getKeyText(k));
          keys[0][5] = k;
      }//GEN-LAST:event_jField1BKeyReleased
  
      private void jField1SelectKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField1SelectKeyReleased
          int k = evt.getKeyCode();
          jField1Select.setText(KeyEvent.getKeyText(k));
          keys[0][6] = k;
      }//GEN-LAST:event_jField1SelectKeyReleased
  
      private void jField1StartKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField1StartKeyReleased
          int k = evt.getKeyCode();
          jField1Start.setText(KeyEvent.getKeyText(k));
          keys[0][7] = k;
      }//GEN-LAST:event_jField1StartKeyReleased
  
      private void jField2UpKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField2UpKeyReleased
          int k = evt.getKeyCode();
          jField2Up.setText(KeyEvent.getKeyText(k));
          keys[1][0] = k;
      }//GEN-LAST:event_jField2UpKeyReleased
  
      private void jField2StartKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField2StartKeyReleased
          int k = evt.getKeyCode();
          jField2Start.setText(KeyEvent.getKeyText(k));
          keys[1][7] = k;
      }//GEN-LAST:event_jField2StartKeyReleased
  
      private void jField2DownKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField2DownKeyReleased
          int k = evt.getKeyCode();
          jField2Down.setText(KeyEvent.getKeyText(k));
          keys[1][1] = k;
      }//GEN-LAST:event_jField2DownKeyReleased
  
      private void jField2LeftKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField2LeftKeyReleased
          int k = evt.getKeyCode();
          jField2Left.setText(KeyEvent.getKeyText(k));
          keys[1][2] = k;
      }//GEN-LAST:event_jField2LeftKeyReleased
  
      private void jField2RightKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField2RightKeyReleased
          int k = evt.getKeyCode();
          jField2Right.setText(KeyEvent.getKeyText(k));
          keys[1][3] = k;
      }//GEN-LAST:event_jField2RightKeyReleased
  
      private void jField2AKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField2AKeyReleased
          int k = evt.getKeyCode();
          jField2A.setText(KeyEvent.getKeyText(k));
          keys[1][4] = k;
      }//GEN-LAST:event_jField2AKeyReleased
  
      private void jField2BKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField2BKeyReleased
          int k = evt.getKeyCode();
          jField2B.setText(KeyEvent.getKeyText(k));
          keys[1][5] = k;
      }//GEN-LAST:event_jField2BKeyReleased
  
      private void jField2SelectKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jField2SelectKeyReleased
          int k = evt.getKeyCode();
          jField2Select.setText(KeyEvent.getKeyText(k));
          keys[1][6] = k;
      }//GEN-LAST:event_jField2SelectKeyReleased
  
      private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
          // TODO add your handling code here:
      }//GEN-LAST:event_jButton1ActionPerformed
  
      private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
          // TODO add your handling code here:
      }//GEN-LAST:event_jButton2ActionPerformed
      // Variables declaration - do not modify//GEN-BEGIN:variables
      private javax.swing.ButtonGroup buttonGroup1;
      private javax.swing.JButton jButton1;
      private javax.swing.JButton jButton2;
      private javax.swing.JButton jButtonCancel;
      private javax.swing.JButton jButtonOK;
      private javax.swing.JTextField jField1A;
      private javax.swing.JTextField jField1B;
      private javax.swing.JTextField jField1Down;
      private javax.swing.JTextField jField1Left;
      private javax.swing.JTextField jField1Right;
      private javax.swing.JTextField jField1Select;
      private javax.swing.JTextField jField1Start;
      private javax.swing.JTextField jField1Up;
      private javax.swing.JTextField jField2A;
      private javax.swing.JTextField jField2B;
      private javax.swing.JTextField jField2Down;
      private javax.swing.JTextField jField2Left;
      private javax.swing.JTextField jField2Right;
      private javax.swing.JTextField jField2Select;
      private javax.swing.JTextField jField2Start;
      private javax.swing.JTextField jField2Up;
      private javax.swing.JLabel jLabel1;
      private javax.swing.JLabel jLabel10;
      private javax.swing.JLabel jLabel11;
      private javax.swing.JLabel jLabel12;
      private javax.swing.JLabel jLabel13;
      private javax.swing.JLabel jLabel16;
      private javax.swing.JLabel jLabel3;
      private javax.swing.JLabel jLabel4;
      private javax.swing.JLabel jLabel5;
      private javax.swing.JLabel jLabel6;
      private javax.swing.JLabel jLabel7;
      private javax.swing.JLabel jLabel8;
      private javax.swing.JLabel jLabel9;
      private javax.swing.JLabel jLabelCtrl1;
      private javax.swing.JLabel jLabelCtrl2;
      // End of variables declaration//GEN-END:variables
  }
  