org.faceless.pdf2.viewer2
Class DocumentViewport

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.faceless.pdf2.viewer2.DocumentViewport
All Implemented Interfaces:
ImageObserver, MenuContainer, PropertyChangeListener, Serializable, EventListener, Accessible
Direct Known Subclasses:
MultiPageDocumentViewport, SinglePageDocumentViewport

public abstract class DocumentViewport
extends JPanel
implements PropertyChangeListener

A DocumentViewport displays a view of a PDF inside a DocumentPanel, although it can also be instantiated on it's own if required. It typically will contain one or more PagePanel objects along with scrollbars and whatever else is required to display the document in limited screen space. See the viewer tutorial for more detail on how to use this class and the "viewer" package.

This code is copyright the Big Faceless Organization. You're welcome to use, modify and distribute it in any form in your own projects, provided those projects continue to make use of the Big Faceless PDF library.

Since:
2.8
See Also:
PagePanel, DocumentPanel, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected static Cursor CURSOR_GRAB
           
protected static Cursor CURSOR_GRABBING
           
protected  int mouseWheelUnit
           
static int ZOOM_FIT
          A value that can be passed in to setZoomMode(int) to specify that the document should be zoomed to fit the entire page in the Viewport.
static int ZOOM_FITHEIGHT
          A value that can be passed in to setZoomMode(int) to specify that the document should be zoomed to ensure the height fits the height of the Viewport.
static int ZOOM_FITWIDTH
          A value that can be passed in to setZoomMode(int) to specify that the document shuold be zoomed to ensure the width fits the width of the Viewport.
static int ZOOM_NONE
          A value that can be passed to setZoomMode(int) to specify that no re-zooming of the page should be performed when the Viewport is resized; this is the default.
 
Fields inherited from class javax.swing.JComponent
accessibleContext, 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
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
DocumentViewport()
           
DocumentViewport(LayoutManager manager)
           
 
Method Summary
abstract  void addPagePanelInteractionListener(PagePanelInteractionListener listener)
          Add a PagePanelInteractionListener to any PagePanel objects that have been or will be created by this DocumentViewport
abstract  void addPagePanelListener(PagePanelListener listener)
          Add a PagePanelListener to any PagePanel objects that have been or will be created by this DocumentViewport
 void ensureVisible(PDFPage page, double x, double y)
          Ensure the specified point on the page is visible.
abstract  Adjustable getAdjustable(int position)
          Return the "Adjustable" object for the specified position - typically this is the horizontal or vertical JScrollBar, although this method may return null or accept other parameters.
protected  RenderingHints getDefaultRenderingHints()
           
 DocumentPanel getDocumentPanel()
          Return the DocumentPanel containing this DocumentViewport.
 PDFPage getPage()
          Return the PDFPage in use by getPagePanel()
abstract  PagePanel getPagePanel()
          Get the currently displayed PagePanel.
 Collection getPagePanels()
          Returns a read only Collection containing all the PagePanels currently displayed in this Viewport.
abstract  PDFPage getRenderingPage()
          Return the page that is currently in the process of rendering.
 float getTargetZoom(int zoommode, PDFPage page)
          Return the appropriate zoom level when switching to the specified page.
abstract  JComponent getView()
          Get the JComponent that directly contains the PagePanel objects, not including scrollbars or other similar items.
abstract  Dimension getViewportSize()
          Return the size in pixels of the space available to display pages in this viewport, not including scrollbars or other decoration
abstract  float getZoom()
          Get the current zoom level
 int getZoomMode()
          Return the current value of the zoom-mode, as set by setZoomMode(int).
abstract  boolean isDraggable()
          Indicates whether the contents of this viewport can be dragged with the mouse to position them.
 boolean isPageVisible(PDFPage page, double x, double y)
          Indicates whether the specified point in the specified page is visible in the viewport.
protected  boolean isSmoothScrolling()
          Return true if this viewport is smooth scrolling
 void propertyChange(PropertyChangeEvent event)
          The viewport implements PropertyChangeListener, and will be called whenever the PDF has been updated.
abstract  void removePagePanelInteractionListener(PagePanelInteractionListener listener)
          Remove a PagePanelInteractionListener from any PagePanel objects that have been created by this DocumentViewport
abstract  void removePagePanelListener(PagePanelListener listener)
          Remove a PagePanelListener from any PagePanel objects that have been created by this DocumentViewport
abstract  void setAdjustableValues(int horizontal, int vertical)
          Set the values of the adjustables returned by getAdjustable(int).
 void setDocumentPanel(DocumentPanel panel)
          Set the DocumentPanel that contains this DocumentViewport.
abstract  void setDraggable(boolean draggable)
          Sets whether to allow the contents of this viewport to be dragged with the mouse.
