package org.signalml.app.model.montage;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import org.signalml.domain.montage.system.EegSystem;
/**
* A ListModel which handles showing and selecting the list of available
* channel labels for the current EEG system.
*
* @author Piotr Szachewicz
*/
public class ChannelsListModel extends AbstractListModel implements ComboBoxModel {
/**
* The {@link EegSystem} for which the list of channel labels is shown.
*/
private EegSystem eegSystem;
/**
* The item currently selected on the list.
*/
private Object selectedItem;
@Override
public int getSize() {
if (eegSystem == null)
return 0;
return eegSystem.getNumberOfElectrodes();
}
@Override
public Object getElementAt(int index) {
if (eegSystem != null)
return eegSystem.getElectrodeAt(index).toString();
else
return null;
}
@Override
public void setSelectedItem(Object anItem) {
selectedItem = anItem;
fireContentsChanged(anItem, -1, getSize());
}
@Override
public Object getSelectedItem() {
return selectedItem;
}
/**
* Sets the {@link EegSystem} for which the list of channels lables
* will be shown.
* @param eegSystem the new {@link EegSystem} for this ListModel.
*/
public void setEegSystem(EegSystem eegSystem) {
if (this.eegSystem == eegSystem)
return;
this.eegSystem = eegSystem;
fireContentsChanged(this, 0, getSize()-1);
}
}