org.icepdf.ri.common.views
Class PageViewComponentImpl

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JLayeredPane
                  extended by org.icepdf.ri.common.views.AbstractPageViewComponent
                      extended by org.icepdf.ri.common.views.PageViewComponentImpl
All Implemented Interfaces:
java.awt.event.FocusListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, PageViewComponent

public class PageViewComponentImpl
extends AbstractPageViewComponent
implements java.awt.event.FocusListener

Since:
6.2 heavily modified behaviour for cpu and memory enhancements.
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.icepdf.ri.common.views.AbstractPageViewComponent
AbstractPageViewComponent.PageBufferStore, AbstractPageViewComponent.PageImageCaptureTask
 
Nested classes/interfaces inherited from class javax.swing.JLayeredPane
javax.swing.JLayeredPane.AccessibleJLayeredPane
 
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  java.util.ArrayList<AbstractAnnotationComponent> annotationComponents
           
protected  ToolHandler currentToolHandler
           
protected  TextSelectionPageHandler textSelectionPageHandler
           
 
Fields inherited from class org.icepdf.ri.common.views.AbstractPageViewComponent
documentViewController, documentViewModel, graphicsConfiguration, PAGE_BOUNDARY_BOX, pageBoundaryBox, pageBufferPadding, pageBufferStore, pageImageCaptureTask, pageIndex, pageRotation, pageSize, pageTree, pageZoom, paintAnnotations, paintSearchHighlight, parentDocumentView, parentScrollPane, progressivePaint
 
Fields inherited from class javax.swing.JLayeredPane
DEFAULT_LAYER, DRAG_LAYER, FRAME_CONTENT_LAYER, LAYER_PROPERTY, MODAL_LAYER, PALETTE_LAYER, POPUP_LAYER
 
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, org.icepdf.core.pobjects.PageTree pageTree, int pageIndex, javax.swing.JScrollPane parentScrollPane, int width, int height)
           
 
Method Summary
 void addAnnotation(AnnotationComponent annotation)
          Add a new annotation object to this page view component.
 void dispose()
          Called to free resources used by this component.
 void focusGained(java.awt.event.FocusEvent e)
           
 void focusLost(java.awt.event.FocusEvent e)
           
 java.util.ArrayList<AbstractAnnotationComponent> getAnnotationComponents()
          Gets a list of the annotation components used in this page view.
 ToolHandler getCurrentToolHandler()
           
 TextSelectionPageHandler getTextSelectionPageHandler()
          Gets the page components TextSelectionPageHandler.
 void pageInitializedCallback(org.icepdf.core.pobjects.Page page)
          This callback is called when the page is successfully initialized at which point an implementation may like to work with the page object before the parent method turns.
 void pageTeardownCallback()
          This callback is called when a page is scheduled for dispose.
protected  void paintComponent(java.awt.Graphics g)
           
 void refreshAnnotationComponents(org.icepdf.core.pobjects.Page page)
           
 void removeAnnotation(AnnotationComponent annotationComp)
          Remove the specified annotation from this page view.
 void setDocumentViewCallback(DocumentView parentDocumentView)
          Set the parent Document View class which is responsible for drawing and the general management of PageViewComponents for a particular view.
 void setToolMode(int viewToolMode)
          Sets the tool mode for the current page component implementation.
 void updateView(java.lang.String propertyConstant, java.lang.Object oldValue, java.lang.Object newValue)
          Called from parent controls when a UI control has manipulated the view, property change is picked up and the view is updated accordingly.
 
Methods inherited from class org.icepdf.ri.common.views.AbstractPageViewComponent
calculateBufferLocation, calculatePageSize, clearSelectedText, clearSelectionRectangle, getPage, getPageIndex, getPreferredSize, getSize, isAnnotationTool, setSelectionRectangle
 
