Package jmri.util
Class ValidatingInputPane<T>
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- jmri.util.ValidatingInputPane<T>
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
final class ValidatingInputPane<T> extends javax.swing.JPanel
A helper Panel for input-validating input boxes. It converts and validates the text input, disablingconfirmUI
component (usually a button) when the input is not valid.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
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
-
-
Constructor Summary
Constructors Constructor Description ValidatingInputPane(java.util.function.Function<java.lang.String,T> convertor)
Creates new form ValidatingInputPane.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addNotify()
(package private) ValidatingInputPane<T>
attachConfirmUI(javax.swing.JComponent confirm)
Attaches a component used to confirm/proceed.(package private) java.lang.String
getErrorMessage()
Gets the error message.(package private) java.lang.IllegalArgumentException
getException()
Returns the exception from the most recent validation.(package private) java.lang.String
getText()
Gets the input value, as text.(package private) javax.swing.JTextField
getTextField()
(package private) T
getValue()
Gets the input value after conversion.(package private) boolean
hasError()
Determines if the input is erroneous.(package private) ValidatingInputPane<T>
message(java.lang.String msg)
Configures a prompt message for the panel.(package private) void
setText(java.lang.String text)
Sets the input value, as text.(package private) void
validateText(java.lang.String text)
Should be called from tests only(package private) ValidatingInputPane<T>
validator(java.util.function.Predicate<T> val)
Configures the validator.-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, 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
-
-
-
-
Constructor Detail
-
ValidatingInputPane
public ValidatingInputPane(java.util.function.Function<java.lang.String,T> convertor)
Creates new form ValidatingInputPane.- Parameters:
convertor
- converts String to the desired data type.
-
-
Method Detail
-
attachConfirmUI
ValidatingInputPane<T> attachConfirmUI(javax.swing.JComponent confirm)
Attaches a component used to confirm/proceed. The component will be disabled if the input is erroneous. The first validation will happen after this component appears on the screen. Typically, the OK button should be passed here.- Parameters:
confirm
- the "confirm" control.- Returns:
- this instance.
-
addNotify
public void addNotify()
- Overrides:
addNotify
in classjavax.swing.JComponent
-
message
ValidatingInputPane<T> message(java.lang.String msg)
Configures a prompt message for the panel. The prompt message appears above the input line.- Parameters:
msg
- message text- Returns:
- this instance.
-
getException
java.lang.IllegalArgumentException getException()
Returns the exception from the most recent validation. Only exceptions from unsuccessful conversion or thrown by validator are returned. To check whether the input is valid, callhasError()
. If the validator just rejects the input with no exception, this method returnsnull
- Returns:
- exception thrown by converter or validator.
-
validator
ValidatingInputPane<T> validator(java.util.function.Predicate<T> val)
Configures the validator. Validator is called to check the value after the String input is converted to the target type. The validator can either just returnfalse
to reject the value with a generic message, or throw aIllegalArgumentException
subclass with a custom message. The message will be then displayed below the input line.- Parameters:
val
- validator instance,null
to disable.- Returns:
- this instance
-
hasError
boolean hasError()
Determines if the input is erroneous.- Returns:
- error status
-
setText
void setText(java.lang.String text)
Sets the input value, as text.- Parameters:
text
- input text
-
getText
java.lang.String getText()
Gets the input value, as text.- Returns:
- the input text
-
getValue
T getValue()
Gets the input value after conversion. May throwIllegalArgumentException
if the conversion fails (text input cannot be converted to the target type). Returnsnull
for empty (all whitespace) input.- Returns:
- the entered value or
null
for empty input.
-
getErrorMessage
java.lang.String getErrorMessage()
Gets the error message. Either a custom message from an exception thrown by converter or validator, or the default message for failed validation. Returnsnull
for valid input.- Returns:
- if input is invalid, returns the error message. If the input is valid, returns
null
.
-
validateText
void validateText(java.lang.String text)
Should be called from tests only- Parameters:
text
- String to check for validation
-
getTextField
javax.swing.JTextField getTextField()
-
-