org.faceless.pdf2.viewer2

## Class PDFViewer

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.JPanel
        - - org.faceless.pdf2.viewer2.PDFViewer

- All Implemented Interfaces:
    ImageObserver, MenuContainer, Serializable, Accessible, Scrollable

      public class PDFViewer
      extends JPanel
      implements Scrollable

  The `PDFViewer` class is a simple Swing PDF viewer application. It demonstrates the `DocumentPanel` class, and can be run directly from the JAR (via the `PDFTool` class) like so.

       java -jar bfopdf.jar filename

  The filename argument is optional, but if supplied will load the specified PDF. See the viewer tutorial for more detail on how to use this class and the "viewer" package.
  The following initialization parameters may be specified

  currentUser | The name of the current user - optional, but if set this will be set as the author field on any annotations created by the user
  unpromptedDirtyClose | Whether to prompt the user for confirmation when closing a window containng a PDF that has been `modified`
  dpi | The resolution of the screen. This can be set to override `Toolkit.getScreenResolution()` if required

  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.5, with major rewrites in 2.8
  See Also:
    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 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 and Description
    `PDFViewer(Collection<ViewerFeature> features)` Creates new PDFViewer with the specified features

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addDocumentPanelListener(DocumentPanelListener listener)` Add a `DocumentPanelListener` to any `DocumentPanel` objects created by this PDFViewer.
    `void` | `close()` Close the PDFViewer.
    `void` | `closeDocumentPanel(DocumentPanel panel)` Close the specified `DocumentPanel`
    `DocumentPanel` | `getActiveDocumentPanel()` Return the active `DocumentPanel`
    `String` | `getCurrentUser()` Get the name of the current user, as set by `setCurrentUser(java.lang.String)`
    `DocumentPanelListener[]` | `getDocumentPanelListeners()` Return a list of `DocumentPanelListener` objects added to this class with the `addDocumentPanelListener(org.faceless.pdf2.viewer2.DocumentPanelListener)` method
    `DocumentPanel[]` | `getDocumentPanels()` Return all the `DocumentPanel`s in the viewer
    `<T extends ViewerFeature> T` | `getFeature(Class<T> clazz)` Return the first `ViewerFeature` of the specified class, or `null` if it doesn't exist for this viewer.
    `ViewerFeature` | `getFeature(String feature)` Return the `ViewerFeature` with the specified `name`, or `null` if it doesn't exist for this viewer.
    `ViewerFeature[]` | `getFeatures()` Return the list of all features set in the viewer
    `JSManager` | `getJSManager()` Return the JSManager object for this PDFViewer.
    `KeyStoreManager` | `getKeyStoreManager()` Get the `KeyStoreManager` in use by this PDFViewer
    `int` | `getMaxZoom()` Returns the maximum zoom level that should be used.
    `JMenu` | `getMenu(String name)` Return the specified Menu.
    `int` | `getMinZoom()` Returns the minimum zoom level that should be used.
    `JComponent` | `getNamedComponent(String name)` Return a Component created by a `ViewerFeature`
    `Preferences` | `getPreferences()` Return the `Preferences` object that should be used to store user preferences about the viewer, or `null` if preferences cannot be saved.
    `Dimension` | `getPreferredScrollableViewportSize()` Returns `JComponent.getPreferredSize()`; for the `Scrollable` interface.
    `PropertyManager` | `getPropertyManager()` Get the `PropertyManager` in use by this PDFViewer
    `int` | `getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)` Returns 0; for the `Scrollable` interface.
    `boolean` | `getScrollableTracksViewportHeight()` Returns true; for the `Scrollable` interface.
    `boolean` | `getScrollableTracksViewportWidth()` Returns true; for the `Scrollable` interface.
    `int` | `getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)` Returns 0; for the `Scrollable` interface.
    `boolean` | `getUnpromptedDirtyClose()` Return the value set by `setUnpromptedDirtyClose(boolean)`
    `int[]` | `getZoomIntervals()` Returns the zoom intervals that should be used to increase or decrease zoom level.
    `boolean` | `hasFeature(String feature)` Return true if the Viewer has a certain feature enabled.
    `boolean` | `hasFeature(ViewerFeature feature)` Return true if the Viewer has a certain feature enabled.
    `void` | `loadPDF(File ffile)` Load a PDF into the viewer from a file.
    `void` | `loadPDF(File file, EncryptionHandler handler)` Deprecated. this method has been superceded by the `PDFImporter` class
    `void` | `loadPDF(File file, EncryptionHandler[] handlers)` Deprecated. this method has been superceded by the `PDFImporter` class
    `void` | `loadPDF(File file, int pagenumber)` Load a PDF into the viewer from a file.
    `void` | `loadPDF(InputStream in, EncryptionHandler[] handlers, String title, File file)` Deprecated. this method has been superceded by the `PDFImporter` class
    `void` | `loadPDF(PDFParser parser, String name)` Load a pre-loaded PDF into the viewer.
    `void` | `loadPDF(PDFParser parser, String name, int pagenumber)` Load a pre-loaded PDF into the viewer.
    `void` | `loadPDF(PDFParser parser, String name, int pagenumber, File file, boolean addtomostrecent, DocumentPanelListener listener)` Load a pre-loaded PDF into the viewer.
    `void` | `loadPDF(PDF pdf, String name)` Load a pre-loaded PDF into the viewer.
    `void` | `loadPDF(URL url)` Load a PDF into the viewer from a URL.
    `static void` | `main(String[] args)` The main() method can be invoked to run this class from the command line.
    `static PDFViewer` | `newPDFViewer()` Create a new PDFViewer object in a frame of it's own.
    `static PDFViewer` | `newPDFViewer(Collection<ViewerFeature> features)` Create a new PDFViewer object in a frame of its own with the specified features.
    `void` | `putNamedComponent(String name, JComponent value)` Add a named component to the viewers list
    `void` | `removeDocumentPanelListener(DocumentPanelListener listener)` Remove a `DocumentPanelListener` previously added to the class with the `addDocumentPanelListener(org.faceless.pdf2.viewer2.DocumentPanelListener)` method.
    `void` | `setCurrentUser(String user)` Set the name of the current user (for Annotations).
    `void` | `setKeyStoreManager(KeyStoreManager manager)` Set the `KeyStoreManager` used by this PDFViewer
    `JMenuItem` | `setMenu(String name, char mnemonic, boolean documentrequired, ActionListener listener)` Add or replace a menu item in the viewer.
    `void` | `setPropertyManager(PropertyManager manager)` Set the `PropertyManager` in use by this PDFViewer
    `void` | `setUnpromptedDirtyClose(boolean ignore)` Set whether to allow a window containing a modified PDF to be closed without prompting.
    `void` | `setZoomIntervals(int[] intervals)` Set the list of zoom intervals that should be used to increase or decrease zoom level.
    `void` | `setZoomRange(int min, int max)` Set the minumum and maximum zoom values.

    - ### 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, getPeer, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, 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`

