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.

Version:
  1.0
Author:
  Robert Futrell
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 and 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

Methods
`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<<16) | (g<<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<<16) | (g<<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)`