Package org.fife.ui.rtextarea
Class IconRowHeader
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
org.fife.ui.rtextarea.AbstractGutterComponent
org.fife.ui.rtextarea.IconRowHeader
- All Implemented Interfaces:
MouseListener
,ImageObserver
,MenuContainer
,Serializable
,EventListener
,Accessible
- Direct Known Subclasses:
FoldingAwareIconRowHeader
Renders icons in the
Gutter
. This can be used to visually mark
lines containing syntax errors, lines with breakpoints set on them, etc.
This component has built-in support for displaying icons representing
"bookmarks;" that is, lines a user can cycle through via F2 and Shift+F2.
Bookmarked lines are toggled via Ctrl+F2, or by clicking in the icon area
at the line to bookmark. In order to enable bookmarking, you must first
assign an icon to represent a bookmarked line, then actually enable the
feature. This is actually done on the parent Gutter
component:
Gutter gutter = scrollPane.getGutter(); gutter.setBookmarkIcon(new ImageIcon("bookmark.png")); gutter.setBookmarkingEnabled(true);
- Version:
- 1.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
Implementation of the icons rendered.Nested classes/interfaces inherited from class org.fife.ui.rtextarea.AbstractGutterComponent
AbstractGutterComponent.Listener
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 Color
The color used to highlight the active code block.protected int
The end line in the active line range.protected int
The first line in the active line range.private Icon
The icon to use for bookmarks.private boolean
Whether this component listens for mouse clicks and toggles "bookmark" icons on them.private boolean
Whether this component should use the gutter's background color (as opposed to using a LookAndFeel-dependent color, which is the default behavior).protected Insets
Used inpaintComponent(Graphics)
to prevent reallocation on each paint.protected List
<IconRowHeader.GutterIconImpl> The icons to render.protected Rectangle
Used inpaintComponent(Graphics)
to prevent reallocation on each paint.protected int
The width of this component.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 TypeMethodDescriptionaddOffsetTrackingIcon
(int offs, Icon icon) Adds an icon that tracks an offset in the document, and is displayed adjacent to the line numbers.addOffsetTrackingIcon
(int offs, Icon icon, String tip) Adds an icon that tracks an offset in the document, and is displayed adjacent to the line numbers.void
Clears the active line range.Returns the color used to paint the active line range, if any.Returns the icon to use for bookmarks.Returns the bookmarks known to this gutter.Overridden to display the tool tip of any icons on this line.protected IconRowHeader.GutterIconImpl
getTrackingIcon
(int index) getTrackingIcons
(int line) Returns the tracking icons at the specified line.(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.boolean
Returns whether bookmarking is enabled.(package private) void
Called when the line heights of the text area change.void
void
void
void
void
protected void
paintBackgroundImpl
(Graphics g, Rectangle visibleRect) Paints the background of this component.protected void
private void
Paints icons when line wrapping is enabled.void
Removes all tracking icons.private void
Removes all bookmark tracking icons.void
Removes the specified tracking icon.void
setActiveLineRange
(int startLine, int endLine) Highlights a range of lines in the icon area.void
setActiveLineRangeColor
(Color color) Sets the color to use to render active line ranges.void
setBookmarkIcon
(Icon icon) Sets the icon to use for bookmarks.void
setBookmarkingEnabled
(boolean enabled) Sets whether bookmarking is enabled.void
setInheritsGutterBackground
(boolean inherits) Sets whether the icon area inherits the gutter background (as opposed to painting with its own, default "panel" color, which is the default).void
setTextArea
(RTextArea textArea) Sets the text area being displayed.boolean
toggleBookmark
(int line) Programmatically toggles whether there is a bookmark for the specified line.private void
Sets our background color to that of standard "panels" in this LookAndFeel.void
updateUI()
private int
Returns the line rendered at the specified location.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
Methods inherited from class javax.swing.JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, 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, getToolTipLocation, 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
-
trackingIcons
The icons to render. -
width
protected int widthThe width of this component. -
bookmarkingEnabled
private boolean bookmarkingEnabledWhether this component listens for mouse clicks and toggles "bookmark" icons on them. -
bookmarkIcon
The icon to use for bookmarks. -
visibleRect
Used inpaintComponent(Graphics)
to prevent reallocation on each paint. -
textAreaInsets
Used inpaintComponent(Graphics)
to prevent reallocation on each paint. -
activeLineRangeStart
protected int activeLineRangeStartThe first line in the active line range. -
activeLineRangeEnd
protected int activeLineRangeEndThe end line in the active line range. -
activeLineRangeColor
The color used to highlight the active code block. -
inheritsGutterBackground
private boolean inheritsGutterBackgroundWhether this component should use the gutter's background color (as opposed to using a LookAndFeel-dependent color, which is the default behavior).
-
-
Constructor Details
-
IconRowHeader
Constructor.- Parameters:
textArea
- The parent text area.
-
-
Method Details
-
addOffsetTrackingIcon
Adds an icon that tracks an offset in the document, and is displayed adjacent to the line numbers. This is useful for marking things such as source code errors.- Parameters:
offs
- The offset to track.icon
- The icon to display. This should be small (say 16x16).- Returns:
- A tag for this icon.
- Throws:
BadLocationException
- Ifoffs
is an invalid offset into the text area.- See Also:
-
addOffsetTrackingIcon
public GutterIconInfo addOffsetTrackingIcon(int offs, Icon icon, String tip) throws BadLocationException Adds an icon that tracks an offset in the document, and is displayed adjacent to the line numbers. This is useful for marking things such as source code errors.- Parameters:
offs
- The offset to track.icon
- The icon to display. This should be small (say 16x16).tip
- A tool tip for the icon.- Returns:
- A tag for this icon.
- Throws:
BadLocationException
- Ifoffs
is an invalid offset into the text area.- See Also:
-
clearActiveLineRange
public void clearActiveLineRange()Clears the active line range.- See Also:
-
getActiveLineRangeColor
Returns the color used to paint the active line range, if any.- Returns:
- The color.
- See Also:
-
getBookmarkIcon
Returns the icon to use for bookmarks.- Returns:
- The icon to use for bookmarks. If this is
null
, bookmarking is effectively disabled. - See Also:
-
getBookmarks
Returns the bookmarks known to this gutter.- Returns:
- The bookmarks. If there are no bookmarks, an empty array is returned.
-
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.
-
getPreferredSize
- Overrides:
getPreferredSize
in classJComponent
-
getToolTipText
Overridden to display the tool tip of any icons on this line.- Overrides:
getToolTipText
in classJComponent
- Parameters:
e
- The location the mouse is hovering over.
-
getTrackingIcon
-
getTrackingIcons
Returns the tracking icons at the specified line.- Parameters:
line
- The line.- Returns:
- The tracking icons at that line. If there are no tracking icons there, this will be an empty array.
- Throws:
BadLocationException
- Ifline
is invalid.
-
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
-
isBookmarkingEnabled
public boolean isBookmarkingEnabled()Returns whether bookmarking is enabled.- Returns:
- Whether bookmarking is enabled.
- See Also:
-
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
-
mouseClicked
- Specified by:
mouseClicked
in interfaceMouseListener
-
mouseEntered
- Specified by:
mouseEntered
in interfaceMouseListener
-
mouseExited
- Specified by:
mouseExited
in interfaceMouseListener
-
mousePressed
- Specified by:
mousePressed
in interfaceMouseListener
-
mouseReleased
- Specified by:
mouseReleased
in interfaceMouseListener
-
paintComponent
- Overrides:
paintComponent
in classJComponent
-
paintBackgroundImpl
Paints the background of this component.- Parameters:
g
- The graphics context.visibleRect
- The visible bounds of this component.
-
paintComponentWrapped
Paints icons when line wrapping is enabled.- Parameters:
g
- The graphics context.
-
removeTrackingIcon
Removes the specified tracking icon.- Parameters:
tag
- A tag for a tracking icon.- See Also:
-
removeAllTrackingIcons
public void removeAllTrackingIcons()Removes all tracking icons.- See Also:
-
removeBookmarkTrackingIcons
private void removeBookmarkTrackingIcons()Removes all bookmark tracking icons. -
setActiveLineRange
public void setActiveLineRange(int startLine, int endLine) Highlights a range of lines in the icon area.- Parameters:
startLine
- The start of the line range.endLine
- The end of the line range.- See Also:
-
setActiveLineRangeColor
Sets the color to use to render active line ranges.- Parameters:
color
- The color to use. If this is null, then the default color is used.- See Also:
-
setBookmarkIcon
Sets the icon to use for bookmarks. Any previous bookmark icons are removed.- Parameters:
icon
- The new bookmark icon. If this isnull
, bookmarking is effectively disabled.- See Also:
-
setBookmarkingEnabled
public void setBookmarkingEnabled(boolean enabled) Sets whether bookmarking is enabled. Note that a bookmarking icon must be set viasetBookmarkIcon(Icon)
before bookmarks are truly enabled.- Parameters:
enabled
- Whether bookmarking is enabled. If this isfalse
, any bookmark icons are removed.- See Also:
-
setInheritsGutterBackground
public void setInheritsGutterBackground(boolean inherits) Sets whether the icon area inherits the gutter background (as opposed to painting with its own, default "panel" color, which is the default).- Parameters:
inherits
- Whether the gutter background should be used in the icon row header. If this isfalse
, a default, Look-and-feel-dependent color is used.
-
setTextArea
Sets the text area being displayed. This will clear any tracking icons currently displayed.- Overrides:
setTextArea
in classAbstractGutterComponent
- Parameters:
textArea
- The text area.
-
toggleBookmark
Programmatically toggles whether there is a bookmark for the specified line. If bookmarking is not enabled, this method does nothing.- Parameters:
line
- The line.- Returns:
- Whether a bookmark is now at the specified line.
- Throws:
BadLocationException
- Ifline
is an invalid line number in the text area.
-
updateBackground
private void updateBackground()Sets our background color to that of standard "panels" in this LookAndFeel. This is necessary because, otherwise, we'd inherit the background color of our parent component (the Gutter). -
updateUI
public void updateUI() -
viewToModelLine
Returns the line rendered at the specified location.- Parameters:
p
- The location in this row header.- Returns:
- The corresponding line in the editor.
- Throws:
BadLocationException
- ble If an error occurs.
-