public abstract class InputComponent extends Container
A base class for TextComponent, PickerComponent
and potentially other components that wish to accept input in a dynamic way that matches iOS and
Android native input guidelines.
It is highly recommended to use input components in the context of a
TextModeLayout. This allows the layout to implicitly adapt to the on-top
mode and use a box layout Y mode for iOS and other platforms.
This class supports several theme constants:
textComponentErrorColor a hex RGB color which defaults to null in which case this has no effect.
When defined this will change the color of the border and label to the given color to match the material design
styling.
textComponentErrorLineBorderBool when set to false, this will prevent the text component from
applying an underline border when there is a validation error. Defaults to true.
textComponentOnTopBool toggles the on top mode see onTopMode(boolean)
textComponentFieldUIID sets the UIID of the text field to something other than TextField
which is useful for platforms such as iOS where the look of the text field is different within the text component
inputComponentErrorMultilineBool sets the error label to multiline when activated
The following code demonstrates a simple set of inputs and validation as it appears in iOS, Android and with validation errors
BASELINE, BOTTOM, BRB_CENTER_OFFSET, BRB_CONSTANT_ASCENT, BRB_CONSTANT_DESCENT, BRB_OTHER, CENTER, CROSSHAIR_CURSOR, DEFAULT_CURSOR, DRAG_REGION_IMMEDIATELY_DRAG_X, DRAG_REGION_IMMEDIATELY_DRAG_XY, DRAG_REGION_IMMEDIATELY_DRAG_Y, DRAG_REGION_LIKELY_DRAG_X, DRAG_REGION_LIKELY_DRAG_XY, DRAG_REGION_LIKELY_DRAG_Y, DRAG_REGION_NOT_DRAGGABLE, DRAG_REGION_POSSIBLE_DRAG_X, DRAG_REGION_POSSIBLE_DRAG_XY, DRAG_REGION_POSSIBLE_DRAG_Y, E_RESIZE_CURSOR, HAND_CURSOR, LEFT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NW_RESIZE_CURSOR, RIGHT, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, TOP, W_RESIZE_CURSOR, WAIT_CURSOR| Modifier | Constructor and Description |
|---|---|
protected |
InputComponent()
Protected constructor for subclasses to override
|
| Modifier and Type | Method and Description |
|---|---|
InputComponent |
action(char icon)
Sets the icon for the action button
|
InputComponent |
actionAsButton(boolean asButton)
Indicates the action should behave as a button next to the component
and not layered on top of the text component.
|
InputComponent |
actionClick(ActionListener c)
Binds an event for the action button
|
InputComponent |
actionText(String text)
Provides the text of the action button
|
InputComponent |
actionUIID(String uiid)
Sets the UIID for the action button
|
protected Dimension |
calcPreferredSize()
Calculates the preferred size based on component content.
|
protected TextHolder |
createErrorLabel()
Can be overriden by subclasses to support custom error label components
|
InputComponent |
descriptionMessage(String descriptionMessage)
Sets the text of the description label which currently only applies in the onTop mode.
|
InputComponent |
errorMessage(String errorMessage)
Sets the text of the error label
|
Button |
getAction()
Returns the button underlying the action button that is placed on
the right of the field on top of it
|
String |
getActionText()
Provides the text of the action button
|
String |
getActionUIID()
UIID for the action button
|
abstract Component |
getEditor()
Returns the editor component e.g.
|
Object |
getPropertyValue(String name)
Returns the current value of the property name, this method is used by the GUI builder
|
static void |
group(Component... cmps)
Groups together multiple text components and labels so they align properly, this is implicitly invoked
by
TextModeLayout so this method is unnecessary when using that
layout |
protected void |
initInput()
This method must be invoked by the constructor of the subclasses to initialize the UI
|
boolean |
isActionAsButton()
Indicates the action should behave as a button next to the component
and not layered on top of the text component.
|
static boolean |
isMultiLineErrorMessage()
True if error messages should be multiline by default.
|
boolean |
isOnTopMode()
Indicates the on top mode which places the label above the text when true.
|
InputComponent |
label(String text)
Sets the text of the label
|
InputComponent |
onTopMode(boolean onTopMode)
Sets the on top mode which places the label above the text when true.
|
static void |
setMultiLineErrorMessage(boolean aMultiLineErrorMessage)
True if error messages should be multiline by default.
|
String |
setPropertyValue(String name,
Object value)
Sets a new value to the given property, returns an error message if failed
and null if successful.
|
add, add, add, add, add, add, addAll, addComponent, addComponent, addComponent, addComponent, animateHierarchy, animateHierarchyAndWait, animateHierarchyFade, animateHierarchyFadeAndWait, animateLayout, animateLayoutAndWait, animateLayoutFade, animateLayoutFadeAndWait, animateUnlayout, animateUnlayoutAndWait, applyRTL, cancelRepaints, clearClientProperties, constrainHeightWhenScrollable, constrainWidthWhenScrollable, contains, createAnimateHierarchy, createAnimateHierarchyFade, createAnimateLayout, createAnimateLayoutFade, createAnimateLayoutFadeAndWait, createAnimateMotion, createAnimateUnlayout, createReplaceTransition, dragInitiated, drop, encloseIn, encloseIn, findDropTargetAt, findFirstFocusable, fireClicked, flushReplace, forceRevalidate, getBottomGap, getChildrenAsList, getClosestComponentTo, getComponentAt, getComponentAt, getComponentCount, getComponentIndex, getGridPosX, getGridPosY, getLayout, getLayoutHeight, getLayoutWidth, getLeadComponent, getLeadParent, getResponderAt, getSafeAreaRoot, getScrollIncrement, getSideGap, getUIManager, initLaf, invalidate, isEnabled, isSafeArea, isSafeAreaRoot, isScrollableX, isScrollableY, isSelectableInteraction, isSurface, iterator, iterator, keyPressed, keyReleased, layoutContainer, morph, morphAndWait, paint, paintBackground, paintBorderBackground, paintComponentBackground, paintGlass, paramString, pointerPressed, refreshTheme, removeAll, removeComponent, replace, replace, replaceAndWait, replaceAndWait, replaceAndWait, revalidate, revalidateLater, revalidateWithAnimationSafety, scrollComponentToVisible, setCellRenderer, setEnabled, setLayout, setLeadComponent, setSafeArea, setSafeAreaRoot, setScrollable, setScrollableX, setScrollableY, setScrollIncrement, setShouldCalcPreferredSize, setShouldLayout, setUIManager, updateTabIndicesaddDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, animate, bindProperty, blocksSideSwipe, calcScrollSize, contains, containsOrOwns, createStyleAnimation, deinitialize, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, drawDraggedImage, focusGained, focusLost, getAbsoluteX, getAbsoluteY, getAllStyles, getAnimationManager, getBaseline, getBaselineResizeBehavior, getBindablePropertyNames, getBindablePropertyTypes, getBorder, getBoundPropertyValue, getBounds, getBounds, getClientProperty, getCloudBoundProperty, getCloudDestinationProperty, getComponentForm, getComponentState, getCursor, getDefaultDragTransparency, getDirtyRegion, getDisabledStyle, getDraggedx, getDraggedy, getDragImage, getDragRegionStatus, getDragSpeed, getDragTransparency, getEditingDelegate, getHeight, getInlineAllStyles, getInlineDisabledStyles, getInlinePressedStyles, getInlineSelectedStyles, getInlineStylesTheme, getInlineUnselectedStyles, getInnerHeight, getInnerPreferredH, getInnerPreferredW, getInnerWidth, getInnerX, getInnerY, getLabelForComponent, getName, getNativeOverlay, getNextFocusDown, getNextFocusLeft, getNextFocusRight, getNextFocusUp, getOuterHeight, getOuterPreferredH, getOuterPreferredW, getOuterWidth, getOuterX, getOuterY, getOwner, getParent, getPreferredH, getPreferredSize, getPreferredSizeStr, getPreferredTabIndex, getPreferredW, getPressedStyle, getPropertyNames, getPropertyTypeNames, getPropertyTypes, getSameHeight, getSameWidth, getScrollable, getScrollAnimationSpeed, getScrollDimension, getScrollOpacity, getScrollOpacityChangeSpeed, getScrollX, getScrollY, getSelectCommandText, getSelectedRect, getSelectedStyle, getStyle, getTabIndex, getTensileLength, getTextSelectionSupport, getTooltip, getUIID, getUnselectedStyle, getVisibleBounds, getVisibleBounds, getWidth, getX, getY, growShrink, handlesInput, hasFixedPreferredSize, hasFocus, hideNativeOverlay, initComponent, initCustomStyle, initDisabledStyle, initPressedStyle, initSelectedStyle, initUnselectedStyle, installDefaultPainter, isAlwaysTensile, isBlockLead, isCellRenderer, isChildOf, isDragActivated, isDragAndDropOperation, isDraggable, isDragRegion, isDropTarget, isEditable, isEditing, isFlatten, isFocusable, isGrabsPointerEvents, isHidden, isHidden, isHideInLandscape, isHideInPortrait, isIgnorePointerEvents, isInClippingRegion, isInitialized, isOpaque, isOwnedBy, isPinchBlocksDragAndDrop, isRippleEffect, isRTL, isScrollable, isScrollVisible, isSetCursorSupported, isSmoothScrolling, isSnapToGrid, isStickyDrag, isTactileTouch, isTactileTouch, isTensileDragEnabled, isTraversable, isVisible, keyRepeated, laidOut, longKeyPress, longPointerPress, onScrollX, onScrollY, paintBackgrounds, paintBorder, paintComponent, paintComponent, paintIntersectingComponentsAbove, paintLock, paintLockRelease, paintRippleOverlay, paintScrollbars, paintScrollbarX, paintScrollbarY, paintShadows, parsePreferredSize, pinch, pinch, pinchReleased, pointerDragged, pointerDragged, pointerHover, pointerHoverPressed, pointerHoverReleased, pointerPressed, pointerReleased, pointerReleased, putClientProperty, refreshTheme, refreshTheme, remove, removeDragFinishedListener, removeDragOverListener, removeDropListener, removeFocusListener, removeLongPressListener, removePointerDraggedListener, removePointerPressedListener, removePointerReleasedListener, removeScrollListener, removeStateChangeListener, repaint, repaint, requestFocus, resetFocusable, respondsToPointerEvents, scrollRectToVisible, scrollRectToVisible, setAlwaysTensile, setBlockLead, setBoundPropertyValue, setCloudBoundProperty, setCloudDestinationProperty, setComponentState, setCursor, setDefaultDragTransparency, setDirtyRegion, setDisabledStyle, setDraggable, setDragTransparency, setDropTarget, setEditingDelegate, setFlatten, setFocus, setFocusable, setGrabsPointerEvents, setHandlesInput, setHeight, setHidden, setHidden, setHideInLandscape, setHideInPortrait, setIgnorePointerEvents, setInitialized, setInlineAllStyles, setInlineDisabledStyles, setInlinePressedStyles, setInlineSelectedStyles, setInlineStylesTheme, setInlineUnselectedStyles, setIsScrollVisible, setLabelForComponent, setName, setNextFocusDown, setNextFocusLeft, setNextFocusRight, setNextFocusUp, setOpaque, setOwner, setPinchBlocksDragAndDrop, setPreferredH, setPreferredSize, setPreferredSizeStr, setPreferredTabIndex, setPreferredW, setPressedStyle, setRippleEffect, setRTL, setSameHeight, setSameSize, setSameWidth, setScrollAnimationSpeed, setScrollOpacityChangeSpeed, setScrollSize, setScrollVisible, setScrollX, setScrollY, setSelectCommandText, setSelectedStyle, setSize, setSmoothScrolling, setSnapToGrid, setTabIndex, setTactileTouch, setTensileDragEnabled, setTensileLength, setTooltip, setTraversable, setUIID, setUIID, setUnselectedStyle, setVisible, setWidth, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, shouldRenderComponentSelection, showNativeOverlay, startEditingAsync, stopEditing, stripMarginAndPadding, styleChanged, toImage, toString, unbindProperty, updateNativeOverlay, visibleBoundsContainsprotected InputComponent()
protected void initInput()
protected TextHolder createErrorLabel()
ErrorLabel UIIDprotected Dimension calcPreferredSize()
ContainercalcPreferredSize in class Containerpublic abstract Component getEditor()
public InputComponent onTopMode(boolean onTopMode)
textComponentOnTopBool
theme constant which defaults to falseonTopMode - true for the label to be above the textTextComponent tc = new TextComponent().text("Text").label("Label"); public boolean isOnTopMode()
textComponentOnTopBool
theme constant which defaults to falsepublic static void group(Component... cmps)
TextModeLayout so this method is unnecessary when using that
layoutcmps - a list of components if it's a text component that is not in the on top mode the width of the labels
will be alignedpublic InputComponent errorMessage(String errorMessage)
errorMessage - the textTextComponent tc = new TextComponent().text("Text").label("Label"); public InputComponent descriptionMessage(String descriptionMessage)
descriptionMessage - the textTextComponent tc = new TextComponent().text("Text").label("Label"); public InputComponent label(String text)
text - the textTextComponent tc = new TextComponent().text("Text").label("Label"); public InputComponent actionUIID(String uiid)
uiid - a custom UIID for the actionTextComponent tc = new TextComponent().text("Text").label("Label"); public String getActionUIID()
public InputComponent actionAsButton(boolean asButton)
asButton - true so the action will act like a buttonTextComponent tc = new TextComponent().text("Text").label("Label"); public boolean isActionAsButton()
public InputComponent actionText(String text)
text - the text that should appear on the action buttonTextComponent tc = new TextComponent().text("Text").label("Label"); public String getActionText()
public InputComponent action(char icon)
icon - the icon constant from FontImageTextComponent tc = new TextComponent().text("Text").label("Label"); public InputComponent actionClick(ActionListener c)
c - action listener callbackTextComponent tc = new TextComponent().text("Text").label("Label"); public Button getAction()
public Object getPropertyValue(String name)
getPropertyValue in class Componentname - the name of the propertypublic String setPropertyValue(String name, Object value)
setPropertyValue in class Componentname - the name of the propertyvalue - new value for the propertypublic static boolean isMultiLineErrorMessage()
inputComponentErrorMultilineBoolpublic static void setMultiLineErrorMessage(boolean aMultiLineErrorMessage)
inputComponentErrorMultilineBoolaMultiLineErrorMessage - the multiLineErrorMessage to set