/** * * @author pquiring * * Created : Mar 14, 2014 */ import java.awt.Dimension; import java.awt.GraphicsEnvironment; import java.awt.Rectangle; import java.awt.event.*; import javax.sound.midi.*; import javaforce.*; public class EditSettings extends javax.swing.JDialog { /** * Creates new form Settings */ public EditSettings(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); setPosition(); JF.assignHotKey(this, ok, KeyEvent.VK_ENTER); JF.assignHotKey(this, cancel, KeyEvent.VK_ESCAPE); listDevices(); loadSettings(); } /** * 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() { jLabel1 = new javax.swing.JLabel(); device = new javax.swing.JComboBox(); ok = new javax.swing.JButton(); cancel = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); recordMode = new javax.swing.JComboBox(); jLabel3 = new javax.swing.JLabel(); recordTrack = new javax.swing.JComboBox(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Edit Settings"); jLabel1.setText("Recording Midi Device:"); 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); } }); jLabel2.setText("Recording Mode:"); recordMode.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Overwrite", "Insert" })); recordMode.setEnabled(false); jLabel3.setText("Recording Track Mode:"); recordTrack.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Single", "Multi" })); recordTrack.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() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(device, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .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(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(recordMode, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(recordTrack, 0, 275, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(device, 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(recordMode, 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(recordTrack, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 197, 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 saveSettings(); 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 device; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JButton ok; private javax.swing.JComboBox recordMode; private javax.swing.JComboBox recordTrack; // End of variables declaration//GEN-END:variables private boolean listDevices() { device.removeAllItems(); MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); int idx = -1; try { if (infos == null) throw new Exception("no midi devices found"); for(int a=0;a<infos.length;a++) { MidiDevice midiDevice = MidiSystem.getMidiDevice(infos[a]); if (midiDevice.getMaxTransmitters() == 0) continue; String name = infos[a].getName(); if (name.equals(Settings.current.midiDevice)) { idx = device.getItemCount(); } device.addItem(name); } if (device.getItemCount() == 0) throw new Exception("no midi devices found"); if (idx != -1) device.setSelectedIndex(idx); return true; } catch (Exception e) { JFLog.log(e); return false; } } private void loadSettings() { //midiDevice already loaded recordMode.setSelectedIndex(Settings.current.recordingMode); recordTrack.setSelectedIndex(Settings.current.recordingTrack); } private void saveSettings() { String midi = (String)device.getSelectedItem(); if (midi == null) midi = ""; Settings.current.midiDevice = midi; Settings.current.recordingMode = recordMode.getSelectedIndex(); Settings.current.recordingTrack = recordTrack.getSelectedIndex(); } private void setPosition() { Dimension d = getSize(); Rectangle s = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds(); setLocation(s.width/2 - d.width/2, s.height/2 - d.height/2); } }