Class IconRowHeader

All Implemented Interfaces:
MouseListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible
Direct Known Subclasses:
FoldingAwareIconRowHeader

public class IconRowHeader extends AbstractGutterComponent implements MouseListener
Renders icons in the Gutter. This can be used to visually mark lines containing syntax errors, lines with breakpoints set on them, etc.

This component has built-in support for displaying icons representing "bookmarks;" that is, lines a user can cycle through via F2 and Shift+F2. Bookmarked lines are toggled via Ctrl+F2, or by clicking in the icon area at the line to bookmark. In order to enable bookmarking, you must first assign an icon to represent a bookmarked line, then actually enable the feature. This is actually done on the parent Gutter component:

 Gutter gutter = scrollPane.getGutter();
 gutter.setBookmarkIcon(new ImageIcon("bookmark.png"));
 gutter.setBookmarkingEnabled(true);
 
Version:
1.0
See Also:
  • Field Details

    • trackingIcons

      protected List<IconRowHeader.GutterIconImpl> trackingIcons
      The icons to render.
    • width

      protected int width
      The width of this component.
    • bookmarkingEnabled

      private boolean bookmarkingEnabled
      Whether this component listens for mouse clicks and toggles "bookmark" icons on them.
    • bookmarkIcon

      private Icon bookmarkIcon
      The icon to use for bookmarks.
    • visibleRect

      protected Rectangle visibleRect
      Used in paintComponent(Graphics) to prevent reallocation on each paint.
    • textAreaInsets

      protected Insets textAreaInsets
      Used in paintComponent(Graphics) to prevent reallocation on each paint.
    • activeLineRangeStart

      protected int activeLineRangeStart
      The first line in the active line range.
    • activeLineRangeEnd

      protected int activeLineRangeEnd
      The end line in the active line range.
    • activeLineRangeColor

      private Color activeLineRangeColor
      The color used to highlight the active code block.
    • inheritsGutterBackground

      private boolean inheritsGutterBackground
      Whether this component should use the gutter's background color (as opposed to using a LookAndFeel-dependent color, which is the default behavior).
  • Constructor Details

    • IconRowHeader

      public IconRowHeader(RTextArea textArea)
      Constructor.
      Parameters:
      textArea - The parent text area.
  • Method Details

    • addOffsetTrackingIcon

      public GutterIconInfo addOffsetTrackingIcon(int offs, Icon icon) throws BadLocationException
      Adds an icon that tracks an offset in the document, and is displayed adjacent to the line numbers. This is useful for marking things such as source code errors.
      Parameters:
      offs - The offset to track.
      icon - The icon to display. This should be small (say 16x16).
      Returns:
      A tag for this icon.
      Throws:
      BadLocationException - If offs is an invalid offset into the text area.
      See Also:
    • addOffsetTrackingIcon

      public GutterIconInfo addOffsetTrackingIcon(int offs, Icon icon, String tip) throws BadLocationException
      Adds an icon that tracks an offset in the document, and is displayed adjacent to the line numbers. This is useful for marking things such as source code errors.
      Parameters:
      offs - The offset to track.
      icon - The icon to display. This should be small (say 16x16).
      tip - A tool tip for the icon.
      Returns:
      A tag for this icon.
      Throws:
      BadLocationException - If offs is an invalid offset into the text area.
      See Also:
    • clearActiveLineRange

      public void clearActiveLineRange()
      Clears the active line range.
      See Also:
    • getActiveLineRangeColor

      public Color getActiveLineRangeColor()
      Returns the color used to paint the active line range, if any.
      Returns:
      The color.
      See Also:
    • getBookmarkIcon

      public Icon getBookmarkIcon()
      Returns the icon to use for bookmarks.
      Returns:
      The icon to use for bookmarks. If this is null, bookmarking is effectively disabled.
      See Also:
    • getBookmarks

      public GutterIconInfo[] getBookmarks()
      Returns the bookmarks known to this gutter.
      Returns:
      The bookmarks. If there are no bookmarks, an empty array is returned.
    • handleDocumentEvent

      void handleDocumentEvent(DocumentEvent e)
      Description copied from class: AbstractGutterComponent
      Called when text is inserted to or removed from the text area. Implementations can take this opportunity to repaint, revalidate, etc.
      Specified by:
      handleDocumentEvent in class AbstractGutterComponent
      Parameters:
      e - The document event.
    • getPreferredSize

      public Dimension getPreferredSize()
      Overrides:
      getPreferredSize in class JComponent
    • getToolTipText

      public String getToolTipText(MouseEvent e)
      Overridden to display the tool tip of any icons on this line.
      Overrides:
      getToolTipText in class JComponent
      Parameters:
      e - The location the mouse is hovering over.
    • getTrackingIcon

      protected IconRowHeader.GutterIconImpl getTrackingIcon(int index)
    • getTrackingIcons

      public GutterIconInfo[] getTrackingIcons(int line) throws BadLocationException
      Returns the tracking icons at the specified line.
      Parameters:
      line - The line.
      Returns:
      The tracking icons at that line. If there are no tracking icons there, this will be an empty array.
      Throws:
      BadLocationException - If line is invalid.
    • init

      protected void init()
      Description copied from class: AbstractGutterComponent
      Called by the constructor before the text area is set. This is a hook to allow subclasses to do any needed initialization. The default implementation does nothing.
      Overrides:
      init in class AbstractGutterComponent
    • isBookmarkingEnabled

      public boolean isBookmarkingEnabled()
      Returns whether bookmarking is enabled.
      Returns:
      Whether bookmarking is enabled.
      See Also:
    • lineHeightsChanged

      void lineHeightsChanged()
      Description copied from class: AbstractGutterComponent
      Called when the line heights of the text area change. This is usually the result of one or more of the fonts in the editor changing.
      Specified by:
      lineHeightsChanged in class AbstractGutterComponent
    • mouseClicked

      public void mouseClicked(MouseEvent e)
      Specified by:
      mouseClicked in interface MouseListener
    • mouseEntered

      public void mouseEntered(MouseEvent e)
      Specified by:
      mouseEntered in interface MouseListener
    • mouseExited

      public void mouseExited(MouseEvent e)
      Specified by:
      mouseExited in interface MouseListener
    • mousePressed

      public void mousePressed(MouseEvent e)
      Specified by:
      mousePressed in interface MouseListener
    • mouseReleased

      public void mouseReleased(MouseEvent e)
      Specified by:
      mouseReleased in interface MouseListener
    • paintComponent

      protected void paintComponent(Graphics g)
      Overrides:
      paintComponent in class JComponent
    • paintBackgroundImpl

      protected void paintBackgroundImpl(Graphics g, Rectangle visibleRect)
      Paints the background of this component.
      Parameters:
      g - The graphics context.
      visibleRect - The visible bounds of this component.
    • paintComponentWrapped

      private void paintComponentWrapped(Graphics g)
      Paints icons when line wrapping is enabled.
      Parameters:
      g - The graphics context.
    • removeTrackingIcon

      public void removeTrackingIcon(GutterIconInfo tag)
      Removes the specified tracking icon.
      Parameters:
      tag - A tag for a tracking icon.
      See Also:
    • removeAllTrackingIcons

      public void removeAllTrackingIcons()
      Removes all tracking icons.
      See Also:
    • removeBookmarkTrackingIcons

      private void removeBookmarkTrackingIcons()
      Removes all bookmark tracking icons.
    • setActiveLineRange

      public void setActiveLineRange(int startLine, int endLine)
      Highlights a range of lines in the icon area.
      Parameters:
      startLine - The start of the line range.
      endLine - The end of the line range.
      See Also:
    • setActiveLineRangeColor

      public void setActiveLineRangeColor(Color color)
      Sets the color to use to render active line ranges.
      Parameters:
      color - The color to use. If this is null, then the default color is used.
      See Also:
    • setBookmarkIcon

      public void setBookmarkIcon(Icon icon)
      Sets the icon to use for bookmarks. Any previous bookmark icons are removed.
      Parameters:
      icon - The new bookmark icon. If this is null, bookmarking is effectively disabled.
      See Also:
    • setBookmarkingEnabled

      public void setBookmarkingEnabled(boolean enabled)
      Sets whether bookmarking is enabled. Note that a bookmarking icon must be set via setBookmarkIcon(Icon) before bookmarks are truly enabled.
      Parameters:
      enabled - Whether bookmarking is enabled. If this is false, any bookmark icons are removed.
      See Also:
    • setInheritsGutterBackground

      public void setInheritsGutterBackground(boolean inherits)
      Sets whether the icon area inherits the gutter background (as opposed to painting with its own, default "panel" color, which is the default).
      Parameters:
      inherits - Whether the gutter background should be used in the icon row header. If this is false, a default, Look-and-feel-dependent color is used.
    • setTextArea

      public void setTextArea(RTextArea textArea)
      Sets the text area being displayed. This will clear any tracking icons currently displayed.
      Overrides:
      setTextArea in class AbstractGutterComponent
      Parameters:
      textArea - The text area.
    • toggleBookmark

      public boolean toggleBookmark(int line) throws BadLocationException
      Programmatically toggles whether there is a bookmark for the specified line. If bookmarking is not enabled, this method does nothing.
      Parameters:
      line - The line.
      Returns:
      Whether a bookmark is now at the specified line.
      Throws:
      BadLocationException - If line is an invalid line number in the text area.
    • updateBackground

      private void updateBackground()
      Sets our background color to that of standard "panels" in this LookAndFeel. This is necessary because, otherwise, we'd inherit the background color of our parent component (the Gutter).
    • updateUI

      public void updateUI()
      Overrides:
      updateUI in class JPanel
    • viewToModelLine

      private int viewToModelLine(Point p) throws BadLocationException
      Returns the line rendered at the specified location.
      Parameters:
      p - The location in this row header.
      Returns:
      The corresponding line in the editor.
      Throws:
      BadLocationException - ble If an error occurs.