Package com.sun.demo

Class ElementTreePanel

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.CaretListener, javax.swing.event.DocumentListener, javax.swing.event.TreeSelectionListener

    public class ElementTreePanel
    extends javax.swing.JPanel
    implements javax.swing.event.CaretListener, javax.swing.event.DocumentListener, java.beans.PropertyChangeListener, javax.swing.event.TreeSelectionListener
    Displays a tree showing all the elements in a text Document. Selecting a node will result in reseting the selection of the JTextComponent. This also becomes a CaretListener to know when the selection has changed in the text to update the selected item in the tree.
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  ElementTreePanel.ElementTreeModel
      ElementTreeModel is an implementation of TreeModel to handle displaying the Elements from a Document.
      • 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
      • 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
      protected javax.swing.text.JTextComponent editor
      Text component showing elemenst for.
      protected javax.swing.JTree tree
      Tree showing the documents element structure.
      protected ElementTreePanel.ElementTreeModel treeModel
      Model for the tree.
      protected boolean updatingSelection
      Set to true when updatin the selection.
      • 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 
      Constructor Description
      ElementTreePanel​(javax.swing.text.JTextComponent editor)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void caretUpdate​(javax.swing.event.CaretEvent e)
      Messaged when the selection in the editor has changed.
      void changedUpdate​(javax.swing.event.DocumentEvent e)
      Gives notification that an attribute or set of attributes changed.
      protected javax.swing.text.JTextComponent getEditor()  
      protected javax.swing.tree.TreePath getPathForIndex​(int position, java.lang.Object root, javax.swing.text.Element rootElement)
      Returns a TreePath to the element at position.
      protected javax.swing.JTree getTree()  
      javax.swing.tree.DefaultTreeModel getTreeModel()  
      void insertUpdate​(javax.swing.event.DocumentEvent e)
      Gives notification that there was an insert into the document.
      void propertyChange​(java.beans.PropertyChangeEvent e)
      Invoked when a property changes.
      void removeUpdate​(javax.swing.event.DocumentEvent e)
      Gives notification that a portion of the document has been removed.
      void setEditor​(javax.swing.text.JTextComponent editor)
      Resets the JTextComponent to editor.
      protected void updateTree​(javax.swing.event.DocumentEvent event)
      Updates the tree based on the event type.
      protected void updateTree​(javax.swing.event.DocumentEvent event, javax.swing.text.Element element)
      Creates TreeModelEvents based on the DocumentEvent and messages the treemodel.
      void valueChanged​(javax.swing.event.TreeSelectionEvent e)
      Called whenever the value of the selection changes.
      • Methods inherited from class javax.swing.JPanel

        getAccessibleContext, getUI, getUIClassID, paramString, setUI, 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, 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

      • tree

        protected javax.swing.JTree tree
        Tree showing the documents element structure.
      • editor

        protected javax.swing.text.JTextComponent editor
        Text component showing elemenst for.
      • updatingSelection

        protected boolean updatingSelection
        Set to true when updatin the selection.
    • Constructor Detail

      • ElementTreePanel

        public ElementTreePanel​(javax.swing.text.JTextComponent editor)
    • Method Detail

      • setEditor

        public void setEditor​(javax.swing.text.JTextComponent editor)
        Resets the JTextComponent to editor. This will update the tree accordingly.
      • propertyChange

        public void propertyChange​(java.beans.PropertyChangeEvent e)
        Invoked when a property changes. We are only interested in when the Document changes to reset the DocumentListener.
        Specified by:
        propertyChange in interface java.beans.PropertyChangeListener
      • insertUpdate

        public void insertUpdate​(javax.swing.event.DocumentEvent e)
        Gives notification that there was an insert into the document. The given range bounds the freshly inserted region.
        Specified by:
        insertUpdate in interface javax.swing.event.DocumentListener
        Parameters:
        e - the document event
      • removeUpdate

        public void removeUpdate​(javax.swing.event.DocumentEvent e)
        Gives notification that a portion of the document has been removed. The range is given in terms of what the view last saw (that is, before updating sticky positions).
        Specified by:
        removeUpdate in interface javax.swing.event.DocumentListener
        Parameters:
        e - the document event
      • changedUpdate

        public void changedUpdate​(javax.swing.event.DocumentEvent e)
        Gives notification that an attribute or set of attributes changed.
        Specified by:
        changedUpdate in interface javax.swing.event.DocumentListener
        Parameters:
        e - the document event
      • caretUpdate

        public void caretUpdate​(javax.swing.event.CaretEvent e)
        Messaged when the selection in the editor has changed. Will update the selection in the tree.
        Specified by:
        caretUpdate in interface javax.swing.event.CaretListener
      • valueChanged

        public void valueChanged​(javax.swing.event.TreeSelectionEvent e)
        Called whenever the value of the selection changes.
        Specified by:
        valueChanged in interface javax.swing.event.TreeSelectionListener
        Parameters:
        e - the event that characterizes the change.
      • getTree

        protected javax.swing.JTree getTree()
        Returns:
        tree showing elements.
      • getEditor

        protected javax.swing.text.JTextComponent getEditor()
        Returns:
        JTextComponent showing elements for.
      • getTreeModel

        public javax.swing.tree.DefaultTreeModel getTreeModel()
        Returns:
        TreeModel implementation used to represent the elements.
      • updateTree

        protected void updateTree​(javax.swing.event.DocumentEvent event)
        Updates the tree based on the event type. This will invoke either updateTree with the root element, or handleChange.
      • updateTree

        protected void updateTree​(javax.swing.event.DocumentEvent event,
                                  javax.swing.text.Element element)
        Creates TreeModelEvents based on the DocumentEvent and messages the treemodel. This recursively invokes this method with children elements.
        Parameters:
        event - indicates what elements in the tree hierarchy have changed.
        element - Current element to check for changes against.
      • getPathForIndex

        protected javax.swing.tree.TreePath getPathForIndex​(int position,
                                                            java.lang.Object root,
                                                            javax.swing.text.Element rootElement)
        Returns a TreePath to the element at position.