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.JTextPane
A text component that displays a list of string values usingMultiSelectItem
and allows adding and removing items in the list. Items can be removed from the list using thebackspace
anddelete
keys or using the delete button on theMultiSelectItem
s. Items can be added to the list by typing text after the existing items and pressing theenter
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 aMultiSelectField
.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
-
-
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.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 aMultiSelectField
that 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 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 theAttributeSet
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 newMultiSelectItem
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
-
-
-
-
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 aMultiSelectField
that 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 theAttributeSet
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.
-
newItem
protected MultiSelectItem newItem(java.lang.String text)
Create a newMultiSelectItem
to 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:
processKeyBinding
in 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. Iffalse
then 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. Iffalse
then 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)
-
-