/** Edit Settings * * @author pquiring * * Created : Apr 25, 2014 */ import javaforce.*; import javaforce.media.*; public class EditSettings extends javax.swing.JDialog { /** * Creates new form EditSettings */ public EditSettings(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); rateField.setSelectedItem("" + Settings.current.freq); channels.setSelectedIndex(Settings.current.channels - 1); listInputDevices(); listOutputDevices(); JF.centerWindow(this); } /** * 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() { ok = new javax.swing.JButton(); cancel = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); rateField = new javax.swing.JComboBox(); jLabel2 = new javax.swing.JLabel(); inputDevice = new javax.swing.JComboBox(); jLabel3 = new javax.swing.JLabel(); outputDevice = new javax.swing.JComboBox(); jLabel4 = new javax.swing.JLabel(); channels = new javax.swing.JComboBox(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Settings"); ok.setText("OK"); ok.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okActionPerformed(evt); } }); cancel.setText("Cancel"); cancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelActionPerformed(evt); } }); jLabel1.setText("Recording Rate:"); rateField.setEditable(true); rateField.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "8000", "11025", "16000", "22050", "32000", "44100", "64000", "96000", " " })); jLabel2.setText("Recording Device:"); jLabel3.setText("Playback Device:"); jLabel4.setText("Recording Channels:"); channels.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "mono", "stereo" })); 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) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(cancel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(ok)) .addGroup(layout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(outputDevice, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(inputDevice, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(channels, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(rateField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 29, Short.MAX_VALUE))) .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.BASELINE) .addComponent(jLabel1) .addComponent(rateField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(32, 32, 32) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel4) .addComponent(channels, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(inputDevice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(outputDevice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 20, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(ok) .addComponent(cancel)) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void okActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okActionPerformed int rate = JF.atoi((String)rateField.getSelectedItem()); if (rate < 8000) rate = 8000; if (rate > 96000) rate = 96000; Settings.current.freq = rate; Settings.current.channels = channels.getSelectedIndex() + 1; Settings.current.input = (String)inputDevice.getSelectedItem(); // JFLog.log("input=" + Settings.current.input); Settings.current.output = (String)outputDevice.getSelectedItem(); // JFLog.log("output=" + Settings.current.output); Settings.saveSettings(); dispose(); }//GEN-LAST:event_okActionPerformed private void cancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelActionPerformed dispose(); }//GEN-LAST:event_cancelActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton cancel; private javax.swing.JComboBox channels; private javax.swing.JComboBox inputDevice; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JButton ok; private javax.swing.JComboBox outputDevice; private javax.swing.JComboBox rateField; // End of variables declaration//GEN-END:variables private void listOutputDevices() { AudioOutput output = new AudioOutput(); String devices[] = output.listDevices(); int idx = -1; outputDevice.removeAllItems(); boolean hasDefault = false; for(int a=0;a<devices.length;a++) { outputDevice.addItem(devices[a]); if (devices[a].equals(Settings.current.output)) { idx = a; } } if (idx != -1) { outputDevice.setSelectedIndex(idx); } else { outputDevice.setSelectedIndex(0); } } private void listInputDevices() { AudioInput input = new AudioInput(); String devices[] = input.listDevices(); int idx = -1; inputDevice.removeAllItems(); for(int a=0;a<devices.length;a++) { inputDevice.addItem(devices[a]); if (devices[a].equals(Settings.current.input)) { idx = a; } } if (idx != -1) { inputDevice.setSelectedIndex(idx); } else { inputDevice.setSelectedIndex(0); } } }