Class RichTextArea

All Implemented Interfaces:
Styleable, EventTarget, Skinnable
Direct Known Subclasses:
CodeArea

public class RichTextArea extends Control
The RichTextArea control is designed for visualizing and editing rich text that can be styled in a variety of ways.

The RichTextArea control has a number of features, including:

Creating a RichTextArea

The following example creates an editable control with the default RichTextModel:

   RichTextArea textArea = new RichTextArea();
 
The methods appendText(), insertText(), replaceText(), applyStyle(), setStyle(), or clear() can be used to modify text programmatically:
   // create styles
   StyleAttributeMap heading = StyleAttributeMap.builder().setBold(true).setUnderline(true).setFontSize(18).build();
   StyleAttributeMap mono = StyleAttributeMap.builder().setFontFamily("Monospaced").build();

   RichTextArea textArea = new RichTextArea();
   // build the content
   textArea.appendText("RichTextArea\n", heading);
   textArea.appendText("Example:\nText is ", StyleAttributeMap.EMPTY);
   textArea.appendText("monospaced.\n", mono);
 
Which results in the following visual representation:

Image of the RichTextArea control

A view-only information control requires a different model. The following example illustrates how to create a model that uses a stylesheet for styling:


     SimpleViewOnlyStyledModel m = new SimpleViewOnlyStyledModel();
     // add text segment using CSS style name (requires a stylesheet)
     m.addWithStyleNames("RichTextArea ", "HEADER");
     // add text segment using inline styles
     m.addWithInlineStyle("Demo", "-fx-font-size:200%; -fx-font-weight:bold;");
     // add newline
     m.nl();

     RichTextArea textArea = new RichTextArea(m);
 

Text Models

A number of standard models can be used with RichTextArea, each addressing a specific use case:

Standard Models
Model ClassDescription
StyledTextModel
Base class (abstract)
 ├─ RichTextModel
Default model for RichTextArea
 ├─ BasicTextModel
Unstyled text model
 │   └─ CodeTextModel
Default model for CodeArea
 └─ StyledTextModelViewOnlyBase
Base class for a view-only model (abstract)
     └─ SimpleViewOnlyStyledModel
In-memory view-only styled model

Selection

The RichTextArea control maintains a single contiguous selection segment as a part of the SelectionModel. Additionally, anchorPositionProperty() and caretPositionProperty() read-only properties are derived from the selectionProperty() for convenience.

Customizing

