java.lang.Object
is.codion.swing.common.model.component.combobox.ItemComboBoxModel<T>
Type Parameters:
T - the type of value wrapped by this combo box models items
All Implemented Interfaces:
FilterModel<Item<T>>, FilterComboBoxModel<Item<T>>, ComboBoxModel<Item<T>>, ListModel<Item<T>>

public final class ItemComboBoxModel<T> extends Object
A ComboBoxModel implementation based on the Item class.
See Also:
  • Method Details

    • indexOf

      public int indexOf(T value)
      Returns the index of the Item representing the given value, -1 if this model does not contain such an Item.
      Parameters:
      value - the value
      Returns:
      the index of the Item representing the given value, -1 if not found
    • itemComboBoxModel

      public static <T> ItemComboBoxModel<T> itemComboBoxModel()
      Type Parameters:
      T - the Item value type
      Returns:
      a new combo box model
    • itemComboBoxModel

      public static <T> ItemComboBoxModel<T> itemComboBoxModel(List<Item<T>> items)
      Type Parameters:
      T - the Item value type
      Parameters:
      items - the items
      Returns:
      a new combo box model
    • sortedItemComboBoxModel

      public static <T> ItemComboBoxModel<T> sortedItemComboBoxModel()
      Type Parameters:
      T - the Item value type
      Returns:
      a new combo box model
    • sortedItemComboBoxModel

      public static <T> ItemComboBoxModel<T> sortedItemComboBoxModel(List<Item<T>> items)
      Type Parameters:
      T - the Item value type
      Parameters:
      items - the items
      Returns:
      a new combo box model
    • sortedItemComboBoxModel

      public static <T> ItemComboBoxModel<T> sortedItemComboBoxModel(Comparator<Item<T>> comparator)
      Type Parameters:
      T - the Item value type
      Parameters:
      comparator - the comparator to use when sorting
      Returns:
      a new combo box model
    • sortedItemComboBoxModel

      public static <T> ItemComboBoxModel<T> sortedItemComboBoxModel(List<Item<T>> items, Comparator<Item<T>> comparator)
      Type Parameters:
      T - the Item value type
      Parameters:
      items - the items
      comparator - the comparator to use when sorting
      Returns:
      a new combo box model
    • booleanItemComboBoxModel

      public static ItemComboBoxModel<Boolean> booleanItemComboBoxModel()
      Constructs a new Boolean based ItemComboBoxModel with null as the initially selected value.
      Returns:
      a Boolean based ItemComboBoxModel
    • booleanItemComboBoxModel

      public static ItemComboBoxModel<Boolean> booleanItemComboBoxModel(String nullCaption)
      Constructs a new Boolean based ItemComboBoxModel with null as the initially selected value.
      Parameters:
      nullCaption - the string representing a null value
      Returns:
      a Boolean based ItemComboBoxModel
    • booleanItemComboBoxModel

      public static ItemComboBoxModel<Boolean> booleanItemComboBoxModel(String nullCaption, String trueCaption, String falseCaption)
      Constructs a new Boolean based ItemComboBoxModel with null as the initially selected value.
      Parameters:
      nullCaption - the string representing a null value
      trueCaption - the string representing the boolean value 'true'
      falseCaption - the string representing the boolean value 'false'
      Returns:
      a Boolean based ItemComboBoxModel
    • refresher

      public final FilterModel.Refresher<Item<T>> refresher()
      Specified by:
      refresher in interface FilterModel<T>
      Returns:
      this models Refresher instance
    • refresh

      public final void refresh()
      Description copied from interface: FilterModel
      Refreshes the items in this filtered model using its FilterModel.Refresher.
      Specified by:
      refresh in interface FilterModel<T>
      See Also:
    • refreshThen

      public final void refreshThen(Consumer<Collection<Item<T>>> afterRefresh)
      Description copied from interface: FilterModel
      Refreshes the data in this filter model using its FilterModel.Refresher. Note that this method only throws exceptions when run synchronously off the user interface thread. Use FilterModel.Refresher.refreshFailedEvent() to listen for exceptions that happen during asynchronous refresh.
      Specified by:
      refreshThen in interface FilterModel<T>
      Parameters:
      afterRefresh - called after a successful refresh, may be null
      See Also:
    • clear

      public final void clear()
      Description copied from interface: FilterComboBoxModel
      Clears all items from this combo box model, including the null item and sets the selected item to null
      Specified by:
      clear in interface FilterComboBoxModel<T>
    • cleared

      public final boolean cleared()
      Specified by:
      cleared in interface FilterComboBoxModel<T>
      Returns:
      true if the model data has been cleared and needs to be refreshed
    • setItems

      public final void setItems(Collection<Item<T>> items)
      Description copied from interface: FilterComboBoxModel
      Resets the items of this model using the values found in items.
      Specified by:
      setItems in interface FilterComboBoxModel<T>
      Parameters:
      items - the items to display in this combo box model
      See Also:
    • filterItems

      public final void filterItems()
      Description copied from interface: FilterModel
      Filters this model according to the condition specified by FilterModel.includeCondition(). If no include condition is specified this method does nothing. This method does not interfere with the internal ordering of the visible items.
      Specified by:
      filterItems in interface FilterModel<T>
      See Also:
    • visibleItems

      public final List<Item<T>> visibleItems()
      Specified by:
      visibleItems in interface FilterModel<T>
      Returns:
      an unmodifiable view of the visible items, in the order they appear in the model
    • filteredItems

      public final Collection<Item<T>> filteredItems()
      Specified by:
      filteredItems in interface FilterModel<T>
      Returns:
      an unmodifiable view of the filtered items
    • items

      public final Collection<Item<T>> items()
      Specified by:
      items in interface FilterModel<T>
      Returns:
      an unmodifiable view of all visible and filtered items in this model
      See Also:
    • includeCondition

      public final Value<Predicate<Item<T>>> includeCondition()
      Specified by:
      includeCondition in interface FilterModel<T>
      Returns:
      the include condition value
    • filteredCount

      public final int filteredCount()
      Specified by:
      filteredCount in interface FilterModel<T>
      Returns:
      the number of currently filtered items
    • visibleCount

      public final int visibleCount()
      Specified by:
      visibleCount in interface FilterModel<T>
      Returns:
      the number of currently visible items
    • visible

      public final boolean visible(Item<T> item)
      Description copied from interface: FilterModel
      Returns true if this model contains the given item, and it is visible, that is, not filtered
      Specified by:
      visible in interface FilterModel<T>
      Parameters:
      item - the item
      Returns:
      true if the given item is visible
    • filtered

      public final boolean filtered(Item<T> item)
      Description copied from interface: FilterModel
      Returns true if this model contains the given item, and it is filtered, that is, is not visible
      Specified by:
      filtered in interface FilterModel<T>
      Parameters:
      item - the item
      Returns:
      true if the given item is filtered
    • add

      public final void add(Item<T> item)
      Description copied from interface: FilterComboBoxModel
      Adds the given item to this model, respecting the sorting order if specified. If this model already contains the item, calling this method has no effect. Note that if the item does not satisfy the include condition, it will be filtered right away.
      Specified by:
      add in interface FilterComboBoxModel<T>
      Parameters:
      item - the item to add
      See Also:
    • remove

      public final void remove(Item<T> item)
      Description copied from interface: FilterComboBoxModel
      Removes the given item from this model
      Specified by:
      remove in interface FilterComboBoxModel<T>
      Parameters:
      item - the item to remove
    • replace

      public final void replace(Item<T> item, Item<T> replacement)
      Description copied from interface: FilterComboBoxModel
      Replaces the given item in this combo box model
      Specified by:
      replace in interface FilterComboBoxModel<T>
      Parameters:
      item - the item to replace
      replacement - the replacement item
    • sortItems

      public final void sortItems()
      Description copied from interface: FilterComboBoxModel
      Sorts the items in this model
      Specified by:
      sortItems in interface FilterComboBoxModel<T>
      See Also:
    • containsItem

      public final boolean containsItem(Item<T> item)
      Description copied from interface: FilterModel
      Returns true if this model contains the given item, visible or filtered.
      Specified by:
      containsItem in interface FilterModel<T>
      Parameters:
      item - the item
      Returns:
      true if this model contains the item
    • comparator

      public final Value<Comparator<Item<T>>> comparator()
      Description copied from interface: FilterComboBoxModel
      Controls the Comparator used when sorting the visible items in this model and sorts the model accordingly. This Comparator must take into account the null value if a null item has been set via FilterComboBoxModel.nullItem(). If a null comparator is provided no sorting will be performed.
      Specified by:
      comparator in interface FilterComboBoxModel<T>
      Returns:
      the Value controlling the comparator used when sorting, value may be null if the items of this model should not be sorted
    • validator

      public final Value<Predicate<Item<T>>> validator()
      Description copied from interface: FilterComboBoxModel
      Provides a way for the model to prevent the addition of certain items. Trying to add items that fail validation will result in an exception. Note that any translation of the selected item is done before validation.
      Specified by:
      validator in interface FilterComboBoxModel<T>
      Returns:
      the Value controlling the item validator
    • selectedItemTranslator

      public final Value<Function<Object,Item<T>>> selectedItemTranslator()
      Description copied from interface: FilterComboBoxModel
      Provides a way for the combo box model to translate an item when it is selected, such as selecting the String "1" in a String based model when selected item is set to the number 1.
      Specified by:
      selectedItemTranslator in interface FilterComboBoxModel<T>
      Returns:
      the Value controlling the selected item translator
    • validSelectionPredicate

      public final Value<Predicate<Item<T>>> validSelectionPredicate()
      Description copied from interface: FilterComboBoxModel
      Provides a way for the combo box model to prevent the selection of certain items.
      Specified by:
      validSelectionPredicate in interface FilterComboBoxModel<T>
      Returns:
      the Value controlling the valid selection predicate
    • includeNull

      public final State includeNull()
      Specified by:
      includeNull in interface FilterComboBoxModel<T>
      Returns:
      the State controlling whether a null value is included as the first item
      See Also:
    • nullItem

      public final Value<Item<T>> nullItem()
      Description copied from interface: FilterComboBoxModel
      Controls the item that should represent the null value in this model. Note that FilterComboBoxModel.includeNull() must be used as well to enable the null value.
      Specified by:
      nullItem in interface FilterComboBoxModel<T>
      Returns:
      the Value controlling the item representing null
      See Also:
    • nullSelected

      public final boolean nullSelected()
      Description copied from interface: FilterComboBoxModel
      Returns true if this model contains null and it is selected.
      Specified by:
      nullSelected in interface FilterComboBoxModel<T>
      Returns:
      true if this model contains null and it is selected, false otherwise
      See Also:
    • selectionEmpty

      public final StateObserver selectionEmpty()
      Specified by:
      selectionEmpty in interface FilterComboBoxModel<T>
      Returns:
      a StateObserver indicating whether the selection is empty or the value representing null is selected
    • selectedValue

      public final Item<T> selectedValue()
      Specified by:
      selectedValue in interface FilterComboBoxModel<T>
      Returns:
      the selected value, null in case the value representing null is selected
      See Also:
    • getSelectedItem

      public final Item<T> getSelectedItem()
      Specified by:
      getSelectedItem in interface ComboBoxModel<T>
      Specified by:
      getSelectedItem in interface FilterComboBoxModel<T>
      Returns:
      the selected item, N.B. this can include the nullItem in case it has been set via FilterComboBoxModel.nullItem(), FilterComboBoxModel.selectedValue() is usually what you want
    • setSelectedItem

      public final void setSelectedItem(Object item)
      Specified by:
      setSelectedItem in interface ComboBoxModel<T>
    • filterSelectedItem

      public final State filterSelectedItem()
      Description copied from interface: FilterComboBoxModel
      Specifies whether filtering can change the selected item, if true then the selected item is set to null when the currently selected item is filtered from the model, otherwise the selected item can potentially represent a value which is not currently visible in the model. This is true by default.
      Specified by:
      filterSelectedItem in interface FilterComboBoxModel<T>
      Returns:
      the State controlling whether the selected item is changed when it is filtered
    • addListDataListener

      public final void addListDataListener(ListDataListener listener)
      Specified by:
      addListDataListener in interface ListModel<T>
    • removeListDataListener

      public final void removeListDataListener(ListDataListener listener)
      Specified by:
      removeListDataListener in interface ListModel<T>
    • getElementAt

      public final Item<T> getElementAt(int index)
      Specified by:
      getElementAt in interface ListModel<T>
    • getSize

      public final int getSize()
      Specified by:
      getSize in interface ListModel<T>
    • createSelectorValue

      public final <V> Value<V> createSelectorValue(FilterComboBoxModel.ItemFinder<Item<T>,V> itemFinder)
      Specified by:
      createSelectorValue in interface FilterComboBoxModel<T>
      Type Parameters:
      V - the value type
      Parameters:
      itemFinder - responsible for finding the item to select
      Returns:
      a value linked to the selected item via the given finder instance
    • selectionEvent

      public final EventObserver<Item<T>> selectionEvent()
      Specified by:
      selectionEvent in interface FilterComboBoxModel<T>
      Returns:
      an observer notified each time the selection changes