/* ChannelSelectTable.java created 2011-03-23
*
*/
package org.signalml.app.view.document.opensignal.elements;
import java.util.List;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import org.signalml.app.model.document.opensignal.AbstractOpenSignalDescriptor;
import org.signalml.app.model.document.opensignal.elements.AmplifierChannel;
import org.signalml.app.model.document.opensignal.elements.ChannelSelectTableModel;
/**
* A JTable for selecting channels to be received from an amplifier.
*
* @author Piotr Szachewicz
*/
public class ChannelSelectTable extends JTable {
public ChannelSelectTable() {
ChannelSelectTableModel tableModel = new ChannelSelectTableModel();
this.setModel(tableModel);
setColumnsPreferredSizes();
}
/**
* Sets the preferred widths for each column.
*/
private void setColumnsPreferredSizes() {
TableColumn column;
for (int i = 0; i < getColumnCount(); i++) {
column = getColumnModel().getColumn(i);
if (i == ChannelSelectTableModel.LABEL_COLUMN) {
column.setPreferredWidth(100); //column containing the name is bigger
} else {
column.setPreferredWidth(10);
}
}
}
/**
* Returns the model of this table.
* @return the model of this table
*/
protected ChannelSelectTableModel getChannelSelectTableModel() {
return (ChannelSelectTableModel) getModel();
}
/**
* Returns the channels shown in this table.
* @return the channels shown in this tables
*/
public List<AmplifierChannel> getAmplifierChannels() {
return getChannelSelectTableModel().getAmplifierChannels();
}
/**
* Sets all channels in the table to be selected/unselected.
* @param selected the new status of each channel in this table
*/
public void setAllSelected(boolean selected) {
getChannelSelectTableModel().setAllSelected(selected);
}
public void fillTableFromModel(AbstractOpenSignalDescriptor openSignalDescriptor) {
ChannelSelectTableModel model = new ChannelSelectTableModel(openSignalDescriptor);
setModel(model);
setColumnsPreferredSizes();
}
public String[] getChannelLabels() {
ChannelSelectTableModel model = (ChannelSelectTableModel) this.getModel();
return model.getChannelLabels();
}
}