Class MultiSelectField
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.text.JTextComponent
-
- javax.swing.JEditorPane
-
- javax.swing.JTextPane
-
- io.github.jonestimd.swing.component.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.JTextPaneA text component that displays a list of string values usingMultiSelectItemand allows adding and removing items in the list. Items can be removed from the list using thebackspaceanddeletekeys or using the delete button on theMultiSelectItems. Items can be added to the list by typing text after the existing items and pressing theenterkey.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classMultiSelectField.Builder<T extends MultiSelectField>Helper class for building aMultiSelectField.protected static interfaceMultiSelectField.Constructor<T extends MultiSelectField>protected classMultiSelectField.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
-
-
Field Summary
Fields Modifier and Type Field Description static java.util.function.BiPredicate<MultiSelectField,java.lang.String>DEFAULT_IS_VALID_ITEMprotected static floatITEM_ALIGNMENTstatic java.lang.StringITEMS_PROPERTY-
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
-
-
Constructor Summary
Constructors Constructor Description MultiSelectField(boolean showItemDelete, boolean opaqueItems)Create aMultiSelectFieldthat requires non-blank items.MultiSelectField(boolean showItemDelete, boolean opaqueItems, java.util.function.BiPredicate<MultiSelectField,java.lang.String> isValidItem)Create aMultiSelectField.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddItem()Add the current input text as an item.voidaddItem(java.lang.String text)Add an item to the list of values.static MultiSelectField.Builder<MultiSelectField>builder(boolean showDelete, boolean opaqueItems)protected voidfireItemsChanged()javax.swing.text.MutableAttributeSetgetInvalidItemStyle()Get theAttributeSetused 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.StringgetPendingItem()Get the pending item text (the current input text).booleanisKeepTextOnFocusLost()booleanisValidItem()Check if the input text is a valid item.booleanisYieldFocusOnError()protected MultiSelectItemnewItem(java.lang.String text)Create a newMultiSelectItemto add to the field.protected booleanprocessKeyBinding(javax.swing.KeyStroke ks, java.awt.event.KeyEvent e, int condition, boolean pressed)Overridden to handle changes to the list of values.protected voidremoveItem(MultiSelectItem item)Remove an item from the list of values.voidsetItems(java.util.Collection<java.lang.String> items)Replace the list of values.voidsetKeepTextOnFocusLost(boolean keepTextOnFocusLost)Set the policy for handling input text when focus is lost.voidsetYieldFocusOnError(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
-
-
-
-
Field Detail
-
ITEMS_PROPERTY
public static final java.lang.String ITEMS_PROPERTY
- See Also:
- Constant Field Values
-
DEFAULT_IS_VALID_ITEM
public static final java.util.function.BiPredicate<MultiSelectField,java.lang.String> DEFAULT_IS_VALID_ITEM
-
ITEM_ALIGNMENT
protected static final float ITEM_ALIGNMENT
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
MultiSelectField
public MultiSelectField(boolean showItemDelete, boolean opaqueItems)Create aMultiSelectFieldthat requires non-blank items.- Parameters:
showItemDelete- true to show delete buttons on the list itemsopaqueItems- 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 aMultiSelectField.- Parameters:
showItemDelete- true to show delete buttons on the list itemsopaqueItems- true to fill the list items with their background colorisValidItem- 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 theAttributeSetused 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.
-
newItem
protected MultiSelectItem newItem(java.lang.String text)
Create a newMultiSelectItemto add to the field.
-
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:
processKeyBindingin classjavax.swing.JComponent
-
isYieldFocusOnError
public boolean isYieldFocusOnError()
-
setYieldFocusOnError
public void setYieldFocusOnError(boolean yieldFocusOnError)
Set the policy for yielding focus when the input text is invalid. Iffalsethen focus will be retained when input text is invalid. Defaults totrue.
-
isKeepTextOnFocusLost
public boolean isKeepTextOnFocusLost()
-
setKeepTextOnFocusLost
public void setKeepTextOnFocusLost(boolean keepTextOnFocusLost)
Set the policy for handling input text when focus is lost. Iffalsethen valid input text will be added as an item and invalid input text will be cleared. Defaults tofalse.
-
builder
public static MultiSelectField.Builder<MultiSelectField> builder(boolean showDelete, boolean opaqueItems)
-
-