org.faceless.pdf2.viewer2
Class MultiPageDocumentViewport

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
                      extended by org.faceless.pdf2.viewer2.MultiPageDocumentViewport
All Implemented Interfaces:
ImageObserver, MenuContainer, PropertyChangeListener, Serializable, EventListener, Accessible

public class MultiPageDocumentViewport
extends DocumentViewport

A DocumentViewport that displays all the pages of a PDF in one column (or row) in the viewport. Navigating between pages is done by scrolling the viewport.

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.10.4
See Also:
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
 
Fields inherited from class org.faceless.pdf2.viewer2.DocumentViewport
CURSOR_GRAB, CURSOR_GRABBING, mouseWheelUnit, ZOOM_FIT, ZOOM_FITHEIGHT, ZOOM_FITWIDTH, ZOOM_NONE
 
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
MultiPageDocumentViewport()
          Constructs a new MultiPageDocumentViewport with a vertical orientation.
MultiPageDocumentViewport(int orientation)
          Constructs a new multi-page document viewport with the specified orientation.
 
Method Summary
 void addPagePanelInteractionListener(PagePanelInteractionListener listener)
          Add a PagePanelInteractionListener to any PagePanel objects that have been or will be created by this DocumentViewport
 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.
 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.
 PagePanel getPagePanel()
          Get the currently displayed PagePanel.
 Collection getPagePanels()
          Returns a read only Collection containing all the PagePanels currently displayed in this Viewport.
 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.
 JComponent getView()
          Get the JComponent that directly contains the PagePanel objects, not including scrollbars or other similar items.
 Dimension getViewportSize()
          Return the size in pixels of the space available to display pages in this viewport, not including scrollbars or other decoration
 float getZoom()
          Get the current zoom level
 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.
 void propertyChange(PropertyChangeEvent event)
          The viewport implements PropertyChangeListener, and will be called whenever the PDF has been updated.
 void removePagePanelInteractionListener(PagePanelInteractionListener listener)
          Remove a PagePanelInteractionListener from any PagePanel objects that have been created by this DocumentViewport
 void removePagePanelListener(PagePanelListener listener)
          Remove a PagePanelListener from any PagePanel objects that have been created by this DocumentViewport
 void setAdjustableValues(int horizontal, int vertical)
          Set the values of the adjustables returned by DocumentViewport.getAdjustable(int).
 void setDocumentPanel(DocumentPanel panel)
          Set the DocumentPanel that contains this DocumentViewport.
 void setDraggable(boolean draggable)
          Sets whether to allow the contents of this viewport to be dragged with the mouse.
 void setPage(PDFPage page, double x, double y, double zoom)
          Set the currently displayed page.
 void setRenderingHints(RenderingHints hints)
          Set the RenderingHints that should be used when rendering the pages
 void setZoom(float zoom)
          Set the zoom level of this DocumentViewport.
 void setZoomMode(int zoommode)
          Control how the document in the viewport is redrawn when the Viewport is resized.
 
Methods inherited from class org.faceless.pdf2.viewer2.DocumentViewport
getDefaultRenderingHints, getDocumentPanel, getPage, getZoomMode, isSmoothScrolling, smoothScroll
 
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
 

Constructor Detail

MultiPageDocumentViewport

public MultiPageDocumentViewport()
Constructs a new MultiPageDocumentViewport with a vertical orientation.


MultiPageDocumentViewport

public MultiPageDocumentViewport(int orientation)
Constructs a new multi-page document viewport with the specified orientation.

Parameters:
orientation - Adjustable.VERTICAL or Adjustable.HORIZONTAL
Method Detail

setDocumentPanel

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

Overrides:
setDocumentPanel in class DocumentViewport

isDraggable

public boolean isDraggable()
Description copied from class: DocumentViewport
Indicates whether the contents of this viewport can be dragged with the mouse to position them.

Specified by:
isDraggable in class DocumentViewport

setDraggable

public void setDraggable(boolean draggable)
Description copied from class: DocumentViewport
Sets whether to allow the contents of this viewport to be dragged with the mouse.

Specified by:
setDraggable in class DocumentViewport
Parameters:
draggable - if true, contents may be dragged

setPage

public void setPage(PDFPage page,
                    double x,
                    double y,
                    double zoom)
Description copied from class: DocumentViewport
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.

