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:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
public class FoldIndicator extends AbstractGutterComponent
Component in the gutter that displays +/- icons to expand and collapse fold regions in the editor.- Version:
- 1.0
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
FoldIndicator.AlphaRunnable
Updates the alpha used for this component's "collapsed" fold icons, if necessary.private class
FoldIndicator.Listener
Listens for events in this component.-
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
-
-
Field Summary
Fields Modifier and Type Field Description private int
additionalLeftMargin
Optional additional left margin.private static float
ALPHA_DELTA
private FoldIndicator.AlphaRunnable
alphaRunnable
Used to update the collapsed fold icons' alpha value on a timer.private java.awt.Color
armedForeground
The color used for the foreground of armed folds.private static int
COLLAPSED_FOLD_ALPHA_DELAY_MILLIS
private FoldIndicatorIcon
collapsedFoldIcon
The icon used for collapsed folds.private float
collapsedFoldIconAlpha
The alpha used for "collapsed" fold icons.static java.awt.Color
DEFAULT_FOLD_BACKGROUND
The default color used to paint the "inside" of fold icons.static java.awt.Color
DEFAULT_FOREGROUND
The color used to paint fold outlines.private FoldIndicatorIcon
expandedFoldIcon
The icon used for expanded folds.private ExpandedFoldRenderStrategy
expandedFoldRenderStrategy
The strategy to use when rendering expanded folds.private java.awt.Color
foldIconArmedBackground
The color to use for armed fold icon backgrounds, if the default icons are used.private java.awt.Color
foldIconBackground
The color to use for fold icon backgrounds, if the default icons are used.private Fold
foldWithOutlineShowing
The fold to show the outline line for.private FoldIndicator.Listener
listener
Listens for events in this component.private boolean
mouseOverFoldIcon
Used while painting; global flag to denote whether the mouse is over a fold indicator.private boolean
paintFoldArmed
Used while painting; global flag to denote whether the currently-being-painted fold should be rendered as armed.private boolean
showArmedFoldRange
Whether the range of lines covered by an expanded, armed fold icon should be visually shown.private boolean
showFoldRegionTips
Whether tool tips are displayed showing the contents of collapsed fold regions.private java.awt.Insets
textAreaInsets
Used inpaintComponent(Graphics)
to prevent reallocation on each paint.private javax.swing.Timer
timer
The timer used to update collapsed fold icons' alpha.private java.awt.Rectangle
visibleRect
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
-
-
Constructor Summary
Constructors Constructor Description FoldIndicator(RTextArea textArea)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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.private Fold
findOpenFoldClosestTo(java.awt.Point p)
int
getAdditionalLeftMargin()
Returns the amount of additional size to give the left margin of this component.java.awt.Color
getArmedForeground()
Returns the foreground color used for armed folds.ExpandedFoldRenderStrategy
getExpandedFoldRenderStrategy()
Returns the strategy to use for rendering expanded folds.java.awt.Color
getFoldIconArmedBackground()
Returns the color to use for the "background" of armed fold icons.java.awt.Color
getFoldIconBackground()
Returns the color to use for the "background" of fold icons.private boolean
getPaintExpandedFolds()
Returns whether to paint expanded folds.java.awt.Dimension
getPreferredSize()
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).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.(package private) void
gutterArmedUpdate(boolean armed)
(package private) void
handleDocumentEvent(javax.swing.event.DocumentEvent e)
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
lineHeightsChanged()
Called when the line heights of the text area change.protected void
paintComponent(java.awt.Graphics g)
private void
paintComponentWrapped(java.awt.Graphics g)
Paints folding icons when line wrapping is enabled.private void
paintIcon(FoldIndicatorIcon icon, java.awt.Graphics g, int x, int y, boolean collapsed)
private int
rowAtPoint(java.awt.Point p)
void
setAdditionalLeftMargin(int leftMargin)
Adds to the amount of additional size to give the left margin of this component.void
setArmedForeground(java.awt.Color fg)
Sets the foreground color used for armed folds.private void
setCollapsedFoldIconAlpha(float collapsedFoldIconAlpha)
void
setExpandedFoldRenderStrategy(ExpandedFoldRenderStrategy strategy)
Sets the strategy to use for rendering expanded folds.void
setFoldIconArmedBackground(java.awt.Color bg)
Sets the color to use for the "background" of armed fold icons.void
setFoldIconBackground(java.awt.Color bg)
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 Detail
-
textAreaInsets
private java.awt.Insets textAreaInsets
Used inpaintComponent(Graphics)
to prevent reallocation on each paint.
-
visibleRect
private java.awt.Rectangle visibleRect
Used inpaintComponent(Graphics)
to prevent reallocation on each paint.
-
foldWithOutlineShowing
private Fold foldWithOutlineShowing
The fold to show the outline line for.
-
armedForeground
private java.awt.Color armedForeground
The color used for the foreground of armed folds.
-
foldIconBackground
private java.awt.Color foldIconBackground
The color to use for fold icon backgrounds, if the default icons are used.
-
foldIconArmedBackground
private java.awt.Color foldIconArmedBackground
The color to use for armed fold icon backgrounds, if the default icons are used. This may benull
.
-
collapsedFoldIcon
private FoldIndicatorIcon collapsedFoldIcon
The icon used for collapsed folds.
-
expandedFoldIcon
private FoldIndicatorIcon expandedFoldIcon
The icon used for expanded folds.
-
mouseOverFoldIcon
private boolean mouseOverFoldIcon
Used while painting; global flag to denote whether the mouse is over a fold indicator.
-
paintFoldArmed
private boolean paintFoldArmed
Used while painting; global flag to denote whether the currently-being-painted fold should be rendered as armed.
-
showFoldRegionTips
private boolean showFoldRegionTips
Whether tool tips are displayed showing the contents of collapsed fold regions.
-
showArmedFoldRange
private boolean showArmedFoldRange
Whether the range of lines covered by an expanded, armed fold icon should be visually shown.
-
additionalLeftMargin
private int additionalLeftMargin
Optional additional left margin.
-
expandedFoldRenderStrategy
private ExpandedFoldRenderStrategy expandedFoldRenderStrategy
The strategy to use when rendering expanded folds.
-
DEFAULT_FOREGROUND
public static final java.awt.Color DEFAULT_FOREGROUND
The color used to paint fold outlines.
-
DEFAULT_FOLD_BACKGROUND
public static final java.awt.Color DEFAULT_FOLD_BACKGROUND
The default color used to paint the "inside" of fold icons.
-
collapsedFoldIconAlpha
private float collapsedFoldIconAlpha
The alpha used for "collapsed" fold icons.
-
alphaRunnable
private FoldIndicator.AlphaRunnable alphaRunnable
Used to update the collapsed fold icons' alpha value on a timer.
-
timer
private javax.swing.Timer timer
The timer used to update collapsed fold icons' alpha.
-
listener
private FoldIndicator.Listener listener
Listens for events in this component.
-
COLLAPSED_FOLD_ALPHA_DELAY_MILLIS
private static final int COLLAPSED_FOLD_ALPHA_DELAY_MILLIS
- See Also:
- Constant Field Values
-
ALPHA_DELTA
private static final float ALPHA_DELTA
- See Also:
- Constant Field Values
-
-
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 classjavax.swing.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:
setAdditionalLeftMargin(int)
-
findOpenFoldClosestTo
private Fold findOpenFoldClosestTo(java.awt.Point p)
-
getArmedForeground
public java.awt.Color getArmedForeground()
Returns the foreground color used for armed folds.- Returns:
- The foreground color used for armed folds.
- See Also:
setArmedForeground(Color)
-
getExpandedFoldRenderStrategy
public ExpandedFoldRenderStrategy getExpandedFoldRenderStrategy()
Returns the strategy to use for rendering expanded folds.- Returns:
- The strategy to use for rendering expanded folds.
- See Also:
setExpandedFoldRenderStrategy(ExpandedFoldRenderStrategy)
-
getFoldIconArmedBackground
public java.awt.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:
setFoldIconArmedBackground(Color)
,getFoldIconBackground()
-
getFoldIconBackground
public java.awt.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:
setFoldIconBackground(Color)
,getFoldIconArmedBackground()
-
getPaintExpandedFolds
private boolean getPaintExpandedFolds()
Returns whether to paint expanded folds.- Returns:
- Whether to paint expanded folds.
-
getPreferredSize
public java.awt.Dimension getPreferredSize()
- Overrides:
getPreferredSize
in classjavax.swing.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:
setShowArmedFoldRange(boolean)
-
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 classjavax.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 classjavax.swing.JComponent
- Parameters:
e
- The mouse location.
-
gutterArmedUpdate
void gutterArmedUpdate(boolean armed)
-
handleDocumentEvent
void handleDocumentEvent(javax.swing.event.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 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
protected void paintComponent(java.awt.Graphics g)
- Overrides:
paintComponent
in classjavax.swing.JComponent
-
paintComponentWrapped
private void paintComponentWrapped(java.awt.Graphics g)
Paints folding icons when line wrapping is enabled.- Parameters:
g
- The graphics context.
-
paintIcon
private void paintIcon(FoldIndicatorIcon icon, java.awt.Graphics g, int x, int y, boolean collapsed)
-
rowAtPoint
private int rowAtPoint(java.awt.Point p)
-
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:
getAdditionalLeftMargin()
-
setArmedForeground
public void setArmedForeground(java.awt.Color fg)
Sets the foreground color used for armed folds.- Parameters:
fg
- The new armed fold foreground.- See Also:
getArmedForeground()
-
setCollapsedFoldIconAlpha
private void setCollapsedFoldIconAlpha(float collapsedFoldIconAlpha)
-
setExpandedFoldRenderStrategy
public void setExpandedFoldRenderStrategy(ExpandedFoldRenderStrategy strategy)
Sets the strategy to use for rendering expanded folds.- Parameters:
strategy
- The strategy to use. This cannot benull
.- See Also:
getExpandedFoldRenderStrategy()
-
setFoldIconArmedBackground
public void setFoldIconArmedBackground(java.awt.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. Ifnull
is passed in, there will be no special color for armed fold icons.- See Also:
getFoldIconArmedBackground()
,setFoldIconBackground(Color)
-
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. This should not benull
.- See Also:
getFoldIconBackground()
,setFoldIconArmedBackground(Color)
-
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 viasetStyle(FoldIndicatorStyle)
.- Parameters:
collapsedIcon
- The collapsed fold icon. This cannot benull
.expandedIcon
- The expanded fold icon. This cannot benull
.- 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:
getShowArmedFoldRange()
-
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()
-
setStyle
void setStyle(FoldIndicatorStyle style)
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:
setFoldIcons(FoldIndicatorIcon, FoldIndicatorIcon)
-
setTextArea
public void setTextArea(RTextArea textArea)
Overridden so we can track when code folding is enabled/disabled.- Overrides:
setTextArea
in classAbstractGutterComponent
- Parameters:
textArea
- The text area.
-
-