abstract  void setPage(PDFPage page, double x, double y, double zoom)
          Set the currently displayed page.
abstract  void setRenderingHints(RenderingHints hints)
          Set the RenderingHints that should be used when rendering the pages
abstract  void setZoom(float zoom)
          Set the zoom level of this DocumentViewport.
 void setZoomMode(int mode)
          Control how the document in the viewport is redrawn when the Viewport is resized.
protected  void smoothScroll(int x, int y, JScrollBar hsb, JScrollBar vsb)
          Smoothly adjust the supplied scrollbars from their current position to the specified position, or (if hsb or vsb are null) cancel any running adjustment.
 
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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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, transferFocusBackward, 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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

CURSOR_GRAB

protected static final Cursor CURSOR_GRAB

CURSOR_GRABBING

protected static final Cursor CURSOR_GRABBING

mouseWheelUnit

protected int mouseWheelUnit

ZOOM_NONE

public static final int ZOOM_NONE
A value that can be passed to setZoomMode(int) to specify that no re-zooming of the page should be performed when the Viewport is resized; this is the default.

Since:
2.10.3
See Also:
Constant Field Values

ZOOM_FIT

public static final int ZOOM_FIT
A value that can be passed in to setZoomMode(int) to specify that the document should be zoomed to fit the entire page in the Viewport.

Since:
2.10.3
See Also:
Constant Field Values

ZOOM_FITWIDTH

public static final int ZOOM_FITWIDTH
A value that can be passed in to setZoomMode(int) to specify that the document shuold be zoomed to ensure the width fits the width of the Viewport.

Since:
2.10.3
See Also:
Constant Field Values

ZOOM_FITHEIGHT

public static final int ZOOM_FITHEIGHT
A value that can be passed in to setZoomMode(int) to specify that the document should be zoomed to ensure the height fits the height of the Viewport.

Since:
2.10.3
See Also:
Constant Field Values
Constructor Detail

DocumentViewport

public DocumentViewport()

DocumentViewport

public DocumentViewport(LayoutManager manager)
Method Detail

getDefaultRenderingHints

protected final RenderingHints getDefaultRenderingHints()

setRenderingHints

public abstract void setRenderingHints(RenderingHints hints)
Set the RenderingHints that should be used when rendering the pages


setZoomMode

public void setZoomMode(int mode)
Control how the document in the viewport is redrawn when the Viewport is resized. The default is ZOOM_NONE, which means no action is performed, but other actions include ZOOM_FIT, ZOOM_FITWIDTH and ZOOM_FITHEIGHT, which will ensure that the document is always zoomed to fit completely, fit the width or fit the height of the viewport respectively

Since:
2.10.3

getZoomMode

public int getZoomMode()
Return the current value of the zoom-mode, as set by setZoomMode(int). The returnd value is one of ZOOM_FIT, ZOOM_FITWIDTH, ZOOM_FITHEIGHT or ZOOM_NONE (the default).

Since:
2.10.3

getTargetZoom

public float getTargetZoom(int zoommode,
                           PDFPage page)
Return the appropriate zoom level when switching to the specified page. If the value of zoommode is ZOOM_NONE then this just returns the value of getZoom(), otherwise the returned zoom level will correctly fit the page to the Viewport.

Parameters:
page - the PDFPage that we are calculating the zoom for.
Since:
2.10.3
See Also:
getZoomMode()

setPage

public abstract void setPage(PDFPage page,
                             double x,
                             double y,
                             double zoom)
Set the currently displayed page. The exact implementation of this depends on the type of viewport, but the idea is that the specified page and position becomes the primary focus of this viewport.

Parameters:
page - the page to display
x - the left-most X position of the page, relative to PagePanel.getFullPageView(org.faceless.pdf2.PDFPage). A value of NaN means keep the current value
y - the top-most Y position of the page, relative to PagePanel.getFullPageView(org.faceless.pdf2.PDFPage). A value of NaN means keep the current value
zoom - the zoom level. A value of <= 0 or NaN means keep the current zoom. A value of one means 72dpi

ensureVisible

public void ensureVisible(PDFPage page,
                          double x,
                          double y)
Ensure the specified point on the page is visible. The zoom level of the page is not changed, but the page itself may be changed or repositioned to ensure the specified point is visible in the centre area.

Parameters:
x - the X position of the page in absolute PDF points (ie measured from the bottom left)
y - the Y position of the page in absolute PDF points (ie measured from the bottom left)
Since:
2.10.3

isPageVisible

public boolean isPageVisible(PDFPage page,
                             double x,
                             double y)
Indicates whether the specified point in the specified page is visible in the viewport. If x or y is NaN, indicates whether any part of the page is visible.