Specified by:
setPage in class DocumentViewport
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)
Description copied from class: DocumentViewport
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.

Overrides:
ensureVisible in class DocumentViewport
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)

isPageVisible

public boolean isPageVisible(PDFPage page,
                             double x,
                             double y)
Description copied from class: DocumentViewport
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.

Overrides:
isPageVisible in class DocumentViewport
x - the X position of the page in points
y - the Y position of the page in points

getView

public JComponent getView()
Description copied from class: DocumentViewport
Get the JComponent that directly contains the PagePanel objects, not including scrollbars or other similar items.

Specified by:
getView in class DocumentViewport

getZoom

public float getZoom()
Description copied from class: DocumentViewport
Get the current zoom level

Specified by:
getZoom in class DocumentViewport

setZoom

public void setZoom(float zoom)
Description copied from class: DocumentViewport
Set the zoom level of this DocumentViewport. The page and position should remain unchanged if possible.

Specified by:
setZoom in class DocumentViewport

getViewportSize

public Dimension getViewportSize()
Description copied from class: DocumentViewport
Return the size in pixels of the space available to display pages in this viewport, not including scrollbars or other decoration

Specified by:
getViewportSize in class DocumentViewport

getPagePanel

public PagePanel getPagePanel()
Description copied from class: DocumentViewport
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.

Specified by:
getPagePanel in class DocumentViewport

getPagePanels

public Collection getPagePanels()
Description copied from class: DocumentViewport
Returns a read only Collection containing all the PagePanels currently displayed in this Viewport.

Overrides:
getPagePanels in class DocumentViewport

getRenderingPage

public PDFPage getRenderingPage()
Description copied from class: DocumentViewport
Return the page that is currently in the process of rendering. If the page has rendered this method returns the same as DocumentViewport.getPage()

Specified by:
getRenderingPage in class DocumentViewport

getAdjustable

public Adjustable getAdjustable(int position)
Description copied from class: DocumentViewport
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.

Specified by:
getAdjustable in class DocumentViewport
Parameters:
position - one of Adjustable.HORIZONTAL or Adjustable.VERTICAL

setAdjustableValues

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

Specified by:
setAdjustableValues in class DocumentViewport
Parameters:
horizontal - the value for the Adjustable.HORIZONTAL adjustable.
vertical - the value for the Adjustable.VERTICAL adjustable.

setRenderingHints

public void setRenderingHints(RenderingHints hints)
Description copied from class: DocumentViewport
Set the RenderingHints that should be used when rendering the pages

Specified by:
setRenderingHints in class DocumentViewport

addPagePanelListener

public void addPagePanelListener(PagePanelListener listener)
Description copied from class: DocumentViewport
Add a PagePanelListener to any PagePanel objects that have been or will be created by this DocumentViewport

Specified by:
addPagePanelListener in class DocumentViewport
Parameters:
listener - the listener

removePagePanelListener

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

Specified by:
removePagePanelListener in class DocumentViewport
Parameters:
listener - the listener

addPagePanelInteractionListener

public void addPagePanelInteractionListener(PagePanelInteractionListener listener)
Description copied from class: DocumentViewport
Add a PagePanelInteractionListener to any PagePanel objects that have been or will be created by this DocumentViewport

Specified by:
addPagePanelInteractionListener in class DocumentViewport
Parameters:
listener - the listener

removePagePanelInteractionListener

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

Specified by:
removePagePanelInteractionListener in class DocumentViewport
Parameters:
listener - the listener

setZoomMode

public void setZoomMode(int zoommode)
Description copied from class: DocumentViewport
Control how the document in the viewport is redrawn when the Viewport is resized. The default is DocumentViewport.ZOOM_NONE, which means no action is performed, but other actions include DocumentViewport.ZOOM_FIT, DocumentViewport.ZOOM_FITWIDTH and DocumentViewport.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

Overrides:
setZoomMode in class DocumentViewport

getTargetZoom

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

Overrides:
getTargetZoom in class DocumentViewport
page - the PDFPage that we are calculating the zoom for.
See Also:
DocumentViewport.getZoomMode()

propertyChange

public void propertyChange(PropertyChangeEvent event)
Description copied from class: DocumentViewport
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
Overrides:
propertyChange in class DocumentViewport


Copyright © 2001-2010 Big Faceless Organization