Class RTextScrollPane

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.ScrollPaneConstants

    public class RTextScrollPane
    extends javax.swing.JScrollPane
    An extension of JScrollPane that will only take RTextAreas (or javax.swing.JLayers decorating RTextAreas) for its view. This class has the ability to show:
    • Line numbers
    • Per-line icons (for bookmarks, debugging breakpoints, error markers, etc.)
    • +/- icons to denote code folding regions.
    The actual "meat" of these extras is contained in the Gutter class. Each RTextScrollPane has a Gutter instance that it uses as its row header. The gutter is only made visible when one of its features is being used (line numbering, folding, and/or icons).
    Version:
    1.0
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JScrollPane

        javax.swing.JScrollPane.AccessibleJScrollPane, javax.swing.JScrollPane.ScrollBar
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private Gutter gutter  
      • Fields inherited from class javax.swing.JScrollPane

        columnHeader, horizontalScrollBar, horizontalScrollBarPolicy, lowerLeft, lowerRight, rowHeader, upperLeft, upperRight, verticalScrollBar, verticalScrollBarPolicy, viewport
      • 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
      • Fields inherited from interface javax.swing.ScrollPaneConstants

        COLUMN_HEADER, HORIZONTAL_SCROLLBAR, HORIZONTAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_POLICY, LOWER_LEADING_CORNER, LOWER_LEFT_CORNER, LOWER_RIGHT_CORNER, LOWER_TRAILING_CORNER, ROW_HEADER, UPPER_LEADING_CORNER, UPPER_LEFT_CORNER, UPPER_RIGHT_CORNER, UPPER_TRAILING_CORNER, VERTICAL_SCROLLBAR, VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED, VERTICAL_SCROLLBAR_NEVER, VERTICAL_SCROLLBAR_POLICY, VIEWPORT
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private void checkGutterVisibility()
      Ensures the gutter is visible if it's showing anything.
      private static RTextArea getFirstRTextAreaDescendant​(java.awt.Component comp)
      Returns the first descendant of a component that is an RTextArea.
      Gutter getGutter()
      Returns the gutter.
      boolean getLineNumbersEnabled()
      Returns true if the line numbers are enabled and visible.
      RTextArea getTextArea()
      Returns the text area being displayed.
      boolean isFoldIndicatorEnabled()
      Returns whether the fold indicator is enabled.
      boolean isIconRowHeaderEnabled()
      Returns whether the icon row header is enabled.
      void setFoldIndicatorEnabled​(boolean enabled)
      Toggles whether the fold indicator is enabled.
      void setIconRowHeaderEnabled​(boolean enabled)
      Toggles whether the icon row header (used for breakpoints, bookmarks, etc.) is enabled.
      void setLineNumbersEnabled​(boolean enabled)
      Toggles whether line numbers are visible.
      void setViewportView​(java.awt.Component view)
      Sets the view for this scroll pane.
      • Methods inherited from class javax.swing.JScrollPane

        createHorizontalScrollBar, createVerticalScrollBar, createViewport, getAccessibleContext, getColumnHeader, getCorner, getHorizontalScrollBar, getHorizontalScrollBarPolicy, getRowHeader, getUI, getUIClassID, getVerticalScrollBar, getVerticalScrollBarPolicy, getViewport, getViewportBorder, getViewportBorderBounds, isValidateRoot, isWheelScrollingEnabled, paramString, setColumnHeader, setColumnHeaderView, setComponentOrientation, setCorner, setHorizontalScrollBar, setHorizontalScrollBarPolicy, setLayout, setRowHeader, setRowHeaderView, setUI, setVerticalScrollBar, setVerticalScrollBarPolicy, setViewport, setViewportBorder, setWheelScrollingEnabled, updateUI
      • Methods inherited from class javax.swing.JComponent

        addAncestorListener, addNotify, 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, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, 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, 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, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • gutter

        private Gutter gutter
    • Constructor Detail

      • RTextScrollPane

        public RTextScrollPane()
        Constructor. If you use this constructor, you must call setViewportView(Component) and pass in an RTextArea for this scroll pane to render line numbers properly.
      • RTextScrollPane

        public RTextScrollPane​(RTextArea textArea)
        Creates a scroll pane. A default value will be used for line number color (gray), and the current line's line number will be highlighted.
        Parameters:
        textArea - The text area this scroll pane will contain.
      • RTextScrollPane

        public RTextScrollPane​(java.awt.Component comp)
        Creates a scroll pane. A default value will be used for line number color (gray), and the current line's line number will be highlighted.
        Parameters:
        comp - The component this scroll pane should display. This should be an instance of RTextArea, javax.swing.JLayer (or the older org.jdesktop.jxlayer.JXLayer), or null. If this argument is null, you must call setViewportView(Component), passing in an instance of one of the types above.
      • RTextScrollPane

        public RTextScrollPane​(RTextArea textArea,
                               boolean lineNumbers)
        Creates a scroll pane. A default value will be used for line number color (gray), and the current line's line number will be highlighted.
        Parameters:
        textArea - The text area this scroll pane will contain. If this is null, you must call setViewportView(Component), passing in an RTextArea.
        lineNumbers - Whether line numbers should be enabled.
      • RTextScrollPane

        public RTextScrollPane​(java.awt.Component comp,
                               boolean lineNumbers)
        Creates a scroll pane. A default value will be used for line number color (gray), and the current line's line number will be highlighted.
        Parameters:
        comp - The component this scroll pane should display. This should be an instance of RTextArea, javax.swing.JLayer (or the older org.jdesktop.jxlayer.JXLayer), or null. If this argument is null, you must call setViewportView(Component), passing in an instance of one of the types above.
        lineNumbers - Whether line numbers should be enabled.
      • RTextScrollPane

        public RTextScrollPane​(java.awt.Component comp,
                               boolean lineNumbers,
                               java.awt.Color lineNumberColor)
        Creates a scroll pane.
        Parameters:
        comp - The component this scroll pane should display. This should be an instance of RTextArea, javax.swing.JLayer (or the older org.jdesktop.jxlayer.JXLayer), or null. If this argument is null, you must call setViewportView(Component), passing in an instance of one of the types above.
        lineNumbers - Whether line numbers are initially enabled.
        lineNumberColor - The color to use for line numbers.
    • Method Detail

      • checkGutterVisibility

        private void checkGutterVisibility()
        Ensures the gutter is visible if it's showing anything.
      • getGutter

        public Gutter getGutter()
        Returns the gutter.
        Returns:
        The gutter.
      • getLineNumbersEnabled

        public boolean getLineNumbersEnabled()
        Returns true if the line numbers are enabled and visible.
        Returns:
        Whether line numbers are visible.
        See Also:
        setLineNumbersEnabled(boolean)
      • isFoldIndicatorEnabled

        public boolean isFoldIndicatorEnabled()
        Returns whether the fold indicator is enabled.
        Returns:
        Whether the fold indicator is enabled.
        See Also:
        setFoldIndicatorEnabled(boolean)
      • isIconRowHeaderEnabled

        public boolean isIconRowHeaderEnabled()
        Returns whether the icon row header is enabled.
        Returns:
        Whether the icon row header is enabled.
        See Also:
        setIconRowHeaderEnabled(boolean)
      • setFoldIndicatorEnabled

        public void setFoldIndicatorEnabled​(boolean enabled)
        Toggles whether the fold indicator is enabled.
        Parameters:
        enabled - Whether the fold indicator should be enabled.
        See Also:
        isFoldIndicatorEnabled()
      • setIconRowHeaderEnabled

        public void setIconRowHeaderEnabled​(boolean enabled)
        Toggles whether the icon row header (used for breakpoints, bookmarks, etc.) is enabled.
        Parameters:
        enabled - Whether the icon row header is enabled.
        See Also:
        isIconRowHeaderEnabled()
      • setLineNumbersEnabled

        public void setLineNumbersEnabled​(boolean enabled)
        Toggles whether line numbers are visible.
        Parameters:
        enabled - Whether line numbers should be visible.
        See Also:
        getLineNumbersEnabled()
      • setViewportView

        public void setViewportView​(java.awt.Component view)
        Sets the view for this scroll pane. This must be an RTextArea.
        Overrides:
        setViewportView in class javax.swing.JScrollPane
        Parameters:
        view - The new view.
        See Also:
        getTextArea()
      • getFirstRTextAreaDescendant

        private static RTextArea getFirstRTextAreaDescendant​(java.awt.Component comp)
        Returns the first descendant of a component that is an RTextArea. This is primarily here to support javax.swing.JLayers that wrap RTextAreas.
        Parameters:
        comp - The component to recursively look through.
        Returns:
        The first descendant text area, or null if none is found.