edu.northwestern.at.utils.swing.printing
Class PrintPreview

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Dialog
                  extended by javax.swing.JDialog
                      extended by edu.northwestern.at.utils.swing.ModalDialog
                          extended by edu.northwestern.at.utils.swing.printing.PrintPreview
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class PrintPreview
extends ModalDialog

Print Preview.

Creates a list of output page images which can be scrolled through. Suitable for print previewing documents of moderate size (~100 pages) as all the preview images are stored in memory. Each preview image requires about 90K-100K of memory. If your JVM has lots of available memory you can of course preview much larger documents.

A toolbar is placed above a scrolling pane which contains the page preview images. The toolbar allow for printing the page images, closing the print preview dialog, choosing the next or previous page for display, and choosing the scale factor to use when displaying the page images. You can also just scroll through the page images.

Based upon sample code written by Matthew Robinson and Pavel Vorobiev. Uses much less memory and displays preview images much more quickly than their original code. Also allows for a specified page format and provides a repagination dialog.

PrintPreview needs to be run from a separate thread so that the status dialogs will display correctly. The simplest way to do this is to use the static printPreview methods in the PrintUtilities class instead of creating a PrintPreview object directly.

See Also:
Serialized Form

Nested Class Summary
(package private)  class PrintPreview.PagePreview
          Create page preview for one page of output.
(package private)  class PrintPreview.PreviewContainer
          Container for array of print preview page images.
 
Nested classes/interfaces inherited from class javax.swing.JDialog
javax.swing.JDialog.AccessibleJDialog
 
Nested classes/interfaces inherited from class java.awt.Dialog
java.awt.Dialog.AccessibleAWTDialog, java.awt.Dialog.ModalExclusionType, java.awt.Dialog.ModalityType
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  int defaultScale
          Default page preview scale factor.
protected  java.awt.print.PageFormat pageFormat
          The page format for printing.
protected  PrintPreview.PreviewContainer previewContainer
          Holds list of print preview images for each page to print.
protected  java.awt.Component printableObject
          The object to be printed.
protected  int printerPageHeight
          Height of a page for printing purposes.
protected  int printerPageWidth
          Width of a page for printing purposes.
protected  javax.swing.JComboBox scaleComboBox
          Holds values for displaying scaled images of individual pages.
protected  javax.swing.JScrollPane scroller
          Allows scrolling through list of print preview images.
protected  java.lang.String title
          Title for printing.
protected  javax.swing.JToolBar toolBar
          Holds toolbar of print preview buttons.
 
Fields inherited from class edu.northwestern.at.utils.swing.ModalDialog
usePlatformPositionForDefaultButton
 
Fields inherited from class javax.swing.JDialog
accessibleContext, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Dialog
DEFAULT_MODALITY_TYPE
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
PrintPreview(java.awt.Component printableObject)
          Create print preview for a printable object.
PrintPreview(java.awt.Component printableObject, java.awt.print.PageFormat pageFormat)
          Create print preview for a printable object.
PrintPreview(java.awt.Component printableObject, java.awt.print.PageFormat thePageFormat, java.lang.String title)
          Create print preview for a printable object with a specified title.
 
Method Summary
protected  void getPageImages()
          Get preview page images.
 
Methods inherited from class edu.northwestern.at.utils.swing.ModalDialog
add, add, add, add, add, addButton, addDefaultButton, fixDefaultButtonPosition, getUsePlatformPositionForDefaultButton, paintImmediately, setInitialFocus, setUsePlatformPositionForDefaultButton, setVisible, show, showUnpacked, showUnpacked
 
Methods inherited from class javax.swing.JDialog
addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Dialog
addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setModal, setModalityType, setResizable, setTitle, setUndecorated, show, toBack
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, 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, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

printerPageWidth

protected int printerPageWidth
Width of a page for printing purposes.


printerPageHeight

protected int printerPageHeight
Height of a page for printing purposes.


printableObject

protected java.awt.Component printableObject
The object to be printed.


pageFormat

protected java.awt.print.PageFormat pageFormat
The page format for printing.


scaleComboBox

protected javax.swing.JComboBox scaleComboBox
Holds values for displaying scaled images of individual pages.


previewContainer

protected PrintPreview.PreviewContainer previewContainer
Holds list of print preview images for each page to print.


toolBar

protected javax.swing.JToolBar toolBar
Holds toolbar of print preview buttons.


scroller

protected javax.swing.JScrollPane scroller
Allows scrolling through list of print preview images.


defaultScale

protected int defaultScale
Default page preview scale factor.


title

protected java.lang.String title
Title for printing.

Constructor Detail

PrintPreview

public PrintPreview(java.awt.Component printableObject)
Create print preview for a printable object.

Parameters:
printableObject - The printable object. Must implement Printable interface.

PrintPreview

public PrintPreview(java.awt.Component printableObject,
                    java.awt.print.PageFormat pageFormat)
Create print preview for a printable object.

Parameters:
printableObject - The printable object. Must implement Printable interface.
pageFormat - The page format to use when laying out the preview.

PrintPreview

public PrintPreview(java.awt.Component printableObject,
                    java.awt.print.PageFormat thePageFormat,
                    java.lang.String title)
Create print preview for a printable object with a specified title.

Parameters:
printableObject - The printable object. Must implement Printable interface.
thePageFormat - The page format to use when laying out the preview.
title - Title for print preview.
Method Detail

getPageImages

protected void getPageImages()
Get preview page images.

Needs to be run in a separate thread so that the status dialogs work properly.