Package 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.AbstractGutterComponent
org.fife.ui.rtextarea.FoldIndicator
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,Accessible
Component in the gutter that displays +/- icons to expand and collapse
fold regions in the editor.
- Version:
- 1.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate class
Updates the alpha used for this component's "collapsed" fold icons, if necessary.private class
Listens for events in this component.Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
Optional additional left margin.private static final float
private FoldIndicator.AlphaRunnable
Used to update the collapsed fold icons' alpha value on a timer.private Color
The color used for the foreground of armed folds.private static final int
private FoldIndicatorIcon
The icon used for collapsed folds.private float
The alpha used for "collapsed" fold icons.static final Color
The default color used to paint the "inside" of fold icons.static final Color
The color used to paint fold outlines.private FoldIndicatorIcon
The icon used for expanded folds.private ExpandedFoldRenderStrategy
The strategy to use when rendering expanded folds.private Color
The color to use for armed fold icon backgrounds, if the default icons are used.private Color
The color to use for fold icon backgrounds, if the default icons are used.private Fold
The fold to show the outline line for.private FoldIndicator.Listener
Listens for events in this component.private boolean
Used while painting; global flag to denote whether the mouse is over a fold indicator.private boolean
Used while painting; global flag to denote whether the currently-being-painted fold should be rendered as armed.private boolean
Whether the range of lines covered by an expanded, armed fold icon should be visually shown.private boolean
Whether tool tips are displayed showing the contents of collapsed fold regions.private Insets
Used inpaintComponent(Graphics)
to prevent reallocation on each paint.private Timer
The timer used to update collapsed fold icons' alpha.private Rectangle
Used inpaintComponent(Graphics)
to prevent reallocation on each paint.Fields inherited from class org.fife.ui.rtextarea.AbstractGutterComponent
currentLineCount, textArea
Fields inherited from class javax.swing.JComponent
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
accessibleContext, 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, WIDTH
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionOverridden 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.private Fold
int
Returns the amount of additional size to give the left margin of this component.Returns the foreground color used for armed folds.Returns the strategy to use for rendering expanded folds.Returns the color to use for the "background" of armed fold icons.Returns the color to use for the "background" of fold icons.private boolean
Returns whether to paint expanded folds.boolean
Returns whether a line should be drawn to show the range of lines contained in an expanded fold when it is armed (hovered over).boolean
Returns whether tool tips are displayed showing the contents of collapsed fold regions when the mouse hovers over a +/- icon.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.Overridden to show the content of a collapsed fold on mouse-overs.(package private) void
gutterArmedUpdate
(boolean armed) (package private) void
Called when text is inserted to or removed from the text area.protected void
init()
Called by the constructor before the text area is set.(package private) void
Called when the line heights of the text area change.protected void
private void
Paints folding icons when line wrapping is enabled.private void
paintIcon
(FoldIndicatorIcon icon, Graphics g, int x, int y, boolean collapsed) private int
rowAtPoint
(Point p) void
setAdditionalLeftMargin
(int leftMargin) Adds to the amount of additional size to give the left margin of this component.void
Sets the foreground color used for armed folds.private void
setCollapsedFoldIconAlpha
(float collapsedFoldIconAlpha) void
Sets the strategy to use for rendering expanded folds.void
Sets the color to use for the "background" of armed fold icons.void
Sets the color to use for the "background" of fold icons.void
setFoldIcons
(FoldIndicatorIcon collapsedIcon, FoldIndicatorIcon expandedIcon) Sets the icons to use to represent collapsed and expanded folds.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).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.(package private) void
setStyle
(FoldIndicatorStyle style) Toggles the presentation of this component.void
setTextArea
(RTextArea textArea) Overridden so we can track when code folding is enabled/disabled.Methods inherited from class org.fife.ui.rtextarea.AbstractGutterComponent
addNotify, getChildViewBounds, getGutter, removeNotify
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
Methods inherited from class javax.swing.JComponent
addAncestorListener, 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, 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, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
textAreaInsets
Used inpaintComponent(Graphics)
to prevent reallocation on each paint. -
visibleRect
Used inpaintComponent(Graphics)
to prevent reallocation on each paint. -
foldWithOutlineShowing
The fold to show the outline line for. -
armedForeground
The color used for the foreground of armed folds. -
foldIconBackground
The color to use for fold icon backgrounds, if the default icons are used. -
foldIconArmedBackground
The color to use for armed fold icon backgrounds, if the default icons are used. This may benull
. -
collapsedFoldIcon
The icon used for collapsed folds. -
expandedFoldIcon
The icon used for expanded folds. -
mouseOverFoldIcon
private boolean mouseOverFoldIconUsed while painting; global flag to denote whether the mouse is over a fold indicator. -
paintFoldArmed
private boolean paintFoldArmedUsed while painting; global flag to denote whether the currently-being-painted fold should be rendered as armed. -
showFoldRegionTips
private boolean showFoldRegionTipsWhether tool tips are displayed showing the contents of collapsed fold regions. -
showArmedFoldRange
private boolean showArmedFoldRangeWhether the range of lines covered by an expanded, armed fold icon should be visually shown. -
additionalLeftMargin
private int additionalLeftMarginOptional additional left margin. -
expandedFoldRenderStrategy
The strategy to use when rendering expanded folds. -
DEFAULT_FOREGROUND
The color used to paint fold outlines. -
DEFAULT_FOLD_BACKGROUND
The default color used to paint the "inside" of fold icons. -
collapsedFoldIconAlpha
private float collapsedFoldIconAlphaThe alpha used for "collapsed" fold icons. -
alphaRunnable
Used to update the collapsed fold icons' alpha value on a timer. -
timer
The timer used to update collapsed fold icons' alpha. -
listener
Listens for events in this component. -
COLLAPSED_FOLD_ALPHA_DELAY_MILLIS
private static final int COLLAPSED_FOLD_ALPHA_DELAY_MILLIS- See Also:
-
ALPHA_DELTA
private static final float ALPHA_DELTA- See Also:
-
-
Constructor Details
-
FoldIndicator
-
-
Method Details
-
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 classJComponent
- 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:
-
findOpenFoldClosestTo
-
getArmedForeground
Returns the foreground color used for armed folds.- Returns:
- The foreground color used for armed folds.
- See Also:
-
getExpandedFoldRenderStrategy
Returns the strategy to use for rendering expanded folds.- Returns:
- The strategy to use for rendering expanded folds.
- See Also:
-
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
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:
-
getPaintExpandedFolds
private boolean getPaintExpandedFolds()Returns whether to paint expanded folds.- Returns:
- Whether to paint expanded folds.
-
getPreferredSize
- Overrides:
getPreferredSize
in classJComponent
-
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
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 classJComponent
- Parameters:
e
- The mouse location.
-
getToolTipText
Overridden to show the content of a collapsed fold on mouse-overs.- Overrides:
getToolTipText
in classJComponent
- Parameters:
e
- The mouse location.
-
gutterArmedUpdate
void gutterArmedUpdate(boolean armed) -
handleDocumentEvent
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 classAbstractGutterComponent
- Parameters:
e
- The document event.
-
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 classAbstractGutterComponent
-
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 classAbstractGutterComponent
-
paintComponent
- Overrides:
paintComponent
in classJComponent
-
paintComponentWrapped
Paints folding icons when line wrapping is enabled.- Parameters:
g
- The graphics context.
-
paintIcon
-
rowAtPoint
-
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
Sets the foreground color used for armed folds.- Parameters:
fg
- The new armed fold foreground.- See Also:
-
setCollapsedFoldIconAlpha
private void setCollapsedFoldIconAlpha(float collapsedFoldIconAlpha) -
setExpandedFoldRenderStrategy
Sets the strategy to use for rendering expanded folds.- Parameters:
strategy
- The strategy to use. This cannot benull
.- See Also:
-
setFoldIconArmedBackground
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. Ifnull
is passed in, there will be no special color for armed fold icons.- See Also:
-
setFoldIconBackground
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 benull
.- See Also:
-
setFoldIcons
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 viasetStyle(FoldIndicatorStyle)
.- Parameters:
collapsedIcon
- The collapsed fold icon. This cannot benull
.expandedIcon
- The expanded fold icon. This cannot benull
.- See Also:
-
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:
-
setStyle
Toggles the presentation of this component. This method sets the icons used for fold regions to default values, amongst other configuration. To further customize these icons, seesetFoldIcons(FoldIndicatorIcon, FoldIndicatorIcon)
.- Parameters:
style
- The new presentation style.- See Also:
-
setTextArea
Overridden so we can track when code folding is enabled/disabled.- Overrides:
setTextArea
in classAbstractGutterComponent
- Parameters:
textArea
- The text area.
-