org.icepdf.ri.common.views
Class AbstractDocumentView

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by org.icepdf.ri.common.views.AbstractDocumentView
All Implemented Interfaces:
java.awt.event.AdjustmentListener, java.awt.event.FocusListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.MouseWheelListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.swing.event.MouseInputListener, org.icepdf.core.views.DocumentView
Direct Known Subclasses:
OneColumnPageView, OnePageView, TwoColumnPageView, TwoPageView

public abstract class AbstractDocumentView
extends javax.swing.JComponent
implements org.icepdf.core.views.DocumentView, java.beans.PropertyChangeListener, java.awt.event.MouseWheelListener

The AbstractDocumentView class is implemented by the four predefined page views; OneColumnPageView, OnePageView, TwoColumnPageView and TwoPageView. Most of common work is implemented in this class which aid developers in defining their own custom page views.

Since:
2.5
See Also:
Serialized Form

Nested Class Summary
 
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.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
static java.awt.Color backgroundColor
           
protected  org.icepdf.core.pobjects.Document currentDocument
           
protected  javax.swing.JScrollPane documentScrollpane
           
protected  org.icepdf.core.views.DocumentViewController documentViewController
           
protected  DocumentViewModelImpl documentViewModel
           
static int horizontalSpace
           
static int layoutInserts
           
protected  org.icepdf.core.views.common.PanningHandler panningHandler
           
 org.icepdf.core.views.common.SelectionBoxHandler selectionBox
           
static int verticalSpace
           
protected  org.icepdf.core.views.common.ZoomHandler zoomHandler
           
 
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 org.icepdf.core.views.DocumentView
LEFT_VIEW, RIGHT_VIEW
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
AbstractDocumentView(org.icepdf.core.views.DocumentViewController documentViewController, javax.swing.JScrollPane documentScrollpane, DocumentViewModelImpl documentViewModel)
          Creates a new instance of AbstractDocumentView.
 
Method Summary
 void adjustmentValueChanged(java.awt.event.AdjustmentEvent e)
           
 void dispose()
           
 void focusGained(java.awt.event.FocusEvent e)
           
 void focusLost(java.awt.event.FocusEvent e)
           
 org.icepdf.core.views.DocumentViewController getParentViewController()
           
 org.icepdf.core.views.DocumentViewModel getViewModel()
           
 void mouseClicked(java.awt.event.MouseEvent e)
          Handles mouse click events.
 void mouseDragged(java.awt.event.MouseEvent e)
          Mouse dragged events are broad casted to this child page components depending on the tool that is selected.
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mouseMoved(java.awt.event.MouseEvent e)
          Mouse moved event listener, All mouse events that are generated via a mouse moves are then passed on to the page component that the mouse event occured over.
 void mousePressed(java.awt.event.MouseEvent e)
          Mouse is press the page selection box is removed and if the mouse is over a page component its focus is gained and it becomes the current page.
 void mouseReleased(java.awt.event.MouseEvent e)
          Mouse is release the page selection box is removed and each individual tool mode has a different behavior.
 void mouseWheelMoved(java.awt.event.MouseWheelEvent e)
          Handles ctl-wheelmouse for document zooming.
 void paintComponent(java.awt.Graphics g)
          Paints the selection box for this page view.
 void propertyChange(java.beans.PropertyChangeEvent evt)
           
abstract  void updateDocumentView()
          invalidates page components
 
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, 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, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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, 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
 
Methods inherited from interface org.icepdf.core.views.DocumentView
getDocumentSize, getNextPageIncrement, getPreviousPageIncrement
 

Field Detail

backgroundColor

public static java.awt.Color backgroundColor

verticalSpace

public static int verticalSpace

horizontalSpace

public static int horizontalSpace

layoutInserts

public static int layoutInserts

documentViewController

protected org.icepdf.core.views.DocumentViewController documentViewController

documentScrollpane

protected javax.swing.JScrollPane documentScrollpane

currentDocument

protected org.icepdf.core.pobjects.Document currentDocument

documentViewModel

protected DocumentViewModelImpl documentViewModel

panningHandler

protected org.icepdf.core.views.common.PanningHandler panningHandler

zoomHandler

protected org.icepdf.core.views.common.ZoomHandler zoomHandler

selectionBox

public org.icepdf.core.views.common.SelectionBoxHandler selectionBox
Constructor Detail

AbstractDocumentView

public AbstractDocumentView(org.icepdf.core.views.DocumentViewController documentViewController,
                            javax.swing.JScrollPane documentScrollpane,
                            DocumentViewModelImpl documentViewModel)
Creates a new instance of AbstractDocumentView.

Parameters:
documentViewController - controller for MVC
documentScrollpane - scrollpane used to view pages
documentViewModel - model to represent view
Method Detail

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent evt)
Specified by:
propertyChange in interface java.beans.PropertyChangeListener

getParentViewController

public org.icepdf.core.views.DocumentViewController getParentViewController()
Specified by:
getParentViewController in interface org.icepdf.core.views.DocumentView

getViewModel

public org.icepdf.core.views.DocumentViewModel getViewModel()
Specified by:
getViewModel in interface org.icepdf.core.views.DocumentView

dispose

public void dispose()
Specified by:
dispose in interface org.icepdf.core.views.DocumentView

updateDocumentView

public abstract void updateDocumentView()
invalidates page components

Specified by:
updateDocumentView in interface org.icepdf.core.views.DocumentView

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Handles mouse click events. First any selected text is cleared and then if the mouse event occured over a page component the mouse coordinates are converted to page space rebroadcast.

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)
Mouse is press the page selection box is removed and if the mouse is over a page component its focus is gained and it becomes the current page. Each individual tool mode has a different behavior afterwards.

Annotations have first priority and the mouse event is passed on to the page component that the mouse is over for processing.

If the text selection tool is selected then the event is broadcast to all pages that have selected text. This insures the selected text on other pages matches the boounds of this selection box.

If the panning tool is selected then we pass the event of the panning handler.

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

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Mouse is release the page selection box is removed and each individual tool mode has a different behavior.

Annotations have first priority and the mouse event is passed on to the page component that the mouse is over for processing.

If the text selection tool is selected then the event is broadcast to all pages that have selected text. This insures the selected text on other pages matches the boounds of this selection box.

If the panning tool is selected then we pass the event of the panning handler.

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

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent e)
Mouse dragged events are broad casted to this child page components depending on the tool that is selected.

When the text selection tool is selected this views selected rectangle is converted to page space and updates the selection box of the page that the pages that intersect the selected rectangle. Each individual page component is still responsible for how it handles text selection

When the annotations tool is selected...

Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener
Parameters:
e - awt mouse event

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)
Mouse moved event listener, All mouse events that are generated via a mouse moves are then passed on to the page component that the mouse event occured over. The coordinates system of the mouse event Point is converted to the coordinates space of the found page.

If there is no page then we don't do anything.

Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener
Parameters:
e - mouse move mouse event.

mouseWheelMoved

public void mouseWheelMoved(java.awt.event.MouseWheelEvent e)
Handles ctl-wheelmouse for document zooming.

Specified by:
mouseWheelMoved in interface java.awt.event.MouseWheelListener
Parameters:
e - mouse wheel event.

paintComponent

public void paintComponent(java.awt.Graphics g)
Paints the selection box for this page view.

Overrides:
paintComponent in class javax.swing.JComponent
Parameters:
g - Java graphics context to paint to.

adjustmentValueChanged

public void adjustmentValueChanged(java.awt.event.AdjustmentEvent e)
Specified by:
adjustmentValueChanged in interface java.awt.event.AdjustmentListener

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