Package docking.widgets

# Class DropDownMultiSelectionTextField<T>

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.text.JTextComponent
javax.swing.JTextField
docking.widgets.DropDownTextField<T>
docking.widgets.DropDownSelectionTextField<T>
docking.widgets.DropDownMultiSelectionTextField<T>

Type Parameters:
  `T` - the type of data stored in the drop down

All Implemented Interfaces:
  `GComponent`, `ImageObserver`, `MenuContainer`, `Serializable`, `Accessible`, `Scrollable`, `SwingConstants`

public class DropDownMultiSelectionTextField<T> extends DropDownSelectionTextField<T>
Extension of the `DropDownSelectionTextField` that allows multiple items to be selected.

Note that multiple selection introduces some display complications that are not an issue with single selection. Namely:

- how do you display multiple selected items in the preview pane
- how do you display those same items in the drop down text field

The solution here is to:

- let the preview panel operate normally; it will simply display the preview text for whatever was last selected
- display all selected items in the drop down text field as a comma-delimited list

See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class docking.widgets.DropDownTextField

  `DropDownTextField.DropDownList, DropDownTextField.SearchModeBounds`

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

  `JTextField.AccessibleJTextField`

  ## Nested classes/interfaces inherited from class javax.swing.text.JTextComponent

  `JTextComponent.AccessibleJTextComponent, JTextComponent.DropLocation, JTextComponent.KeyBinding`

  ## 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 docking.widgets.DropDownTextField

  `dataModel, internallyDrivenUpdate, list, PREVIEW_WINDOW_BGCOLOR, PREVIEW_WINDOW_FGCOLOR`

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

  `notifyAction`

  ### Fields inherited from class javax.swing.text.JTextComponent

  `DEFAULT_KEYMAP, FOCUS_ACCELERATOR_KEY`

  ### 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 docking.widgets.GComponent

  `HTML_DISABLE_STRING`

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

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

  ### Fields inherited from interface javax.swing.SwingConstants

  `BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DropDownMultiSelectionTextField(DropDownTextFieldDataModel<T> dataModel)`
  Constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addDropDownSelectionChoiceListener(DropDownMultiSelectionChoiceListener<T> listener)`
  Adds the caller to a list of subscribers who will be notified when selection changes.
  `void`
  `addDropDownSelectionChoiceListener(DropDownSelectionChoiceListener<T> listener)`
  Adds a listener that will be called back when the user makes a choice from the drop-down list.
  `protected ListSelectionModel`
  `createListSelectionModel()`
  `protected ListSelectionListener`
  `getPreviewListener()`
  `protected JComponent`
  `getPreviewPaneComponent()`
  `List<T>`
  `getSelectedValues()`
  Returns a list of all selected items in the list.
  `protected boolean`
  `hasPreview()`
  `protected void`
  `setPreviewPaneAttributes()`
  `void`
  `setSelectedValue(T value)`
  Sets the current selection on this text field.
  `protected void`
  `setTextFromList()`
  `protected void`
  `setTextFromSelectedListItemAndKeepMatchingWindowOpen()`

  ### Methods inherited from class docking.widgets.DropDownTextField

  `addCellEditorListener, closeDropDownWindow, getMatchingData, getSearchMode, getSearchModeBounds, getSelectedValue, hideMatchingWindow, isMatchingListShowing, paintComponent, removeCellEditorListener, setConsumeEnterKeyPress, setIgnoreEnterKeyPress, setMatchingWindowHeight, setSearchMode, setSelectedItems, setShowMatchingListOnEmptyText, setText, setTextWithoutClosingCompletionWindow, shouldReplaceTextFieldTextWithSelectedItem, showMatchingList, updateUI`

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

  `actionPropertyChanged, addActionListener, configurePropertiesFromAction, createActionPropertyChangeListener, createDefaultModel, fireActionPerformed, getAccessibleContext, getAction, getActionListeners, getActions, getColumns, getColumnWidth, getHorizontalAlignment, getHorizontalVisibility, getPreferredSize, getScrollOffset, getUIClassID, isValidateRoot, paramString, postActionEvent, removeActionListener, scrollRectToVisible, setAction, setActionCommand, setColumns, setDocument, setFont, setHorizontalAlignment, setScrollOffset`

  ### Methods inherited from class javax.swing.text.JTextComponent

  `addCaretListener, addInputMethodListener, addKeymap, copy, cut, fireCaretUpdate, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getDropLocation, getDropMode, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getPrintable, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedText, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, modelToView2D, moveCaretPosition, paste, print, print, print, processInputMethodEvent, read, removeCaretListener, removeKeymap, removeNotify, replaceSelection, restoreComposedText, saveComposedText, select, selectAll, setCaret, setCaretColor, setCaretPosition, setComponentOrientation, setDisabledTextColor, setDragEnabled, setDropMode, setEditable, setFocusAccelerator, setHighlighter, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, setUI, viewToModel, viewToModel2D, write`

  ### 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, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, 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, 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, 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, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, 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`

  ### Methods inherited from interface docking.widgets.GComponent

  `isHTMLRenderingEnabled, setHTMLRenderingEnabled`

