Class TextSelection
Text selection support for Codename One applications. The class provides a light-weight text selection implementation, allowing users to select and copy text from a form.
Enabling Text Selection
Text selection needs to be enabled on a per-form basis.
`myForm.getTextSelection().setEnabled(true);`
If text selection is enabled on a form, then non-editable text fields and text areas will allow text
selection by default. Labels and SpanLabels have text selection disabled by default, but can be enabled using
Label#setTextSelectionEnabled(boolean), and SpanLabel#setTextSelectionEnabled(boolean) respectively.
Similarly, text selection can be disabled on TextFields and TextAreas using TextArea#setTextSelectionEnabled(boolean).
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassEncapsulates a box around a single character/glyph in the UI, storing the component that it belongs to, the position of its corresponding character in the component's text, and the bounds of the box, relative to#getSelectionRoot().classEncapsulates a span of text on the screen.classEncapsulates a collection of Spans.static interfaceAn interface that can be returned from any Component'sComponent#getTextSelectionSupport()method to provide text selection support on that component.static enumTrigger types for text selection. -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds a listener to be notified when the text selection changes.voidcopy()Copies the current selection to the system clipboard.static ComponentFinds the selection root for a component.Gets the default trigger type for text selection.Gets the selected text as a string.Gets the selection root for the current text selection.booleanReturns true if text selection is enabled.booleanisRtl()Indicates if selection is operating in RTL (Right to left, bidi) mode.newChar(int pos, int x, int y, int w, int h) Creates a new Char box.Creates a new Char boxCreates a new Span based on content in the given component.newSpans()Creates a new Spans (a collection of Spans).voidRemoves a listener so it no longer is notified when text selection changes.voidSelects all of the selectable text in the TextSelection (generally on the current form).voidsetEnabled(boolean enabled) Enables or disables text selection.voidsetIgnoreEvents(boolean ignore) This flag can be set to cause text selection to ignore pointer events which might cause the selection to get lost or changed.voidsetRtl(boolean rtl) Toggles selection RTL (Right to left, bidi) mode.voidupdate()Updates the text selected spans based on the selected bounds.
-
Method Details
-
getDefaultTextSelectionTrigger
Gets the default trigger type for text selection. This will vary by platform. On mobile/touch devices, it will return
TextSelectionTrigger#LongPress, and on desktop environments with a mouse, it will returnTextSelectionTrigger#Press.Returns
The default trigger type for text selection.
-
findSelectionRoot
Finds the selection root for a component. This is generally just the first scrollable component discovered with crawling up the component hierarchy from the given component.
Parameters
cmp: The component we start with.
Returns
The selection root for a given component.
-
isEnabled
public boolean isEnabled()Returns true if text selection is enabled. Default is false. -
setEnabled
public void setEnabled(boolean enabled) Enables or disables text selection.
Parameters
enabled
-
getSelectionRoot
Gets the selection root for the current text selection. The selection root will be the nearest scrollable parent of the component that triggered the text selection.
Note: All Span coordinates are relative to the selection root
-
newChar
Creates a new Char box.
Parameters
-
pos: The position of the character that this is referencing within its text component. -
x: The x coordinate of the box, relative to#getSelectionRoot() -
y: The y coordinate of the box, relative to#getSelectionRoot() -
w: The width of the box. -
h: The height of the box.
-
-
newChar
Creates a new Char box
Parameters
-
pos: The position of the character that this is referencing within its text component. -
bounds: The bounds of the box, relative to#getSelectionRoot()
-
-
newSpan
Creates a new Span based on content in the given component.
Parameters
component
Returns
A new span
-
newSpans
Creates a new Spans (a collection of Spans). -
getSelectionAsText
Gets the selected text as a string. -
update
public void update()Updates the text selected spans based on the selected bounds. -
isRtl
public boolean isRtl()Indicates if selection is operating in RTL (Right to left, bidi) mode.
Returns
true if the selection is in RTL mode
-
setRtl
public void setRtl(boolean rtl) Toggles selection RTL (Right to left, bidi) mode.
Parameters
rtl: true to activate the right to left mode
-
addTextSelectionListener
Adds a listener to be notified when the text selection changes.
Parameters
l
-
removeTextSelectionListener
Removes a listener so it no longer is notified when text selection changes.
Parameters
l
-
copy
public void copy()Copies the current selection to the system clipboard. -
selectAll
public void selectAll()Selects all of the selectable text in the TextSelection (generally on the current form). -
setIgnoreEvents
public void setIgnoreEvents(boolean ignore) This flag can be set to cause text selection to ignore pointer events which might cause the selection to get lost or changed. This is used internally when a context menu is displayed so that clicking on the context menu doesn't cause the current text selection to be lost.
Parameters
ignore
-