com.jgoodies.binding.adapter
Class ComboBoxAdapter<E>

java.lang.Object
  extended by javax.swing.AbstractListModel
      extended by com.jgoodies.binding.adapter.ComboBoxAdapter<E>
Type Parameters:
E - the type of the combo box items
All Implemented Interfaces:
Serializable, ComboBoxModel, ListModel

public final class ComboBoxAdapter<E>
extends AbstractListModel
implements ComboBoxModel

A ComboBoxModel implementation that holds the choice list and a selection. This adapter has two modes that differ primarily in how the selection is kept synchronized with the combo's list. 1) If you construct a ComboBoxAdapter with a SelectionInList, the selection will be guaranteed to be in the list, and the selection will reflect changes in the list. 2) If you construct this adapter with a separate selection holder, the selection won't be affected by any change in the combo's list.

In both cases, the combo's list of element will reflect changes in the list, if it's a ListModel and will ignore content changes, if it's a List.

Example:

 String[] countries = new String[] { "USA", "Germany", "France", ... };

 // Using an array and ValueModel
 ValueModel countryModel = new PropertyAdapter(customer, "country", true);
 ComboBoxAdapter adapter = new ComboBoxAdapter(countries, contryModel);
 JComboBox countryBox    = new JComboBox(adapter);

 // Using a List and ValueModel
 List countryList = Arrays.asList(countries);
 ValueModel countryModel = new PropertyAdapter(customer, "country", true);
 ComboBoxAdapter adapter = new ComboBoxAdapter(countryList, contryModel);
 JComboBox countryBox    = new JComboBox(adapter);

 // Using a ListModel and ValueModel
 ListModel countryListModel = new ArrayListModel(Arrays.asList(countries));
 ValueModel countryModel = new PropertyAdapter(customer, "country", true);
 ComboBoxAdapter adapter = new ComboBoxAdapter(countryListModel, contryModel);
 JComboBox countryBox    = new JComboBox(adapter);

 // Using a SelectionInList - allows only selection of contained elements
 ListModel countryListModel = new ArrayListModel(Arrays.asList(countries));
 ValueModel countryModel = new PropertyAdapter(customer, "country", true);
 SelectionInList sil     = new SelectionInList(countryListModel, countryModel);
 ComboBoxAdapter adapter = new ComboBoxAdapter(sil);
 JComboBox countryBox    = new JComboBox(adapter);

 // Using ValueModels for the list holder and the selection holder
 class Country extends Model {
     ListModel getLocales();
     Locale getDefaultLocale();
     void setDefaultLocale(Locale locale);
 }

 BeanAdapter beanAdapter = new BeanAdapter(null, true);
 ValueModel localesHolder      = beanAdapter.getValueModel("locales");
 ValueModel defaultLocaleModel = beanAdapter.getValueModel("defaultLocale");
 ComboBoxAdapter adapter = new ComboBoxAdapter(
         localesHolder, defaultLocaleModel);
 JComboBox localeBox = new JComboBox(adapter);

 beanAdapter.setBean(myCountry);
 

Version:
$Revision: 1.16 $
Author:
Karsten Lentzsch
See Also:
JComboBox, Serialized Form

Field Summary
 
Fields inherited from class javax.swing.AbstractListModel
listenerList
 
Constructor Summary
ComboBoxAdapter(E[] items, ValueModel selectionHolder)
          Constructs a ComboBoxAdapter for the specified List of items and the given selection holder.
ComboBoxAdapter(List<E> items, ValueModel selectionHolder)
          Constructs a ComboBoxAdapter for the specified List of items and the given selection holder.
ComboBoxAdapter(ListModel listModel, ValueModel selectionHolder)
          Constructs a ComboBoxAdapter for the given ListModel and selection holder.
ComboBoxAdapter(SelectionInList<E> selectionInList)
          Constructs a ComboBoxAdapter for the given SelectionInList.
 
Method Summary
 E getElementAt(int index)
          Returns the value at the specified index.
 E getSelectedItem()
          Returns the selected item by requesting the current value from the either the selection holder or the SelectionInList's selection.
 int getSize()
          Returns the length of the item list.
 void setSelectedItem(Object object)
          Sets the selected item.
 
