Class AbstractSourceTree

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable
    Direct Known Subclasses:
    JavaOutlineTree, JavaScriptOutlineTree, XmlOutlineTree

    public abstract class AbstractSourceTree
    extends javax.swing.JTree
    A tree showing the structure of a source file being edited in an RSyntaxTextArea. This can be used to display an "outline view" of the code, for example.

    Concrete implementations typically specialize in displaying code structure for a single language, and are registered to listen to code changes in an RSyntaxTextArea instance by calling listenTo(RSyntaxTextArea). They should then listen to document changes and adjust themselves to reflect the code structure of the current content as best as possible.

    You should only add instances of SourceTreeNode or subclasses to this tree. You should also provide a no-argument constructor if you wish to use your subclass in GoToMemberAction.

    Version:
    1.0
    See Also:
    SourceTreeNode, JavaOutlineTree, JavaScriptOutlineTree, XmlOutlineTree, Serialized Form
    • Nested Class Summary

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

        javax.swing.JTree.AccessibleJTree, javax.swing.JTree.DropLocation, javax.swing.JTree.DynamicUtilTreeNode, javax.swing.JTree.EmptySelectionModel, javax.swing.JTree.TreeModelHandler, javax.swing.JTree.TreeSelectionRedirector
      • 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 boolean gotoSelectedElementOnClick  
      private java.util.regex.Pattern pattern  
      private boolean showMajorElementsOnly  
      private boolean sorted  
      protected org.fife.ui.rsyntaxtextarea.RSyntaxTextArea textArea  
      • Fields inherited from class javax.swing.JTree

        ANCHOR_SELECTION_PATH_PROPERTY, CELL_EDITOR_PROPERTY, CELL_RENDERER_PROPERTY, cellEditor, cellRenderer, editable, EDITABLE_PROPERTY, EXPANDS_SELECTED_PATHS_PROPERTY, INVOKES_STOP_CELL_EDITING_PROPERTY, invokesStopCellEditing, LARGE_MODEL_PROPERTY, largeModel, LEAD_SELECTION_PATH_PROPERTY, ROOT_VISIBLE_PROPERTY, rootVisible, ROW_HEIGHT_PROPERTY, rowHeight, SCROLLS_ON_EXPAND_PROPERTY, scrollsOnExpand, SELECTION_MODEL_PROPERTY, selectionModel, selectionRedirector, SHOWS_ROOT_HANDLES_PROPERTY, showsRootHandles, TOGGLE_CLICK_COUNT_PROPERTY, toggleClickCount, TREE_MODEL_PROPERTY, treeModel, treeModelListener, VISIBLE_ROW_COUNT_PROPERTY, visibleRowCount
      • 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
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract void expandInitialNodes()
      Expands all nodes in the specified tree.
      protected boolean fastExpandAll​(javax.swing.tree.TreePath parent, boolean expand)
      An attempt to quickly expand all tree nodes.
      private boolean fastExpandAllImpl​(javax.swing.tree.TreePath parent, boolean expand)  
      void filter​(java.lang.String pattern)
      Filters visible tree nodes based on the specified prefix.
      boolean getGotoSelectedElementOnClick()
      Returns whether, when a source element is selected in this tree, the same source element should be selected in the editor.
      boolean getShowMajorElementsOnly()
      Returns whether only "major" structural elements are shown in this source tree.
      abstract boolean gotoSelectedElement()
      Highlights the selected source element in the text editor, if any.
      boolean isSorted()
      Returns whether the contents of this tree are sorted.
      abstract void listenTo​(org.fife.ui.rsyntaxtextarea.RSyntaxTextArea textArea)
      Causes this outline tree to reflect the source code in the specified text area.
      void refresh()
      Refreshes what children are visible in the tree.
      void selectFirstNodeMatchingFilter()
      Selects the first visible tree node matching the filter text.
      void selectNextVisibleRow()
      Selects the next visible row.
      void selectPreviousVisibleRow()
      Selects the previous visible row.
      void setGotoSelectedElementOnClick​(boolean gotoSelectedElement)
      Sets whether, when a source element is selected in this tree, the same source element should be selected in the editor.
      void setShowMajorElementsOnly​(boolean show)
      Toggles whether only "major" structural elements should be shown in this source tree.
      void setSorted​(boolean sorted)
      Toggles whether the contents of this tree are sorted.
      abstract void uninstall()
      Makes this outline tree stop listening to its current text area.
      • Methods inherited from class javax.swing.JTree

        addSelectionInterval, addSelectionPath, addSelectionPaths, addSelectionRow, addSelectionRows, addTreeExpansionListener, addTreeSelectionListener, addTreeWillExpandListener, cancelEditing, clearSelection, clearToggledPaths, collapsePath, collapseRow, convertValueToText, createTreeModel, createTreeModelListener, expandPath, expandRow, fireTreeCollapsed, fireTreeExpanded, fireTreeWillCollapse, fireTreeWillExpand, fireValueChanged, getAccessibleContext, getAnchorSelectionPath, getCellEditor, getCellRenderer, getClosestPathForLocation, getClosestRowForLocation, getDefaultTreeModel, getDescendantToggledPaths, getDragEnabled, getDropLocation, getDropMode, getEditingPath, getExpandedDescendants, getExpandsSelectedPaths, getInvokesStopCellEditing, getLastSelectedPathComponent, getLeadSelectionPath, getLeadSelectionRow, getMaxSelectionRow, getMinSelectionRow, getModel, getNextMatch, getPathBetweenRows, getPathBounds, getPathForLocation, getPathForRow, getPreferredScrollableViewportSize, getRowBounds, getRowCount, getRowForLocation, getRowForPath, getRowHeight, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollsOnExpand, getSelectionCount, getSelectionModel, getSelectionPath, getSelectionPaths, getSelectionRows, getShowsRootHandles, getToggleClickCount, getToolTipText, getTreeExpansionListeners, getTreeSelectionListeners, getTreeWillExpandListeners, getUI, getUIClassID, getVisibleRowCount, hasBeenExpanded, isCollapsed, isCollapsed, isEditable, isEditing, isExpanded, isExpanded, isFixedRowHeight, isLargeModel, isPathEditable, isPathSelected, isRootVisible, isRowSelected, isSelectionEmpty, isVisible, makeVisible, paramString, removeDescendantSelectedPaths, removeDescendantToggledPaths, removeSelectionInterval, removeSelectionPath, removeSelectionPaths, removeSelectionRow, removeSelectionRows, removeTreeExpansionListener, removeTreeSelectionListener, removeTreeWillExpandListener, scrollPathToVisible, scrollRowToVisible, setAnchorSelectionPath, setCellEditor, setCellRenderer, setDragEnabled, setDropMode, setEditable, setExpandedState, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, setModel, setRootVisible, setRowHeight, setScrollsOnExpand, setSelectionInterval, setSelectionModel, setSelectionPath, setSelectionPaths, setSelectionRow, setSelectionRows, setShowsRootHandles, setToggleClickCount, setUI, setVisibleRowCount, startEditingAtPath, stopEditing, treeDidChange, 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, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, 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, 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
      • Methods inherited from class java.lang.Object

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

      • textArea

        protected org.fife.ui.rsyntaxtextarea.RSyntaxTextArea textArea
      • sorted

        private boolean sorted
      • pattern

        private java.util.regex.Pattern pattern
      • gotoSelectedElementOnClick

        private boolean gotoSelectedElementOnClick
      • showMajorElementsOnly

        private boolean showMajorElementsOnly
    • Constructor Detail

      • AbstractSourceTree

        public AbstractSourceTree()
    • Method Detail

      • expandInitialNodes

        public abstract void expandInitialNodes()
        Expands all nodes in the specified tree. Subclasses should implement this in a way logical for the language.
      • fastExpandAll

        protected boolean fastExpandAll​(javax.swing.tree.TreePath parent,
                                        boolean expand)
        An attempt to quickly expand all tree nodes. Only need to expand the "deepest" nodes, as they will auto-expand all parents to make sure they are visible.
        Returns:
        Whether an expandPath was called for the last node in the parent path
      • fastExpandAllImpl

        private boolean fastExpandAllImpl​(javax.swing.tree.TreePath parent,
                                          boolean expand)
      • filter

        public void filter​(java.lang.String pattern)
        Filters visible tree nodes based on the specified prefix.
        Parameters:
        pattern - The prefix, as a wildcard expression. If this is null, all possible children are shown.
      • getGotoSelectedElementOnClick

        public boolean getGotoSelectedElementOnClick()
        Returns whether, when a source element is selected in this tree, the same source element should be selected in the editor.
        Returns:
        Whether to highlight the source element in the editor.
        See Also:
        setGotoSelectedElementOnClick(boolean)
      • getShowMajorElementsOnly

        public boolean getShowMajorElementsOnly()
        Returns whether only "major" structural elements are shown in this source tree. An example of a "minor" element could be a local variable in a function or method.
        Returns:
        Whether only major elements are shown in this source tree.
        See Also:
        setShowMajorElementsOnly(boolean)
      • gotoSelectedElement

        public abstract boolean gotoSelectedElement()
        Highlights the selected source element in the text editor, if any.
        Returns:
        Whether anything was selected in the tree.
      • isSorted

        public boolean isSorted()
        Returns whether the contents of this tree are sorted.
        Returns:
        Whether the contents of this tree are sorted.
        See Also:
        setSorted(boolean)
      • listenTo

        public abstract void listenTo​(org.fife.ui.rsyntaxtextarea.RSyntaxTextArea textArea)
        Causes this outline tree to reflect the source code in the specified text area.
        Parameters:
        textArea - The text area. This should have been registered with the LanguageSupportFactory, and be editing the language we're interested in.
        See Also:
        uninstall()
      • refresh

        public void refresh()
        Refreshes what children are visible in the tree. This should be called manually when updating a source tree with a new root, and is also called internally on filtering and sorting.
      • selectFirstNodeMatchingFilter

        public void selectFirstNodeMatchingFilter()
        Selects the first visible tree node matching the filter text.
      • selectPreviousVisibleRow

        public void selectPreviousVisibleRow()
        Selects the previous visible row.
        See Also:
        selectNextVisibleRow()
      • setGotoSelectedElementOnClick

        public void setGotoSelectedElementOnClick​(boolean gotoSelectedElement)
        Sets whether, when a source element is selected in this tree, the same source element should be selected in the editor.
        Parameters:
        gotoSelectedElement - Whether to highlight the source element in the editor.
        See Also:
        getGotoSelectedElementOnClick()
      • setShowMajorElementsOnly

        public void setShowMajorElementsOnly​(boolean show)
        Toggles whether only "major" structural elements should be shown in this source tree. An example of a "minor" element could be a local variable in a function or method.
        Parameters:
        show - Whether only major elements are shown in this source tree.
        See Also:
        getShowMajorElementsOnly()
      • setSorted

        public void setSorted​(boolean sorted)
        Toggles whether the contents of this tree are sorted.
        Parameters:
        sorted - Whether the contents of this tree are sorted.
        See Also:
        isSorted()
      • uninstall

        public abstract void uninstall()
        Makes this outline tree stop listening to its current text area.
        See Also:
        listenTo(RSyntaxTextArea)