/* PresetComboBoxModel.java created 2007-10-24
*
*/
package org.signalml.app.config.preset;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
/** PresetComboBoxModel
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class PresetComboBoxModel extends AbstractListModel implements ComboBoxModel, PresetManagerListener {
private static final long serialVersionUID = 1L;
private PresetManager presetManager;
private String chooseTitle;
private Object selectedItem;
public PresetComboBoxModel(String chooseTitle, PresetManager presetManager) {
super();
this.chooseTitle = chooseTitle;
this.presetManager = presetManager;
this.presetManager.addPresetManagerListener(this);
}
/**
* Returns if the first element (e.g. 'choose an item') is showed
* in the combo box.
* @return true if it should be shown, false otherwise
*/
protected boolean isChooseTitleShowed() {
if (chooseTitle == null)
return false;
return true;
}
@Override
public int getSize() {
int size = presetManager.getPresetCount();
if (isChooseTitleShowed())
size += 1;
return size;
}
@Override
public Object getElementAt(int index) {
if (isChooseTitleShowed()) {
if (index == 0)
return chooseTitle;
else
return presetManager.getPresetAt(index-1);
}
else
return presetManager.getPresetAt(index);
}
@Override
public Object getSelectedItem() {
return selectedItem;
}
@Override
public void setSelectedItem(Object anItem) {
selectedItem = anItem;
fireContentsChanged(this, 0, getSize());
}
@Override
public void defaultPresetChanged(PresetManagerEvent ev) {
// ignored
}
@Override
public void presetAdded(PresetManagerEvent ev) {
fireContentsChanged(this, 1, getSize());
}
@Override
public void presetRemoved(PresetManagerEvent ev) {
fireContentsChanged(this, 1, getSize());
}
@Override
public void presetReplaced(PresetManagerEvent ev) {
fireContentsChanged(this, 1, getSize());
}
}