Class InputComponent
- All Implemented Interfaces:
Animation, Editable, StyleListener, Iterable<Component>
- Direct Known Subclasses:
PickerComponent, TextComponent
A base class for com.codename1.ui.TextComponent, com.codename1.ui.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
com.codename1.ui.layouts.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:
-
textComponentErrorColora 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. -
textComponentErrorLineBorderBoolwhen set tofalse, this will prevent the text component from applying an underline border when there is a validation error. Defaults totrue. -
textComponentOnTopBooltoggles the on top mode see#onTopMode(boolean) -
textComponentFieldUIIDsets the UIID of the text field to something other thanTextFieldwhich is useful for platforms such as iOS where the look of the text field is different within the text component -
inputComponentErrorMultilineBoolsets 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
TextModeLayout tl = new TextModeLayout(3, 2);
Form f = new Form("Pixel Perfect", tl);
TextComponent title = new TextComponent().label("Title");
TextComponent price = new TextComponent().label("Price");
TextComponent location = new TextComponent().label("Location");
PickerComponent date = PickerComponent.createDate(new Date()).label("Date");
TextComponent description = new TextComponent().label("Description").multiline(true);
Validator val = new Validator();
val.addConstraint(title, new LengthConstraint(2));
val.addConstraint(price, new NumericConstraint(true));
f.add(tl.createConstraint().widthPercentage(60), title);
f.add(tl.createConstraint().widthPercentage(40), date);
f.add(location);
f.add(price);
f.add(tl.createConstraint().horizontalSpan(2), description);
f.setEditOnShow(title.getField());
f.show();
-
Field Summary
Fields inherited from class Component
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 Summary
ConstructorsModifierConstructorDescriptionprotectedProtected constructor for subclasses to override -
Method Summary
Modifier and TypeMethodDescriptionaction(char icon) Sets the icon for the action buttonactionAsButton(boolean asButton) Indicates the action should behave as a button next to the component and not layered on top of the text component.Binds an event for the action buttonactionText(String text) Provides the text of the action buttonactionUIID(String uiid) Sets the UIID for the action buttonprotected DimensionCalculates the preferred size based on component content.protected TextHolderCan be overriden by subclasses to support custom error label componentsdescriptionMessage(String descriptionMessage) Sets the text of the description label which currently only applies in the onTop mode.errorMessage(String errorMessage) Sets the text of the error labelReturns the button underlying the action button that is placed on the right of the field on top of itProvides the text of the action buttonUIID for the action buttonabstract ComponentReturns the editor component e.g.getPropertyValue(String name) Returns the current value of the property name, this method is used by the GUI builderstatic voidGroups together multiple text components and labels so they align properly, this is implicitly invoked bycom.codename1.ui.layouts.TextModeLayoutso this method is unnecessary when using that layoutprotected final voidThis method must be invoked by the constructor of the subclasses to initialize the UIbooleanIndicates the action should behave as a button next to the component and not layered on top of the text component.static booleanTrue if error messages should be multiline by default.booleanIndicates the on top mode which places the label above the text when true.Sets the text of the labelonTopMode(boolean onTopMode) Sets the on top mode which places the label above the text when true.static voidsetMultiLineErrorMessage(boolean aMultiLineErrorMessage) True if error messages should be multiline by default.setPropertyValue(String name, Object value) Sets a new value to the given property, returns an error message if failed and null if successful.Methods inherited from class Container
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, 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, updateTabIndicesMethods inherited from class Component
addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, animate, announceForAccessibility, bindProperty, blocksSideSwipe, calcScrollSize, contains, containsOrOwns, createStyleAnimation, deinitialize, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, drawDraggedImage, focusGained, focusLost, getAbsoluteX, getAbsoluteY, getAccessibilityText, 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, onSetFocusable, paintBackground, paintBackgrounds, paintBorder, paintBorderBackground, 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, setAccessibilityText, 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, setUIIDFinal, setUnselectedStyle, setVisible, setWidth, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, shouldRenderComponentSelection, showNativeOverlay, startEditingAsync, stopEditing, stripMarginAndPadding, styleChanged, toImage, toString, unbindProperty, updateNativeOverlay, visibleBoundsContainsMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Iterable
forEach, spliterator
-
Constructor Details
-
InputComponent
protected InputComponent()Protected constructor for subclasses to override
-
-
Method Details
-
group
Groups together multiple text components and labels so they align properly, this is implicitly invoked by
com.codename1.ui.layouts.TextModeLayoutso this method is unnecessary when using that layoutParameters
cmps: @param cmps 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 aligned
-
isMultiLineErrorMessage
public static boolean isMultiLineErrorMessage()True if error messages should be multiline by default. This can be set via the theme constant
inputComponentErrorMultilineBoolReturns
the multiLineErrorMessage
-
setMultiLineErrorMessage
public static void setMultiLineErrorMessage(boolean aMultiLineErrorMessage) True if error messages should be multiline by default. This can be set via the theme constant
inputComponentErrorMultilineBoolParameters
aMultiLineErrorMessage: the multiLineErrorMessage to set
-
initInput
protected final void initInput()This method must be invoked by the constructor of the subclasses to initialize the UI -
createErrorLabel
Can be overriden by subclasses to support custom error label components
Returns
- Returns:
- Component instance such as JLabel, TextArea etc. usually with the
ErrorLabelUIID
-
calcPreferredSize
Description copied from class:ContainerCalculates the preferred size based on component content. This method is invoked lazily by getPreferred size.
Returns
the calculated preferred size based on component content
- Overrides:
calcPreferredSizein classContainer
-
getEditor
Returns the editor component e.g. text field picker etc.
Returns
the editor component
-
onTopMode
Sets the on top mode which places the label above the text when true. It's to the left of the text otherwise (right in bidi languages). This is determined by the platform theme using the
textComponentOnTopBooltheme constant which defaults to falseParameters
onTopMode: true for the label to be above the text
Returns
this for chaining calls E.g.
TextComponent tc = new TextComponent().text("Text").label("Label"); -
isOnTopMode
public boolean isOnTopMode()Indicates the on top mode which places the label above the text when true. It's to the left of the text otherwise (right in bidi languages). This is determined by the platform theme using the
textComponentOnTopBooltheme constant which defaults to falseReturns
true if the text should be on top
-
errorMessage
Sets the text of the error label
Parameters
errorMessage: the text
Returns
this for chaining calls E.g.
TextComponent tc = new TextComponent().text("Text").label("Label"); -
descriptionMessage
Sets the text of the description label which currently only applies in the onTop mode. This text occupies the same space as the error message and thus hides when there's an error
Parameters
descriptionMessage: the text
Returns
this for chaining calls E.g.
TextComponent tc = new TextComponent().text("Text").label("Label"); -
label
Sets the text of the label
Parameters
text: the text
Returns
this for chaining calls E.g.
TextComponent tc = new TextComponent().text("Text").label("Label"); -
actionUIID
Sets the UIID for the action button
Parameters
uiid: a custom UIID for the action
Returns
this for chaining calls E.g.
TextComponent tc = new TextComponent().text("Text").label("Label"); -
getActionUIID
UIID for the action button
Returns
the UIID
-
actionAsButton
Indicates the action should behave as a button next to the component and not layered on top of the text component. This is useful for UI in the style of a browse button next to a text field.
Parameters
asButton: true so the action will act like a button
Returns
this for chaining calls E.g.
TextComponent tc = new TextComponent().text("Text").label("Label"); -
isActionAsButton
public boolean isActionAsButton()Indicates the action should behave as a button next to the component and not layered on top of the text component. This is useful for UI in the style of a browse button next to a text field.
Returns
true if the action acts as a button
-
actionText
Provides the text of the action button
Parameters
text: the text that should appear on the action button
Returns
this for chaining calls E.g.
TextComponent tc = new TextComponent().text("Text").label("Label"); -
getActionText
Provides the text of the action button
Returns
the text of the action
-
action
Sets the icon for the action button
Parameters
icon: the icon constant fromcom.codename1.ui.FontImage
Returns
this for chaining calls E.g.
TextComponent tc = new TextComponent().text("Text").label("Label"); -
actionClick
Binds an event for the action button
Parameters
c: action listener callback
Returns
this for chaining calls E.g.
TextComponent tc = new TextComponent().text("Text").label("Label"); -
getAction
Returns the button underlying the action button that is placed on the right of the field on top of it
Returns
a button for manual customization
-
getPropertyValue
Returns the current value of the property name, this method is used by the GUI builder
Parameters
name: the name of the property
Returns
the value of said property
- Overrides:
getPropertyValuein classComponent
-
setPropertyValue
Sets a new value to the given property, returns an error message if failed and null if successful. Notice that some builtin properties such as "$designMode" might be sent to components to indicate application state.
Parameters
-
name: the name of the property -
value: new value for the property
Returns
error message or null
- Overrides:
setPropertyValuein classComponent
-
-