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, disablingconfirmUIcomponent (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 voidaddNotify()(package private) ValidatingInputPane<T>attachConfirmUI(javax.swing.JComponent confirm)Attaches a component used to confirm/proceed.(package private) java.lang.StringgetErrorMessage()Gets the error message.(package private) java.lang.IllegalArgumentExceptiongetException()Returns the exception from the most recent validation.(package private) java.lang.StringgetText()Gets the input value, as text.(package private) javax.swing.JTextFieldgetTextField()(package private) TgetValue()Gets the input value after conversion.(package private) booleanhasError()Determines if the input is erroneous.(package private) ValidatingInputPane<T>message(java.lang.String msg)Configures a prompt message for the panel.(package private) voidsetText(java.lang.String text)Sets the input value, as text.(package private) voidvalidateText(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:
addNotifyin 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 returnfalseto reject the value with a generic message, or throw aIllegalArgumentExceptionsubclass with a custom message. The message will be then displayed below the input line.- Parameters:
val- validator instance,nullto 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 throwIllegalArgumentExceptionif the conversion fails (text input cannot be converted to the target type). Returnsnullfor empty (all whitespace) input.- Returns:
- the entered value or
nullfor 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. Returnsnullfor 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()
-
-