001package org.jdesktop.swingx.combobox;
002
003import javax.swing.AbstractListModel;
004import javax.swing.ComboBoxModel;
005import javax.swing.ListModel;
006import javax.swing.event.ListDataListener;
007
008public class ListModelComboBoxWrapper extends AbstractListModel implements ComboBoxModel {
009    private ListModel delegate;
010    
011    private Object selectedItem;
012    
013    public ListModelComboBoxWrapper(ListModel delegate) {
014        this.delegate = delegate;
015    }
016    
017    @Override
018    public int getSize() {
019        return delegate.getSize();
020    }
021
022    @Override
023    public Object getElementAt(int index) {
024        return delegate.getElementAt(index);
025    }
026
027    @Override
028    public void addListDataListener(ListDataListener l) {
029        super.addListDataListener(l);
030        delegate.addListDataListener(l);
031    }
032
033    @Override
034    public void removeListDataListener(ListDataListener l) {
035        delegate.removeListDataListener(l);
036        super.removeListDataListener(l);
037    }
038
039    @Override
040    public void setSelectedItem(Object anItem) {
041        if ((selectedItem != null && !selectedItem.equals(anItem))
042                || selectedItem == null && anItem != null) {
043            selectedItem = anItem;
044            
045            fireContentsChanged(this, -1, -1);
046        }
047    }
048
049    @Override
050    public Object getSelectedItem() {
051        return selectedItem;
052    }
053}