Class IconRowHeader
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
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
- Author:
- Robert Futrell
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intThe end line in the active line range.protected intThe first line in the active line range.protected intThe number of lines in the text area.protected RTextAreaThe text area whose lines we are marking with icons.protected InsetsUsed inpaintComponent(Graphics)to prevent reallocation on each paint.protected List<org.fife.ui.rtextarea.IconRowHeader.GutterIconImpl> The icons to render.protected RectangleUsed inpaintComponent(Graphics)to prevent reallocation on each paint.protected intThe width of this component.Fields inherited from class JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddOffsetTrackingIcon(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.voidClears 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.protected static RectanglegetChildViewBounds(View parent, int line, Rectangle editorRect) Returns the bounds of a child view as a rectangle, sinceViews tend to useShape.protected GutterReturns the parentGuttercomponent.Overridden to display the tool tip of any icons on this line.protected org.fife.ui.rtextarea.IconRowHeader.GutterIconImplgetTrackingIcon(int index) getTrackingIcons(int line) Returns the tracking icons at the specified line.protected voidinit()Called by the constructor before the text area is set.booleanReturns whether bookmarking is enabled.voidvoidvoidvoidvoidprotected voidpaintBackgroundImpl(Graphics g, Rectangle visibleRect) Paints the background of this component.protected voidvoidRemoves all tracking icons.voidvoidRemoves the specified tracking icon.voidsetActiveLineRange(int startLine, int endLine) Highlights a range of lines in the icon area.voidsetActiveLineRangeColor(Color color) Sets the color to use to render active line ranges.voidsetBookmarkIcon(Icon icon) Sets the icon to use for bookmarks.voidsetBookmarkingEnabled(boolean enabled) Sets whether bookmarking is enabled.voidsetInheritsGutterBackground(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).voidsetTextArea(RTextArea textArea) Sets the text area being displayed.booleantoggleBookmark(int line) Programmatically toggles whether there is a bookmark for the specified line.voidupdateUI()Methods inherited from class JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUIMethods inherited from class 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, updateMethods inherited from class 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, validateTreeMethods inherited from class 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. -
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. -
textArea
The text area whose lines we are marking with icons. -
currentLineCount
protected int currentLineCountThe number of lines in the text area.
-
-
Constructor Details
-
IconRowHeader
-
-
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- Ifoffsis 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- Ifoffsis 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.
-
getPreferredSize
- Overrides:
getPreferredSizein classJComponent
-
getToolTipText
Overridden to display the tool tip of any icons on this line.- Overrides:
getToolTipTextin classJComponent- Parameters:
e- The location the mouse is hovering over.
-
getTrackingIcon
protected org.fife.ui.rtextarea.IconRowHeader.GutterIconImpl getTrackingIcon(int index) -
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- Iflineis invalid.
-
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. -
isBookmarkingEnabled
public boolean isBookmarkingEnabled()Returns whether bookmarking is enabled.- Returns:
- Whether bookmarking is enabled.
- See Also:
-
mouseClicked
- Specified by:
mouseClickedin interfaceMouseListener
-
mouseEntered
- Specified by:
mouseEnteredin interfaceMouseListener
-
mouseExited
- Specified by:
mouseExitedin interfaceMouseListener
-
mousePressed
- Specified by:
mousePressedin interfaceMouseListener
-
mouseReleased
- Specified by:
mouseReleasedin interfaceMouseListener
-
paintComponent
- Overrides:
paintComponentin classJComponent
-
paintBackgroundImpl
-
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:
-
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.- 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- Iflineis an invalid line number in the text area.
-
updateUI
-
addNotify
public void addNotify()- Overrides:
addNotifyin classJComponent
-
getChildViewBounds
Returns the bounds of a child view as a rectangle, sinceViews tend to useShape.- 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'sgetVisibleEditorRectmethod.- Returns:
- The child view's bounds.
-
getGutter
-
removeNotify
public void removeNotify()- Overrides:
removeNotifyin classJComponent
-