private JComponent createAudioBoxGUI()
{
final JScrollPane ggScroll;
final Box b;
final ModificationButton ggPlus, ggMinus;
final JButton ggAssistent;
final JTable table;
final JPanel p;
final JTableHeader th;
final SortedTableModel stm;
audioBoxesFromPrefs();
p = new JPanel( new BorderLayout() );
abtm = new AudioBoxTableModel();
stm = new SortedTableModel( abtm );
table = new JTable( stm );
th = table.getTableHeader();
stm.setTableHeader( th );
th.setReorderingAllowed( false );
th.setResizingAllowed( true );
// table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
table.setCellSelectionEnabled( true );
table.setColumnSelectionAllowed( false );
table.setShowGrid( true );
table.setGridColor( Color.lightGray );
table.setSelectionMode( ListSelectionModel.SINGLE_INTERVAL_SELECTION );
table.setPreferredScrollableViewportSize( new Dimension( 256, 64 )); // XXX
for( int i = 0; i < 4; i++ ) table.getColumnModel().getColumn( i ).setPreferredWidth( i == 0 ? 180 : 60 );
stm.setSortedColumn( 0, SortedTableModel.ASCENDING );
ggScroll = new JScrollPane( table, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER );
b = Box.createHorizontalBox();
ggPlus = new ModificationButton( ModificationButton.SHAPE_PLUS );
ggMinus = new ModificationButton( ModificationButton.SHAPE_MINUS );
ggMinus.setEnabled( false );
ggPlus.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e )
{
final int modelIndex = collAudioBoxConfigs.size();
final int viewIndex;
final AudioBoxConfig cfg = createUniqueAudioBox();