org.icepdf.core.views.swing
Class PageViewComponentImpl

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by org.icepdf.core.views.swing.AbstractPageViewComponent
                  extended by org.icepdf.core.views.swing.PageViewComponentImpl
All Implemented Interfaces:
java.awt.event.ComponentListener, java.awt.event.FocusListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.swing.event.MouseInputListener, PaintPageListener, PageViewComponent

public class PageViewComponentImpl
extends AbstractPageViewComponent
implements PaintPageListener, java.awt.event.FocusListener, java.awt.event.ComponentListener

This class represents a single page view of a PDF document as a JComponent. This component can be used in any swing application to display a PDF page. The default RI implemenation comes with four predefined page views which use this component. If custom page views are need then the following class should be referenced:

This component assumes that white paper is the default and thus uses white as the default background color for buffers and page painting if no color is specified by the PDF. This default colour can be changed using the system property org.icepdf.core.views.page.paper.color. This property takes RRGGBB hex colours as values. eg. black=000000 or white=FFFFFFF.

Since:
2.5
See Also:
org.icepdf.ri.common.views.OneColumnPageView, org.icepdf.ri.common.views.OnePageView, org.icepdf.ri.common.views.TwoColumnPageView, org.icepdf.ri.common.views.TwoPageView, org.icepdf.ri.common.views.AbstractDocumentView, org.icepdf.ri.common.views.AbstractDocumentViewModel,

The page view takes advantage of a buffered display to speed up page scrolling and provide users with a better overall UI experiance. The size of the buffer can also be set with the system properties "org.icepdf.core.views.buffersize.vertical" and "org.icepdf.core.views.buffersize.horizontal". These system properties define the vertical and horizontal ratios in which the current viewport will be extended to define the buffer size.

, Serialized Form

Nested Class Summary
 class PageViewComponentImpl.PagePainter
           
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
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.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  AnnotationHandler annotationHandler
           
protected  DocumentViewController documentViewController
           
protected  DocumentViewModel documentViewModel
           
protected  DocumentView parentDocumentView
           
protected  TextSelectionPageHandler textSelectionHandler
           
 
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
PageViewComponentImpl(DocumentViewModel documentViewModel, PageTree pageTree, int pageNumber, javax.swing.JScrollPane parentScrollPane)
           
PageViewComponentImpl(DocumentViewModel documentViewModel, PageTree pageTree, int pageNumber, javax.swing.JScrollPane parentScrollPane, int width, int height)
           
 
Method Summary
 AnnotationComponent addAnnotation(Annotation annotation)
          Adds the specified annotation to this page instance.
 void addPageViewComponentListeners()
          If no DocumentView is used then the various mouse and keyboard listeners must be added tothis component.
 void clearSelectedText()
          Clear any internal data stractures that represent selected text and repaint the component.
 void componentHidden(java.awt.event.ComponentEvent e)
           
 void componentMoved(java.awt.event.ComponentEvent e)
           
 void componentResized(java.awt.event.ComponentEvent e)
           
 void componentShown(java.awt.event.ComponentEvent e)
           
 void dispose()
          Called to free resources used by this component.
 void focusGained(java.awt.event.FocusEvent e)
           
 void focusLost(java.awt.event.FocusEvent e)
           
 int getPageIndex()
          Gets the page index which this PageViewComponent is drawing.
 Page getPageLock(java.lang.Object lock)
           
 java.awt.Dimension getPreferredSize()
           
 void init()
          Called to initialize resources used by this class.
 void invalidate()
          Called to invalidate the component.
 void invalidatePage()
          Invalidates the underling document page and resepctive resources.
 void mouseClicked(java.awt.event.MouseEvent e)
          Mouse clicked event priority is given to annotation clicks.
 void mouseDragged(java.awt.event.MouseEvent e)
           
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mouseMoved(java.awt.event.MouseEvent e)
           
 void mousePressed(java.awt.event.MouseEvent e)
           
 void mouseReleased(java.awt.event.MouseEvent e)
           
 void paintComponent(java.awt.Graphics gg)
           
 void paintPage(PaintPageEvent event)
          Invoked when it is a good time to paint a page.
 void releasePageLock(Page currentPage, java.lang.Object lock)
           
 void removeAnnotation(AnnotationComponent annotationComp)
          Removes the specified annotation from this page component
 void setDocumentViewCallback(DocumentView parentDocumentView)
          Set the parent Document View class which is resbonsible for drawing and the general management of PageViewComponents for a particular view.
 void setTextSelectionRectangle(java.awt.Point cursorLocation, java.awt.Rectangle selection)
          Sets the text that is contained in the specified recttangle and the given mouse pointer.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, 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, updateUI
 
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, 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
 
Methods inherited from interface org.icepdf.core.views.PageViewComponent
isShowing
 

Field Detail

parentDocumentView

protected DocumentView parentDocumentView

documentViewModel

protected DocumentViewModel documentViewModel

documentViewController

protected DocumentViewController documentViewController

annotationHandler

protected AnnotationHandler annotationHandler

textSelectionHandler

protected TextSelectionPageHandler textSelectionHandler
Constructor Detail

PageViewComponentImpl

