Class RTextAreaHighlighter

  • All Implemented Interfaces:
    javax.swing.plaf.UIResource, javax.swing.text.Highlighter
    Direct Known Subclasses:
    RSyntaxTextAreaHighlighter

    public class RTextAreaHighlighter
    extends javax.swing.plaf.basic.BasicTextUI.BasicHighlighter
    The highlighter implementation used by RTextAreas. It knows to always paint "mark all" highlights below selection highlights.

    Most of this code is copied from javax.swing.text.DefaultHighlighter; unfortunately, we cannot re-use much of it since it is package private.

    Version:
    1.0
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  RTextAreaHighlighter.HighlightInfo
      Information about a highlight being painted by this highlighter.
      protected static class  RTextAreaHighlighter.HighlightInfoImpl
      A straightforward implementation of HighlightInfo.
      static interface  RTextAreaHighlighter.LayeredHighlightInfo
      Information about a layered highlight being painted by this highlighter.
      protected static class  RTextAreaHighlighter.LayeredHighlightInfoImpl
      A straightforward implementation of HighlightInfo for painting layered highlights.
      • Nested classes/interfaces inherited from class javax.swing.text.DefaultHighlighter

        javax.swing.text.DefaultHighlighter.DefaultHighlightPainter
      • Nested classes/interfaces inherited from class javax.swing.text.LayeredHighlighter

        javax.swing.text.LayeredHighlighter.LayerPainter
      • Nested classes/interfaces inherited from interface javax.swing.text.Highlighter

        javax.swing.text.Highlighter.Highlight, javax.swing.text.Highlighter.HighlightPainter
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.List<RTextAreaHighlighter.HighlightInfo> markAllHighlights
      The "mark all" highlights (to be painted separately from other highlights).
      protected RTextArea textArea
      The text component we are the highlighter for.
      • Fields inherited from class javax.swing.text.DefaultHighlighter

        DefaultPainter
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) java.lang.Object addMarkAllHighlight​(int start, int end, javax.swing.text.Highlighter.HighlightPainter p)
      Adds a special "marked occurrence" highlight.
      (package private) void clearMarkAllHighlights()
      Removes all "mark all" highlights from the view.
      void deinstall​(javax.swing.text.JTextComponent c)  
      int getMarkAllHighlightCount()
      Returns the number of "mark all" highlights currently shown in the editor.
      java.util.List<DocumentRange> getMarkAllHighlightRanges()
      Returns a list of "mark all" highlights in the text area.
      void install​(javax.swing.text.JTextComponent c)  
      void paintLayeredHighlights​(java.awt.Graphics g, int lineStart, int lineEnd, java.awt.Shape viewBounds, javax.swing.text.JTextComponent editor, javax.swing.text.View view)
      When leaf Views (such as LabelView) are rendering they should call into this method.
      protected void paintListLayered​(java.awt.Graphics g, int lineStart, int lineEnd, java.awt.Shape viewBounds, javax.swing.text.JTextComponent editor, javax.swing.text.View view, java.util.List<? extends RTextAreaHighlighter.HighlightInfo> highlights)  
      protected void repaintListHighlight​(RTextAreaHighlighter.HighlightInfo info)  
      • Methods inherited from class javax.swing.text.DefaultHighlighter

        addHighlight, changeHighlight, getDrawsLayeredHighlights, getHighlights, paint, removeAllHighlights, removeHighlight, setDrawsLayeredHighlights
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • textArea

        protected RTextArea textArea
        The text component we are the highlighter for.
      • markAllHighlights

        private java.util.List<RTextAreaHighlighter.HighlightInfo> markAllHighlights
        The "mark all" highlights (to be painted separately from other highlights).
    • Constructor Detail

      • RTextAreaHighlighter

        public RTextAreaHighlighter()
        Constructor.
    • Method Detail

      • addMarkAllHighlight

        java.lang.Object addMarkAllHighlight​(int start,
                                             int end,
                                             javax.swing.text.Highlighter.HighlightPainter p)
                                      throws javax.swing.text.BadLocationException
        Adds a special "marked occurrence" highlight.
        Parameters:
        start - The start offset of the highlight.
        end - The end offset of the highlight.
        p - The highlight painter.
        Returns:
        A tag to reference the highlight later.
        Throws:
        javax.swing.text.BadLocationException - If one of the offsets specified is invalid.
        See Also:
        clearMarkAllHighlights()
      • deinstall

        public void deinstall​(javax.swing.text.JTextComponent c)
        Specified by:
        deinstall in interface javax.swing.text.Highlighter
        Overrides:
        deinstall in class javax.swing.text.DefaultHighlighter
      • getMarkAllHighlightCount

        public int getMarkAllHighlightCount()
        Returns the number of "mark all" highlights currently shown in the editor.
        Returns:
        The "mark all" highlight count.
      • getMarkAllHighlightRanges

        public java.util.List<DocumentRange> getMarkAllHighlightRanges()
        Returns a list of "mark all" highlights in the text area. If there are no such highlights, this will be an empty list.
        Returns:
        The list of "mark all" highlight ranges.
      • install

        public void install​(javax.swing.text.JTextComponent c)
        Specified by:
        install in interface javax.swing.text.Highlighter
        Overrides:
        install in class javax.swing.text.DefaultHighlighter
      • paintLayeredHighlights

        public void paintLayeredHighlights​(java.awt.Graphics g,
                                           int lineStart,
                                           int lineEnd,
                                           java.awt.Shape viewBounds,
                                           javax.swing.text.JTextComponent editor,
                                           javax.swing.text.View view)
        When leaf Views (such as LabelView) are rendering they should call into this method. If a highlight is in the given region it will be drawn immediately.
        Overrides:
        paintLayeredHighlights in class javax.swing.text.DefaultHighlighter
        Parameters:
        g - Graphics used to draw
        lineStart - starting offset of view
        lineEnd - ending offset of view
        viewBounds - Bounds of View
        editor - JTextComponent
        view - View instance being rendered
      • paintListLayered

        protected void paintListLayered​(java.awt.Graphics g,
                                        int lineStart,
                                        int lineEnd,
                                        java.awt.Shape viewBounds,
                                        javax.swing.text.JTextComponent editor,
                                        javax.swing.text.View view,
                                        java.util.List<? extends RTextAreaHighlighter.HighlightInfo> highlights)