- - ### Constructor Detail

    - #### PDFViewer

          public PDFViewer(Collection<ViewerFeature> features)

      Creates new PDFViewer with the specified features
      Parameters:
        `features` - a Collection of `ViewerFeature` objects that are enabled
      Since:
        2.7.9
      See Also:
        `ViewerFeature`

  - ### Method Detail

    - #### getPreferences

          public Preferences getPreferences()

      Return the `Preferences` object that should be used to store user preferences about the viewer, or `null` if preferences cannot be saved.
      Since:
        2.11

    - #### getJSManager

          public JSManager getJSManager()

      Return the JSManager object for this PDFViewer.
      Since:
        2.9

    - #### setPropertyManager

          public final void setPropertyManager(PropertyManager manager)

      Set the `PropertyManager` in use by this PDFViewer
      Since:
        2.8.5

    - #### getPropertyManager

          public final PropertyManager getPropertyManager()

      Get the `PropertyManager` in use by this PDFViewer
      Since:
        2.8.5

    - #### getKeyStoreManager

          public KeyStoreManager getKeyStoreManager()

      Get the `KeyStoreManager` in use by this PDFViewer
      Since:
        2.8.3

    - #### setKeyStoreManager

          public void setKeyStoreManager(KeyStoreManager manager)

      Set the `KeyStoreManager` used by this PDFViewer
      Since:
        2.8.3

    - #### hasFeature

          public boolean hasFeature(ViewerFeature feature)

      Return true if the Viewer has a certain feature enabled.
      Parameters:
        `feature` - the feature to look for

    - #### hasFeature

          public boolean hasFeature(String feature)

      Return true if the Viewer has a certain feature enabled.
      Parameters:
        `feature` - the name of the feature to look for

    - #### getFeatures

          public ViewerFeature[] getFeatures()

      Return the list of all features set in the viewer

    - #### getFeature

          public ViewerFeature getFeature(String feature)

      Return the `ViewerFeature` with the specified `name`, or `null` if it doesn't exist for this viewer.
      Parameters:
        `feature` - the name of the feature
      Since:
        2.8.5

    - #### getFeature

          public <T extends ViewerFeature> T getFeature(Class<T> clazz)

      Return the first `ViewerFeature` of the specified class, or `null` if it doesn't exist for this viewer. For example

           PDFImporter importer = viewer.getFeature(PDFImporter.class);

      Parameters:
        `clazz` - the Class of the ViewerFeature.
      Since:
        2.10.2

    - #### setMenu

          public JMenuItem setMenu(String name,
                                   char mnemonic,
                                   boolean documentrequired,
                                   ActionListener listener)

      Add or replace a menu item in the viewer. Since 2.13.1, if the supplied listener is an `Action` then the `Action.NAME` and `Action.ACCELERATOR_KEY` (if set) will override the `name` and `mnemonic` supplied here, and the `documentrequired` parameter will be ignored, as the Action is expected to manage it's own `enabled` state.
      Parameters:
        `name` - the name of the menu, if the form "File\tOpen" or "File\tQuit(999)". The tab character is used to separate the items in the menu hierarchy, and the optional bracketed value is used to control ordering in the menu.
        `mnemonic` - the mnemonic to assign to this menu - lowercase or uppercase letter, or `(char)0` for no mnenonic
        `documentrequired` - whether this menu item should only be enabled if a document is loaded
        `listener` - the `ActionListener` to run when this menu item is activated
      Since:
        2.10.2

    - #### getMenu

          public JMenu getMenu(String name)

      Return the specified Menu. If the menu doesn't exist, it's created
      Parameters:
        `name` - the name of the Menu, before it's been localized
      Since:
        2.10.4

    - #### putNamedComponent

          public void putNamedComponent(String name,
                                        JComponent value)

      Add a named component to the viewers list
      Since:
        2.10.2

    - #### getNamedComponent

          public JComponent getNamedComponent(String name)

      Return a Component created by a `ViewerFeature`

    - #### getPreferredScrollableViewportSize

          public Dimension getPreferredScrollableViewportSize()

      Returns `JComponent.getPreferredSize()`; for the `Scrollable` interface.
      Specified by:
        `getPreferredScrollableViewportSize` in interface `Scrollable`

    - #### getScrollableUnitIncrement

          public int getScrollableUnitIncrement(Rectangle visibleRect,
                                                int orientation,
                                                int direction)

      Returns 0; for the `Scrollable` interface.
      Specified by:
        `getScrollableUnitIncrement` in interface `Scrollable`

    - #### getScrollableBlockIncrement

          public int getScrollableBlockIncrement(Rectangle visibleRect,
                                                 int orientation,
                                                 int direction)

      Returns 0; for the `Scrollable` interface.
      Specified by:
        `getScrollableBlockIncrement` in interface `Scrollable`

    - #### getScrollableTracksViewportWidth

          public boolean getScrollableTracksViewportWidth()

      Returns true; for the `Scrollable` interface.
      Specified by:
        `getScrollableTracksViewportWidth` in interface `Scrollable`

    - #### getScrollableTracksViewportHeight

          public boolean getScrollableTracksViewportHeight()

      Returns true; for the `Scrollable` interface.
      Specified by:
        `getScrollableTracksViewportHeight` in interface `Scrollable`

    - #### loadPDF

          public void loadPDF(File ffile)

      Load a PDF into the viewer from a file. This method will search the `Importer` objects in order until it finds one that matches the file, then will use that to load the PDF into the viewer. Prompting for passwords etc. is left to the appropriate `Importer` - see the `PDFImporter` class for details on the default behaviour.
      Parameters:
        `ffile` - the PDF file to load, or `null` to select it with a chooser
      Since:
        2.7.1

    - #### loadPDF

          public void loadPDF(File file,
                              int pagenumber)

      Load a PDF into the viewer from a file. This method will search the `Importer` objects in order until it finds one that matches the file, then will use that to load the PDF into the viewer. Prompting for passwords etc. is left to the appropriate `Importer` - see the `PDFImporter` class for details on the default behaviour.
      Parameters:
        `file` - the PDF file to load, or `null` to select it with a chooser
        `pagenumber` - the initial page number to request. May be overridden
      Since:
        2.11.10

    - #### loadPDF

          public void loadPDF(File file,
                              EncryptionHandler handler)

      Deprecated. this method has been superceded by the `PDFImporter` class
      Load a PDF into the viewer from a file using the specified EncryptionHandler. This method is now deprecated - the correct way to load a PDF with custom EncryptionHandlers is to modify the `PDFImporter` passed in to the PDF Constructor.
      Parameters:
        `file` - the PDF File
        `handler` - the EncryptionHandler to use
      Since:
        2.8

    - #### loadPDF

          public void loadPDF(File file,
                              EncryptionHandler[] handlers)

      Deprecated. this method has been superceded by the `PDFImporter` class
      Load a PDF into the viewer from a file using the specified list of EncryptionHandler. This method is now deprecated - the correct way to load a PDF with custom EncryptionHandlers is to modify the `PDFImporter` passed in to the PDF Constructor.
      Parameters:
        `file` - the PDF File
        `handlers` - the list of EncryptionHandlers
      Since:
        2.8

    - #### loadPDF

          public void loadPDF(InputStream in,
                              EncryptionHandler[] handlers,
                              String title,
                              File file)

      Deprecated. this method has been superceded by the `PDFImporter` class

      Load a PDF into the viewer from an InputStream. Note that this method will return immediately, which means the calling thread must not close the InputStream. Doing so will result in an Exception. The stream will be closed by the reading thread when it is completed.

      This method is now deprecated - the correct way to load a PDF from an InputStream is to call the `Importer.getImporter(PDFViewer, InputStream, String, File)` method. For example:

           PDFImporter importer = viewer.getFeature(PDFImporter.class);
           importer.getImporter(viewer, inputstream, title, file).start(viewer, "Loading");

      Parameters:
        `in` - the InputStream to load the PDF from
        `handlers` - the EncryptionHandlers to use to try to decrypt the PDF
        `title` - The name of the Window. May be null.
        `file` - If using a save dialog, the initial value to set the dialog to. May be null.
      Since:
        2.8.3

    - #### loadPDF

          public void loadPDF(URL url)
                       throws IOException

      Load a PDF into the viewer from a URL. If the URL contains a fragment which is a valid page number, that page will be selected on load.
      Parameters:
        `url` - the URL to load
      Throws:
        `IOException`
      Since:
        2.14
      See Also:
        `PDFImporter`

    - #### loadPDF

          public void loadPDF(PDF pdf,
                              String name)

      Load a pre-loaded PDF into the viewer. Simply calls `loadPDF(new PDFParser(pdf), name)`.
      Parameters:
        `pdf` - the PDF to load
        `name` - the name of the PDF, to display in the title bar.
      Since:
        2.7.1

    - #### loadPDF

          public void loadPDF(PDFParser parser,
                              String name)

      Load a pre-loaded PDF into the viewer.
      Parameters:
        `parser` - the PDFParser referencing the PDF to load
        `name` - the name of the PDF, to display in the title bar.
      Since:
        2.11.3

    - #### loadPDF

          public void loadPDF(PDFParser parser,
                              String name,
                              int pagenumber)

      Load a pre-loaded PDF into the viewer.
      Parameters:
        `parser` - the PDFParser referencing the PDF to load
        `name` - the name of the PDF, to display in the title bar.
        `pagenumber` - the initial page to display
      Since:
        2.11.3

    - #### loadPDF

          public void loadPDF(PDFParser parser,
                              String name,
                              int pagenumber,
                              File file,
                              boolean addtomostrecent,
                              DocumentPanelListener listener)

      Load a pre-loaded PDF into the viewer.
      Parameters:
        `parser` - the PDFParser referencing the PDF to load
        `name` - the name of the PDF, to display in the title bar
        `pagenumber` - the initial page to display
        `file` - the file to pass to `DocumentPanel.setAssociatedFile(java.io.File)`. May be null.
        `addtomostrecent` - whether to add the File containing the PDF to the list of recently opened files
        `listener` - an optional callback object. If specified, this listener will be called with a "created" `DocumentPanelEvent` specifying the DocumentPanel created by this method. The listener will not be added to the PDFViewer's `list`, and the event will not be fired in the normal way to those listener. This approach can be used to run a one-off action on the panel immediately when it's created, without needing to add listners and wait for the event to be fired.
      Since:
        2.18.1

    - #### getActiveDocumentPanel

          public DocumentPanel getActiveDocumentPanel()

      Return the active `DocumentPanel`

    - #### getDocumentPanels

          public DocumentPanel[] getDocumentPanels()

      Return all the `DocumentPanel`s in the viewer
      Since:
        2.8.5

    - #### close

          public void close()

      Close the PDFViewer. Should be called before this PDFViewer is permanently removed from the Swing object hierarchy.
      Since:
        2.11.18

    - #### closeDocumentPanel

          public void closeDocumentPanel(DocumentPanel panel)

      Close the specified `DocumentPanel`
      Parameters:
        `panel` - the panel to close - usually the return value of `getActiveDocumentPanel()`
      Since:
        2.10.2

    - #### addDocumentPanelListener

          public void addDocumentPanelListener(DocumentPanelListener listener)

      Add a `DocumentPanelListener` to any `DocumentPanel` objects created by this PDFViewer. The listener will be attached to any existing `DocumentPanel` objects, and added to any new ones that are created later.

    - #### removeDocumentPanelListener

          public void removeDocumentPanelListener(DocumentPanelListener listener)

      Remove a `DocumentPanelListener` previously added to the class with the `addDocumentPanelListener(org.faceless.pdf2.viewer2.DocumentPanelListener)` method.

    - #### getDocumentPanelListeners

          public DocumentPanelListener[] getDocumentPanelListeners()

      Return a list of `DocumentPanelListener` objects added to this class with the `addDocumentPanelListener(org.faceless.pdf2.viewer2.DocumentPanelListener)` method
      Since:
        2.13.1

    - #### newPDFViewer

          public static PDFViewer newPDFViewer()

      Create a new PDFViewer object in a frame of it's own. Top level routine to be called by main()
      Since:
        2.7..1

    - #### newPDFViewer

          public static PDFViewer newPDFViewer(Collection<ViewerFeature> features)

      Create a new PDFViewer object in a frame of its own with the specified features.
      Parameters:
        `features` - a Collection of `ViewerFeature` objects that are to be supported
      Since:
        2.7.9
      See Also:
        `ViewerFeature`

    - #### main

          public static void main(String[] args)

      The main() method can be invoked to run this class from the command line. A single argument specifying the name of the file to open is optional

    - #### setCurrentUser

          public void setCurrentUser(String user)

      Set the name of the current user (for Annotations). The default is null. Can also be set by the `currentUser` initialization parameter
      Since:
        2.11.18

    - #### getCurrentUser

          public String getCurrentUser()

      Get the name of the current user, as set by `setCurrentUser(java.lang.String)`
      Since:
        2.11.18

    - #### setUnpromptedDirtyClose

          public void setUnpromptedDirtyClose(boolean ignore)

      Set whether to allow a window containing a modified PDF to be closed without prompting. Can also be set by the `unpromptedDirtyClose` initialization parameter
      Since:
        2.11.19

    - #### getUnpromptedDirtyClose

          public boolean getUnpromptedDirtyClose()

      Return the value set by `setUnpromptedDirtyClose(boolean)`
      Since:
        2.11.19

    - #### getMinZoom

          public int getMinZoom()

      Returns the minimum zoom level that should be used.
      Since:
        2.18

    - #### getMaxZoom

          public int getMaxZoom()

      Returns the maximum zoom level that should be used.
      Since:
        2.18

    - #### setZoomRange

          public void setZoomRange(int min,
                                   int max)

      Set the minumum and maximum zoom values. Requires 1 <= min <= max <= 9999.
      Parameters:
        `min` - the minimum zoom level - the default is 1
        `max` - the minimum zoom level - the default is 9999
      Since:
        2.18

    - #### getZoomIntervals

          public int[] getZoomIntervals()

      Returns the zoom intervals that should be used to increase or decrease zoom level.
      Since:
        2.18

    - #### setZoomIntervals

          public void setZoomIntervals(int[] intervals)

      Set the list of zoom intervals that should be used to increase or decrease zoom level. The list must be >= 1 item long, in ascending order, and all values must fall between min and max as set by `setZoomRange(int, int)`
      Parameters:
        `intervals` - the list of zoom intervals
      Since:
        2.18

Copyright © 2001-2015 Big Faceless Organization