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}