# Class RichTextFormatHandler

java.lang.Object
jfx.incubator.scene.control.richtext.model.DataFormatHandler
jfx.incubator.scene.control.richtext.model.RichTextFormatHandler

public class RichTextFormatHandler extends DataFormatHandler
A DataFormatHandler for use with attribute-based rich text models.

The handler uses a simple text-based format:

(*) denotes an optional element.

     PARAGRAPH[]

     PARAGRAPH: {
         TEXT_SEGMENT[],
         PARAGRAPH_ATTRIBUTE[]*,
         "\n"
     }

     PARAGRAPH_ATTRIBUTE: {
         "{!"
         (name)
         ATTRIBUTE_VALUE[]*
         "}"
     }

     ATTRIBUTE: {
         "{"
         (name)
         ATTRIBUTE_VALUE[]*
         "}"
     }

     ATTRIBUTE_VALUE: {
         |
         (value)
     }

     TEXT_SEGMENT: {
         ATTRIBUTE[]* or {}
         (text string with escaped special characters)
     }

A special token `{}` denotes an empty character attribute map, while `{!}` does the same for an empty paragraph attribute map.

Attribute sequences are further deduplicated, using a single {number} token which specifies the index into the list of unique sets of attributes. Paragraph attribute sets are treated as separate from the segment attrubite sets.

The following characters are escaped in text segments: {,%,} The escape format is %XX where XX is a hexadecimal value.

Example:

     {c|ff00ff}text{b}bold{!rtl}\n
     {1}line 2{!0}\n

Since:
  24

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final DataFormat`
  `DATA_FORMAT`
  The data format identifier

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `copy(StyledTextModel m, StyleResolver r, TextPos start, TextPos end)`
  Creates an object to be put into the Clipboard for the given text range.
  `StyledInput`
  `createStyledInput(String input, StyleAttributeMap attr)`
  Creates a StyledInput for the given input string.
  `static final RichTextFormatHandler`
  `getInstance()`
  Returns the singleton instance of `RtfFormatHandler`.
  `void`
  `save(StyledTextModel m, StyleResolver r, TextPos start, TextPos end, OutputStream out)`
  Save the text range in the handler's format to the output stream (e.g.

  ### Methods declared in class jfx.incubator.scene.control.richtext.model.DataFormatHandler

  `getDataFormat`

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### DATA_FORMAT

    public static final DataFormat DATA_FORMAT
    The data format identifier

- ## Method Details

  - ### getInstance

    public static final RichTextFormatHandler getInstance()
    Returns the singleton instance of `RtfFormatHandler`.
    Returns:
      the singleton instance of `RtfFormatHandler`

  - ### createStyledInput

    public StyledInput createStyledInput(String input, StyleAttributeMap attr)
    Description copied from class: `DataFormatHandler`
    Creates a StyledInput for the given input string. When pasting, the caller may pass the style attributes `attr` at the insertion point. This argument may be used by the implementation if the format contains no styles on its own (for example, in the plain text format case).
    Specified by:
      `createStyledInput` in class `DataFormatHandler`
    Parameters:
      `input` - the input string
      `attr` - the style attributes (can be null)
    Returns:
      the StyledInput

  - ### copy

    public Object copy(StyledTextModel m, StyleResolver r, TextPos start, TextPos end) throws IOException
    Description copied from class: `DataFormatHandler`
    Creates an object to be put into the Clipboard for the given text range. The caller must guarantee that the `start` precedes the `end` position.

    Typically, the implementation creates an instance of `StyledOutput` and calls `StyledTextModel.export(TextPos, TextPos, StyledOutput)` method.

    Specified by:
      `copy` in class `DataFormatHandler`
    Parameters:
      `m` - source model
      `r` - view-specific style resolver
      `start` - start text position
      `end` - end text position
    Returns:
      an object to be placed to the Clipboard
    Throws:
      `IOException` - when an I/O error occurs

  - ### save

    public void save(StyledTextModel m, StyleResolver r, TextPos start, TextPos end, OutputStream out) throws IOException
    Description copied from class: `DataFormatHandler`
    Save the text range in the handler's format to the output stream (e.g. save to file). The caller must guarantee that the `start` precedes the `end` position. It is the responsibility of the caller to close the `OutputStream`.

    Typically, the implementation creates an instance of `StyledOutput` and calls `StyledTextModel.export(TextPos, TextPos, StyledOutput)` method.

    Specified by:
      `save` in class `DataFormatHandler`
    Parameters:
      `m` - source model
      `r` - view-specific style resolver
      `start` - start text position
      `end` - end text position
      `out` - target `OutputStream`
    Throws:
      `IOException` - when an I/O error occurs