The RichTextArea control offers some degree of customization that does not require subclassing:
Since:
24
See Also:
  • Property Details

  • Field Details

    • styleHandlerRegistry

      protected static final StyleHandlerRegistry styleHandlerRegistry
      The style handler registry instance, made available for use by subclasses to add support for new style attributes.
  • Constructor Details

    • RichTextArea

      public RichTextArea()
      Creates the instance with the in-memory model RichTextModel.
    • RichTextArea

      public RichTextArea(StyledTextModel model)
      Creates the instance using the specified model.

      Multiple RichTextArea instances can work off a single model.

      Parameters:
      model - the model
  • Method Details

    • anchorPositionProperty

      public final ReadOnlyProperty<TextPos> anchorPositionProperty()
      Tracks the selection anchor position within the document. This read-only property is derived from selection property. The value can be null.

      Setting a SelectionSegment causes an update to both the anchor and the caret positions. A null selection segment results in both positions to become null, a non-null selection segment sets both to non-null values.

      Note: selectionProperty(), anchorPositionProperty(), and caretPositionProperty() are logically connected. When a change occurs, the anchor position is updated first, followed by the caret position, followed by the selection segment.

      Default value:
      null
      Returns:
      the anchor position property
      See Also:
    • getAnchorPosition

      public final TextPos getAnchorPosition()
      Gets the value of the anchorPosition property.
      Property description:
      Tracks the selection anchor position within the document. This read-only property is derived from selection property. The value can be null.

      Setting a SelectionSegment causes an update to both the anchor and the caret positions. A null selection segment results in both positions to become null, a non-null selection segment sets both to non-null values.

      Note: selectionProperty(), anchorPositionProperty(), and caretPositionProperty() are logically connected. When a change occurs, the anchor position is updated first, followed by the caret position, followed by the selection segment.

      Default value:
      null
      Returns:
      the value of the anchorPosition property
      See Also:
    • caretBlinkPeriodProperty

      public final ObjectProperty<Duration> caretBlinkPeriodProperty()
      Determines the caret blink period. This property cannot be set to null.

      This property can be styled with CSS using -fx-caret-blink-period name.

      Default value:
      1000 ms
      Returns:
      the caret blink period property
      See Also:
    • setCaretBlinkPeriod

      public final void setCaretBlinkPeriod(Duration period)
      Sets the value of the caretBlinkPeriod property.
      Property description:
      Determines the caret blink period. This property cannot be set to null.

      This property can be styled with CSS using -fx-caret-blink-period name.

      Default value:
      1000 ms
      Parameters:
      period - the value for the caretBlinkPeriod property
      See Also:
    • getCaretBlinkPeriod

      public final Duration getCaretBlinkPeriod()
      Gets the value of the caretBlinkPeriod property.
      Property description:
      Determines the caret blink period. This property cannot be set to null.

      This property can be styled with CSS using -fx-caret-blink-period name.

      Default value:
      1000 ms
      Returns:
      the value of the caretBlinkPeriod property
      See Also:
    • caretPositionProperty

      public final ReadOnlyProperty<TextPos> caretPositionProperty()
      Tracks the caret position within the document. This read-only property is derived from selection property. The value can be null.

      Setting a SelectionSegment causes an update to both the anchor and the caret positions. A null selection segment results in both positions to become null, a non-null selection segment sets both to non-null values.

      Note: selectionProperty(), anchorPositionProperty(), and caretPositionProperty() are logically connected. When a change occurs, the anchor position is updated first, followed by the caret position, followed by the selection segment.

      Default value:
      null
      Returns:
      the caret position property
      See Also:
    • getCaretPosition

      public final TextPos getCaretPosition()
      Gets the value of the caretPosition property.
      Property description:
      Tracks the caret position within the document. This read-only property is derived from selection property. The value can be null.

      Setting a SelectionSegment causes an update to both the anchor and the caret positions. A null selection segment results in both positions to become null, a non-null selection segment sets both to non-null values.

      Note: selectionProperty(), anchorPositionProperty(), and caretPositionProperty() are logically connected. When a change occurs, the anchor position is updated first, followed by the caret position, followed by the selection segment.

      Default value:
      null
      Returns:
      the value of the caretPosition property
      See Also:
    • contentPaddingProperty

      public final ObjectProperty<Insets> contentPaddingProperty()
      Specifies the padding for the RichTextArea content. The content padding value can be null, which is treated as no padding.

      This property can be styled with CSS using -fx-content-padding name.

      Default value:
      null
      Returns:
      the content padding property
      See Also:
    • setContentPadding

      public final void setContentPadding(Insets value)
      Sets the value of the contentPadding property.
      Property description:
      Specifies the padding for the RichTextArea content. The content padding value can be null, which is treated as no padding.

      This property can be styled with CSS using -fx-content-padding name.

      Default value:
      null
      Parameters:
      value - the value for the contentPadding property
      See Also:
    • getContentPadding

      public final Insets getContentPadding()
      Gets the value of the contentPadding property.
      Property description:
      Specifies the padding for the RichTextArea content. The content padding value can be null, which is treated as no padding.

      This property can be styled with CSS using -fx-content-padding name.

      Default value:
      null
      Returns:
      the value of the contentPadding property
      See Also:
    • displayCaretProperty

      public final BooleanProperty displayCaretProperty()
      This property controls whether caret will be displayed or not.

      This property can be styled with CSS using -fx-display-caret name.

      Default value:
      true
      Returns:
      the display caret property
      See Also:
    • setDisplayCaret

      public final void setDisplayCaret(boolean on)
      Sets the value of the displayCaret property.
      Property description:
      This property controls whether caret will be displayed or not.

      This property can be styled with CSS using -fx-display-caret name.

      Default value:
      true
      Parameters:
      on - the value for the displayCaret property
      See Also:
    • isDisplayCaret

      public final boolean isDisplayCaret()
      Gets the value of the displayCaret property.
      Property description:
      This property controls whether caret will be displayed or not.

      This property can be styled with CSS using -fx-display-caret name.

      Default value:
      true
      Returns:
      the value of the displayCaret property
      See Also:
    • editableProperty

      public final BooleanProperty editableProperty()
      Indicates whether this RichTextArea can be edited by the user, provided the model is also writable. Changing the value of this property with a view-only model or a null model has no effect.
      Default value:
      true
      Returns:
      the editable property
      See Also:
    • isEditable

      public final boolean isEditable()
      Gets the value of the editable property.
      Property description:
      Indicates whether this RichTextArea can be edited by the user, provided the model is also writable. Changing the value of this property with a view-only model or a null model has no effect.
      Default value:
      true
      Returns:
      the value of the editable property
      See Also:
    • setEditable

      public final void setEditable(boolean on)
      Sets the value of the editable property.
      Property description:
      Indicates whether this RichTextArea can be edited by the user, provided the model is also writable. Changing the value of this property with a view-only model or a null model has no effect.
      Default value:
      true
      Parameters:
      on - the value for the editable property
      See Also:
    • highlightCurrentParagraphProperty

      public final BooleanProperty highlightCurrentParagraphProperty()
      Indicates whether the current paragraph will be visually highlighted.

      This property can be styled with CSS using -fx-highlight-current-paragraph name.

      Default value:
      false
      Returns:
      the highlight current paragraph property
      See Also:
    • isHighlightCurrentParagraph

      public final boolean isHighlightCurrentParagraph()
      Gets the value of the highlightCurrentParagraph property.
      Property description:
      Indicates whether the current paragraph will be visually highlighted.

      This property can be styled with CSS using -fx-highlight-current-paragraph name.

      Default value:
      false
      Returns:
      the value of the highlightCurrentParagraph property
      See Also:
    • setHighlightCurrentParagraph

      public final void setHighlightCurrentParagraph(boolean on)
      Sets the value of the highlightCurrentParagraph property.
      Property description:
      Indicates whether the current paragraph will be visually highlighted.

      This property can be styled with CSS using -fx-highlight-current-paragraph name.

      Default value:
      false
      Parameters:
      on - the value for the highlightCurrentParagraph property
      See Also:
    • leftDecoratorProperty

      public final ObjectProperty<SideDecorator> leftDecoratorProperty()
      Specifies the left-side paragraph decorator. The value can be null.
      Default value:
      null
      Returns:
      the left decorator property
      See Also:
    • getLeftDecorator

      public final SideDecorator getLeftDecorator()
      Gets the value of the leftDecorator property.
      Property description:
      Specifies the left-side paragraph decorator. The value can be null.
      Default value:
      null
      Returns:
      the value of the leftDecorator property
      See Also:
    • setLeftDecorator

      public final void setLeftDecorator(SideDecorator d)
      Sets the value of the leftDecorator property.
      Property description:
      Specifies the left-side paragraph decorator. The value can be null.
      Default value:
      null
      Parameters:
      d - the value for the leftDecorator property
      See Also:
    • modelProperty

      public final ObjectProperty<StyledTextModel> modelProperty()
      Determines the StyledTextModel to use with this RichTextArea. The model can be null, which results in an empty, uneditable control.

      Note: Subclasses may impose additional restrictions on the type of the model they require.

      Default value:
      an instance of RichTextModel
      Returns:
      the model property
      See Also:
    • setModel

      public final void setModel(StyledTextModel m)
      Sets the value of the model property.
      Property description:
      Determines the StyledTextModel to use with this RichTextArea. The model can be null, which results in an empty, uneditable control.

      Note: Subclasses may impose additional restrictions on the type of the model they require.

      Default value:
      an instance of RichTextModel
      Parameters:
      m - the value for the model property
      See Also:
    • getModel

      public final StyledTextModel getModel()
      Gets the value of the model property.
      Property description:
      Determines the StyledTextModel to use with this RichTextArea. The model can be null, which results in an empty, uneditable control.

      Note: Subclasses may impose additional restrictions on the type of the model they require.

      Default value:
      an instance of RichTextModel
      Returns:
      the value of the model property
      See Also:
    • validateModel

      protected void validateModel(StyledTextModel m)
      Validates the model property value. The subclass should override this method if it restricts the type of model that is supported, and throw an IllegalArgumentException if the model is not supported. A null value should always be acceptable and never generate an exception.
      Parameters:
      m - the model (can be null)
    • redoableProperty

      public final ReadOnlyBooleanProperty redoableProperty()
      The property describes if it's currently possible to redo the latest change of the content that was undone.
      Default value:
      false
      Returns:
      the read-only property
      See Also:
    • isRedoable

      public final boolean isRedoable()
      Gets the value of the redoable property.
      Property description:
      The property describes if it's currently possible to redo the latest change of the content that was undone.
      Default value:
      false
      Returns:
      the value of the redoable property
      See Also:
    • rightDecoratorProperty

      public final ObjectProperty<SideDecorator> rightDecoratorProperty()
      Specifies the right-side paragraph decorator. The value can be null.
      Default value:
      null
      Returns:
      the right decorator property
      See Also:
    • getRightDecorator

      public final SideDecorator getRightDecorator()
      Gets the value of the rightDecorator property.
      Property description:
      Specifies the right-side paragraph decorator. The value can be null.
      Default value:
      null
      Returns:
      the value of the rightDecorator property
      See Also:
    • setRightDecorator

      public final void setRightDecorator(SideDecorator d)
      Sets the value of the rightDecorator property.
      Property description:
      Specifies the right-side paragraph decorator. The value can be null.
      Default value:
      null
      Parameters:
      d - the value for the rightDecorator property
      See Also:
    • selectionProperty

      public final ReadOnlyProperty<SelectionSegment> selectionProperty()
      Tracks the current selection. The SelectionSegment consists of two values - the caret and the anchor positions which may get changed independently. This property allows for tracking the selection as an single entity. A null value for the selection segment causes both the caret and the anchor positions to become null.

      Note: selectionProperty(), anchorPositionProperty(), and caretPositionProperty() are logically connected. When a change occurs, the anchor position is updated first, followed by the caret position, followed by the selection segment.

      Default value:
      null
      Returns:
      the selection property
      See Also:
    • getSelection

      public final SelectionSegment getSelection()
      Gets the value of the selection property.
      Property description:
      Tracks the current selection. The SelectionSegment consists of two values - the caret and the anchor positions which may get changed independently. This property allows for tracking the selection as an single entity. A null value for the selection segment causes both the caret and the anchor positions to become null.

      Note: selectionProperty(), anchorPositionProperty(), and caretPositionProperty() are logically connected. When a change occurs, the anchor position is updated first, followed by the caret position, followed by the selection segment.

      Default value:
      null
      Returns:
      the value of the selection property
      See Also:
    • undoableProperty

      public final ReadOnlyBooleanProperty undoableProperty()
      The property describes if it's currently possible to undo the latest change of the content that was done.
      Default value:
      false
      Returns:
      the read-only property
      See Also:
    • isUndoable

      public final boolean isUndoable()
      Gets the value of the undoable property.
      Property description:
      The property describes if it's currently possible to undo the latest change of the content that was done.
      Default value:
      false
      Returns:
      the value of the undoable property
      See Also:
    • useContentHeightProperty

      public final BooleanProperty useContentHeightProperty()
      Determines whether the preferred height is the same as the content height. When set to true, the vertical scroll bar is disabled.

      This property can be styled with CSS using -fx-use-content-height name.

      Default value:
      false
      Returns:
      the use content height property
      See Also:
    • isUseContentHeight

      public final boolean isUseContentHeight()
      Gets the value of the useContentHeight property.
      Property description:
      Determines whether the preferred height is the same as the content height. When set to true, the vertical scroll bar is disabled.

      This property can be styled with CSS using -fx-use-content-height name.

      Default value:
      false
      Returns:
      the value of the useContentHeight property
      See Also:
    • setUseContentHeight

      public final void setUseContentHeight(boolean on)
      Sets the value of the useContentHeight property.
      Property description:
      Determines whether the preferred height is the same as the content height. When set to true, the vertical scroll bar is disabled.

      This property can be styled with CSS using -fx-use-content-height name.

      Default value:
      false
      Parameters:
      on - the value for the useContentHeight property
      See Also:
    • useContentWidthProperty

      public final BooleanProperty useContentWidthProperty()
      Determines whether the preferred width is the same as the content width. When set to true, the horizontal scroll bar is disabled.

      This property can be styled with CSS using -fx-use-content-width name.

      Default value:
      false
      Returns:
      the use content width property
      See Also:
    • isUseContentWidth

      public final boolean isUseContentWidth()
      Gets the value of the useContentWidth property.
      Property description:
      Determines whether the preferred width is the same as the content width. When set to true, the horizontal scroll bar is disabled.

      This property can be styled with CSS using -fx-use-content-width name.

      Default value:
      false
      Returns:
      the value of the useContentWidth property
      See Also:
    • setUseContentWidth

      public final void setUseContentWidth(boolean on)
      Sets the value of the useContentWidth property.
      Property description:
      Determines whether the preferred width is the same as the content width. When set to true, the horizontal scroll bar is disabled.

      This property can be styled with CSS using -fx-use-content-width name.

      Default value:
      false
      Parameters:
      on - the value for the useContentWidth property
      See Also:
    • wrapTextProperty

      public final BooleanProperty wrapTextProperty()
      Indicates whether text should be wrapped in this RichTextArea. If a run of text exceeds the width of the RichTextArea, then this variable indicates whether the text should wrap onto another line. Setting this property to true hides the horizontal scroll bar.

      This property can be styled with CSS using -fx-wrap-text name.

      Default value:
      false
      Returns:
      the wrap text property
      See Also:
    • isWrapText

      public final boolean isWrapText()
      Gets the value of the wrapText property.
      Property description:
      Indicates whether text should be wrapped in this RichTextArea. If a run of text exceeds the width of the RichTextArea, then this variable indicates whether the text should wrap onto another line. Setting this property to true hides the horizontal scroll bar.

      This property can be styled with CSS using -fx-wrap-text name.

      Default value:
      false
      Returns:
      the value of the wrapText property
      See Also:
    • setWrapText

      public final void setWrapText(boolean value)
      Sets the value of the wrapText property.
      Property description:
      Indicates whether text should be wrapped in this RichTextArea. If a run of text exceeds the width of the RichTextArea, then this variable indicates whether the text should wrap onto another line. Setting this property to true hides the horizontal scroll bar.

      This property can be styled with CSS using -fx-wrap-text name.

      Default value:
      false
      Parameters:
      value - the value for the wrapText property
      See Also:
    • getClassCssMetaData

      public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData()
      Gets the CssMetaData associated with this class, which may include the CssMetaData of its superclasses.
      Returns:
      the CssMetaData
    • getControlCssMetaData

      public List<CssMetaData<? extends Styleable,?>> getControlCssMetaData()
      Description copied from class: Control
      Gets the unmodifiable list of the control's CSS-styleable properties.
      Overrides:
      getControlCssMetaData in class Control
      Returns:
      the unmodifiable list of the control's CSS-styleable properties
    • appendText

      public final TextPos appendText(String text, StyleAttributeMap attrs)
      Appends the styled text to the end of the document. Any embedded "\n" or "\r\n" sequences result in a new paragraph being added.

      It is up to the model to decide whether to accept all, some, or none of the StyleAttributes.

      Parameters:
      text - the text to append
      attrs - the style attributes
      Returns:
      the text position at the end of the appended text, or null if editing is disabled
      Throws:
      NullPointerException - if the model is null
      UnsupportedOperationException - if the model is not writable
    • appendText

      public final TextPos appendText(String text)
      Appends the styled text to the end of the document. Any embedded "\n" or "\r\n" sequences result in a new paragraph being added.

      This convenience method is equivalent to calling appendText(text, StyleAttributeMap.EMPTY);

      Parameters:
      text - the text to append
      Returns:
      the text position at the end of the appended text, or null if editing is disabled
      Throws:
      NullPointerException - if the model is null
      UnsupportedOperationException - if the model is not writable
    • appendText

      public final TextPos appendText(StyledInput in)
      Appends the styled content to the end of the document. Any embedded "\n" or "\r\n" sequences result in a new paragraph being added.
      Parameters:
      in - the input stream
      Returns:
      the text position at the end of the appended text, or null if editing is disabled
      Throws:
      NullPointerException - if the model is null
      UnsupportedOperationException - if the model is not writable
    • applyStyle

      public void applyStyle(TextPos start, TextPos end, StyleAttributeMap attrs)
      Applies the specified style to the selected range. The specified attributes will be merged, overriding the existing ones. When applying paragraph attributes, the affected range might extend beyond start and end to include whole paragraphs.
      Parameters:
      start - the start of text range
      end - the end of text range
      attrs - the style attributes to apply
      Throws:
      NullPointerException - if the model is null
      UnsupportedOperationException - if the model is not writable
    • backspace

      public void backspace()
      When selection exists, deletes selected text. Otherwise, deletes the character preceding the caret, possibly breaking up the grapheme clusters.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • clear

      public final void clear()
      Clears the document, creating an undo entry.
      Throws:
      NullPointerException - if the model is null
      UnsupportedOperationException - if the model is not writable
    • clearSelection

      public final void clearSelection()
      Clears existing selection, if any. This method is an alias for getSelectionModel().clear().
    • clearUndoRedo

      public final void clearUndoRedo()
      Clears the undo-redo stack of the underlying model. This method does nothing if the model is null.
    • copy

      public void copy()
      When selection exists, copies the selected rich text to the clipboard in all the formats supported by the model.

      This method does nothing if the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • copy

      public final void copy(DataFormat format)
      Copies the selected text in the specified format to the clipboard. This method does nothing if no selection exists or when the data format is not supported by the model.
      Parameters:
      format - the data format to use
    • cut

      public void cut()
      Transfers the currently selected text to the clipboard, removing the current selection.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • delete

      public void delete()
      When selection exists, deletes selected text. Otherwise, deletes the symbol at the caret. When the symbol at the caret is a grapheme cluster, deletes the whole cluster.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • deleteParagraph

      public void deleteParagraph()
      When selection exists, deletes selected paragraphs. Otherwise, deletes the paragraph at the caret.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • deleteParagraphStart

      public void deleteParagraphStart()
      Deletes text from the caret position to the start of the paragraph, ignoring existing selection.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • deleteWordNextEnd

      public void deleteWordNextEnd()
      Deletes from the caret positon to the end of next word, ignoring existing selection. When the caret is in an empty paragraph, deletes the paragraph.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • deleteWordNextStart

      public void deleteWordNextStart()
      Deletes from the caret positon to the start of next word, ignoring existing selection. When the caret is in an empty paragraph, deletes the paragraph.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • deleteWordPrevious

      public void deleteWordPrevious()
      Deletes (multiple) empty paragraphs or text from the caret position to the start of the previous word, ignoring existing selection.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • deselect

      public void deselect()
      Clears the selected text range by moving anchor to the caret position.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • errorFeedback

      public void errorFeedback()
      Provides audio and/or visual error feedback. The default implementation does nothing. This action can be changed by remapping the default behavior via InputMap.
      See Also:
    • execute

      public final void execute(FunctionTag tag)
      Executes a function mapped to the specified function tag. This method does nothing if no function is mapped to the tag, or the function has been unbound.
      Parameters:
      tag - the function tag
    • executeDefault

      public final void executeDefault(FunctionTag tag)
      Executes the default function mapped to the specified tag. This method does nothing if no default mapping exists.
      Parameters:
      tag - the function tag
    • extendSelection

      public final void extendSelection(TextPos pos)
      Extends selection to the specified position. Internally, this method will normalized the position to be within the document boundaries. Calling this method produces the same result as select(pos, pos) if no prior selection exists. This method does nothing if the model is null.
      Parameters:
      pos - the text position
    • getActiveStyleAttributeMap

      public final StyleAttributeMap getActiveStyleAttributeMap()
      Returns StyleAttributeMap which contains character and paragraph attributes.

      When selection exists, returns the attributes at the first selected character.

      When no selection exists, returns the attributes at the character which immediately precedes the caret. When at the beginning of the document, returns the attributes of the first character. If the model uses CSS styles, this method resolves individual attributes (bold, font size, etc.) for this instance of RichTextArea.

      Returns:
      the non-null StyleAttributeMap instance
    • getDocumentEnd

      public final TextPos getDocumentEnd()
      Returns a TextPos corresponding to the end of the document. When the model is null, returns TextPos.ZERO.
      Returns:
      the text position
    • getInputMap

      public final InputMap getInputMap()
      Returns the input map instance.
      Returns:
      the input map instance
    • getParagraphCount

      public final int getParagraphCount()
      Returns the number of paragraphs in the model. This method returns 0 if the model is null.
      Returns:
      the paragraph count
    • getParagraphEnd

      public final TextPos getParagraphEnd(int index)
      Returns a TextPos corresponding to the end of paragraph. When the model is null, returns TextPos.ZERO.
      Parameters:
      index - paragraph index
      Returns:
      text position
    • getPlainText

      public final String getPlainText(int index)
      Returns the plain text at the specified paragraph index. The value of index must be between 0 (inclusive) and the value returned by getParagraphCount() (exclusive).
      Parameters:
      index - the paragraph index
      Returns:
      the non-null plain text string
      Throws:
      IndexOutOfBoundsException - if the index is outside of the range supported by the model
    • getStyleHandlerRegistry

      public StyleHandlerRegistry getStyleHandlerRegistry()
      Returns the style handler registry for this control. Applications should not normally call this method as it is intended for use by the skin subclasses.
      Returns:
      the style handler registry
    • getTextPosition

      public final TextPos getTextPosition(double screenX, double screenY)
      Finds a text position corresponding to the specified screen coordinates. This method returns null if the specified coordinates are outside of the content area.
      Parameters:
      screenX - the screen x coordinate
      screenY - the screen y coordinate
      Returns:
      the text position, or null
    • hasNonEmptySelection

      public final boolean hasNonEmptySelection()
      This convenience method returns true when a non-empty selection exists.
      Returns:
      true when an non-empty selection exists
    • insertLineBreak

      public void insertLineBreak()
      Inserts a line break at the caret. If selection exists, first deletes the selected text.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • insertTab

      public void insertTab()
      Inserts a tab symbol at the caret. If selection exists, first deletes the selected text.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • insertText

      public final TextPos insertText(TextPos pos, String text, StyleAttributeMap attrs)
      Inserts the styled text at the specified position. Any embedded "\n" or "\r\n" sequences result in a new paragraph being added.
      Parameters:
      pos - the insert position
      text - the text to inser
      attrs - the style attributes
      Returns:
      the text position at the end of the appended text, or null if editing is disabled
      Throws:
      NullPointerException - if the model is null
      UnsupportedOperationException - if the model is not writable
    • insertText

      public final TextPos insertText(TextPos pos, StyledInput in)
      Inserts the styled content at the specified position.
      Parameters:
      pos - the insert position
      in - the input stream
      Returns:
      the text position at the end of the appended text, or null if editing is disabled
      Throws:
      NullPointerException - if the model is null
      UnsupportedOperationException - if the model is not writable
    • moveDocumentEnd

      public void moveDocumentEnd()
      Moves the caret to after the last character of the text, clearing an existing selection.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveDocumentStart

      public void moveDocumentStart()
      Moves the caret to before the first character of the text, clearing an existing selection.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveDown

      public void moveDown()
      Moves the caret one visual line down, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveLeft

      public void moveLeft()
      Moves the caret left, clearing an existing selection range.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveLineEnd

      public void moveLineEnd()
      Moves the caret to the end of the visual text line at caret, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveLineStart

      public void moveLineStart()
      Moves the caret to the start of the visual text line at caret, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveParagraphDown

      public void moveParagraphDown()
      Moves the caret to the end of the current paragraph, or, if already there, to the end of the next paragraph.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveParagraphEnd

      public void moveParagraphEnd()
      Moves the caret to the end of the paragraph at caret, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveParagraphStart

      public void moveParagraphStart()
      Moves the caret to the start of the current paragraph, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveParagraphUp

      public void moveParagraphUp()
      Moves the caret to the start of the current paragraph, or, if already there, to the start of the previous paragraph.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveRight

      public void moveRight()
      Moves the caret to the next symbol, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveUp

      public void moveUp()
      Moves the caret one visual line up, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveWordLeft

      public void moveWordLeft()
      Moves the caret to the beginning of previous word in a left-to-right setting (or the beginning of the next word in a right-to-left setting), clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveWordNextEnd

      public void moveWordNextEnd()
      Moves the caret to the end of the next word, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveWordNextStart

      public void moveWordNextStart()
      Moves the caret to the start of next word, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveWordPrevious

      public void moveWordPrevious()
      Moves the caret to the beginning of previous word, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • moveWordRight

      public void moveWordRight()
      Moves the caret to the beginning of next word in a left-to-right setting (or the beginning of the previous word in a right-to-left setting), clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • pageDown

      public void pageDown()
      Move caret one visual page down, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • pageUp

      public void pageUp()
      Move caret one visual page up, clearing an existing selection.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • paste

      public void paste()
      Pastes the clipboard content at the caret, or, if selection exists, replacing the selected text. This method clears the selection afterward. It is up to the model to pick the best data format to paste.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • paste

      public void paste(DataFormat format)
      Pastes the clipboard content at the caret, or, if selection exists, replacing the selected text.

      This method does nothing if the control is not editable or the model is not writable, or the model is null, or if the specified format is not supported by the model.

      Parameters:
      format - the data format to use
    • pastePlainText

      public final void pastePlainText()
      Pastes the plain text clipboard content at the caret, or, if selection exists, replacing the selected text.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • read

      public final void read(DataFormat f, InputStream in) throws IOException
      Calls the model to replace the current document with the content read from the stream using the specified DataFormat. Any existing content is discarded and undo/redo buffer is cleared.

      This method does not close the input stream. This method does nothing if the model is null.

      Parameters:
      f - the data format
      in - the input stream
      Throws:
      IOException - if an I/O error occurs
      UnsupportedOperationException - when the data format is not supported by the model
    • read

      public final void read(InputStream in) throws IOException
      Calls the model to replace the current document with the content read from the input stream. The model picks the best DataFormat to use based on priority. Any existing content is discarded and undo/redo buffer is cleared.

      This method does not close the input stream. This method does nothing if the model is null.

      Parameters:
      in - the input stream
      Throws:
      IOException - if an I/O error occurs
      UnsupportedOperationException - when the data format is not supported by the model
    • redo

      public void redo()
      If possible, redoes the last undone modification. If isRedoable() returns false, then calling this method has no effect.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • replaceText

      public final TextPos replaceText(TextPos start, TextPos end, String text, boolean allowUndo)
      Replaces the specified range with the new text.
      Parameters:
      start - the start text position
      end - the end text position
      text - the input text
      allowUndo - when true, creates an undo-redo entry
      Returns:
      the new caret position at the end of inserted text, or null if the change cannot be made
      Throws:
      NullPointerException - if the model is null
      UnsupportedOperationException - if the model is not writable
    • replaceText

      public final TextPos replaceText(TextPos start, TextPos end, StyledInput in, boolean createUndo)
      Replaces the specified range with the new input.
      Parameters:
      start - the start text position
      end - the end text position
      in - the input stream
      createUndo - when true, creates an undo-redo entry
      Returns:
      the new caret position at the end of inserted text, or null if the change cannot be made
      Throws:
      NullPointerException - if the model is null
      UnsupportedOperationException - if the model is not writable
    • select

      public final void select(TextPos pos)
      Moves both the caret and the anchor to the specified position, clearing any existing selection. This method is equivalent to select(pos, pos).
      Parameters:
      pos - the text position
    • select

      public final void select(TextPos anchor, TextPos caret)
      Selects the specified range and places the caret at the new position. Both positions will be internally clamped to be within the document boundaries. This method does nothing if the model is null.
      Parameters:
      anchor - the new selection anchor position
      caret - the new caret position
    • selectAll

      public void selectAll()
      Selects all the text in the document: the anchor is set at the document start, while the caret is positioned at the end of the document.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectDown

      public void selectDown()
      Extends selection one visual text line down.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectLeft

      public void selectLeft()
      Extends selection one symbol to the left.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectPageDown

      public void selectPageDown()
      Extends selection one visible page down.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectPageUp

      public void selectPageUp()
      Extends selection one visible page up.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectParagraph

      public void selectParagraph()
      Selects the current paragraph.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectParagraphDown

      public void selectParagraphDown()
      Extends selection to the end of the current paragraph, or, if already at the end, to the end of the next paragraph.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectParagraphEnd

      public void selectParagraphEnd()
      Selects from the current position to the paragraph end.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectParagraphStart

      public void selectParagraphStart()
      Selects from the current position to the paragraph start.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectParagraphUp

      public void selectParagraphUp()
      Extends selection to the start of the current paragraph, or, if already at the start, to the start of the previous paragraph.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectRight

      public void selectRight()
      Extends selection one symbol (or grapheme cluster) to the right.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectToDocumentEnd

      public void selectToDocumentEnd()
      Extends selection to the end of the document.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectToDocumentStart

      public void selectToDocumentStart()
      Extends selection to the start of the document.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectToLineEnd

      public void selectToLineEnd()
      Extends selection to the end of the visual text line at caret.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectToLineStart

      public void selectToLineStart()
      Extends selection to the start of the visual text line at caret.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectUp

      public void selectUp()
      Extends selection one visual text line up.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectWord

      public void selectWord()
      Selects a word at the caret position.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectWordLeft

      public void selectWordLeft()
      Moves the caret to the beginning of previous word in a left-to-right setting, or to the beginning of the next word in a right-to-left setting. This does not cause the selection to be cleared. Rather, the anchor stays put and the caretPosition is moved to the beginning of next word.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectWordNextEnd

      public void selectWordNextEnd()
      Extends selection to the end of the next word.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectWordNextStart

      public void selectWordNextStart()
      Moves the caret to the start of the next word. This does not cause the selection to be cleared. Rather, the anchor stays put and the caretPosition is moved to the beginning of next word.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectWordPrevious

      public void selectWordPrevious()
      Moves the caret to the beginning of previous word. This does not cause the selection to be cleared. Rather, the anchor stays put and the caretPosition is moved to the beginning of previous word.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • selectWordRight

      public void selectWordRight()
      Moves the caret to the beginning of next word in a left-to-right setting, or to the beginning of the previous word in a right-to-left setting. This does not cause the selection to be cleared. Rather, the anchor stays put and the caretPosition is moved to the beginning of next word.

      This method does nothing when the caret position is null.

      This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • setStyle

      public final void setStyle(TextPos start, TextPos end, StyleAttributeMap attrs)
      Sets the specified style to the selected range. All the existing attributes in the selected range will be cleared. When setting the paragraph attributes, the affected range might be wider than one specified.
      Parameters:
      start - the start of text range
      end - the end of text range
      attrs - the style attributes to set
      Throws:
      NullPointerException - if the model is null
      UnsupportedOperationException - if the model is not writable
    • undo

      public void undo()
      If possible, undoes the last modification. If isUndoable() returns false, then calling this method has no effect.

      This method does nothing if the control is not editable or the model is not writable, or the model or the caret position is null. This action can be changed by remapping the default behavior via InputMap.

      See Also:
    • write

      public final void write(DataFormat f, OutputStream out) throws IOException
      Calls the model to writes the current document to the output stream using the specified DataFormat.

      This method does not close the output stream. This method does nothing if the model is null.

      Parameters:
      f - the data format
      out - the output stream
      Throws:
      IOException - if an I/O error occurs
      UnsupportedOperationException - when the data format is not supported by the model
    • write

      public final void write(OutputStream out) throws IOException
      Calls the model to write the current document to the output stream, using the highest priority DataFormat as determined by the model.

      This method does not close the output stream. This method does nothing if the model is null.

      Parameters:
      out - the output stream
      Throws:
      IOException - if an I/O error occurs
      UnsupportedOperationException - when no suitable data format can be found
    • createDefaultSkin

      protected RichTextAreaSkin createDefaultSkin()
      Description copied from class: Control
      Create a new instance of the default skin for this control. This is called to create a skin for the control if no skin is provided via CSS -fx-skin or set explicitly in a sub-class with setSkin(...).
      Overrides:
      createDefaultSkin in class Control
      Returns:
      new instance of default skin for this control. If null then the control will have no skin unless one is provided by css.