Class JSVGScrollPane

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

    public class JSVGScrollPane
    extends javax.swing.JPanel
    A Swing component that consists of a JSVGCanvas with optional scroll bars.

    Reimplementation, rather than implementing the Scrollable interface, provides several advantages. The main advantage is the ability to control more precisely ScrollBar events; fewer JSVGCanvas updates are required when scrolling. This creates a significant performance (reflected by an increase in scroll speed) advantage compared to implementing the Scrollable interface.

    Version:
    $Id: JSVGScrollPane.java 1851346 2019-01-15 13:41:00Z ssteiner $
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected class  JSVGScrollPane.SBListener
      Advanced JScrollBar listener.
      protected class  JSVGScrollPane.ScrollListener
      Handle scroll, zoom, and resize events
      (package private) class  JSVGScrollPane.SVGScrollDocumentLoaderListener  
      protected class  JSVGScrollPane.WheelListener
      MouseWheel listener.
      • 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 JSVGCanvas canvas  
      protected java.awt.Component cornerBox  
      protected javax.swing.JScrollBar horizontal  
      protected javax.swing.JPanel horizontalPanel  
      protected JSVGScrollPane.SBListener hsbListener  
      protected boolean ignoreScrollChange  
      protected boolean scrollbarsAlwaysVisible  
      protected javax.swing.JScrollBar vertical  
      protected java.awt.geom.Rectangle2D viewBox  
      protected JSVGScrollPane.SBListener vsbListener  
      • 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
      JSVGScrollPane​(JSVGCanvas canvas)
      Creates a JSVGScrollPane, which will scroll an JSVGCanvas.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void checkAndSetViewBoxRect()
      Derives the SVG Viewbox from the SVG root element.
      protected SVGDocumentLoaderListener createLoadListener()
      Factory method so subclasses can override the default load listener.
      protected JSVGScrollPane.SBListener createScrollBarListener​(boolean isVertical)
      Scrollbar listener factory method so subclasses can override the default SBListener behaviour.
      protected JSVGScrollPane.ScrollListener createScrollListener()
      Factory method so subclasses can override the default listener behaviour
      JSVGCanvas getCanvas()  
      boolean getScrollbarsAlwaysVisible()  
      protected java.awt.geom.Rectangle2D getViewBoxRect()  
      void reset()
      Resets this object (for reloads), releasing any cached data and recomputing scroll extents.
      protected void resizeScrollBars()
      Compute the scrollbar extents, and determine if scrollbars should be visible.
      void scaleChange​(float scale)
      Called when the scale size changes.
      void setScrollbarsAlwaysVisible​(boolean vis)  
      protected void setScrollPosition()
      Sets the translation portion of the transform based upon the current scroll bar position
      protected void updateScrollbarState​(boolean hNeeded, boolean vNeeded)  
      protected java.awt.Dimension updateScrollbarVisibility​(int tx, int ty, int maxW, int maxH)  
      • 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

      • horizontalPanel

        protected javax.swing.JPanel horizontalPanel
      • vertical

        protected javax.swing.JScrollBar vertical
      • horizontal

        protected javax.swing.JScrollBar horizontal
      • cornerBox

        protected java.awt.Component cornerBox
      • scrollbarsAlwaysVisible

        protected boolean scrollbarsAlwaysVisible
      • viewBox

        protected java.awt.geom.Rectangle2D viewBox
      • ignoreScrollChange

        protected boolean ignoreScrollChange
    • Constructor Detail

      • JSVGScrollPane

        public JSVGScrollPane​(JSVGCanvas canvas)
        Creates a JSVGScrollPane, which will scroll an JSVGCanvas.
    • Method Detail

      • getScrollbarsAlwaysVisible

        public boolean getScrollbarsAlwaysVisible()
      • setScrollbarsAlwaysVisible

        public void setScrollbarsAlwaysVisible​(boolean vis)
      • createScrollBarListener

        protected JSVGScrollPane.SBListener createScrollBarListener​(boolean isVertical)
        Scrollbar listener factory method so subclasses can override the default SBListener behaviour.
      • createScrollListener

        protected JSVGScrollPane.ScrollListener createScrollListener()
        Factory method so subclasses can override the default listener behaviour
      • createLoadListener

        protected SVGDocumentLoaderListener createLoadListener()
        Factory method so subclasses can override the default load listener.
      • reset

        public void reset()
        Resets this object (for reloads), releasing any cached data and recomputing scroll extents.
      • setScrollPosition

        protected void setScrollPosition()
        Sets the translation portion of the transform based upon the current scroll bar position
      • resizeScrollBars

        protected void resizeScrollBars()
        Compute the scrollbar extents, and determine if scrollbars should be visible.
      • updateScrollbarVisibility

        protected java.awt.Dimension updateScrollbarVisibility​(int tx,
                                                               int ty,
                                                               int maxW,
                                                               int maxH)
      • updateScrollbarState

        protected void updateScrollbarState​(boolean hNeeded,
                                            boolean vNeeded)
      • checkAndSetViewBoxRect

        protected void checkAndSetViewBoxRect()
        Derives the SVG Viewbox from the SVG root element. Caches it. Assumes that it will not change.
      • getViewBoxRect

        protected java.awt.geom.Rectangle2D getViewBoxRect()
      • scaleChange

        public void scaleChange​(float scale)
        Called when the scale size changes. The scale factor (1.0 == original size). By default, this method does nothing, but may be overidden to display a scale (zoom) factor in a status bar, for example.