org.faceless.pdf2.viewer2
Class PDFViewer

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.PDFViewer
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible

public class PDFViewer
extends JPanel

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
currentUserThe name of the current user - optional, but if set this will be set as the author field on any annotations created by the user
unpromptedDirtyCloseWhether to prompt the user for confirmation when closing a window containng a PDF that has been modified
dpiThe 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
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
PDFViewer(Collection features)
          Creates new PDFViewer with the specified features
 
Method Summary
 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)
 DocumentPanel[] getDocumentPanels()
          Return all the DocumentPanels in the viewer
 ViewerFeature getFeature(Class clazz)
          Return the specified ViewerFeature, or null if it doesn't exist for this viewer
 ViewerFeature getFeature(String feature)
          Return the specified ViewerFeature, 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
 JMenu getMenu(String name)
          Return the specified Menu.
 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.
 PropertyManager getPropertyManager()
          Get the PropertyManager in use by this PDFViewer
 boolean getUnpromptedDirtyClose()
          Return the value set by setUnpromptedDirtyClose(boolean)
 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 ffile, EncryptionHandler[] handlers)
          Deprecated. this method has been superceded by the PDFImporter class
 void loadPDF(File ffile, 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(PDF pdf, String name)
          Load a pre-loaded PDF into the viewer.
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 features)
          Create a new PDFViewer object in a frame of it's own with the specified features.
 void putNamedComponent(String name, JComponent value)
          Add a named component to the viewers list
 void removeDocumentPanelListener(DocumentPanelListener listener)
          Add a DocumentPanelListener to any DocumentPanel objects created by this PDFViewer.
 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.
 
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

PDFViewer

public PDFViewer(Collection 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 specified ViewerFeature, or null if it doesn't exist for this viewer

Since:
2.8.5

getFeature

public ViewerFeature getFeature(Class clazz)
Return the specified ViewerFeature, or null if it doesn't exist for this viewer

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.

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 bracked 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


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 ffile,
                    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:
ffile - 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 ffile,
                    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:
ffile - 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 = (PDFImporter)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(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 open the PDF at
Since:
2.11.3

getActiveDocumentPanel

public DocumentPanel getActiveDocumentPanel()
Return the active DocumentPanel


getDocumentPanels

public DocumentPanel[] getDocumentPanels()
Return all the DocumentPanels 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.


removeDocumentPanelListener

public void removeDocumentPanelListener(DocumentPanelListener listener)
Add a DocumentPanelListener to any DocumentPanel objects created by this PDFViewer.


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 features)
Create a new PDFViewer object in a frame of it's 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


Copyright © 2001-2013 Big Faceless Organization