public PageViewComponentImpl(DocumentViewModel documentViewModel,
                             PageTree pageTree,
                             int pageNumber,
                             javax.swing.JScrollPane parentScrollPane)

PageViewComponentImpl

public PageViewComponentImpl(DocumentViewModel documentViewModel,
                             PageTree pageTree,
                             int pageNumber,
                             javax.swing.JScrollPane parentScrollPane,
                             int width,
                             int height)
Method Detail

addPageViewComponentListeners

public void addPageViewComponentListeners()
If no DocumentView is used then the various mouse and keyboard listeners must be added tothis component. If there is a document view then we let it delegate events to make life easier.


addAnnotation

public AnnotationComponent addAnnotation(Annotation annotation)
Adds the specified annotation to this page instance. The annotation is wrapped with a AnnotationComponent and added to this components layout manager.

Specified by:
addAnnotation in interface PageViewComponent
Parameters:
annotation - annotation to add to this page instance. .

removeAnnotation

public void removeAnnotation(AnnotationComponent annotationComp)
Removes the specified annotation from this page component

Specified by:
removeAnnotation in interface PageViewComponent
Parameters:
annotationComp - annotation to be removed.

init

public void init()
Description copied from interface: PageViewComponent
Called to initialize resources used by this class.

Specified by:
init in interface PageViewComponent

invalidatePage

public void invalidatePage()
Description copied from interface: PageViewComponent
Invalidates the underling document page and resepctive resources. Subsiquent page calls will reinitialize the page data.

Specified by:
invalidatePage in interface PageViewComponent

dispose

public void dispose()
Description copied from interface: PageViewComponent
Called to free resources used by this component.

Specified by:
dispose in interface PageViewComponent

getPageLock

public Page getPageLock(java.lang.Object lock)
Specified by:
getPageLock in class AbstractPageViewComponent

releasePageLock

public void releasePageLock(Page currentPage,
                            java.lang.Object lock)
Specified by:
releasePageLock in class AbstractPageViewComponent

setDocumentViewCallback

public void setDocumentViewCallback(DocumentView parentDocumentView)
Description copied from interface: PageViewComponent
Set the parent Document View class which is resbonsible for drawing and the general management of PageViewComponents for a particular view.

Specified by:
setDocumentViewCallback in interface PageViewComponent
Parameters:
parentDocumentView - type of view, single page, continuous, etc.

getPageIndex

public int getPageIndex()
Description copied from interface: PageViewComponent
Gets the page index which this PageViewComponent is drawing.

Specified by:
getPageIndex in interface PageViewComponent
Returns:
zero pages page index of the page drawn by this component.

getPreferredSize

public java.awt.Dimension getPreferredSize()
Overrides:
getPreferredSize in class javax.swing.JComponent

invalidate

public void invalidate()
Description copied from interface: PageViewComponent
Called to invalidate the component.

Specified by:
invalidate in interface PageViewComponent
Overrides:
invalidate in class java.awt.Container

paintComponent

public void paintComponent(java.awt.Graphics gg)
Overrides:
paintComponent in class javax.swing.JComponent

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Mouse clicked event priority is given to annotation clicks. Otherwise the selected tool state is respected.

Specified by:
mouseClicked in interface java.awt.event.MouseListener
Parameters:
e - awt mouse event.

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Specified by:
mousePressed in interface java.awt.event.MouseListener

clearSelectedText

public void clearSelectedText()
Description copied from interface: PageViewComponent
Clear any internal data stractures that represent selected text and repaint the component.

Specified by:
clearSelectedText in interface PageViewComponent

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Specified by:
mouseReleased in interface java.awt.event.MouseListener

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent e)
Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener

setTextSelectionRectangle

public void setTextSelectionRectangle(java.awt.Point cursorLocation,
                                      java.awt.Rectangle selection)
Description copied from interface: PageViewComponent
Sets the text that is contained in the specified recttangle and the given mouse pointer. The cursor and selection rectangel must be in in page space.

Specified by:
setTextSelectionRectangle in interface PageViewComponent
Parameters:
cursorLocation - location of cursor or mouse.
selection - rectangle of text to include in selection.

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)
Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener

focusGained

public void focusGained(java.awt.event.FocusEvent e)
Specified by:
focusGained in interface java.awt.event.FocusListener

focusLost

public void focusLost(java.awt.event.FocusEvent e)
Specified by:
focusLost in interface java.awt.event.FocusListener

componentHidden

public void componentHidden(java.awt.event.ComponentEvent e)
Specified by:
componentHidden in interface java.awt.event.ComponentListener

componentMoved

public void componentMoved(java.awt.event.ComponentEvent e)
Specified by:
componentMoved in interface java.awt.event.ComponentListener

componentResized

public void componentResized(java.awt.event.ComponentEvent e)
Specified by:
componentResized in interface java.awt.event.ComponentListener

componentShown

public void componentShown(java.awt.event.ComponentEvent e)
Specified by:
componentShown in interface java.awt.event.ComponentListener

paintPage

public void paintPage(PaintPageEvent event)
Description copied from interface: PaintPageListener
Invoked when it is a good time to paint a page.

Specified by:
paintPage in interface PaintPageListener
Parameters:
event - paint event containg page information