Class FoldIndicator

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible

public class FoldIndicator extends JPanel
Component in the gutter that displays +/- icons to expand and collapse fold regions in the editor.
Version:
1.0
Author:
Robert Futrell
See Also:
  • Field Details

    • DEFAULT_FOREGROUND

      public static final Color DEFAULT_FOREGROUND
      The color used to paint fold outlines.
    • DEFAULT_FOLD_BACKGROUND

      public static final Color DEFAULT_FOLD_BACKGROUND
      The default color used to paint the "inside" of fold icons.
    • textArea

      protected RTextArea textArea
      The text area whose lines we are marking with icons.
    • currentLineCount

      protected int currentLineCount
      The number of lines in the text area.
  • Constructor Details

    • FoldIndicator

      public FoldIndicator(RTextArea textArea)
  • Method Details

    • createToolTip

      public JToolTip createToolTip()
      Overridden to use the editor's background if it's detected that the user isn't using white as the editor bg, but the system's tool tip background is yellow-ish.
      Overrides:
      createToolTip in class JComponent
      Returns:
      The tool tip.
    • getAdditionalLeftMargin

      public int getAdditionalLeftMargin()
      Returns the amount of additional size to give the left margin of this component. This can be used to add blank space between this component and the line number indicator in the gutter.
      Returns:
      The additional left margin.
      See Also:
    • getArmedForeground

      public Color getArmedForeground()
      Returns the foreground color used for armed folds.
      Returns:
      The foreground color used for armed folds.
      See Also:
    • getExpandedFoldRenderStrategy

      public ExpandedFoldRenderStrategy getExpandedFoldRenderStrategy()
      Returns the strategy to use for rendering expanded folds.
      Returns:
      The strategy to use for rendering expanded folds.
      See Also:
    • getFoldIconArmedBackground

      public Color getFoldIconArmedBackground()
      Returns the color to use for the "background" of armed fold icons. This is ignored if custom icons are used.
      Returns:
      The background color. If this is null, there is no special color for armed fold icons.
      See Also:
    • getFoldIconBackground

      public Color getFoldIconBackground()
      Returns the color to use for the "background" of fold icons. This is ignored if custom icons are used.
      Returns:
      The background color.
      See Also:
    • getPreferredSize

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

      public boolean getShowArmedFoldRange()
      Returns whether a line should be drawn to show the range of lines contained in an expanded fold when it is armed (hovered over).
      Returns:
      Whether to show an armed fold's range.
      See Also:
    • getShowCollapsedRegionToolTips

      public boolean getShowCollapsedRegionToolTips()
      Returns whether tool tips are displayed showing the contents of collapsed fold regions when the mouse hovers over a +/- icon.
      Returns:
      Whether these tool tips are displayed.
      See Also:
    • getToolTipLocation

      public Point getToolTipLocation(MouseEvent e)
      Positions tool tips to be aligned in the text component, so that the displayed content is shown (almost) exactly where it would be in the editor.
      Overrides:
      getToolTipLocation in class JComponent
      Parameters:
      e - The mouse location.
    • getToolTipText

      public String getToolTipText(MouseEvent e)
      Overridden to show the content of a collapsed fold on mouse-overs.
      Overrides:
      getToolTipText in class JComponent
      Parameters:
      e - The mouse location.
    • init

      protected void init()
      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.
    • paintComponent

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

      public void setAdditionalLeftMargin(int leftMargin)
      Adds to the amount of additional size to give the left margin of this component. This can be used to add blank space between this component and the line number indicator in the gutter.
      Parameters:
      leftMargin - The additional left margin. This should be >= 0.
      See Also:
    • setArmedForeground

      public void setArmedForeground(Color fg)
      Sets the foreground color used for armed folds.
      Parameters:
      fg - The new armed fold foreground.
      See Also:
    • setExpandedFoldRenderStrategy

      public void setExpandedFoldRenderStrategy(ExpandedFoldRenderStrategy strategy)
      Sets the strategy to use for rendering expanded folds.
      Parameters:
      strategy - The strategy to use. This cannot be null.
      See Also:
    • setFoldIconArmedBackground

      public void setFoldIconArmedBackground(Color bg)
      Sets the color to use for the "background" of armed fold icons. This will be ignored if custom icons are used.
      Parameters:
      bg - The new background color. If null is passed in, there will be no special color for armed fold icons.
      See Also:
    • setFoldIconBackground

      public void setFoldIconBackground(Color bg)
      Sets the color to use for the "background" of fold icons. This will be ignored if custom icons are used.
      Parameters:
      bg - The new background color. This should not be null.
      See Also:
    • setFoldIcons

      public void setFoldIcons(FoldIndicatorIcon collapsedIcon, FoldIndicatorIcon expandedIcon)
      Sets the icons to use to represent collapsed and expanded folds. This method can be used for further customization after setting this component's general appearance via setStyle(FoldIndicatorStyle).
      Parameters:
      collapsedIcon - The collapsed fold icon. This cannot be null.
      expandedIcon - The expanded fold icon. This cannot be null.
      See Also:
      • setStyle(FoldIndicatorStyle)
    • setShowArmedFoldRange

      public void setShowArmedFoldRange(boolean show)
      Toggles whether a line should be drawn to show the range of lines contained in an expanded fold when it is armed (hovered over).
      Parameters:
      show - Whether to show an armed fold's range.
      See Also:
    • setShowCollapsedRegionToolTips

      public void setShowCollapsedRegionToolTips(boolean show)
      Toggles whether tool tips should be displayed showing the contents of collapsed fold regions when the mouse hovers over a +/- icon.
      Parameters:
      show - Whether to show these tool tips.
      See Also:
    • setTextArea

      public void setTextArea(RTextArea textArea)
      Overridden so we can track when code folding is enabled/disabled.
      Parameters:
      textArea - The text area.
    • addNotify

      public void addNotify()
      Overrides:
      addNotify in class JComponent
    • getChildViewBounds

      protected static Rectangle getChildViewBounds(View parent, int line, Rectangle editorRect)
      Returns the bounds of a child view as a rectangle, since Views tend to use Shape.
      Parameters:
      parent - The parent view of the child whose bounds we're getting.
      line - The index of the child view.
      editorRect - Returned from the text area's getVisibleEditorRect method.
      Returns:
      The child view's bounds.
    • getGutter

      protected Gutter getGutter()
      Returns the parent Gutter component.
      Returns:
      The parent Gutter.
    • removeNotify

      public void removeNotify()
      Overrides:
      removeNotify in class JComponent