ArrayBasedComboModel.java

  1. package swingtree;

  2. import org.jspecify.annotations.Nullable;
  3. import sprouts.Var;

  4. import java.util.Objects;

  5. final class ArrayBasedComboModel<E extends @Nullable Object> extends AbstractComboModel<E>
  6. {
  7.     private final E[] _items;


  8.     ArrayBasedComboModel(E[] items) {
  9.         this(Var.ofNullable(_findCommonType( items ), null), items);
  10.     }

  11.     ArrayBasedComboModel(Var<E> selection, E @Nullable[] items) {
  12.         super(selection);
  13.         _items = Objects.requireNonNull(items);
  14.         _selectedIndex = _indexOf(_selectedItem.orElseNull());
  15.     }


  16.     @Override
  17.     public AbstractComboModel<E> withVar( Var<E> newVar ) {
  18.         return new ArrayBasedComboModel<>(newVar, _items);
  19.     }

  20.     @Override protected void setAt( int index, @Nullable E element ) { _items[index] = element; }
  21.     @Override public int getSize() { return _items.length; }
  22.     @Override public @Nullable E getElementAt( int index ) { return _items[index]; }

  23. }