/*
* AudioFormtPanel.java
*
* Created on June 12, 2007, 4:32 PM
*/
package net.sf.fmj.ui.wizards;
import javax.media.format.AudioFormat;
/**
*
* @author Ken Larson
*/
public class AudioFormatPanel extends javax.swing.JPanel
{
/** Creates new form AudioFormtPanel */
public AudioFormatPanel()
{
initComponents();
}
public javax.swing.JComboBox getComboAudioEncoding()
{
return comboAudioEncoding;
}
public javax.swing.JComboBox getComboAudioSampleRate()
{
return comboAudioSampleRate;
}
public void setAudioFormat(AudioFormat f)
{
// encoding
comboAudioEncoding.setSelectedItem(f.getEncoding());
// disable the controls, since we can't change the format for now
comboAudioSampleRate.setEnabled(false);
radioAudioChannelsMono.setEnabled(false);
radioAudioChannelsStereo.setEnabled(false);
radioAudioEndianLittle.setEnabled(false);
radioAudioEndianBig.setEnabled(false);
radioAudioBitsPerSample8.setEnabled(false);
radioAudioBitsPerSample16.setEnabled(false);
checkBoxAudioSigned.setEnabled(false);
comboAudioSampleRate.setSelectedItem("" + (int) f.getSampleRate()); // TODO: hard-coded trunc to int
if (f.getChannels() == 1)
radioAudioChannelsMono.setSelected(true);
else if (f.getChannels() == 2)
radioAudioChannelsStereo.setSelected(true);
else
throw new IllegalArgumentException();
if (f.getEndian() == AudioFormat.LITTLE_ENDIAN)
radioAudioEndianLittle.setSelected(true);
else if (f.getEndian() == AudioFormat.BIG_ENDIAN)
radioAudioEndianBig.setSelected(true);
else
{ if (f.getSampleSizeInBits() > 8)
throw new IllegalArgumentException("Unknown or unspecified endian: " + f.getEndian() + " format: " + f);
radioAudioEndianLittle.setSelected(false);
radioAudioEndianBig.setSelected(false);
}
if (f.getSampleSizeInBits() == 8)
radioAudioBitsPerSample8.setSelected(true);
else if (f.getSampleSizeInBits() == 16)
radioAudioBitsPerSample16.setSelected(true);
else
throw new IllegalArgumentException();
if (f.getSigned() == AudioFormat.SIGNED)
checkBoxAudioSigned.setSelected(true);
else if (f.getSigned() == AudioFormat.UNSIGNED)
checkBoxAudioSigned.setSelected(false);
else
throw new IllegalArgumentException();
}
public AudioFormat getAudioFormat()
{
final String encoding = (String) comboAudioEncoding.getSelectedItem();
final double sampleRate = Integer.parseInt((String) comboAudioSampleRate.getSelectedItem());
final int sampleSizeInBits;
if (radioAudioBitsPerSample8.isSelected())
sampleSizeInBits = 8;
else if (radioAudioBitsPerSample16.isSelected())
sampleSizeInBits = 16;
else
throw new RuntimeException();
final int channels;
if (radioAudioChannelsMono.isSelected())
channels = 1;
else if (radioAudioChannelsStereo.isSelected())
channels = 2;
else
throw new RuntimeException();
final int endian;
if (sampleSizeInBits <= 8)
endian = -1;
else if (radioAudioEndianLittle.isSelected())
endian = AudioFormat.LITTLE_ENDIAN;
else if (radioAudioEndianBig.isSelected())
endian = AudioFormat.BIG_ENDIAN;
else
throw new RuntimeException();
final int signed = checkBoxAudioSigned.isSelected() ? AudioFormat.SIGNED : AudioFormat.UNSIGNED;
return new AudioFormat(encoding, sampleRate, sampleSizeInBits, channels, endian, signed);
}
/** 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.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
buttonGroupAudioBitsPerSample = new javax.swing.ButtonGroup();
buttonGroupAudioChannels = new javax.swing.ButtonGroup();
buttonGroupAudioEndian = new javax.swing.ButtonGroup();
labelAudioEncoding = new javax.swing.JLabel();
comboAudioSampleRate = new javax.swing.JComboBox();
comboAudioEncoding = new javax.swing.JComboBox();
labelAudioSampleRate = new javax.swing.JLabel();
labelAudioBitsPerSample = new javax.swing.JLabel();
radioAudioBitsPerSample8 = new javax.swing.JRadioButton();
radioAudioBitsPerSample16 = new javax.swing.JRadioButton();
radioAudioChannelsStereo = new javax.swing.JRadioButton();
radioAudioChannelsMono = new javax.swing.JRadioButton();
labelChannels = new javax.swing.JLabel();
labelAudioEndian = new javax.swing.JLabel();
radioAudioEndianBig = new javax.swing.JRadioButton();
radioAudioEndianLittle = new javax.swing.JRadioButton();
checkBoxAudioSigned = new javax.swing.JCheckBox();
setLayout(new java.awt.GridBagLayout());
labelAudioEncoding.setText("Encoding:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(labelAudioEncoding, gridBagConstraints);
comboAudioSampleRate.setModel(new javax.swing.DefaultComboBoxModel(new String[] {}));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(comboAudioSampleRate, gridBagConstraints);
comboAudioEncoding.setModel(new javax.swing.DefaultComboBoxModel(new String[] {}));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(comboAudioEncoding, gridBagConstraints);
labelAudioSampleRate.setText("Sample rate (Hz):");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(labelAudioSampleRate, gridBagConstraints);
labelAudioBitsPerSample.setText("Bits per sample:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(labelAudioBitsPerSample, gridBagConstraints);
buttonGroupAudioBitsPerSample.add(radioAudioBitsPerSample8);
radioAudioBitsPerSample8.setText("8");
radioAudioBitsPerSample8.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
radioAudioBitsPerSample8.setMargin(new java.awt.Insets(0, 0, 0, 0));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(radioAudioBitsPerSample8, gridBagConstraints);
buttonGroupAudioBitsPerSample.add(radioAudioBitsPerSample16);
radioAudioBitsPerSample16.setText("16");
radioAudioBitsPerSample16.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
radioAudioBitsPerSample16.setMargin(new java.awt.Insets(0, 0, 0, 0));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(radioAudioBitsPerSample16, gridBagConstraints);
buttonGroupAudioChannels.add(radioAudioChannelsStereo);
radioAudioChannelsStereo.setText("Stereo");
radioAudioChannelsStereo.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
radioAudioChannelsStereo.setMargin(new java.awt.Insets(0, 0, 0, 0));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 4;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(radioAudioChannelsStereo, gridBagConstraints);
buttonGroupAudioChannels.add(radioAudioChannelsMono);
radioAudioChannelsMono.setText("Mono");
radioAudioChannelsMono.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
radioAudioChannelsMono.setMargin(new java.awt.Insets(0, 0, 0, 0));
radioAudioChannelsMono.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radioAudioChannelsMonoActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(radioAudioChannelsMono, gridBagConstraints);
labelChannels.setText("Channels:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(labelChannels, gridBagConstraints);
labelAudioEndian.setText("Endian:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(labelAudioEndian, gridBagConstraints);
buttonGroupAudioEndian.add(radioAudioEndianBig);
radioAudioEndianBig.setText("Big");
radioAudioEndianBig.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
radioAudioEndianBig.setMargin(new java.awt.Insets(0, 0, 0, 0));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(radioAudioEndianBig, gridBagConstraints);
buttonGroupAudioEndian.add(radioAudioEndianLittle);
radioAudioEndianLittle.setText("Little");
radioAudioEndianLittle.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
radioAudioEndianLittle.setMargin(new java.awt.Insets(0, 0, 0, 0));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(radioAudioEndianLittle, gridBagConstraints);
checkBoxAudioSigned.setText("Signed");
checkBoxAudioSigned.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
checkBoxAudioSigned.setMargin(new java.awt.Insets(0, 0, 0, 0));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
add(checkBoxAudioSigned, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
private void radioAudioChannelsMonoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioAudioChannelsMonoActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_radioAudioChannelsMonoActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.ButtonGroup buttonGroupAudioBitsPerSample;
private javax.swing.ButtonGroup buttonGroupAudioChannels;
private javax.swing.ButtonGroup buttonGroupAudioEndian;
private javax.swing.JCheckBox checkBoxAudioSigned;
private javax.swing.JComboBox comboAudioEncoding;
private javax.swing.JComboBox comboAudioSampleRate;
private javax.swing.JLabel labelAudioBitsPerSample;
private javax.swing.JLabel labelAudioEncoding;
private javax.swing.JLabel labelAudioEndian;
private javax.swing.JLabel labelAudioSampleRate;
private javax.swing.JLabel labelChannels;
private javax.swing.JRadioButton radioAudioBitsPerSample16;
private javax.swing.JRadioButton radioAudioBitsPerSample8;
private javax.swing.JRadioButton radioAudioChannelsMono;
private javax.swing.JRadioButton radioAudioChannelsStereo;
private javax.swing.JRadioButton radioAudioEndianBig;
private javax.swing.JRadioButton radioAudioEndianLittle;
// End of variables declaration//GEN-END:variables
}