# Interface Highlighter

All Known Implementing Classes:
  `BasicTextUI.BasicHighlighter`, `DefaultHighlighter`, `LayeredHighlighter`

public interface Highlighter
An interface for an object that allows one to mark up the background with colored areas.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static interface`
  `Highlighter.Highlight`
  A highlight.
  `static interface`
  `Highlighter.HighlightPainter`
  Highlight renderer.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `addHighlight(int p0, int p1, Highlighter.HighlightPainter p)`
  Adds a highlight to the view.
  `void`
  `changeHighlight(Object tag, int p0, int p1)`
  Changes the given highlight to span a different portion of the document.
  `void`
  `deinstall(JTextComponent c)`
  Called when the UI is being removed from the interface of a JTextComponent.
  `Highlighter.Highlight[]`
  `getHighlights()`
  Fetches the current list of highlights.
  `void`
  `install(JTextComponent c)`
  Called when the UI is being installed into the interface of a JTextComponent.
  `void`
  `paint(Graphics g)`
  Renders the highlights.
  `void`
  `removeAllHighlights()`
  Removes all highlights this highlighter is responsible for.
  `void`
  `removeHighlight(Object tag)`
  Removes a highlight from the view.

- ## Method Details

  - ### install

    void install(JTextComponent c)
    Called when the UI is being installed into the interface of a JTextComponent. This can be used to gain access to the model that is being navigated by the implementation of this interface.
    Parameters:
      `c` - the JTextComponent editor

  - ### deinstall

    void deinstall(JTextComponent c)
    Called when the UI is being removed from the interface of a JTextComponent. This is used to unregister any listeners that were attached.
    Parameters:
      `c` - the JTextComponent editor

  - ### paint

    void paint(Graphics g)
    Renders the highlights.
    Parameters:
      `g` - the graphics context.

  - ### addHighlight

    Object addHighlight(int p0, int p1, Highlighter.HighlightPainter p) throws BadLocationException
    Adds a highlight to the view. Returns a tag that can be used to refer to the highlight.
    Parameters:
      `p0` - the beginning of the range >= 0
      `p1` - the end of the range >= p0
      `p` - the painter to use for the actual highlighting
    Returns:
      an object that refers to the highlight
    Throws:
      `BadLocationException` - for an invalid range specification

  - ### removeHighlight

    void removeHighlight(Object tag)
    Removes a highlight from the view.
    Parameters:
      `tag` - which highlight to remove

  - ### removeAllHighlights

    void removeAllHighlights()
    Removes all highlights this highlighter is responsible for.

  - ### changeHighlight

    void changeHighlight(Object tag, int p0, int p1) throws BadLocationException
    Changes the given highlight to span a different portion of the document. This may be more efficient than a remove/add when a selection is expanding/shrinking (such as a sweep with a mouse) by damaging only what changed.
    Parameters:
      `tag` - which highlight to change
      `p0` - the beginning of the range >= 0
      `p1` - the end of the range >= p0
    Throws:
      `BadLocationException` - for an invalid range specification

  - ### getHighlights

    Highlighter.Highlight[] getHighlights()
    Fetches the current list of highlights.
    Returns:
      the highlight list