- ## Constructor Details

  - ### DropDownMultiSelectionTextField

    public DropDownMultiSelectionTextField(DropDownTextFieldDataModel<T> dataModel)
    Constructor.
    Parameters:
      `dataModel` - the model for the drop down widget

- ## Method Details

  - ### addDropDownSelectionChoiceListener

    public void addDropDownSelectionChoiceListener(DropDownMultiSelectionChoiceListener<T> listener)
    Adds the caller to a list of subscribers who will be notified when selection changes.
    Parameters:
      `listener` - the subscriber to be added

  - ### addDropDownSelectionChoiceListener

    public void addDropDownSelectionChoiceListener(DropDownSelectionChoiceListener<T> listener)
    Description copied from class: `DropDownTextField`
    Adds a listener that will be called back when the user makes a choice from the drop-down list. A choice is a user action that triggers the selection window to be closed and updates the text field.

    Note: the listener is stored in a `weak data structure`, so you must maintain a reference to the listener you pass in--anonymous classes or lambdas will not work.

    Overrides:
      `addDropDownSelectionChoiceListener` in class `DropDownTextField<T>`
    Parameters:
      `listener` - the listener

  - ### getSelectedValues

    public List<T> getSelectedValues()
    Returns a list of all selected items in the list.
    Returns:
      the selected items

  - ### createListSelectionModel

    protected ListSelectionModel createListSelectionModel()
    Overrides:
      `createListSelectionModel` in class `DropDownSelectionTextField<T>`

  - ### setPreviewPaneAttributes

    protected void setPreviewPaneAttributes()
    Overrides:
      `setPreviewPaneAttributes` in class `DropDownTextField<T>`

  - ### hasPreview

    protected boolean hasPreview()
    Overrides:
      `hasPreview` in class `DropDownTextField<T>`

  - ### getPreviewListener

    protected ListSelectionListener getPreviewListener()
    Overrides:
      `getPreviewListener` in class `DropDownTextField<T>`

  - ### getPreviewPaneComponent

    protected JComponent getPreviewPaneComponent()
    Overrides:
      `getPreviewPaneComponent` in class `DropDownTextField<T>`

  - ### setTextFromList

    protected void setTextFromList()
    Overrides:
      `setTextFromList` in class `DropDownTextField<T>`

  - ### setSelectedValue

    public void setSelectedValue(T value)
    Description copied from class: `DropDownTextField`
    Sets the current selection on this text field. This will store the provided value and set the text of the text field to be the name of that value. If the given value is null, then the text of this field will be cleared.
    Overrides:
      `setSelectedValue` in class `DropDownTextField<T>`
    Parameters:
      `value` - The value that is to be the current selection or null to clear the selected value of this text field.

  - ### setTextFromSelectedListItemAndKeepMatchingWindowOpen

    protected void setTextFromSelectedListItemAndKeepMatchingWindowOpen()
    Overrides:
      `setTextFromSelectedListItemAndKeepMatchingWindowOpen` in class `DropDownTextField<T>`