Methods inherited from class javax.swing.JLayeredPane
addImpl, getAccessibleContext, getComponentCountInLayer, getComponentsInLayer, getComponentToLayer, getIndexOf, getLayer, getLayer, getLayeredPaneAbove, getObjectForLayer, getPosition, highestLayer, insertIndexForLayer, isOptimizedDrawingEnabled, lowestLayer, moveToBack, moveToFront, paint, paramString, putLayer, remove, removeAll, setLayer, setLayer, setPosition
 
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, 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, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, 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, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, 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, 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, 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
 

Field Detail

currentToolHandler

protected ToolHandler currentToolHandler

textSelectionPageHandler

protected TextSelectionPageHandler textSelectionPageHandler

annotationComponents

protected java.util.ArrayList<AbstractAnnotationComponent> annotationComponents
Constructor Detail

PageViewComponentImpl

public PageViewComponentImpl(DocumentViewModel documentViewModel,
                             org.icepdf.core.pobjects.PageTree pageTree,
                             int pageIndex,
                             javax.swing.JScrollPane parentScrollPane,
                             int width,
                             int height)
Method Detail

setDocumentViewCallback

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

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

paintComponent

protected void paintComponent(java.awt.Graphics g)
Overrides:
paintComponent in class AbstractPageViewComponent

dispose

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

Specified by:
dispose in interface PageViewComponent

setToolMode

public void setToolMode(int viewToolMode)
Sets the tool mode for the current page component implementation. When a tool mode is assigned the respective tool handler is registered and various event listeners are registered.

Parameters:
viewToolMode - view tool modes as defined in DocumentViewMode.DISPLAY_TOOL_*

getAnnotationComponents

public java.util.ArrayList<AbstractAnnotationComponent> getAnnotationComponents()
Gets a list of the annotation components used in this page view.

Returns:
list of annotation components, can be null.

getTextSelectionPageHandler

public TextSelectionPageHandler getTextSelectionPageHandler()
Gets the page components TextSelectionPageHandler. Each page has one and it directly accessed by the TextSelectionViewHandler. All other tools are created/disposed as the tools are selected.

Returns:
page's instance of the text selection handler.

getCurrentToolHandler

public ToolHandler getCurrentToolHandler()

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

updateView

public void updateView(java.lang.String propertyConstant,
                       java.lang.Object oldValue,
                       java.lang.Object newValue)
Description copied from class: AbstractPageViewComponent
Called from parent controls when a UI control has manipulated the view, property change is picked up and the view is updated accordingly. Responds to PropertyConstants.DOCUMENT_VIEW_ROTATION_CHANGE and PropertyConstants.DOCUMENT_VIEW_ZOOM_CHANGE. If the worker is currently working is is cancel with interrupts.

Specified by:
updateView in interface PageViewComponent
Overrides:
updateView in class AbstractPageViewComponent
Parameters:
propertyConstant - document view change property.
oldValue - old value
newValue - new value

addAnnotation

public void addAnnotation(AnnotationComponent annotation)
Add a new annotation object to this page view component.

Parameters:
annotation - annotation to add.

removeAnnotation

public void removeAnnotation(AnnotationComponent annotationComp)
Remove the specified annotation from this page view.

Parameters:
annotationComp - annotation to be removed.

pageInitializedCallback

public void pageInitializedCallback(org.icepdf.core.pobjects.Page page)
Description copied from interface: PageViewComponent
This callback is called when the page is successfully initialized at which point an implementation may like to work with the page object before the parent method turns. This method should return as quickly as possible.

Specified by:
pageInitializedCallback in interface PageViewComponent
Parameters:
page - page that was just initialized.

pageTeardownCallback

public void pageTeardownCallback()
Description copied from interface: PageViewComponent
This callback is called when a page is scheduled for dispose. This generally only happens when the page goes out of view and it and it's resources are no longer needed. This method in the default implementation is executed on a worker thread. Any AWT work should be queued to run on the AWT thread.

Specified by:
pageTeardownCallback in interface PageViewComponent

refreshAnnotationComponents

public void refreshAnnotationComponents(org.icepdf.core.pobjects.Page page)