Parameters:
x - the X position of the page in points
y - the Y position of the page in points
Since:
2.10.4

setZoom

public abstract void setZoom(float zoom)
Set the zoom level of this DocumentViewport. The page and position should remain unchanged if possible.


getZoom

public abstract float getZoom()
Get the current zoom level


getPagePanel

public abstract PagePanel getPagePanel()
Get the currently displayed PagePanel. As for setPage(), the exact implementation of this method depends on the type of viewport, but the idea is it returns the PagePanel that is the primary focus of this viewport.


getView

public abstract JComponent getView()
Get the JComponent that directly contains the PagePanel objects, not including scrollbars or other similar items.

Since:
2.10.4

getPagePanels

public Collection getPagePanels()
Returns a read only Collection containing all the PagePanels currently displayed in this Viewport.

Since:
2.10.4

getPage

public PDFPage getPage()
Return the PDFPage in use by getPagePanel()


getRenderingPage

public abstract PDFPage getRenderingPage()
Return the page that is currently in the process of rendering. If the page has rendered this method returns the same as getPage()


getViewportSize

public abstract Dimension getViewportSize()
Return the size in pixels of the space available to display pages in this viewport, not including scrollbars or other decoration


getAdjustable

public abstract Adjustable getAdjustable(int position)
Return the "Adjustable" object for the specified position - typically this is the horizontal or vertical JScrollBar, although this method may return null or accept other parameters. The adjustable is measured in AWT space (pixels from the top left). This method may return null if there is no adjustable.

Parameters:
position - one of Adjustable.HORIZONTAL or Adjustable.VERTICAL
Since:
2.10

setAdjustableValues

public abstract void setAdjustableValues(int horizontal,
                                         int vertical)
Set the values of the adjustables returned by getAdjustable(int). Calling this method is preferable to setting the values of each adjustable individually when both are to be set

Parameters:
horizontal - the value for the Adjustable.HORIZONTAL adjustable.
vertical - the value for the Adjustable.VERTICAL adjustable.
Since:
2.10.4

getDocumentPanel

public DocumentPanel getDocumentPanel()
Return the DocumentPanel containing this DocumentViewport.


setDocumentPanel

public void setDocumentPanel(DocumentPanel panel)
Set the DocumentPanel that contains this DocumentViewport. If overriding this method you must first call super.setDocumentPanel(panel)

Since:
2.11.4 (when it was made public)

addPagePanelListener

public abstract void addPagePanelListener(PagePanelListener listener)
Add a PagePanelListener to any PagePanel objects that have been or will be created by this DocumentViewport

Parameters:
listener - the listener

removePagePanelListener

public abstract void removePagePanelListener(PagePanelListener listener)
Remove a PagePanelListener from any PagePanel objects that have been created by this DocumentViewport

Parameters:
listener - the listener

addPagePanelInteractionListener

public abstract void addPagePanelInteractionListener(PagePanelInteractionListener listener)
Add a PagePanelInteractionListener to any PagePanel objects that have been or will be created by this DocumentViewport

Parameters:
listener - the listener

removePagePanelInteractionListener

public abstract void removePagePanelInteractionListener(PagePanelInteractionListener listener)
Remove a PagePanelInteractionListener from any PagePanel objects that have been created by this DocumentViewport

Parameters:
listener - the listener

isDraggable

public abstract boolean isDraggable()
Indicates whether the contents of this viewport can be dragged with the mouse to position them.

Since:
2.11.15

setDraggable

public abstract void setDraggable(boolean draggable)
Sets whether to allow the contents of this viewport to be dragged with the mouse.

Parameters:
draggable - if true, contents may be dragged
Since:
2.11.15

propertyChange

public void propertyChange(PropertyChangeEvent event)
The viewport implements PropertyChangeListener, and will be called whenever the PDF has been updated. By default it's a no-op.

Specified by:
propertyChange in interface PropertyChangeListener
Since:
2.11.25

smoothScroll

protected void smoothScroll(int x,
                            int y,
                            JScrollBar hsb,
                            JScrollBar vsb)
Smoothly adjust the supplied scrollbars from their current position to the specified position, or (if hsb or vsb are null) cancel any running adjustment. The timing in ms and max distance in pixels for a smooth scroll are set by the smoothScrollTime and smoothScrollDistance properties on the DocumentPanel, and both default to 500

Parameters:
x - the desired position of the horizontal scrollbar
y - the desired position of the vertical scrollbar
hsb - the horizontal scrollbar
vsb - the vertical scrollbar
Since:
2.11.25

isSmoothScrolling

protected boolean isSmoothScrolling()
Return true if this viewport is smooth scrolling

Since:
2.11.25


Copyright © 2001-2010 Big Faceless Organization