Package org.faceless.pdf2.viewer2
Class MultiPageDocumentViewport
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- org.faceless.pdf2.viewer2.DocumentViewport
-
- org.faceless.pdf2.viewer2.MultiPageDocumentViewport
-
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,PropertyChangeListener
,Serializable
,EventListener
,Accessible
public class MultiPageDocumentViewport extends DocumentViewport
ADocumentViewport
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, interpagemargin, margin, mouseWheelUnit, ZOOM_FIT, ZOOM_FITHEIGHT, ZOOM_FITWIDTH, ZOOM_NONE
-
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 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addPagePanelInteractionListener(PagePanelInteractionListener listener)
Add aPagePanelInteractionListener
to anyPagePanel
objects that have been or will be created by this DocumentViewportvoid
addPagePanelListener(PagePanelListener listener)
Add aPagePanelListener
to anyPagePanel
objects that have been or will be created by this DocumentViewportvoid
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 verticalJScrollBar
, although this method may returnnull
or accept other parameters.PagePanel
getPagePanel()
Get the currently displayed PagePanel.Collection<PagePanel>
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 decorationfloat
getZoom()
Get the current zoom levelboolean
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 aPagePanelInteractionListener
from anyPagePanel
objects that have been created by this DocumentViewportvoid
removePagePanelListener(PagePanelListener listener)
Remove aPagePanelListener
from anyPagePanel
objects that have been created by this DocumentViewportvoid
setAdjustableValues(int horizontal, int vertical)
Set the values of the adjustables returned byDocumentViewport.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 theRenderingHints
that should be used when rendering the pagesvoid
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
getBorderColor, getDefaultRenderingHints, getDocumentPanel, getNextSelectablePageIndex, getPage, getPreviousSelectablePageIndex, getShadowColor, getZoomMode, isSmoothScrolling, paintPageBorder, 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, 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
-
-
-
-
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 callsuper.setDocumentPanel(panel)
- Overrides:
setDocumentPanel
in classDocumentViewport
-
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 classDocumentViewport
-
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 classDocumentViewport
- 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 classDocumentViewport
- Parameters:
page
- the page to displayx
- the left-most X position of the page, relative toPagePanel.getFullPageView(org.faceless.pdf2.PDFPage)
. A value of NaN means keep the current value. 0 means the left edgey
- the top-most Y position of the page, relative toPagePanel.getFullPageView(org.faceless.pdf2.PDFPage)
. A value of NaN means keep the current value. 0 means the top edgezoom
- 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 classDocumentViewport
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. Ifx
ory
isNaN
, indicates whether any part of the page is visible.- Overrides:
isPageVisible
in classDocumentViewport
x
- the X position of the page in pointsy
- 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 classDocumentViewport
-
getZoom
public float getZoom()
Description copied from class:DocumentViewport
Get the current zoom level- Specified by:
getZoom
in classDocumentViewport
-
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 classDocumentViewport
-
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 classDocumentViewport
-
getPagePanel
public PagePanel getPagePanel()
Description copied from class:DocumentViewport
Get the currently displayed PagePanel. As forsetPage()
, 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 classDocumentViewport
-
getPagePanels
public Collection<PagePanel> getPagePanels()
Description copied from class:DocumentViewport
Returns a read only Collection containing all the PagePanels currently displayed in this Viewport.- Overrides:
getPagePanels
in classDocumentViewport
-
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 asDocumentViewport.getPage()
- Specified by:
getRenderingPage
in classDocumentViewport
-
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 verticalJScrollBar
, although this method may returnnull
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 classDocumentViewport
- Parameters:
position
- one ofAdjustable.HORIZONTAL
orAdjustable.VERTICAL
-
setAdjustableValues
public void setAdjustableValues(int horizontal, int vertical)
Description copied from class:DocumentViewport
Set the values of the adjustables returned byDocumentViewport.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 classDocumentViewport
- Parameters:
horizontal
- the value for theAdjustable.HORIZONTAL
adjustable.vertical
- the value for theAdjustable.VERTICAL
adjustable.
-
setRenderingHints
public void setRenderingHints(RenderingHints hints)
Description copied from class:DocumentViewport
Set theRenderingHints
that should be used when rendering the pages- Specified by:
setRenderingHints
in classDocumentViewport
-
addPagePanelListener
public void addPagePanelListener(PagePanelListener listener)
Description copied from class:DocumentViewport
Add aPagePanelListener
to anyPagePanel
objects that have been or will be created by this DocumentViewport- Specified by:
addPagePanelListener
in classDocumentViewport
- Parameters:
listener
- the listener
-
removePagePanelListener
public void removePagePanelListener(PagePanelListener listener)
Description copied from class:DocumentViewport
Remove aPagePanelListener
from anyPagePanel
objects that have been created by this DocumentViewport- Specified by:
removePagePanelListener
in classDocumentViewport
- Parameters:
listener
- the listener
-
addPagePanelInteractionListener
public void addPagePanelInteractionListener(PagePanelInteractionListener listener)
Description copied from class:DocumentViewport
Add aPagePanelInteractionListener
to anyPagePanel
objects that have been or will be created by this DocumentViewport- Specified by:
addPagePanelInteractionListener
in classDocumentViewport
- Parameters:
listener
- the listener
-
removePagePanelInteractionListener
public void removePagePanelInteractionListener(PagePanelInteractionListener listener)
Description copied from class:DocumentViewport
Remove aPagePanelInteractionListener
from anyPagePanel
objects that have been created by this DocumentViewport- Specified by:
removePagePanelInteractionListener
in classDocumentViewport
- 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 isDocumentViewport.ZOOM_NONE
, which means no action is performed, but other actions includeDocumentViewport.ZOOM_FIT
,DocumentViewport.ZOOM_FITWIDTH
andDocumentViewport.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 classDocumentViewport
-
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 ofzoommode
isDocumentViewport.ZOOM_NONE
then this just returns the value ofDocumentViewport.getZoom()
, otherwise the returned zoom level will correctly fit the page to the Viewport.- Overrides:
getTargetZoom
in classDocumentViewport
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 interfacePropertyChangeListener
- Overrides:
propertyChange
in classDocumentViewport
-
-