FoldIndicator
Date: 2017-02-11

org.fife.ui.rtextarea

## Class FoldIndicator

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.JPanel
        - - org.fife.ui.rtextarea.FoldIndicator

- All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

      public class FoldIndicator
      extends javax.swing.JPanel

  Component in the gutter that displays +/- icons to expand and collapse fold regions in the editor.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class javax.swing.JPanel

      `javax.swing.JPanel.AccessibleJPanel`

    - ### Nested classes/interfaces inherited from class javax.swing.JComponent

      `javax.swing.JComponent.AccessibleJComponent`

    - ### Nested classes/interfaces inherited from class java.awt.Container

      `java.awt.Container.AccessibleAWTContainer`

    - ### Nested classes/interfaces inherited from class java.awt.Component

      `java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `currentLineCount` The number of lines in the text area.
    `protected RTextArea` | `textArea` The text area whose lines we are marking with icons.

    - ### Fields inherited from class javax.swing.JComponent

      `accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

    - ### Fields inherited from class java.awt.Component

      `BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

    - ### Fields inherited from interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FoldIndicator(RTextArea textArea)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `javax.swing.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.
    `protected static java.awt.Rectangle` | `getChildViewBounds(javax.swing.text.View parent, int line, java.awt.Rectangle editorRect)` Returns the bounds of a child view as a rectangle, since `View`s tend to use `Shape`.
    `java.awt.Color` | `getFoldIconBackground()` Returns the color to use for the "background" of fold icons.
    `protected Gutter` | `getGutter()` Returns the parent `Gutter` component.
    `java.awt.Dimension` | `getPreferredSize()`
    `boolean` | `getShowCollapsedRegionToolTips()` Returns whether tool tips are displayed showing the contents of collapsed fold regions when the mouse hovers over a +/- icon.
    `java.awt.Point` | `getToolTipLocation(java.awt.event.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.
    `java.lang.String` | `getToolTipText(java.awt.event.MouseEvent e)` Overridden to show the content of a collapsed fold on mouse-overs.
    `protected void` | `init()` Called by the constructor before the text area is set.
    `protected void` | `paintComponent(java.awt.Graphics g)`
    `void` | `setFoldIconBackground(java.awt.Color bg)` Sets the color to use for the "background" of fold icons.
    `void` | `setFoldIcons(javax.swing.Icon collapsedIcon, javax.swing.Icon expandedIcon)` Sets the icons to use to represent collapsed and expanded folds.
    `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.
    `void` | `setTextArea(RTextArea textArea)` Overridden so we can track when code folding is enabled/disabled.

    - ### Methods inherited from class javax.swing.JPanel

      `getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI`

    - ### Methods inherited from class javax.swing.JComponent

      `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

    - ### Methods inherited from class java.awt.Container

      `add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree`

    - ### Methods inherited from class java.awt.Component

      `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### 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 Detail

    - #### FoldIndicator

          public FoldIndicator(RTextArea textArea)

  - ### Method Detail

    - #### createToolTip

          public javax.swing.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 `javax.swing.JComponent`
      Returns:
        The tool tip.

    - #### getFoldIconBackground

          public java.awt.Color getFoldIconBackground()

      Returns the color to use for the "background" of fold icons. This is be ignored if custom icons are used.
      Returns:
        The background color.
      See Also:
        `setFoldIconBackground(Color)`

    - #### getPreferredSize

          public java.awt.Dimension getPreferredSize()

      Overrides:
        `getPreferredSize` in class `javax.swing.JComponent`

    - #### 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:
        `setShowCollapsedRegionToolTips(boolean)`

    - #### getToolTipLocation

          public java.awt.Point getToolTipLocation(java.awt.event.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 `javax.swing.JComponent`
      Parameters:
        `e` - The mouse location.

    - #### getToolTipText

          public java.lang.String getToolTipText(java.awt.event.MouseEvent e)

      Overridden to show the content of a collapsed fold on mouse-overs.
      Overrides:
        `getToolTipText` in class `javax.swing.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(java.awt.Graphics g)

      Overrides:
        `paintComponent` in class `javax.swing.JComponent`

    - #### setFoldIconBackground

          public void setFoldIconBackground(java.awt.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.
      See Also:
        `getFoldIconBackground()`

    - #### setFoldIcons

          public void setFoldIcons(javax.swing.Icon collapsedIcon,
                          javax.swing.Icon expandedIcon)

      Sets the icons to use to represent collapsed and expanded folds.
      Parameters:
        `collapsedIcon` - The collapsed fold icon. This cannot be `null`.
        `expandedIcon` - The expanded fold icon. This cannot be `null`.

    - #### 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:
        `getShowCollapsedRegionToolTips()`

    - #### setTextArea

          public void setTextArea(RTextArea textArea)

      Overridden so we can track when code folding is enabled/disabled.
      Parameters:
        `textArea` - The text area.

    - #### getChildViewBounds

          protected static final java.awt.Rectangle getChildViewBounds(javax.swing.text.View parent,
                                              int line,
                                              java.awt.Rectangle editorRect)

      Returns the bounds of a child view as a rectangle, since `View`s 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`.