Methods inherited from class javax.swing.AbstractListModel
addListDataListener, fireContentsChanged, fireIntervalAdded, fireIntervalRemoved, getListDataListeners, getListeners, removeListDataListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.swing.ListModel
addListDataListener, removeListDataListener
 

Constructor Detail

ComboBoxAdapter

public ComboBoxAdapter(List<E> items,
                       ValueModel selectionHolder)
Constructs a ComboBoxAdapter for the specified List of items and the given selection holder. Structural changes in the list will be ignored.

Example:

 String[] countries = new String[] { "USA", "Germany", "France", ... };
 List countryList = Arrays.asList(countries);
 ValueModel countryModel = new PropertyAdapter(customer, "country", true);
 ComboBoxAdapter adapter = new ComboBoxAdapter(countryList, contryModel);
 JComboBox countryBox    = new JComboBox(adapter);
 

Parameters:
items - the list of items
selectionHolder - holds the selection of the combo
Throws:
NullPointerException - if the list of items or the selection holder is null

ComboBoxAdapter

public ComboBoxAdapter(ListModel listModel,
                       ValueModel selectionHolder)
Constructs a ComboBoxAdapter for the given ListModel and selection holder. Structural changes in the ListModel will be reflected by this adapter, but won't affect the selection.

Example:

 String[] countries = new String[] { "USA", "Germany", "France", ... };
 ListModel countryList = new ArrayListModel(Arrays.asList(countries));
 ValueModel countryModel = new PropertyAdapter(customer, "country", true);
 ComboBoxAdapter adapter = new ComboBoxAdapter(countryList, contryModel);
 JComboBox countryBox    = new JComboBox(adapter);
 

Parameters:
listModel - the initial list model
selectionHolder - holds the selection of the combo
Throws:
NullPointerException - if the list of items or the selection holder is null

ComboBoxAdapter

public ComboBoxAdapter(E[] items,
                       ValueModel selectionHolder)
Constructs a ComboBoxAdapter for the specified List of items and the given selection holder. Structural changes in the list will be ignored.

Example:

 String[] countries = new String[] { "USA", "Germany", "France", ... };
 ValueModel countryModel = new PropertyAdapter(customer, "country", true);
 ComboBoxAdapter adapter = new ComboBoxAdapter(countries, contryModel);
 JComboBox countryBox    = new JComboBox(adapter);
 

Parameters:
items - the list of items
selectionHolder - holds the selection of the combo
Throws:
NullPointerException - if the list of items or the selection holder is null

ComboBoxAdapter

public ComboBoxAdapter(SelectionInList<E> selectionInList)
Constructs a ComboBoxAdapter for the given SelectionInList. Note that selections which are not elements of the list will be rejected.

Example:

 String[] countries = new String[] { "USA", "Germany", "France", ... };
 List countryList = Arrays.asList(countries);
 ValueModel countryModel = new PropertyAdapter(customer, "country", true);
 SelectionInList sil     = new SelectionInList(countryList, countryModel);
 ComboBoxAdapter adapter = new ComboBoxAdapter(sil);
 JComboBox countryBox    = new JComboBox(adapter);
 

Parameters:
selectionInList - provides the list and selection
Throws:
NullPointerException - if the selectionInList is null
Method Detail

getSelectedItem

public E getSelectedItem()
Returns the selected item by requesting the current value from the either the selection holder or the SelectionInList's selection.

Specified by:
getSelectedItem in interface ComboBoxModel
Returns:
The selected item or null if there is no selection

setSelectedItem

public void setSelectedItem(Object object)
Sets the selected item. The implementation of this method should notify all registered ListDataListeners that the contents has changed.

Specified by:
setSelectedItem in interface ComboBoxModel
Parameters:
object - the list object to select or null to clear the selection

getSize

public int getSize()
Returns the length of the item list.

Specified by:
getSize in interface ListModel
Returns:
the length of the list

getElementAt

public E getElementAt(int index)
Returns the value at the specified index.

Specified by:
getElementAt in interface ListModel
Parameters:
index - the requested index
Returns:
the value at index


Copyright © 2002-2012 JGoodies Karsten Lentzsch. All Rights Reserved.