Class TextAreaSkin
- java.lang.Object
-
- org.apache.pivot.wtk.skin.ComponentSkin
-
- org.apache.pivot.wtk.skin.TextAreaSkin
-
- All Implemented Interfaces:
ComponentKeyListener
,ComponentListener
,ComponentMouseButtonListener
,ComponentMouseListener
,ComponentMouseWheelListener
,ComponentStateListener
,ComponentTooltipListener
,ConstrainedVisual
,Skin
,TextArea.Skin
,TextAreaContentListener
,TextAreaListener
,TextAreaSelectionListener
,Visual
- Direct Known Subclasses:
TerraTextAreaSkin
public class TextAreaSkin extends ComponentSkin implements TextArea.Skin, TextAreaListener, TextAreaContentListener, TextAreaSelectionListener
Text area skin.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.pivot.wtk.ComponentKeyListener
ComponentKeyListener.Adapter, ComponentKeyListener.Listeners
-
Nested classes/interfaces inherited from interface org.apache.pivot.wtk.ComponentListener
ComponentListener.Adapter, ComponentListener.Listeners
-
Nested classes/interfaces inherited from interface org.apache.pivot.wtk.ComponentMouseButtonListener
ComponentMouseButtonListener.Adapter, ComponentMouseButtonListener.Listeners
-
Nested classes/interfaces inherited from interface org.apache.pivot.wtk.ComponentMouseListener
ComponentMouseListener.Adapter, ComponentMouseListener.Listeners
-
Nested classes/interfaces inherited from interface org.apache.pivot.wtk.ComponentMouseWheelListener
ComponentMouseWheelListener.Listeners
-
Nested classes/interfaces inherited from interface org.apache.pivot.wtk.ComponentStateListener
ComponentStateListener.Adapter, ComponentStateListener.Listeners
-
Nested classes/interfaces inherited from interface org.apache.pivot.wtk.ComponentTooltipListener
ComponentTooltipListener.Listeners
-
Nested classes/interfaces inherited from interface org.apache.pivot.wtk.TextAreaContentListener
TextAreaContentListener.Adapter, TextAreaContentListener.Listeners
-
Nested classes/interfaces inherited from interface org.apache.pivot.wtk.TextAreaListener
TextAreaListener.Adapter, TextAreaListener.Listeners
-
Nested classes/interfaces inherited from interface org.apache.pivot.wtk.TextAreaSelectionListener
TextAreaSelectionListener.Listeners
-
-
Constructor Summary
Constructors Constructor Description TextAreaSkin()
Default constructor that sets the default colors, fonts, etc.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
editableChanged(TextArea textArea)
Called when a text area's editable state has changed.void
enabledChanged(Component component)
Called when a component's enabled state has changed.void
focusedChanged(Component component, Component obverseComponent)
Called when a component's focused state has changed.boolean
getAcceptsEnter()
boolean
getAcceptsTab()
Gets current value of style that determines the behavior ofTAB
andCtrl-TAB
characters.java.awt.Color
getBackgroundColor()
int
getBaseline(int width, int height)
Should be implemented in every subclass.Bounds
getCharacterBounds(int index)
java.awt.Color
getColor()
java.awt.Font
getFont()
java.awt.Color
getInactiveColor()
java.awt.Color
getInactiveSelectionBackgroundColor()
java.awt.Color
getInactiveSelectionColor()
int
getInsertionPoint(int x, int y)
int
getLineWidth()
Insets
getMargin()
int
getNextInsertionPoint(int x, int from, TextArea.ScrollDirection direction)
int
getPreferredHeight(int width)
Returns the visual's preferred height given the provided width constraint.Dimensions
getPreferredSize()
Returns the visual's unconstrained preferred size.int
getPreferredWidth(int height)
Returns the visual's preferred width given the provided height constraint.int
getRowAt(int index)
int
getRowCount()
int
getRowLength(int index)
int
getRowOffset(int index)
java.awt.geom.Area
getSelection()
java.awt.Color
getSelectionBackgroundColor()
java.awt.Color
getSelectionColor()
int
getTabWidth()
TextArea
getTextArea()
boolean
getWrapText()
void
install(Component component)
Must be implemented in every subclass in order to do component-specific operations at instantiation time, but every subclass must call this superclass method to setup the necessary listeners, etc.boolean
isOpaque()
By default, skins are assumed to be opaque.boolean
keyPressed(Component component, int keyCode, Keyboard.KeyLocation keyLocation)
Keyboard handling (Tab key or Shift Tab).boolean
keyTyped(Component component, char character)
Called when a key has been typed.void
layout()
If the component on which the skin is installed is a container, lays out the container's children.void
maximumLengthChanged(TextArea textArea, int previousMaximumLength)
Called when a text area's maximum length has changed.boolean
mouseClick(Component component, Mouse.Button button, int x, int y, int count)
Called when a mouse button is clicked over a component.boolean
mouseDown(Component component, Mouse.Button button, int x, int y)
Called when a mouse button is pressed over a component.boolean
mouseMove(Component component, int x, int y)
Called when the mouse is moved over a component.boolean
mouseUp(Component component, Mouse.Button button, int x, int y)
Called when a mouse button is released over a component.void
paint(java.awt.Graphics2D graphics)
Paints the visual.void
paragraphInserted(TextArea textArea, int index)
Called when a paragraph has been inserted into a text area's paragraph sequence.void
paragraphsRemoved(TextArea textArea, int index, Sequence<TextArea.Paragraph> removed)
Called when paragraphs have been removed from a text area's paragraph sequence.void
selectionChanged(TextArea textArea, int previousSelectionStart, int previousSelectionLength)
Called when a text area's selection state has changed.void
setAcceptsEnter(boolean acceptsValue)
void
setAcceptsTab(boolean acceptsValue)
Sets current value of style that determines the behavior ofTAB
andCtrl-TAB
characters.void
setBackgroundColor(java.awt.Color colorValue)
void
setBackgroundColor(java.lang.String colorString)
void
setColor(java.awt.Color colorValue)
Sets the foreground color of the text.void
setColor(java.lang.String colorString)
Sets the foreground color of the text.void
setFont(java.awt.Font newFont)
Sets the font for the text.void
setFont(java.lang.String fontString)
Sets the font for the text.void
setFont(Dictionary<java.lang.String,?> fontDictionary)
Sets the font for the text.void
setInactiveColor(java.awt.Color colorValue)
void
setInactiveColor(java.lang.String colorString)
void
setInactiveSelectionBackgroundColor(java.awt.Color colorValue)
void
setInactiveSelectionBackgroundColor(java.lang.String colorString)
void
setInactiveSelectionColor(java.awt.Color colorValue)
void
setInactiveSelectionColor(java.lang.String colorString)
void
setLineWidth(int widthValue)
void
setMargin(int marginValue)
Sets the amount of space between the edge of the TextArea and its text.void
setMargin(java.lang.Number marginValue)
Sets the amount of space between the edge of the TextArea and its text.void
setMargin(java.lang.String marginString)
Sets the amount of space between the edge of the TextArea and its text.void
setMargin(Dictionary<java.lang.String,?> marginDictionary)
Sets the amount of space between the edge of the TextArea and its text.void
setMargin(Sequence<?> marginSequence)
Sets the amount of space between the edge of the TextArea and its text.void
setMargin(Insets newMargin)
Sets the amount of space between the edge of the TextArea and its text.void
setSelectionBackgroundColor(java.awt.Color colorValue)
void
setSelectionBackgroundColor(java.lang.String colorString)
void
setSelectionColor(java.awt.Color colorValue)
void
setSelectionColor(java.lang.String colorString)
void
setTabWidth(int tabValue)
void
setWrapText(boolean wrapValue)
void
textChanged(TextArea textArea)
Called when a text area's text has changed.-
Methods inherited from class org.apache.pivot.wtk.skin.ComponentSkin
colorFromObject, colorFromObject, colorFromObject, colorFromObject, currentTheme, cursorChanged, decodeFont, defaultBackgroundColor, defaultForegroundColor, dragSourceChanged, dropTargetChanged, fontFromObject, getBaseline, getColor, getComponent, getFocusRectangleStroke, getHeight, getSize, getTextInputMethodListener, getThemeFont, getWidth, heightLimitsChanged, invalidateComponent, isFocusable, keyReleased, locationChanged, menuHandlerChanged, mouseOut, mouseOver, mouseWheel, nameChanged, parentChanged, preferredSizeChanged, repaintComponent, repaintComponent, repaintComponent, repaintComponent, repaintComponent, setDefaultStyles, setSize, sizeChanged, themeHasThickFocusRectangle, themeHasTransitionEnabled, themeIsDark, themeIsFlat, tooltipDelayChanged, tooltipTextChanged, tooltipTriggered, visibleChanged, widthLimitsChanged
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.pivot.wtk.ConstrainedVisual
setSize
-
-
-
-
Method Detail
-
getTextArea
public TextArea getTextArea()
- Returns:
- The
TextArea
component we are attached to.
-
install
public void install(Component component)
Description copied from class:ComponentSkin
Must be implemented in every subclass in order to do component-specific operations at instantiation time, but every subclass must call this superclass method to setup the necessary listeners, etc.- Specified by:
install
in interfaceSkin
- Overrides:
install
in classComponentSkin
- Parameters:
component
- The component to which the skin is being attached.
-
getPreferredWidth
public int getPreferredWidth(int height)
Description copied from interface:ConstrainedVisual
Returns the visual's preferred width given the provided height constraint.- Specified by:
getPreferredWidth
in interfaceConstrainedVisual
- Parameters:
height
- The height by which to constrain the preferred width, or-1
for no constraint.- Returns:
- The preferred width given the height constraint.
-
getPreferredHeight
public int getPreferredHeight(int width)
Description copied from interface:ConstrainedVisual
Returns the visual's preferred height given the provided width constraint.- Specified by:
getPreferredHeight
in interfaceConstrainedVisual
- Parameters:
width
- The width by which to constrain the preferred height, or-1
for no constraint.- Returns:
- The preferred height given the width constraint.
-
getPreferredSize
public Dimensions getPreferredSize()
Description copied from interface:ConstrainedVisual
Returns the visual's unconstrained preferred size.- Specified by:
getPreferredSize
in interfaceConstrainedVisual
- Overrides:
getPreferredSize
in classComponentSkin
- Returns:
- The preferred size (width and height) of this component.
Depending on the component this can be a static value or derived (as for a container) from its subcomponents, etc.
The default implementation simply calls
ConstrainedVisual.getPreferredWidth(int)
andConstrainedVisual.getPreferredHeight(int)
.
-
layout
public void layout()
Description copied from interface:Skin
If the component on which the skin is installed is a container, lays out the container's children.
-
getBaseline
public int getBaseline(int width, int height)
Description copied from class:ComponentSkin
Should be implemented in every subclass.The default implementation here simply returns -1 (no baseline).
- Specified by:
getBaseline
in interfaceConstrainedVisual
- Overrides:
getBaseline
in classComponentSkin
- Parameters:
width
- Constrained width to compute the baseline for.height
- Constrained height to compute the baseline for.- Returns:
- The baseline relative to the origin of this visual, or
-1
if this visual does not have a baseline.
-
paint
public void paint(java.awt.Graphics2D graphics)
Description copied from interface:Visual
Paints the visual.
-
isOpaque
public boolean isOpaque()
Description copied from class:ComponentSkin
By default, skins are assumed to be opaque.- Specified by:
isOpaque
in interfaceSkin
- Overrides:
isOpaque
in classComponentSkin
- Returns:
true
if this skin is opaque;false
if any part of it is transparent or translucent.
-
getInsertionPoint
public int getInsertionPoint(int x, int y)
- Specified by:
getInsertionPoint
in interfaceTextArea.Skin
- Parameters:
x
- The X-location to check (likely from the mouse location).y
- The Y-location to check.- Returns:
- The insertion point for a given location.
-
getNextInsertionPoint
public int getNextInsertionPoint(int x, int from, TextArea.ScrollDirection direction)
- Specified by:
getNextInsertionPoint
in interfaceTextArea.Skin
- Parameters:
x
- The current X-location.from
- The current character index to move from.direction
- The direction we want to move.- Returns:
- The next insertion point given an x coordinate and a character index.
-
getRowAt
public int getRowAt(int index)
- Specified by:
getRowAt
in interfaceTextArea.Skin
- Parameters:
index
- The character index to check.- Returns:
- The row index of the character at a given index.
-
getRowOffset
public int getRowOffset(int index)
- Specified by:
getRowOffset
in interfaceTextArea.Skin
- Parameters:
index
- The character index to check.- Returns:
- The index of the first character in the row containing a given character index.
-
getRowLength
public int getRowLength(int index)
- Specified by:
getRowLength
in interfaceTextArea.Skin
- Parameters:
index
- The character index to check.- Returns:
- The number of characters in the row containing a given character index.
-
getRowCount
public int getRowCount()
- Specified by:
getRowCount
in interfaceTextArea.Skin
- Returns:
- The total number of rows in the text area.
-
getCharacterBounds
public Bounds getCharacterBounds(int index)
- Specified by:
getCharacterBounds
in interfaceTextArea.Skin
- Parameters:
index
- The index of the character to check.- Returns:
- The bounds of the character at a given index.
-
getSelection
public java.awt.geom.Area getSelection()
- Returns:
- The current selection area (can be
null
if nothing is selected).
-
getFont
public final java.awt.Font getFont()
- Returns:
- The font of the text.
-
setFont
public final void setFont(java.awt.Font newFont)
Sets the font for the text.- Parameters:
newFont
- The new font for the text.
-
setFont
public final void setFont(java.lang.String fontString)
Sets the font for the text.- Parameters:
fontString
- Afont specification
-
setFont
public final void setFont(Dictionary<java.lang.String,?> fontDictionary)
Sets the font for the text.- Parameters:
fontDictionary
- A dictionarydescribing a font
-
getColor
public final java.awt.Color getColor()
- Returns:
- The foreground color of the text.
-
setColor
public final void setColor(java.awt.Color colorValue)
Sets the foreground color of the text.- Parameters:
colorValue
- The new foreground text color.
-
setColor
public final void setColor(java.lang.String colorString)
Sets the foreground color of the text.- Parameters:
colorString
- Any of the color values recognized by Pivot.
-
getBackgroundColor
public final java.awt.Color getBackgroundColor()
-
setBackgroundColor
public final void setBackgroundColor(java.awt.Color colorValue)
-
setBackgroundColor
public final void setBackgroundColor(java.lang.String colorString)
-
getInactiveColor
public final java.awt.Color getInactiveColor()
-
setInactiveColor
public final void setInactiveColor(java.awt.Color colorValue)
-
setInactiveColor
public final void setInactiveColor(java.lang.String colorString)
-
getSelectionColor
public final java.awt.Color getSelectionColor()
-
setSelectionColor
public final void setSelectionColor(java.awt.Color colorValue)
-
setSelectionColor
public final void setSelectionColor(java.lang.String colorString)
-
getSelectionBackgroundColor
public final java.awt.Color getSelectionBackgroundColor()
-
setSelectionBackgroundColor
public final void setSelectionBackgroundColor(java.awt.Color colorValue)
-
setSelectionBackgroundColor
public final void setSelectionBackgroundColor(java.lang.String colorString)
-
getInactiveSelectionColor
public final java.awt.Color getInactiveSelectionColor()
-
setInactiveSelectionColor
public final void setInactiveSelectionColor(java.awt.Color colorValue)
-
setInactiveSelectionColor
public final void setInactiveSelectionColor(java.lang.String colorString)
-
getInactiveSelectionBackgroundColor
public final java.awt.Color getInactiveSelectionBackgroundColor()
-
setInactiveSelectionBackgroundColor
public final void setInactiveSelectionBackgroundColor(java.awt.Color colorValue)
-
setInactiveSelectionBackgroundColor
public final void setInactiveSelectionBackgroundColor(java.lang.String colorString)
-
getMargin
public final Insets getMargin()
- Returns:
- The amount of space between the edge of the TextArea and its text.
-
setMargin
public final void setMargin(Insets newMargin)
Sets the amount of space between the edge of the TextArea and its text.- Parameters:
newMargin
- The individual margin values for all edges.
-
setMargin
public final void setMargin(Dictionary<java.lang.String,?> marginDictionary)
Sets the amount of space between the edge of the TextArea and its text.- Parameters:
marginDictionary
- A dictionary with keys in the set {top, left, bottom, right}.
-
setMargin
public final void setMargin(Sequence<?> marginSequence)
Sets the amount of space between the edge of the TextArea and its text.- Parameters:
marginSequence
- A sequence with values in the order [top, left, bottom, right].
-
setMargin
public final void setMargin(int marginValue)
Sets the amount of space between the edge of the TextArea and its text.- Parameters:
marginValue
- The single value to use for all the margins.
-
setMargin
public final void setMargin(java.lang.Number marginValue)
Sets the amount of space between the edge of the TextArea and its text.- Parameters:
marginValue
- The single value to use for all the margins.
-
setMargin
public final void setMargin(java.lang.String marginString)
Sets the amount of space between the edge of the TextArea and its text.- Parameters:
marginString
- A string containing an integer or a JSON dictionary or list with keys top, left, bottom, and/or right.
-
getWrapText
public final boolean getWrapText()
-
setWrapText
public final void setWrapText(boolean wrapValue)
-
getAcceptsEnter
public final boolean getAcceptsEnter()
-
setAcceptsEnter
public final void setAcceptsEnter(boolean acceptsValue)
-
getAcceptsTab
public final boolean getAcceptsTab()
Gets current value of style that determines the behavior ofTAB
andCtrl-TAB
characters.- Returns:
true
ifTAB
inserts an appropriate number of spaces, whileCtrl-TAB
shifts focus to next component.false
(default) meansTAB
shifts focus andCtrl-TAB
inserts spaces.
-
setAcceptsTab
public final void setAcceptsTab(boolean acceptsValue)
Sets current value of style that determines the behavior ofTAB
andCtrl-TAB
characters.- Parameters:
acceptsValue
-true
ifTAB
inserts an appropriate number of spaces, whileCtrl-TAB
shifts focus to next component.false
(default) meansTAB
shifts focus andCtrl-TAB
inserts spaces.
-
getTabWidth
public final int getTabWidth()
- Specified by:
getTabWidth
in interfaceTextArea.Skin
- Returns:
- The current setting of the "tabWidth" style (so "setText" uses the same value as Ctrl-Tab from user).
-
setTabWidth
public final void setTabWidth(int tabValue)
-
getLineWidth
public final int getLineWidth()
-
setLineWidth
public final void setLineWidth(int widthValue)
-
mouseMove
public boolean mouseMove(Component component, int x, int y)
Description copied from interface:ComponentMouseListener
Called when the mouse is moved over a component.- Specified by:
mouseMove
in interfaceComponentMouseListener
- Overrides:
mouseMove
in classComponentSkin
- Parameters:
component
- Component that is under the mouse.x
- X position of the mouse.y
- Y position of the mouse.- Returns:
true
to consume the event;false
to allow it to propagate (default return).
-
mouseDown
public boolean mouseDown(Component component, Mouse.Button button, int x, int y)
Description copied from interface:ComponentMouseButtonListener
Called when a mouse button is pressed over a component.- Specified by:
mouseDown
in interfaceComponentMouseButtonListener
- Overrides:
mouseDown
in classComponentSkin
- Parameters:
component
- Component that is under the mouse pointer.button
- Which mouse button was pressed.x
- X position of the mouse.y
- Y position of the mouse.- Returns:
true
to consume the event;false
to allow it to propagate (default).
-
mouseUp
public boolean mouseUp(Component component, Mouse.Button button, int x, int y)
Description copied from interface:ComponentMouseButtonListener
Called when a mouse button is released over a component.- Specified by:
mouseUp
in interfaceComponentMouseButtonListener
- Overrides:
mouseUp
in classComponentSkin
- Parameters:
component
- Component user the mouse pointer.button
- Which mouse button that was released.x
- X position of the mouse.y
- Y position of the mouse.- Returns:
true
to consume the event;false
to allow it to propagate (default).
-
mouseClick
public boolean mouseClick(Component component, Mouse.Button button, int x, int y, int count)
Description copied from interface:ComponentMouseButtonListener
Called when a mouse button is clicked over a component.- Specified by:
mouseClick
in interfaceComponentMouseButtonListener
- Overrides:
mouseClick
in classComponentSkin
- Parameters:
component
- Component user the mouse pointer.button
- Which mouse button was clicked.x
- X position of the mouse.y
- Y position of the mouse.count
- Number of clicks (1 = single click, 2 = double click, etc.).- Returns:
true
to consume the event;false
to allow it to propagate (default).
-
keyTyped
public boolean keyTyped(Component component, char character)
Description copied from interface:ComponentKeyListener
Called when a key has been typed.- Specified by:
keyTyped
in interfaceComponentKeyListener
- Overrides:
keyTyped
in classComponentSkin
- Parameters:
component
- Component that has the focus, that is receiving this key.character
- The decoded character that was typed.- Returns:
true
to consume the event;false
to allow it to propagate.
-
keyPressed
public boolean keyPressed(Component component, int keyCode, Keyboard.KeyLocation keyLocation)
Description copied from class:ComponentSkin
Keyboard handling (Tab key or Shift Tab).- Specified by:
keyPressed
in interfaceComponentKeyListener
- Overrides:
keyPressed
in classComponentSkin
- Parameters:
component
- Component that has the focus.keyCode
- The key code for the key that was pressed.keyLocation
- Location value for the key (left or right for shift keys, etc.).- Returns:
true
to consume the event;false
to allow it to propagate.
-
enabledChanged
public void enabledChanged(Component component)
Description copied from interface:ComponentStateListener
Called when a component's enabled state has changed.Called both when the component is enabled and when it is disabled. The component's
enabled
flag has already been set when this method is called so the new state can be determined by calling theComponent.isEnabled()
method.- Specified by:
enabledChanged
in interfaceComponentStateListener
- Overrides:
enabledChanged
in classComponentSkin
- Parameters:
component
- The component whose enabled state is changing.
-
focusedChanged
public void focusedChanged(Component component, Component obverseComponent)
Description copied from interface:ComponentStateListener
Called when a component's focused state has changed.This will be called both when a component gains focus and when it loses focus. The currently focused component has already been set when this method is called, so that the new state of the component can be determined by calling the
Component.isFocused()
method.- Specified by:
focusedChanged
in interfaceComponentStateListener
- Overrides:
focusedChanged
in classComponentSkin
- Parameters:
component
- The component that is either gaining focus or the one that previously had focus and is now losing it.obverseComponent
- If the component is gaining focus, this is the component that is losing focus. If the component is losing focus this is the component that is gaining the focus instead.
-
maximumLengthChanged
public void maximumLengthChanged(TextArea textArea, int previousMaximumLength)
Description copied from interface:TextAreaListener
Called when a text area's maximum length has changed.- Specified by:
maximumLengthChanged
in interfaceTextAreaListener
- Parameters:
textArea
- The source of this event.previousMaximumLength
- What the maximum length used to be.
-
editableChanged
public void editableChanged(TextArea textArea)
Description copied from interface:TextAreaListener
Called when a text area's editable state has changed.- Specified by:
editableChanged
in interfaceTextAreaListener
- Parameters:
textArea
- The source of this event.
-
paragraphInserted
public void paragraphInserted(TextArea textArea, int index)
Description copied from interface:TextAreaContentListener
Called when a paragraph has been inserted into a text area's paragraph sequence.- Specified by:
paragraphInserted
in interfaceTextAreaContentListener
- Parameters:
textArea
- The source of the event.index
- The index at which the paragraph was inserted.
-
paragraphsRemoved
public void paragraphsRemoved(TextArea textArea, int index, Sequence<TextArea.Paragraph> removed)
Description copied from interface:TextAreaContentListener
Called when paragraphs have been removed from a text area's paragraph sequence.- Specified by:
paragraphsRemoved
in interfaceTextAreaContentListener
- Parameters:
textArea
- The source of the event.index
- The starting index from which the paragraphs were removed.removed
- The paragraphs that were removed.
-
textChanged
public void textChanged(TextArea textArea)
Description copied from interface:TextAreaContentListener
Called when a text area's text has changed.- Specified by:
textChanged
in interfaceTextAreaContentListener
- Parameters:
textArea
- The source of the event.
-
selectionChanged
public void selectionChanged(TextArea textArea, int previousSelectionStart, int previousSelectionLength)
Description copied from interface:TextAreaSelectionListener
Called when a text area's selection state has changed.- Specified by:
selectionChanged
in interfaceTextAreaSelectionListener
- Parameters:
textArea
- The source of this event.previousSelectionStart
- Where the selection used to start.previousSelectionLength
- The previous selection length.
-
-