Package org.fife.ui.rsyntaxtextarea

## Class SyntaxScheme

- java.lang.Object
- - org.fife.ui.rsyntaxtextarea.SyntaxScheme

- All Implemented Interfaces:
    `Cloneable`, `TokenTypes`

      public class SyntaxScheme
      extends Object
      implements Cloneable, TokenTypes

  The set of colors and styles used by an `RSyntaxTextArea` to color tokens.

  You can use this class to programmatically set the fonts and colors used in an RSyntaxTextArea, but for more powerful, externalized control, consider using `Theme`s instead.

  See Also:
    `Theme`

- - ### Field Summary

    - ### Fields inherited from interface org.fife.ui.rsyntaxtextarea.TokenTypes

      `ANNOTATION, COMMENT_DOCUMENTATION, COMMENT_EOL, COMMENT_KEYWORD, COMMENT_MARKUP, COMMENT_MULTILINE, DATA_TYPE, DEFAULT_NUM_TOKEN_TYPES, ERROR_CHAR, ERROR_IDENTIFIER, ERROR_NUMBER_FORMAT, ERROR_STRING_DOUBLE, FUNCTION, IDENTIFIER, LITERAL_BACKQUOTE, LITERAL_BOOLEAN, LITERAL_CHAR, LITERAL_NUMBER_DECIMAL_INT, LITERAL_NUMBER_FLOAT, LITERAL_NUMBER_HEXADECIMAL, LITERAL_STRING_DOUBLE_QUOTE, MARKUP_CDATA, MARKUP_CDATA_DELIMITER, MARKUP_COMMENT, MARKUP_DTD, MARKUP_ENTITY_REFERENCE, MARKUP_PROCESSING_INSTRUCTION, MARKUP_TAG_ATTRIBUTE, MARKUP_TAG_ATTRIBUTE_VALUE, MARKUP_TAG_DELIMITER, MARKUP_TAG_NAME, NULL, OPERATOR, PREPROCESSOR, REGEX, RESERVED_WORD, RESERVED_WORD_2, SEPARATOR, VARIABLE, WHITESPACE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SyntaxScheme​(boolean useDefaults)` | Creates a color scheme that either has all color values set to a default value or set to `null`.
    `SyntaxScheme​(Font baseFont)` | Creates a default color scheme.
    `SyntaxScheme​(Font baseFont, boolean fontStyles)` | Creates a default color scheme.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Object` | `clone()` | Returns a deep copy of this color scheme.
    `boolean` | `equals​(Object otherScheme)` | Tests whether this color scheme is the same as another color scheme.
    `Style` | `getStyle​(int index)` | Returns the specified style.
    `int` | `getStyleCount()` | Returns the number of styles.
    `Style[]` | `getStyles()` | Used by third party implementors e.g.
    `int` | `hashCode()` | This is implemented to be consistent with `equals(Object)`.
    `static SyntaxScheme` | `load​(Font baseFont, InputStream in)` | Loads a syntax scheme from an input stream.
    `static SyntaxScheme` | `loadFromString​(String string)` | Loads a syntax highlighting color scheme from a string created from `toCommaSeparatedString`.
    `static SyntaxScheme` | `loadFromString​(String string, int tokenTypeCount)` | Loads a syntax highlighting color scheme from a string created from `toCommaSeparatedString`.
    `void` | `restoreDefaults​(Font baseFont)` | Restores all colors and fonts to their default values.
    `void` | `restoreDefaults​(Font baseFont, boolean fontStyles)` | Restores all colors and fonts to their default values.
    `void` | `setStyle​(int type, Style style)` | Sets a style to use when rendering a token type.
    `void` | `setStyles​(Style[] styles)` | Used by third party implementors e.g.
    `String` | `toCommaSeparatedString()` | Returns this syntax highlighting scheme as a comma-separated list of values as follows: If a color is non-null, it is added as a 24-bit integer of the form `((r<*lt;16) | (g<*lt;8) | (b))`; if it is `null`, it is added as "-,".

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SyntaxScheme

          public SyntaxScheme​(boolean useDefaults)

      Creates a color scheme that either has all color values set to a default value or set to `null`.
      Parameters:
        `useDefaults` - If `true`, all color values will be set to default colors; if `false`, all colors will be initially `null`.

    - #### SyntaxScheme

          public SyntaxScheme​(Font baseFont)

      Creates a default color scheme.
      Parameters:
        `baseFont` - The base font to use. Keywords will be a bold version of this font, and comments will be an italicized version of this font.

    - #### SyntaxScheme

          public SyntaxScheme​(Font baseFont,
                              boolean fontStyles)

      Creates a default color scheme.
      Parameters:
        `baseFont` - The base font to use. Keywords will be a bold version of this font, and comments will be an italicized version of this font.
        `fontStyles` - Whether bold and italic should be used in the scheme (vs. all tokens using a plain font).

  - ### Method Detail

    - #### clone

          public Object clone()

      Returns a deep copy of this color scheme.
      Overrides:
        `clone` in class `Object`
      Returns:
        The copy.

    - #### equals

          public boolean equals​(Object otherScheme)

      Tests whether this color scheme is the same as another color scheme.
      Overrides:
        `equals` in class `Object`
      Parameters:
        `otherScheme` - The color scheme to compare to.
      Returns:
        `true` if this color scheme and `otherScheme` are the same scheme; `false` otherwise.

    - #### getStyle

          public Style getStyle​(int index)

      Returns the specified style.
      Parameters:
        `index` - The index of the style.
      Returns:
        The style.
      See Also:
        `setStyle(int, Style)`, `getStyleCount()`

    - #### getStyleCount

          public int getStyleCount()

      Returns the number of styles.
      Returns:
        The number of styles.
      See Also:
        `getStyle(int)`

    - #### getStyles

          public Style[] getStyles()

      Used by third party implementors e.g. SquirreL SQL. Most applications do not need to call this method.

      Note that the returned array is not a copy of the style data; editing the array will modify the styles used by any `RSyntaxTextArea` using this scheme.

      Returns:
        The style array.
      See Also:
        `setStyles(Style[])`

    - #### hashCode

          public int hashCode()

      This is implemented to be consistent with `equals(Object)`. This is a requirement to keep FindBugs happy.
      Overrides:
        `hashCode` in class `Object`
      Returns:
        The hash code for this object.

    - #### load

          public static SyntaxScheme load​(Font baseFont,
                                          InputStream in)
                                   throws IOException

      Loads a syntax scheme from an input stream.

      Consider using the `Theme` class for saving and loading RSTA styles rather than using this API.

      Parameters:
        `baseFont` - The font to use as the "base" for the syntax scheme. If this is `null`, a default monospaced font is used.
        `in` - The stream to load from. It is up to the caller to close this stream when they are done.
      Returns:
        The syntax scheme.
      Throws:
        `IOException` - If an IO error occurs.

    - #### loadFromString

          public static SyntaxScheme loadFromString​(String string)

      Loads a syntax highlighting color scheme from a string created from `toCommaSeparatedString`. This method is useful for saving and restoring color schemes.

      Consider using the `Theme` class for saving and loading RSTA styles rather than using this API.

      Parameters:
        `string` - A string generated from `toCommaSeparatedString()`.
      Returns:
        A color scheme.
      See Also:
        `toCommaSeparatedString()`

    - #### loadFromString

          public static SyntaxScheme loadFromString​(String string,
                                                    int tokenTypeCount)

      Loads a syntax highlighting color scheme from a string created from `toCommaSeparatedString`. This method is useful for saving and restoring color schemes.

      Consider using the `Theme` class for saving and loading RSTA styles rather than using this API.

      Parameters:
        `string` - A string generated from `toCommaSeparatedString()`.
        `tokenTypeCount` - The number of token types saved in this string. This should be the number of token types saved by your custom SyntaxScheme subclass, or `TokenTypes.DEFAULT_NUM_TOKEN_TYPES` if you used the standard implementation (which most people will).
      Returns:
        A color scheme.
      See Also:
        `loadFromString(String)`, `toCommaSeparatedString()`

    - #### restoreDefaults

          public void restoreDefaults​(Font baseFont)

      Restores all colors and fonts to their default values.
      Parameters:
        `baseFont` - The base font to use when creating this scheme. If this is `null`, then a default monospaced font is used.

    - #### restoreDefaults

          public void restoreDefaults​(Font baseFont,
                                      boolean fontStyles)

      Restores all colors and fonts to their default values.
      Parameters:
        `baseFont` - The base font to use when creating this scheme. If this is `null`, then a default monospaced font is used.
        `fontStyles` - Whether bold and italic should be used in the scheme (vs. all tokens using a plain font).

    - #### setStyle

          public void setStyle​(int type,
                               Style style)

      Sets a style to use when rendering a token type.
      Parameters:
        `type` - The token type.
        `style` - The style for the token type.
      See Also:
        `getStyle(int)`

    - #### setStyles

          public void setStyles​(Style[] styles)

      Used by third party implementors e.g. SquirreL SQL. Most applications do not need to call this method; individual styles can be set via `setStyle(int, Style)`.
      Parameters:
        `styles` - The new array of styles to use. Note that this should have length of at least `TokenTypes.DEFAULT_NUM_TOKEN_TYPES`.
      See Also:
        `setStyle(int, Style)`, `getStyles()`

    - #### toCommaSeparatedString

          public String toCommaSeparatedString()

      Returns this syntax highlighting scheme as a comma-separated list of values as follows:
      - If a color is non-null, it is added as a 24-bit integer of the form `((r<*lt;16) | (g<*lt;8) | (b))`; if it is `null`, it is added as "-,".
      - The font and style (bold/italic) is added as an integer like so: "family, style, size".
      - The entire syntax highlighting scheme is thus one long string of color schemes of the format "i,[fg],[bg],uline,[style], where:
        - `i` is the index of the syntax scheme.
        - fg and bg are the foreground and background colors for the scheme, and may be null (represented by `-`).
        - `uline` is whether or not the font should be underlined, and is either `t` or `f`.
        - `style` is the `family,style,size` triplet described above.
      Returns:
        A string representing the rgb values of the colors.
      See Also:
        `loadFromString(String)`