public class TextComponent extends InputComponent
Encapsulates a text field and label into a single component. This allows the UI to adapt for iOS/Android behavior differences and support features like floating hint when necessary. It also includes platform specific error handling logic.
It is highly recommended to use text 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)
textComponentAnimBool toggles the animation mode see focusAnimation(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
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| Constructor and Description |
|---|
TextComponent()
Default constructor allows us to create an arbitrary text component
|
| Modifier and Type | Method and Description |
|---|---|
TextComponent |
action(char icon)
Overridden for covariant return type
Sets the icon for the action button
|
TextComponent |
actionAsButton(boolean asButton)
Overridden for covariant return type
Indicates the action should behave as a button next to the component
and not layered on top of the text component.
|
TextComponent |
actionClick(ActionListener c)
Overridden for covariant return type
Binds an event for the action button
|
TextComponent |
actionText(String text)
Overridden for covariant return type
Provides the text of the action button
|
TextComponent |
actionUIID(String uiid)
Overridden for covariant return type
Sets the UIID for the action button
|
TextComponent |
columns(int columns)
Sets the columns in the text field
|
TextComponent |
constraint(int constraint)
Sets the constraint for text input matching the constraints from the text area class
|
TextComponent |
descriptionMessage(String descriptionMessage)
Overridden for covariant return type
Sets the text of the description label which currently only applies in the onTop mode.
|
TextComponent |
errorMessage(String errorMessage)
Overridden for covariant return type
Sets the text of the error label
|
TextComponent |
focusAnimation(boolean focusAnimation)
The focus animation mode forces the hint and text to be identical and animates the hint to the label when
focus is in the text field as is common on Android.
|
Component |
getEditor()
Returns the editor component e.g.
|
TextField |
getField()
Allows us to invoke setters/getters and bind listeners to the text field
|
String[] |
getPropertyNames()
A component may expose mutable property names for a UI designer to manipulate, this
API is designed for usage internally by the GUI builder code
|
String[] |
getPropertyTypeNames()
This method is here to workaround an XMLVM array type bug where property types aren't
identified properly, it returns the names of the types using the following type names:
String,int,double,long,byte,short,char,String[],String[][],byte[],Image,Image[],Object[],ListModel,ListCellRenderer
|
Class[] |
getPropertyTypes()
Matches the property names method (see that method for further details).
|
Object |
getPropertyValue(String name)
Returns the current value of the property name, this method is used by the GUI builder
|
String |
getText()
Returns the text in the field
TextArea.getText() |
TextComponent |
hint(Image hint)
Sets the hint of the field
|
TextComponent |
hint(String hint)
Sets the hint of the field
|
boolean |
isFocusAnimation()
The focus animation mode forces the hint and text to be identical and animates the hint to the label when
focus is in the text field as is common on Android.
|
TextComponent |
label(String text)
Overridden for covariant return type
Sets the text of the label
|
TextComponent |
labelAndHint(String text)
Convenience method for setting the label and hint together
|
TextComponent |
multiline(boolean multiline)
Sets the text field to multiline or single line
|
TextComponent |
onTopMode(boolean onTopMode)
Overridden for covariant return type
Sets the on top mode which places the label above the text when true.
|
TextComponent |
rows(int rows)
Sets the rows in the text field
|
String |
setPropertyValue(String name,
Object value)
Sets a new value to the given property, returns an error message if failed
and null if successful.
|
TextComponent |
text(String text)
Sets the text of the field
|
calcPreferredSize, createErrorLabel, getAction, getActionText, getActionUIID, group, initInput, isActionAsButton, isMultiLineErrorMessage, isOnTopMode, setMultiLineErrorMessageadd, 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, 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, visibleBoundsContainspublic TextComponent()
public Component getEditor()
getEditor in class InputComponentpublic boolean isFocusAnimation()
textComponentAnimBool which is true by default on Android. Notice that this is designed for the
onTopMode and might not work if that is set to false...public TextComponent focusAnimation(boolean focusAnimation)
textComponentAnimBool which is true by default on Android. Notice that this is designed for the
onTopMode and might not work if that is set to false...focusAnimation - true for the label to animate into place on focus, false otherwiseTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent text(String text)
text - the textTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent onTopMode(boolean onTopMode)
textComponentOnTopBool
theme constant which defaults to falseonTopMode in class InputComponentonTopMode - true for the label to be above the textTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent action(char icon)
action in class InputComponenticon - the icon constant from FontImageTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent actionClick(ActionListener c)
actionClick in class InputComponentc - action listener callbackTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent errorMessage(String errorMessage)
errorMessage in class InputComponenterrorMessage - the textTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent descriptionMessage(String descriptionMessage)
descriptionMessage in class InputComponentdescriptionMessage - the textTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent label(String text)
label in class InputComponenttext - the textTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent actionAsButton(boolean asButton)
actionAsButton in class InputComponentasButton - true so the action will act like a buttonTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent actionUIID(String uiid)
actionUIID in class InputComponentuiid - a custom UIID for the actionTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent actionText(String text)
actionText in class InputComponenttext - the text that should appear on the action buttonTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent labelAndHint(String text)
text - the text and hintTextComponent tc = new TextComponent().text("Text").label("Label");
public TextComponent hint(String hint)
hint - the text of the hintTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent hint(Image hint)
hint - the icon for the hintTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent multiline(boolean multiline)
multiline - true for multiline, false otherwiseTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent columns(int columns)
columns - the number of columns which is used for preferred size calculationsTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent rows(int rows)
rows - the number of rows which is used for preferred size calculationsTextComponent tc = new TextComponent().text("Text").label("Label"); public TextComponent constraint(int constraint)
constraint - one of the constants from the TextArea class see
TextArea.setConstraint(int)TextComponent tc = new TextComponent().text("Text").label("Label"); public TextField getField()
public String[] getPropertyNames()
getPropertyNames in class Componentpublic Class[] getPropertyTypes()
getPropertyTypes in class Componentpublic String[] getPropertyTypeNames()
getPropertyTypeNames in class Componentpublic Object getPropertyValue(String name)
getPropertyValue in class InputComponentname - the name of the propertypublic String setPropertyValue(String name, Object value)
setPropertyValue in class InputComponentname - the name of the propertyvalue - new value for the propertypublic String getText()
TextArea.getText()