Package org.apache.fop.render.awt.viewer
Class PreviewPanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- org.apache.fop.render.awt.viewer.PreviewPanel
-
- All Implemented Interfaces:
java.awt.image.ImageObserver,java.awt.MenuContainer,java.io.Serializable,javax.accessibility.Accessible
public class PreviewPanel extends javax.swing.JPanelHolds a scrollpane with the rendered page(s) and handles actions performed to alter the display of the page.
Use PreviewPanel when you want to embed a preview in your own application with your own controls. Use PreviewDialog when you want to use the standard Fop controls.
In order to embed a PreviewPanel in your own app, create your own renderer, and your own agent. In order to support reloads, you may also implement your own Renderable extension or the default InputHandler. Setting the Renderable to null works fine though. Then call setPreviewDialogDisplayed(false) to hide the default dialog. Finally create a preview panel with the agent, renderable and renderer and add it to your gui:
FopFactory fopFactory = FopFactory.newInstance(); FOUserAgent agent = fopFactory.newFOUserAgent(); AWTRenderer renderer = new AWTRenderer(agent); agent.setRendererOverride(renderer); previewPanel = new PreviewPanel(agent, null, renderer); previewPanel = new PreviewPanel(ua); myGui.add(previewPanel);
In order to set options and display a page do:renderer.clearViewportList(); // build report xml here reload(); // optional if setting changed
If you wan't to change settings, don't call reload. A good example is to set the page to fill the screen and set the scrolling mode:double scale = previewPanel.getScaleToFitWindow(); previewPanel.setScaleFactor(scale); previewPanel.setDisplayMode(PreviewPanel.CONTINUOUS);
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classPreviewPanel.PageNumberListenerprivate classPreviewPanel.ReloaderThis class is used to reload document in a thread safe way.private classPreviewPanel.ShowPageImageThis class is used to render the page image in a thread safe way.private classPreviewPanel.ViewportScrollerAllows any mouse drag on the page area to scroll the display window.-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private static intBORDER_SPACINGThe number of pixels left empty at the top bottom and sides of the page.static intCONT_FACINGConstant for displaying even/odd pages side by side in continuous form.static intCONTINUOUSConstant for setting continuous page display.private intcurrentPageThe number of the page which is currently selectedprivate intdisplayModeThe display mode.private intfirstPageThe index of the first page displayed on screen.protected FOUserAgentfoUserAgentThe FOUserAgent associated with this panel - often shared with PreviewDialogprivate javax.swing.JPanelgridPanelPanel showing the page panels in a grid.private ImageProxyPanel[]pagePanelsThe component(s) that hold the rendered page(s)private intpageRangeThe number of pages concurrently displayed on screen.private javax.swing.JScrollPanepreviewAreaThe main display areaprivate PreviewPanel.ReloaderreloaderAsynchronous reloader thread, used when reload() method is called.protected RenderablerenderableRenderable instance that can be used to reload and re-render a document after modifications.private AWTRendererrendererThe AWT renderer - often shared with PreviewDialogprivate PreviewPanel.ViewportScrollerscrollerAllows any mouse drag on the page area to scroll the display window.static intSINGLEConstant for setting single page display.-
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
-
-
Constructor Summary
Constructors Constructor Description PreviewPanel(FOUserAgent foUserAgent, Renderable renderable, AWTRenderer renderer)Creates a new PreviewPanel instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddPageChangeListener(PageChangeListener l)Add a listener to receive notification of page change events.(package private) voiddebug()Allows a (yet) simple visual debug of the document.protected voidfirePageChange(int oldPage, int newPage)Notify all registered listeners of a page change event.intgetDisplayMode()Returns the display mode.intgetPage()doublegetScaleToFit(double viewWidth, double viewHeight)Returns the scale factor required in order to fit either the current page or two adjacent pages within a window of the given height and width, depending on the display mode.doublegetScaleToFitWidth()As getScaleToFitWindow, but ignoring the Y axis.doublegetScaleToFitWindow()Returns the scale factor required in order to fit either the current page within the current window or to fit two adjacent pages within the display if the displaymode is continuous.voidreload()Reloads and reformats document.voidremovePageChangeListener(PageChangeListener l)Removes a page change listener.voidsetDisplayMode(int mode)Sets the display mode.voidsetPage(int number)Selects the given page, displays it on screen and notifies listeners about the change in selection.voidsetScaleFactor(double scale)Scales page imagevoidshowPage()Starts rendering process and shows the current page.-
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
-
-
-
-
Field Detail
-
SINGLE
public static final int SINGLE
Constant for setting single page display.- See Also:
- Constant Field Values
-
CONTINUOUS
public static final int CONTINUOUS
Constant for setting continuous page display.- See Also:
- Constant Field Values
-
CONT_FACING
public static final int CONT_FACING
Constant for displaying even/odd pages side by side in continuous form.- See Also:
- Constant Field Values
-
BORDER_SPACING
private static final int BORDER_SPACING
The number of pixels left empty at the top bottom and sides of the page.- See Also:
- Constant Field Values
-
previewArea
private javax.swing.JScrollPane previewArea
The main display area
-
renderer
private AWTRenderer renderer
The AWT renderer - often shared with PreviewDialog
-
foUserAgent
protected FOUserAgent foUserAgent
The FOUserAgent associated with this panel - often shared with PreviewDialog
-
renderable
protected Renderable renderable
Renderable instance that can be used to reload and re-render a document after modifications.
-
currentPage
private int currentPage
The number of the page which is currently selected
-
firstPage
private int firstPage
The index of the first page displayed on screen.
-
pageRange
private int pageRange
The number of pages concurrently displayed on screen.
-
displayMode
private int displayMode
The display mode. One of SINGLE, CONTINUOUS or CONT_FACING.
-
pagePanels
private ImageProxyPanel[] pagePanels
The component(s) that hold the rendered page(s)
-
gridPanel
private javax.swing.JPanel gridPanel
Panel showing the page panels in a grid. Usually the dimensions of the grid are 1x1, nx1 or nx2.
-
reloader
private PreviewPanel.Reloader reloader
Asynchronous reloader thread, used when reload() method is called.
-
scroller
private PreviewPanel.ViewportScroller scroller
Allows any mouse drag on the page area to scroll the display window.
-
-
Constructor Detail
-
PreviewPanel
public PreviewPanel(FOUserAgent foUserAgent, Renderable renderable, AWTRenderer renderer)
Creates a new PreviewPanel instance.- Parameters:
foUserAgent- the user agentrenderable- the Renderable instance that is used to reload/re-render a document after modifications.renderer- the AWT Renderer instance to paint with
-
-
Method Detail
-
getPage
public int getPage()
- Returns:
- the currently visible page
-
setPage
public void setPage(int number)
Selects the given page, displays it on screen and notifies listeners about the change in selection.- Parameters:
number- the page number
-
setDisplayMode
public void setDisplayMode(int mode)
Sets the display mode.- Parameters:
mode- One of SINGLE, CONTINUOUS or CONT_FACING.
-
getDisplayMode
public int getDisplayMode()
Returns the display mode.- Returns:
- mode One of SINGLE, CONTINUOUS or CONT_FACING.
-
reload
public void reload()
Reloads and reformats document.
-
debug
void debug()
Allows a (yet) simple visual debug of the document.
-
addPageChangeListener
public void addPageChangeListener(PageChangeListener l)
Add a listener to receive notification of page change events. Events will be fired whenever the currentPage value is changed. The values recorded are 0-based.- Parameters:
l- the page change listener to add
-
removePageChangeListener
public void removePageChangeListener(PageChangeListener l)
Removes a page change listener.- Parameters:
l- the page change listener to remove
-
firePageChange
protected void firePageChange(int oldPage, int newPage)Notify all registered listeners of a page change event.- Parameters:
oldPage- the old pagenewPage- the new page
-
setScaleFactor
public void setScaleFactor(double scale)
Scales page image- Parameters:
scale- [0;1]
-
getScaleToFitWindow
public double getScaleToFitWindow() throws FOPExceptionReturns the scale factor required in order to fit either the current page within the current window or to fit two adjacent pages within the display if the displaymode is continuous.- Returns:
- the requested scale factor
- Throws:
FOPException- in case of an error while fetching the PageViewport
-
getScaleToFitWidth
public double getScaleToFitWidth() throws FOPExceptionAs getScaleToFitWindow, but ignoring the Y axis.- Returns:
- the requested scale factor
- Throws:
FOPException- in case of an error while fetching the PageViewport
-
getScaleToFit
public double getScaleToFit(double viewWidth, double viewHeight) throws FOPExceptionReturns the scale factor required in order to fit either the current page or two adjacent pages within a window of the given height and width, depending on the display mode. In order to ignore either dimension, just specify it as Double.MAX_VALUE.- Parameters:
viewWidth- width of the viewviewHeight- height of the view- Returns:
- the requested scale factor
- Throws:
FOPException- in case of an error while fetching the PageViewport
-
showPage
public void showPage()
Starts rendering process and shows the current page.
-
-