Class MultiSelectField

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable
    Direct Known Subclasses:
    ValidatedMultiSelectField

    public class MultiSelectField
    extends javax.swing.JTextPane
    A text component that displays a list of string values using MultiSelectItem and allows adding and removing items in the list. Items can be removed from the list using the backspace and delete keys or using the delete button on the MultiSelectItems. Items can be added to the list by typing text after the existing items and pressing the enter key.
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  MultiSelectField.Builder<T extends MultiSelectField>
      Helper class for building a MultiSelectField.
      protected static interface  MultiSelectField.Constructor<T extends MultiSelectField>  
      protected class  MultiSelectField.InputValidator  
      • Nested classes/interfaces inherited from class javax.swing.JEditorPane

        javax.swing.JEditorPane.AccessibleJEditorPane, javax.swing.JEditorPane.AccessibleJEditorPaneHTML, javax.swing.JEditorPane.JEditorPaneAccessibleHypertextSupport
      • Nested classes/interfaces inherited from class javax.swing.text.JTextComponent

        javax.swing.text.JTextComponent.AccessibleJTextComponent, javax.swing.text.JTextComponent.DropLocation, javax.swing.text.JTextComponent.KeyBinding
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.util.function.BiPredicate<MultiSelectField,​java.lang.String> DEFAULT_IS_VALID_ITEM  
      protected static float ITEM_ALIGNMENT  
      static java.lang.String ITEMS_PROPERTY  
      • Fields inherited from class javax.swing.JEditorPane

        HONOR_DISPLAY_PROPERTIES, W3C_LENGTH_UNITS
      • 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 java.awt.image.ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
    • Constructor Summary

      Constructors 
      Constructor Description
      MultiSelectField​(boolean showItemDelete, boolean opaqueItems)
      Create a MultiSelectField that requires non-blank items.
      MultiSelectField​(boolean showItemDelete, boolean opaqueItems, java.util.function.BiPredicate<MultiSelectField,​java.lang.String> isValidItem)
      Create a MultiSelectField.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addItem()
      Add the current input text as an item.
      void addItem​(java.lang.String text)
      Add an item to the list of values.
      static MultiSelectField.Builder<MultiSelectField> builder​(boolean showDelete, boolean opaqueItems)  
      protected void fireItemsChanged()  
      javax.swing.text.MutableAttributeSet getInvalidItemStyle()
      Get the AttributeSet used to style invalid input text.
      java.util.List<java.lang.String> getItems()
      Get the list of values, including the current input text as the last item.
      protected java.lang.String getPendingItem()
      Get the pending item text (the current input text).
      boolean isKeepTextOnFocusLost()  
      boolean isValidItem()
      Check if the input text is a valid item.
      boolean isYieldFocusOnError()  
      protected MultiSelectItem newItem​(java.lang.String text)
      Create a new MultiSelectItem to add to the field.
      protected boolean processKeyBinding​(javax.swing.KeyStroke ks, java.awt.event.KeyEvent e, int condition, boolean pressed)
      Overridden to handle changes to the list of values.
      protected void removeItem​(MultiSelectItem item)
      Remove an item from the list of values.
      void setItems​(java.util.Collection<java.lang.String> items)
      Replace the list of values.
      void setKeepTextOnFocusLost​(boolean keepTextOnFocusLost)
      Set the policy for handling input text when focus is lost.
      void setYieldFocusOnError​(boolean yieldFocusOnError)
      Set the policy for yielding focus when the input text is invalid.
      • Methods inherited from class javax.swing.JTextPane

        addStyle, createDefaultEditorKit, getCharacterAttributes, getInputAttributes, getLogicalStyle, getParagraphAttributes, getStyle, getStyledDocument, getStyledEditorKit, getUIClassID, insertComponent, insertIcon, paramString, removeStyle, replaceSelection, setCharacterAttributes, setDocument, setEditorKit, setLogicalStyle, setParagraphAttributes, setStyledDocument
      • Methods inherited from class javax.swing.JEditorPane

        addHyperlinkListener, createEditorKitForContentType, fireHyperlinkUpdate, getAccessibleContext, getContentType, getEditorKit, getEditorKitClassNameForContentType, getEditorKitForContentType, getHyperlinkListeners, getPage, getPreferredSize, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getStream, getText, read, registerEditorKitForContentType, registerEditorKitForContentType, removeHyperlinkListener, scrollToReference, setContentType, setEditorKitForContentType, setPage, setPage, setText
      • Methods inherited from class javax.swing.text.JTextComponent

        addCaretListener, addInputMethodListener, addKeymap, copy, cut, fireCaretUpdate, getActions, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getDropLocation, getDropMode, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getPrintable, getScrollableBlockIncrement, getScrollableUnitIncrement, getSelectedText, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, modelToView2D, moveCaretPosition, paste, print, print, print, processInputMethodEvent, read, removeCaretListener, removeKeymap, removeNotify, restoreComposedText, saveComposedText, select, selectAll, setCaret, setCaretColor, setCaretPosition, setComponentOrientation, setDisabledTextColor, setDragEnabled, setDropMode, setEditable, setFocusAccelerator, setHighlighter, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, setUI, updateUI, 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, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, 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, 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
    • Field Detail

      • DEFAULT_IS_VALID_ITEM

        public static final java.util.function.BiPredicate<MultiSelectField,​java.lang.String> DEFAULT_IS_VALID_ITEM
    • Constructor Detail

      • MultiSelectField

        public MultiSelectField​(boolean showItemDelete,
                                boolean opaqueItems)
        Create a MultiSelectField that requires non-blank items.
        Parameters:
        showItemDelete - true to show delete buttons on the list items
        opaqueItems - true to fill the list items with their background color
      • MultiSelectField

        public MultiSelectField​(boolean showItemDelete,
                                boolean opaqueItems,
                                java.util.function.BiPredicate<MultiSelectField,​java.lang.String> isValidItem)
        Create a MultiSelectField.
        Parameters:
        showItemDelete - true to show delete buttons on the list items
        opaqueItems - true to fill the list items with their background color
        isValidItem - predicate to use to validate input text before adding an item to the list
    • Method Detail

      • fireItemsChanged

        protected void fireItemsChanged()
      • getInvalidItemStyle

        public javax.swing.text.MutableAttributeSet getInvalidItemStyle()
        Get the AttributeSet used to style invalid input text.
      • setItems

        public void setItems​(java.util.Collection<java.lang.String> items)
        Replace the list of values.
      • addItem

        public void addItem​(java.lang.String text)
        Add an item to the list of values.
      • removeItem

        protected void removeItem​(MultiSelectItem item)
        Remove an item from the list of values.
      • getItems

        public java.util.List<java.lang.String> getItems()
        Get the list of values, including the current input text as the last item.
      • isValidItem

        public boolean isValidItem()
        Check if the input text is a valid item.
      • getPendingItem

        protected java.lang.String getPendingItem()
        Get the pending item text (the current input text).
      • addItem

        protected void addItem()
        Add the current input text as an item.
      • processKeyBinding

        protected boolean processKeyBinding​(javax.swing.KeyStroke ks,
                                            java.awt.event.KeyEvent e,
                                            int condition,
                                            boolean pressed)
        Overridden to handle changes to the list of values.
        Overrides:
        processKeyBinding in class javax.swing.JComponent
      • isYieldFocusOnError

        public boolean isYieldFocusOnError()
      • setYieldFocusOnError

        public void setYieldFocusOnError​(boolean yieldFocusOnError)
        Set the policy for yielding focus when the input text is invalid. If false then focus will be retained when input text is invalid. Defaults to true.
      • isKeepTextOnFocusLost

        public boolean isKeepTextOnFocusLost()
      • setKeepTextOnFocusLost

        public void setKeepTextOnFocusLost​(boolean keepTextOnFocusLost)
        Set the policy for handling input text when focus is lost. If false then valid input text will be added as an item and invalid input text will be cleared. Defaults to false.