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 classFoldIndicator.AlphaRunnableUpdates the alpha used for this component's "collapsed" fold icons, if necessary.private classFoldIndicator.ListenerListens 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 intadditionalLeftMarginOptional additional left margin.private static floatALPHA_DELTAprivate FoldIndicator.AlphaRunnablealphaRunnableUsed to update the collapsed fold icons' alpha value on a timer.private java.awt.ColorarmedForegroundThe color used for the foreground of armed folds.private static intCOLLAPSED_FOLD_ALPHA_DELAY_MILLISprivate FoldIndicatorIconcollapsedFoldIconThe icon used for collapsed folds.private floatcollapsedFoldIconAlphaThe alpha used for "collapsed" fold icons.static java.awt.ColorDEFAULT_FOLD_BACKGROUNDThe default color used to paint the "inside" of fold icons.static java.awt.ColorDEFAULT_FOREGROUNDThe color used to paint fold outlines.private FoldIndicatorIconexpandedFoldIconThe icon used for expanded folds.private ExpandedFoldRenderStrategyexpandedFoldRenderStrategyThe strategy to use when rendering expanded folds.private java.awt.ColorfoldIconArmedBackgroundThe color to use for armed fold icon backgrounds, if the default icons are used.private java.awt.ColorfoldIconBackgroundThe color to use for fold icon backgrounds, if the default icons are used.private FoldfoldWithOutlineShowingThe fold to show the outline line for.private FoldIndicator.ListenerlistenerListens for events in this component.private booleanmouseOverFoldIconUsed while painting; global flag to denote whether the mouse is over a fold indicator.private booleanpaintFoldArmedUsed while painting; global flag to denote whether the currently-being-painted fold should be rendered as armed.private booleanshowArmedFoldRangeWhether the range of lines covered by an expanded, armed fold icon should be visually shown.private booleanshowFoldRegionTipsWhether tool tips are displayed showing the contents of collapsed fold regions.private java.awt.InsetstextAreaInsetsUsed inpaintComponent(Graphics)to prevent reallocation on each paint.private javax.swing.TimertimerThe timer used to update collapsed fold icons' alpha.private java.awt.RectanglevisibleRectUsed 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.JToolTipcreateToolTip()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 FoldfindOpenFoldClosestTo(java.awt.Point p)intgetAdditionalLeftMargin()Returns the amount of additional size to give the left margin of this component.java.awt.ColorgetArmedForeground()Returns the foreground color used for armed folds.ExpandedFoldRenderStrategygetExpandedFoldRenderStrategy()Returns the strategy to use for rendering expanded folds.java.awt.ColorgetFoldIconArmedBackground()Returns the color to use for the "background" of armed fold icons.java.awt.ColorgetFoldIconBackground()Returns the color to use for the "background" of fold icons.private booleangetPaintExpandedFolds()Returns whether to paint expanded folds.java.awt.DimensiongetPreferredSize()booleangetShowArmedFoldRange()Returns whether a line should be drawn to show the range of lines contained in an expanded fold when it is armed (hovered over).booleangetShowCollapsedRegionToolTips()Returns whether tool tips are displayed showing the contents of collapsed fold regions when the mouse hovers over a +/- icon.java.awt.PointgetToolTipLocation(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.StringgetToolTipText(java.awt.event.MouseEvent e)Overridden to show the content of a collapsed fold on mouse-overs.(package private) voidgutterArmedUpdate(boolean armed)(package private) voidhandleDocumentEvent(javax.swing.event.DocumentEvent e)Called when text is inserted to or removed from the text area.protected voidinit()Called by the constructor before the text area is set.(package private) voidlineHeightsChanged()Called when the line heights of the text area change.protected voidpaintComponent(java.awt.Graphics g)private voidpaintComponentWrapped(java.awt.Graphics g)Paints folding icons when line wrapping is enabled.private voidpaintIcon(FoldIndicatorIcon icon, java.awt.Graphics g, int x, int y, boolean collapsed)private introwAtPoint(java.awt.Point p)voidsetAdditionalLeftMargin(int leftMargin)Adds to the amount of additional size to give the left margin of this component.voidsetArmedForeground(java.awt.Color fg)Sets the foreground color used for armed folds.private voidsetCollapsedFoldIconAlpha(float collapsedFoldIconAlpha)voidsetExpandedFoldRenderStrategy(ExpandedFoldRenderStrategy strategy)Sets the strategy to use for rendering expanded folds.voidsetFoldIconArmedBackground(java.awt.Color bg)Sets the color to use for the "background" of armed fold icons.voidsetFoldIconBackground(java.awt.Color bg)Sets the color to use for the "background" of fold icons.voidsetFoldIcons(FoldIndicatorIcon collapsedIcon, FoldIndicatorIcon expandedIcon)Sets the icons to use to represent collapsed and expanded folds.voidsetShowArmedFoldRange(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).voidsetShowCollapsedRegionToolTips(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) voidsetStyle(FoldIndicatorStyle style)Toggles the presentation of this component.voidsetTextArea(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:
createToolTipin 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:
getPreferredSizein 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:
getToolTipLocationin 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:
getToolTipTextin 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:AbstractGutterComponentCalled when text is inserted to or removed from the text area. Implementations can take this opportunity to repaint, revalidate, etc.- Specified by:
handleDocumentEventin classAbstractGutterComponent- Parameters:
e- The document event.
-
init
protected void init()
Description copied from class:AbstractGutterComponentCalled 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:
initin classAbstractGutterComponent
-
lineHeightsChanged
void lineHeightsChanged()
Description copied from class:AbstractGutterComponentCalled 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:
lineHeightsChangedin classAbstractGutterComponent
-
paintComponent
protected void paintComponent(java.awt.Graphics g)
- Overrides:
paintComponentin 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. Ifnullis 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:
setTextAreain classAbstractGutterComponent- Parameters:
textArea- The text area.
-
-