Client API. The Codename One framework your app is built on: this runs on the device, not in a backend.
public class TextSelection
- Object
- 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 types
enum TextSelection.TextSelectionTrigger | Trigger types for text selection. |
interface TextSelection.TextSelectionSupport | An interface that can be returned from any Component’s Component#getTextSelectionSupport() method to provide text selection support on that component. |
class TextSelection.Char | Encapsulates 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(). |
class TextSelection.Span | Encapsulates a span of text on the screen. |
class TextSelection.Spans | Encapsulates a collection of Spans. |
Methods
public static void setDefaultSelectable(boolean selectable) | Makes read-only text selectable wherever the application did not decide: labels, span labels and non-editable text areas report isTextSelectionEnabled() true unless setTextSelectionEnabled was called on them. |
public static boolean isDefaultSelectable() | Whether read-only text is selectable by default. |
public static TextSelection.TextSelectionTrigger getDefaultTextSelectionTrigger() | Gets the default trigger type for text selection. |
public static Component findSelectionRoot(Component cmp) | Finds the selection root for a component. |
public boolean isEnabled() | Returns true if text selection is enabled. |
public void setEnabled(boolean enabled) | Enables or disables text selection. |
public Component getSelectionRoot() | Gets the selection root for the current text selection. |
public TextSelection.Char newChar(int pos, int x, int y, int w, int h) | Creates a new Char box. |
public TextSelection.Char newChar(int pos, Rectangle bounds) | Creates a new Char box |
public TextSelection.Span newSpan(Component component) | Creates a new Span based on content in the given component. |
public TextSelection.Spans newSpans() | Creates a new Spans (a collection of Spans). |
public String getSelectionAsText() | Gets the selected text as a string. |
public void update() | Updates the text selected spans based on the selected bounds. |
public boolean isRtl() | Indicates if selection is operating in RTL (Right to left, bidi) mode. |
public void setRtl(boolean rtl) | Toggles selection RTL (Right to left, bidi) mode. |
public void addTextSelectionListener(ActionListener l) | Adds a listener to be notified when the text selection changes. |
public void removeTextSelectionListener(ActionListener l) | Removes a listener so it no longer is notified when text selection changes. |
public void copy() | Copies the current selection to the system clipboard. |
public void selectAll() | Selects all of the selectable text in the TextSelection (generally on the current form). |
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. |
Inherited methods
Method details
setDefaultSelectable
public static void setDefaultSelectable(boolean selectable)Makes read-only text selectable wherever the application did not decide: labels, span
labels and non-editable text areas report isTextSelectionEnabled() true unless
setTextSelectionEnabled was called on them. Off by default.
Buttons never take the default, and neither does text inside a lead component such as
a MultiButton: the press that would start a selection there is the press that
activates the control.
Text selection still has to be enabled on the form (Form#getTextSelection()) for any
of this to be reachable. The JavaScript port does both when the
javascript.textSelection build hint is set.
Parameters
selectableboolean- true to make read-only text selectable by default
isDefaultSelectable
public static boolean isDefaultSelectable()#setDefaultSelectable(boolean).Returns
getDefaultTextSelectionTrigger
public static TextSelection.TextSelectionTrigger getDefaultTextSelectionTrigger()TextSelectionTrigger#LongPress,
and on desktop environments with a mouse, it will return TextSelectionTrigger#Press.Returns
findSelectionRoot
public static Component findSelectionRoot(Component cmp)Parameters
cmpComponent- The component we start with.
Returns
isEnabled
public boolean isEnabled()setEnabled
public void setEnabled(boolean enabled)getSelectionRoot
public Component 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
public TextSelection.Char newChar(int pos, int x, int y, int w, int h)Parameters
posint- The position of the character that this is referencing within its text component.
xint- The x coordinate of the box, relative to
#getSelectionRoot() yint- The y coordinate of the box, relative to
#getSelectionRoot() wint- The width of the box.
hint- The height of the box.
newChar
public TextSelection.Char newChar(int pos, Rectangle bounds)Parameters
posint- The position of the character that this is referencing within its text component.
boundsRectangle- The bounds of the box, relative to
#getSelectionRoot()
newSpan
public TextSelection.Span newSpan(Component component)Returns
newSpans
public TextSelection.Spans newSpans()getSelectionAsText
public String getSelectionAsText()update
public void update()isRtl
public boolean isRtl()Returns
setRtl
public void setRtl(boolean rtl)Parameters
rtlboolean- true to activate the right to left mode
addTextSelectionListener
public void addTextSelectionListener(ActionListener l)removeTextSelectionListener
public void removeTextSelectionListener(ActionListener l)copy
public void copy()selectAll
public void selectAll()setIgnoreEvents
public void setIgnoreEvents(boolean ignore)