Package docking.widgets.searchlist

# Class SearchList<T>

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
docking.widgets.searchlist.SearchList<T>

Type Parameters:
  `T` - the type of items in the list

All Implemented Interfaces:
  `ImageObserver`, `MenuContainer`, `Serializable`, `Accessible`

public class SearchList<T> extends JPanel
Component for displaying and selecting from a filterable list of items that are grouped into categories. Similar to a JList, but with filtering and grouping.

See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class javax.swing.JPanel

  `JPanel.AccessibleJPanel`

  ## Nested classes/interfaces inherited from class javax.swing.JComponent

  `JComponent.AccessibleJComponent`

  ## Nested classes/interfaces inherited from class java.awt.Container

  `Container.AccessibleAWTContainer`

  ## Nested classes/interfaces inherited from class java.awt.Component

  `Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

- ## Field Summary

  ### Fields inherited from class javax.swing.JComponent

  `listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

  ### Fields inherited from class java.awt.Component

  `accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

  ### Fields inherited from interface java.awt.image.ImageObserver

  `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SearchList(SearchListModel<T> model, BiConsumer<T,String> chosenItemCallback)`
  Construct a new SearchList given a model and an chosen item callback.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `chooseItem()`
  `protected BiPredicate<T,String>`
  `createFilter(String text)`
  `void`
  `dispose()`
  Disposes the component and clears all the model data
  `JTextField`
  `getFilterField()`
  `String`
  `getFilterText()`
  Returns the current filter text
  `SearchListModel<T>`
  `getModel()`
  Returns the search list model.
  `T`
  `getSelectedItem()`
  Gets the currently selected item.
  `protected void`
  `moveListUpDown(boolean isUp)`
  `void`
  `setDisplayNameFunction(BiFunction<T,String,String> nameFunction)`
  `void`
  `setFilterText(String text)`
  Sets the current filter text
  `void`
  `setInitialSelection()`
  Resets the selection to the first element
  `void`
  `setItemRenderer(ListCellRenderer<SearchListEntry<T>> itemRenderer)`
  Sets a custom sub-renderer for displaying list items.
  `void`
  `setMouseHoverSelection()`
  `void`
  `setSelectedItem(T t)`
  `void`
  `setSelectionCallback(Consumer<T> consumer)`
  Sets a consumer to be notified whenever the selected item changes.
  `void`
  `setShowCategories(boolean b)`
  Sets an option to display categories in the list or not.
  `void`
  `setSingleClickMode(boolean b)`
  Sets an option for the list to respond to either double or single mouse clicks.

  ### Methods inherited from class javax.swing.JPanel

  `getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI`

  ### Methods inherited from class javax.swing.JComponent

  `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

  ### Methods inherited from class java.awt.Container

  `add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree`

  ### Methods inherited from class java.awt.Component

  `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### SearchList

    public SearchList(SearchListModel<T> model, BiConsumer<T,String> chosenItemCallback)
    Construct a new SearchList given a model and an chosen item callback.
    Parameters:
      `model` - the model containing the group list items
      `chosenItemCallback` - the callback to be notified when an item is chosen (enter key pressed)

- ## Method Details

  - ### getFilterText

    public String getFilterText()
    Returns the current filter text
    Returns:
      the current filter text

  - ### getModel

    public SearchListModel<T> getModel()
    Returns the search list model.
    Returns:
      the model

  - ### setFilterText

    public void setFilterText(String text)
    Sets the current filter text
    Parameters:
      `text` - the text to set as the current filter

  - ### getSelectedItem

    public T getSelectedItem()
    Gets the currently selected item.
    Returns:
      the currently selected item.

  - ### setSelectedItem

    public void setSelectedItem(T t)

  - ### setSelectionCallback

    public void setSelectionCallback(Consumer<T> consumer)
    Sets a consumer to be notified whenever the selected item changes.
    Parameters:
      `consumer` - the consumer to be notified whenever the selected item changes.

  - ### setItemRenderer

    public void setItemRenderer(ListCellRenderer<SearchListEntry<T>> itemRenderer)
    Sets a custom sub-renderer for displaying list items. Note: this renderer is only used to render the item, not the category.
    Parameters:
      `itemRenderer` - the sub_renderer for rendering the list items, but not the entire line which includes the category.

  - ### setInitialSelection

    public void setInitialSelection()
    Resets the selection to the first element

  - ### setShowCategories

    public void setShowCategories(boolean b)
    Sets an option to display categories in the list or not.
    Parameters:
      `b` - true to show categories, false to not shoe them

  - ### setSingleClickMode

    public void setSingleClickMode(boolean b)
    Sets an option for the list to respond to either double or single mouse clicks. By default, it responds to a double click.
    Parameters:
      `b` - true for single click mode, false for double click mode

  - ### setDisplayNameFunction

    public void setDisplayNameFunction(BiFunction<T,String,String> nameFunction)

  - ### setMouseHoverSelection

    public void setMouseHoverSelection()

  - ### dispose

    public void dispose()
    Disposes the component and clears all the model data

  - ### moveListUpDown

    protected void moveListUpDown(boolean isUp)

  - ### chooseItem

    public void chooseItem()

  - ### createFilter

    protected BiPredicate<T,String> createFilter(String text)

  - ### getFilterField

    public JTextField getFilterField()