Package org.jfree.ui

Class KeyedComboBoxModel

  • All Implemented Interfaces:
    javax.swing.ComboBoxModel, javax.swing.ListModel

    public class KeyedComboBoxModel
    extends java.lang.Object
    implements javax.swing.ComboBoxModel
    The KeyedComboBox model allows to define an internal key (the data element) for every entry in the model.

    This class is useful in all cases, where the public text differs from the internal view on the data. A separation between presentation data and processing data is a prerequisite for localizing combobox entries. This model does not allow selected elements, which are not in the list of valid elements.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private static class  KeyedComboBoxModel.ComboBoxItemPair
      The internal data carrier to map keys to values and vice versa.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private boolean allowOtherValue  
      private java.util.ArrayList data
      The data (contains ComboBoxItemPairs).
      private java.util.ArrayList listdatalistener
      The listeners.
      private int selectedItemIndex
      The index of the selected item.
      private java.lang.Object selectedItemValue  
      private javax.swing.event.ListDataListener[] tempListeners
      The cached listeners as array.
    • Constructor Summary

      Constructors 
      Constructor Description
      KeyedComboBoxModel()
      Creates a new keyed combobox model.
      KeyedComboBoxModel​(java.lang.Object[] keys, java.lang.Object[] values)
      Creates a new keyed combobox model for the given keys and values.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(java.lang.Object key, java.lang.Object cbitem)
      Adds a new entry to the model.
      void addListDataListener​(javax.swing.event.ListDataListener l)
      Adds a listener to the list that's notified each time a change to the data model occurs.
      void clear()
      Removes all entries from the model.
      private int findDataElementIndex​(java.lang.Object anItem)
      Searches an element by its data value.
      int findElementIndex​(java.lang.Object key)
      Tries to find the index of element with the given key.
      protected void fireListDataEvent​(javax.swing.event.ListDataEvent evt)
      Notifies all registered list data listener of the given event.
      java.lang.Object getElementAt​(int index)
      Returns the value at the specified index.
      java.lang.Object getKeyAt​(int index)
      Returns the key from the given index.
      java.lang.Object getSelectedItem()
      Returns the selected item.
      java.lang.Object getSelectedKey()
      Returns the selected data element or null if none is set.
      int getSize()
      Returns the length of the list.
      private boolean isAllowOtherValue()  
      void removeDataElement​(java.lang.Object key)
      Removes an entry from the model.
      void removeListDataListener​(javax.swing.event.ListDataListener l)
      Removes a listener from the list that's notified each time a change to the data model occurs.
      void setAllowOtherValue​(boolean allowOtherValue)  
      void setData​(java.lang.Object[] keys, java.lang.Object[] values)
      Replaces the data in this combobox model.
      void setSelectedItem​(java.lang.Object anItem)
      Set the selected item.
      void setSelectedKey​(java.lang.Object anItem)
      Defines the selected key.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • selectedItemIndex

        private int selectedItemIndex
        The index of the selected item.
      • selectedItemValue

        private java.lang.Object selectedItemValue
      • data

        private java.util.ArrayList data
        The data (contains ComboBoxItemPairs).
      • listdatalistener

        private java.util.ArrayList listdatalistener
        The listeners.
      • tempListeners

        private transient javax.swing.event.ListDataListener[] tempListeners
        The cached listeners as array.
      • allowOtherValue

        private boolean allowOtherValue
    • Constructor Detail

      • KeyedComboBoxModel

        public KeyedComboBoxModel()
        Creates a new keyed combobox model.
      • KeyedComboBoxModel

        public KeyedComboBoxModel​(java.lang.Object[] keys,
                                  java.lang.Object[] values)
        Creates a new keyed combobox model for the given keys and values. Keys and values must have the same number of items.
        Parameters:
        keys - the keys
        values - the values
    • Method Detail

      • setData

        public void setData​(java.lang.Object[] keys,
                            java.lang.Object[] values)
        Replaces the data in this combobox model. The number of keys must be equals to the number of values.
        Parameters:
        keys - the keys
        values - the values
      • fireListDataEvent

        protected void fireListDataEvent​(javax.swing.event.ListDataEvent evt)
        Notifies all registered list data listener of the given event.
        Parameters:
        evt - the event.
      • getSelectedItem

        public java.lang.Object getSelectedItem()
        Returns the selected item.
        Specified by:
        getSelectedItem in interface javax.swing.ComboBoxModel
        Returns:
        The selected item or null if there is no selection
      • setSelectedKey

        public void setSelectedKey​(java.lang.Object anItem)
        Defines the selected key. If the object is not in the list of values, no item gets selected.
        Parameters:
        anItem - the new selected item.
      • setSelectedItem

        public void setSelectedItem​(java.lang.Object anItem)
        Set the selected item. The implementation of this method should notify all registered ListDataListeners that the contents have changed.
        Specified by:
        setSelectedItem in interface javax.swing.ComboBoxModel
        Parameters:
        anItem - the list object to select or null to clear the selection
      • isAllowOtherValue

        private boolean isAllowOtherValue()
      • setAllowOtherValue

        public void setAllowOtherValue​(boolean allowOtherValue)
        Parameters:
        allowOtherValue - new flag value.
      • addListDataListener

        public void addListDataListener​(javax.swing.event.ListDataListener l)
        Adds a listener to the list that's notified each time a change to the data model occurs.
        Specified by:
        addListDataListener in interface javax.swing.ListModel
        Parameters:
        l - the ListDataListener to be added
      • getElementAt

        public java.lang.Object getElementAt​(int index)
        Returns the value at the specified index.
        Specified by:
        getElementAt in interface javax.swing.ListModel
        Parameters:
        index - the requested index
        Returns:
        the value at index
      • getKeyAt

        public java.lang.Object getKeyAt​(int index)
        Returns the key from the given index.
        Parameters:
        index - the index of the key.
        Returns:
        the the key at the specified index.
      • getSelectedKey

        public java.lang.Object getSelectedKey()
        Returns the selected data element or null if none is set.
        Returns:
        the selected data element.
      • getSize

        public int getSize()
        Returns the length of the list.
        Specified by:
        getSize in interface javax.swing.ListModel
        Returns:
        the length of the list
      • removeListDataListener

        public void removeListDataListener​(javax.swing.event.ListDataListener l)
        Removes a listener from the list that's notified each time a change to the data model occurs.
        Specified by:
        removeListDataListener in interface javax.swing.ListModel
        Parameters:
        l - the ListDataListener to be removed
      • findDataElementIndex

        private int findDataElementIndex​(java.lang.Object anItem)
        Searches an element by its data value. This method is called by the setSelectedItem method and returns the first occurence of the element.
        Parameters:
        anItem - the item
        Returns:
        the index of the item or -1 if not found.
      • findElementIndex

        public int findElementIndex​(java.lang.Object key)
        Tries to find the index of element with the given key. The key must not be null.
        Parameters:
        key - the key for the element to be searched.
        Returns:
        the index of the key, or -1 if not found.
      • removeDataElement

        public void removeDataElement​(java.lang.Object key)
        Removes an entry from the model.
        Parameters:
        key - the key
      • add

        public void add​(java.lang.Object key,
                        java.lang.Object cbitem)
        Adds a new entry to the model.
        Parameters:
        key - the key
        cbitem - the display value.
      • clear

        public void clear()
        Removes all entries from the model.