Class AutoCompleteTextField
- All Implemented Interfaces:
Animation, Editable, ActionSource, StyleListener, TextHolder
An editable com.codename1.ui.TextField with completion suggestions
that show up in a drop down menu while the user types in text.
This class uses the "TextField" UIID by default as well as "AutoCompletePopup" &
"AutoCompleteList" for the popup list details.
The sample below shows the more trivial use case for this widget:
Form hi = new Form("Auto Complete", new BoxLayout(BoxLayout.Y_AXIS));
AutoCompleteTextField ac = new AutoCompleteTextField("Short", "Shock", "Sholder", "Shrek");
ac.setMinimumElementsShownInPopup(5);
hi.add(ac);
The following sample shows more dynamic usage of the class where the auto-complete model is mutated based on webservice results.
public void showForm() {
final DefaultListModel options = new DefaultListModel<>();
AutoCompleteTextField ac = new AutoCompleteTextField(options) {
@Override
protected boolean filter(String text) {
if(text.length() == 0) {
return false;
}
String[] l = searchLocations(text);
if(l == null || l.length == 0) {
return false;
}
options.removeAll();
for(String s : l) {
options.addItem(s);
}
return true;
}
};
ac.setMinimumElementsShownInPopup(5);
hi.add(ac);
hi.add(new SpanLabel("This demo requires a valid google API key to be set below "
+ "you can get this key for the webservice (not the native key) by following the instructions here: "
+ "https://developers.google.com/places/web-service/get-api-key"));
hi.add(apiKey);
hi.getToolbar().addCommandToRightBar("Get Key", null, e -> Display.getInstance().execute("https://developers.google.com/places/web-service/get-api-key"));
hi.show();
}
TextField apiKey = new TextField();
String[] searchLocations(String text) {
try {
if(text.length() > 0) {
ConnectionRequest r = new ConnectionRequest();
r.setPost(false);
r.setUrl("https://maps.googleapis.com/maps/api/place/autocomplete/json");
r.addArgument("key", apiKey.getText());
r.addArgument("input", text);
NetworkManager.getInstance().addToQueueAndWait(r);
Map result = new JSONParser().parseJSON(new InputStreamReader(new ByteArrayInputStream(r.getResponseData()), "UTF-8"));
String[] res = Result.fromContent(result).getAsStringArray("//description");
return res;
}
} catch(Exception err) {
Log.e(err);
}
return null;
}
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intFields inherited from class TextArea
ANY, DECIMAL, EMAILADDR, INITIAL_CAPS_SENTENCE, INITIAL_CAPS_WORD, NON_PREDICTIVE, NUMERIC, PASSWORD, PHONENUMBER, SENSITIVE, UNEDITABLE, UPPERCASE, URL, USERNAMEFields 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
ConstructorsConstructorDescriptionThe default constructor is useful for cases of filter subclasses overriding the getSuggestionModel value as well as for the GUI builderAutoCompleteTextField(ListModel<String> listModel) Constructor with completion suggestions, filtering is automatic in this caseAutoCompleteTextField(String... completion) Constructor with completion suggestions -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds an action listener that fires an event when an entry in the auto-complete list is selected.protected voidInvoked to indicate that the component initialization is being reversed since the component was detached from the container hierarchy.protected booleanSubclasses can override this method to perform more elaborate filter operationsString[]Returns the completion valuesintThe number of elements shown for the auto complete popupintIndicates the minimum length of text in the field in order for a popup to show the default is 0 where a popup is shown immediately for all text length if the number is 2 a popup will only appear when there are two characters or more.String[]A component may expose mutable property names for a UI designer to manipulate, this API is designed for usage internally by the GUI builder codeString[]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,ListCellRendererClass[]Matches the property names method (see that method for further details).getPropertyValue(String name) Returns the current value of the property name, this method is used by the GUI builderReturns the list model to show within the completion listprotected voidAllows subclasses to bind functionality that relies on fully initialized and "ready for action" component statebooleanWhen enabled this makes the filter check that the string starts with rather than within the indexvoidkeyPressed(int k) If this Component is focused, the key pressed event will call this methodvoidkeyReleased(int k) If this Component is focused, the key released event will call this methodvoidRemoves an action listener that fires an event when an entry in the auto-complete list is selected.voidsetCompletion(String... completion) Sets the completion valuesvoidsetCompletionRenderer(ListCellRenderer completionRenderer) Sets a custom renderer to the completion suggestions list.voidsetMinimumElementsShownInPopup(int minimumElementsShownInPopup) The number of elements shown for the auto complete popupvoidsetMinimumLength(int minimumLength) Indicates the minimum length of text in the field in order for a popup to show the default is 0 where a popup is shown immediately for all text length if the number is 2 a popup will only appear when there are two characters or more.voidsetPopupPosition(int popupPosition) Set the autocomplete popup position in respect of the text field; POPUP_POSITION_AUTO is the default and it means that the popup is placed according to the available space.setPropertyValue(String name, Object value) Sets a new value to the given property, returns an error message if failed and null if successful.voidsetStartsWithMode(boolean startsWithMode) When enabled this makes the filter check that the string starts with rather than within the indexvoidSets the text within this text areaprotected booleanCallback that allows subclasses to block the popup from showingvoidCauses the popup UI to showprotected voidIn a case of an asynchronous filter this method can be invoked to refresh the completion listMethods inherited from class TextField
addInputMode, animate, calcPreferredSize, calculateTextSelectionSpan, clear, commitChange, create, create, create, create, createSymbolTable, deleteChar, fireClicked, getCharPerKeyCode, getCommitTimeout, getCursorBlinkTimeOff, getCursorBlinkTimeOn, getCursorPosition, getCursorX, getCursorY, getDefaultChangeInputModeKey, getDefaultInputModeOrder, getDefaultSymbolDialogKey, getInputMode, getInputModeOrder, getLongClickDuration, getLongClickInputMode, getSymbolTable, insertChars, installCommands, isChangeInputMode, isClearKey, isCursorPositionCycle, isEditingEndTrigger, isEditingTrigger, isEnableInputScroll, isImmediateInputMode, isLeftAndRightEditingTrigger, isOverwriteMode, isPendingCommit, isQwertyAutoDetect, isQwertyDevice, isQwertyInput, isReplaceMenu, isReplaceMenuDefault, isSelectableInteraction, isSymbolDialogKey, isUseNativeTextInput, isUseSoftkeys, keyRepeated, longKeyPress, paint, pointerReleased, removeCommands, setAlignment, setClearText, setCommitTimeout, setCursorBlinkTimeOff, setCursorBlinkTimeOn, setCursorPosition, setDefaultChangeInputModeKey, setDefaultInputModeOrder, setDefaultSymbolDialogKey, setEditable, setEnableInputScroll, setInputMode, setInputModeOrder, setLeftAndRightEditingTrigger, setOverwriteMode, setQwertyAutoDetect, setQwertyDevice, setQwertyInput, setReplaceMenu, setReplaceMenuDefault, setSymbolTable, setT9Text, setUseNativeTextInput, setUseSoftkeys, showSymbolDialog, validCharMethods inherited from class TextArea
addActionListener, addCloseListener, addDataChangedListener, addDataChangeListener, autoDetectWidestChar, bindProperty, calcScrollSize, fireDataChanged, fireDoneEvent, fireDoneEvent, getAbsoluteAlignment, getActualRows, getAlignment, getAsDouble, getAsInt, getAsLong, getBindablePropertyNames, getBindablePropertyTypes, getBoundPropertyValue, getColumns, getConstraint, getDefaultValign, getDoneListener, getGrowLimit, getHint, getHintIcon, getHintLabel, getLines, getLinesToScroll, getMaxSize, getPreferredTabIndex, getRows, getRowsGap, getStyle, getText, getTextAt, getTextSelectionSupport, getUnsupportedChars, getVerticalAlignment, getWidestChar, initLaf, isActAsLabel, isAutoDegradeMaxSize, isEditable, isEditing, isEndsWith3Points, isEnterKey, isGrowByContent, isScrollableY, isSingleLineTextArea, isTextSelectionEnabled, isUseStringWidth, pointerHover, pointerHoverReleased, preprocess, registerAsInputDevice, removeActionListener, removeCloseListener, removeDataChangedListener, removeDataChangeListener, setActAsLabel, setAutoDegradeMaxSize, setBoundPropertyValue, setColumns, setConstraint, setDefaultMaxSize, setDefaultValign, setDoneListener, setEndsWith3Points, setGrowByContent, setGrowLimit, setHint, setHint, setHintIcon, setLinesToScroll, setMaxSize, setRows, setRowsGap, setSingleLineTextArea, setTextSelectionEnabled, setUnsupportedChars, setUseStringWidth, setVerticalAlignment, setWidestChar, setWidth, shouldRenderComponentSelection, startEditing, startEditingAsync, stopEditing, stopEditing, unbindPropertyMethods inherited from class Component
addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, announceForAccessibility, blocksSideSwipe, cancelRepaints, clearClientProperties, contains, containsOrOwns, createStyleAnimation, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, dragInitiated, drawDraggedImage, drop, focusGained, focusLost, getAbsoluteX, getAbsoluteY, getAccessibilityText, getAllStyles, getAnimationManager, getBaseline, getBaselineResizeBehavior, getBorder, getBottomGap, getBounds, getBounds, getClientProperty, getCloudBoundProperty, getCloudDestinationProperty, getComponentForm, getComponentState, getCursor, getDefaultDragTransparency, getDirtyRegion, getDisabledStyle, getDraggedx, getDraggedy, getDragImage, getDragRegionStatus, getDragSpeed, getDragTransparency, getEditingDelegate, getGridPosX, getGridPosY, 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, getPreferredW, getPressedStyle, getSameHeight, getSameWidth, getScrollable, getScrollAnimationSpeed, getScrollDimension, getScrollOpacity, getScrollOpacityChangeSpeed, getScrollX, getScrollY, getSelectCommandText, getSelectedRect, getSelectedStyle, getSideGap, getTabIndex, getTensileLength, getTooltip, getUIID, getUIManager, getUnselectedStyle, getVisibleBounds, getVisibleBounds, getWidth, getX, getY, growShrink, handlesInput, hasFixedPreferredSize, hasFocus, hideNativeOverlay, initCustomStyle, initDisabledStyle, initPressedStyle, initSelectedStyle, initUnselectedStyle, installDefaultPainter, isAlwaysTensile, isBlockLead, isCellRenderer, isChildOf, isDragActivated, isDragAndDropOperation, isDraggable, isDragRegion, isDropTarget, isEnabled, isFlatten, isFocusable, isGrabsPointerEvents, isHidden, isHidden, isHideInLandscape, isHideInPortrait, isIgnorePointerEvents, isInClippingRegion, isInitialized, isOpaque, isOwnedBy, isPinchBlocksDragAndDrop, isRippleEffect, isRTL, isScrollable, isScrollableX, isScrollVisible, isSetCursorSupported, isSmoothScrolling, isSnapToGrid, isStickyDrag, isTactileTouch, isTactileTouch, isTensileDragEnabled, isTraversable, isVisible, laidOut, longPointerPress, onScrollX, onScrollY, onSetFocusable, paintBackground, paintBackgrounds, paintBorder, paintBorderBackground, paintComponent, paintComponent, paintIntersectingComponentsAbove, paintLock, paintLockRelease, paintRippleOverlay, paintScrollbars, paintScrollbarX, paintScrollbarY, paintShadows, paramString, parsePreferredSize, pinch, pinch, pinchReleased, pointerDragged, pointerDragged, pointerHoverPressed, pointerPressed, pointerPressed, pointerReleased, putClientProperty, refreshTheme, refreshTheme, refreshTheme, remove, removeDragFinishedListener, removeDragOverListener, removeDropListener, removeFocusListener, removeLongPressListener, removePointerDraggedListener, removePointerPressedListener, removePointerReleasedListener, removeScrollListener, removeStateChangeListener, repaint, repaint, requestFocus, resetFocusable, respondsToPointerEvents, scrollRectToVisible, scrollRectToVisible, setAccessibilityText, setAlwaysTensile, setBlockLead, setCellRenderer, setCloudBoundProperty, setCloudDestinationProperty, setComponentState, setCursor, setDefaultDragTransparency, setDirtyRegion, setDisabledStyle, setDraggable, setDragTransparency, setDropTarget, setEditingDelegate, setEnabled, 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, setShouldCalcPreferredSize, setSize, setSmoothScrolling, setSnapToGrid, setTabIndex, setTactileTouch, setTensileDragEnabled, setTensileLength, setTooltip, setTraversable, setUIID, setUIID, setUIIDFinal, setUnselectedStyle, setVisible, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, showNativeOverlay, stripMarginAndPadding, styleChanged, toImage, toString, updateNativeOverlay, visibleBoundsContains
-
Field Details
-
POPUP_POSITION_AUTO
public static final int POPUP_POSITION_AUTO- See Also:
-
POPUP_POSITION_OVER
public static final int POPUP_POSITION_OVER- See Also:
-
POPUP_POSITION_UNDER
public static final int POPUP_POSITION_UNDER- See Also:
-
-
Constructor Details
-
AutoCompleteTextField
Constructor with completion suggestions
Parameters
completion: a String array of suggestion for completion
-
AutoCompleteTextField
-
AutoCompleteTextField
public AutoCompleteTextField()The default constructor is useful for cases of filter subclasses overriding the getSuggestionModel value as well as for the GUI builder
-
-
Method Details
-
initComponent
protected void initComponent()Allows subclasses to bind functionality that relies on fully initialized and "ready for action" component state- Overrides:
initComponentin classTextArea
-
deinitialize
protected void deinitialize()Invoked to indicate that the component initialization is being reversed since the component was detached from the container hierarchy. This allows the component to deregister animators and cleanup after itself. This method is the opposite of the initComponent() method.- Overrides:
deinitializein classTextField
-
showPopup
public void showPopup()Causes the popup UI to show -
setText
Sets the text within this text area
Parameters
t: new value for the text area
- Specified by:
setTextin interfaceTextHolder- Overrides:
setTextin classTextField
-
updateFilterList
protected void updateFilterList()In a case of an asynchronous filter this method can be invoked to refresh the completion list -
filter
Subclasses can override this method to perform more elaborate filter operations
Parameters
text: the text to filter
Returns
true if the filter has changed the list, false if it hasn't or is working asynchronously
-
getSuggestionModel
-
setCompletionRenderer
Sets a custom renderer to the completion suggestions list.
Parameters
completionRenderer: a ListCellRenderer for the suggestions List
-
keyPressed
public void keyPressed(int k) If this Component is focused, the key pressed event will call this method
Parameters
keyCode: the key code value to indicate a physical key.
- Overrides:
keyPressedin classTextField
-
keyReleased
public void keyReleased(int k) If this Component is focused, the key released event will call this method
Parameters
keyCode: the key code value to indicate a physical key.
- Overrides:
keyReleasedin classTextField
-
addListListener
Adds an action listener that fires an event when an entry in the auto-complete list is selected. Notice that this method will only take effect when the popup is reshown, if it is invoked when a popup is already showing it will have no effect.
Parameters
a: the listener
-
removeListListener
Removes an action listener that fires an event when an entry in the auto-complete list is selected. Notice that this method will only take effect when the popup is reshown, if it is invoked when a popup is already showing it will have no effect.
Parameters
a: the listener
-
getMinimumLength
public int getMinimumLength()Indicates the minimum length of text in the field in order for a popup to show the default is 0 where a popup is shown immediately for all text length if the number is 2 a popup will only appear when there are two characters or more.
Returns
the minimumLength
-
setMinimumLength
public void setMinimumLength(int minimumLength) Indicates the minimum length of text in the field in order for a popup to show the default is 0 where a popup is shown immediately for all text length if the number is 2 a popup will only appear when there are two characters or more.
Parameters
minimumLength: the minimumLength to set
-
getMinimumElementsShownInPopup
public int getMinimumElementsShownInPopup()The number of elements shown for the auto complete popup
Returns
the minimumElementsShownInPopup
-
setMinimumElementsShownInPopup
public void setMinimumElementsShownInPopup(int minimumElementsShownInPopup) The number of elements shown for the auto complete popup
Parameters
minimumElementsShownInPopup: the minimumElementsShownInPopup to set
-
setPopupPosition
public void setPopupPosition(int popupPosition) Set the autocomplete popup position in respect of the text field; POPUP_POSITION_AUTO is the default and it means that the popup is placed according to the available space.
Parameters
popupPosition: @param popupPosition on of POPUP_POSITION_AUTO, POPUP_POSITION_OVER, POPUP_POSITION_UNDER
-
shouldShowPopup
protected boolean shouldShowPopup()Callback that allows subclasses to block the popup from showing
Returns
true to allow the popup if applicable, false to block it
-
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
Returns
the property names allowing mutation
- Overrides:
getPropertyNamesin classComponent
-
getPropertyTypes
Matches the property names method (see that method for further details).
Returns
the types of the properties
- Overrides:
getPropertyTypesin classComponent
-
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
Returns
Array of type names
- Overrides:
getPropertyTypeNamesin classComponent
-
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
-
getCompletion
Returns the completion values
Returns
array of completion entries
-
setCompletion
Sets the completion values
Parameters
completion: the completion values
-
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
-
-
isStartsWithMode
public boolean isStartsWithMode()When enabled this makes the filter check that the string starts with rather than within the index
Returns
the startsWithMode
-
setStartsWithMode
public void setStartsWithMode(boolean startsWithMode) When enabled this makes the filter check that the string starts with rather than within the index
Parameters
startsWithMode: the startsWithMode to set
-