net.sf.jomic.comic
Class ComicView

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JScrollPane
                  extended by net.sf.jomic.comic.ComicView
All Implemented Interfaces:
java.awt.event.ComponentListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.ScrollPaneConstants

public class ComicView
extends javax.swing.JScrollPane
implements java.awt.event.ComponentListener, java.beans.PropertyChangeListener

Panel to show one page or sheet of a comic. Depending on the structure of the images and the value of getTwoPageMode(), this can show one or two images:

For more details about this algorithm, refer to the Developer Guide .

Author:
Thomas Aglassinger
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JScrollPane
javax.swing.JScrollPane.AccessibleJScrollPane, javax.swing.JScrollPane.ScrollBar
 
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
 
Fields inherited from class javax.swing.JScrollPane
columnHeader, horizontalScrollBar, horizontalScrollBarPolicy, lowerLeft, lowerRight, rowHeader, upperLeft, upperRight, verticalScrollBar, verticalScrollBarPolicy, viewport
 
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 javax.swing.ScrollPaneConstants
COLUMN_HEADER, HORIZONTAL_SCROLLBAR, HORIZONTAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_POLICY, LOWER_LEADING_CORNER, LOWER_LEFT_CORNER, LOWER_RIGHT_CORNER, LOWER_TRAILING_CORNER, ROW_HEADER, UPPER_LEADING_CORNER, UPPER_LEFT_CORNER, UPPER_RIGHT_CORNER, UPPER_TRAILING_CORNER, VERTICAL_SCROLLBAR, VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED, VERTICAL_SCROLLBAR_NEVER, VERTICAL_SCROLLBAR_POLICY, VIEWPORT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
ComicView()
          Creates a new, empty view.
 
Method Summary
 void componentHidden(java.awt.event.ComponentEvent event)
           
 void componentMoved(java.awt.event.ComponentEvent event)
           
 void componentResized(java.awt.event.ComponentEvent event)
           
 void componentShown(java.awt.event.ComponentEvent event)
           
 void dispose()
           
 ComicImage getComicImage()
           
 ComicImage getComicImage(int somePage)
           
 java.lang.String getGenericComicImageName(int index)
          Get a generic name for the image at index, for example 17.jpg or 043+044.png.
 int getImageCount()
          The number of images.
 int getImageIndex()
          Get the index of the image currently viewed.
 int getPage()
          Get the number of the current page; if showing two pages, get the number of the left page.
 int getPageCount()
          Get the number of pages (as perceived by the end user).
 java.lang.String getPageText()
          Get a human readable description of the page(s) currently viewed.
 java.awt.image.RenderedImage getRenderedImage()
          Render the image to fit in the current JViewport while applying Settings.
 int getRotation()
          Get the current rotation.
 java.lang.String getScaleMode()
           
 ComicSheet getSheetForPage(int somePage)
           
 void goFirst()
          Go to first page.
 void goLast()
          Go to last page.
 void goNext()
          Go to next page or sheet.
 void goNextFew()
          Go a few pages/sheet forward.
 void goPrevious()
          Go to previous page or sheet.
 void goPrevious(int count)
          Go count pages or sheets backwards.
 void goPreviousFew()
          Go a few pages/sheets backwards.
 boolean isFirst()
          Is the current page or sheet the first one?
 boolean isLast()
          Is the current page or sheet the last one?
 boolean isMangaMode()
           
 boolean isTwoPageMode()
           
 void propertyChange(java.beans.PropertyChangeEvent event)
           
 void rotateLeft()
           
 void rotateRight()
           
 void scrollHome()
          Scroll to start of page.
 void scrollHorizontally(int notches)
           
 void scrollVertically(int notches)
           
 void setImageIndex(int newImageIndex)
           
 void setModel(ComicModel newModel, ProgressFrame newProgressFrame)
          Set newModel to be the new model from which the images should be fetched, and show front page.
 void setModel(ComicModel newModel, ProgressFrame newProgressFrame, int newPage)
          Set newModel to be the new model from which the images should be fetched, and show page number newPage.
 void setPage(int newPage)
           
 void setRotateOnlySinglePortraitImages(boolean newRotate)
           
 void setScaleMode(java.lang.String newScaleMode)
           
 void setSwapLeftAndRightImage(boolean newMangaMode)
           
 void setTwoPageMode(boolean newMode)
          Set two page mode.
 void updateDisplay()
           
 
Methods inherited from class javax.swing.JScrollPane
createHorizontalScrollBar, createVerticalScrollBar, createViewport, getAccessibleContext, getColumnHeader, getCorner, getHorizontalScrollBar, getHorizontalScrollBarPolicy, getRowHeader, getUI, getUIClassID, getVerticalScrollBar, getVerticalScrollBarPolicy, getViewport, getViewportBorder, getViewportBorderBounds, isValidateRoot, isWheelScrollingEnabled, paramString, setColumnHeader, setColumnHeaderView, setComponentOrientation, setCorner, setHorizontalScrollBar, setHorizontalScrollBarPolicy, setLayout, setRowHeader, setRowHeaderView, setUI, setVerticalScrollBar, setVerticalScrollBarPolicy, setViewport, setViewportBorder, setViewportView, setWheelScrollingEnabled, 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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, 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, 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, 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
 

Constructor Detail

ComicView

public ComicView()
Creates a new, empty view.

See Also:
setModel(ComicModel, ProgressFrame)
Method Detail

setImageIndex

public void setImageIndex(int newImageIndex)

setModel

public void setModel(ComicModel newModel,
                     ProgressFrame newProgressFrame)
Set newModel to be the new model from which the images should be fetched, and show front page.


setModel

public void setModel(ComicModel newModel,
                     ProgressFrame newProgressFrame,
                     int newPage)
Set newModel to be the new model from which the images should be fetched, and show page number newPage. If there a no enough pages to go to newPage , log a warning an go to front page.


setPage

public void setPage(int newPage)

setRotateOnlySinglePortraitImages

public void setRotateOnlySinglePortraitImages(boolean newRotate)

setScaleMode

public void setScaleMode(java.lang.String newScaleMode)

setSwapLeftAndRightImage

public void setSwapLeftAndRightImage(boolean newMangaMode)

setTwoPageMode

public void setTwoPageMode(boolean newMode)
Set two page mode.

Parameters:
newMode - false means that only a single image should be show, true means that two "lean" images should be used to show two pages at once.

getComicImage

public ComicImage getComicImage()

getComicImage

public ComicImage getComicImage(int somePage)

getGenericComicImageName

public java.lang.String getGenericComicImageName(int index)
Get a generic name for the image at index, for example 17.jpg or 043+044.png.


getImageCount

public int getImageCount()
The number of images.


getImageIndex

public int getImageIndex()
Get the index of the image currently viewed.


getPage

public int getPage()
Get the number of the current page; if showing two pages, get the number of the left page.


getPageCount

public int getPageCount()
Get the number of pages (as perceived by the end user). This can differ from the the number of images. For example, a double image counts as 2 pages.


getPageText

public java.lang.String getPageText()
Get a human readable description of the page(s) currently viewed.


getRenderedImage

public java.awt.image.RenderedImage getRenderedImage()
Render the image to fit in the current JViewport while applying Settings.

See Also:
JViewport, Settings

getRotation

public int getRotation()
Get the current rotation.

Returns:
one of ImageTools.ROTATE_*
See Also:
ImageTools.ROTATE_NONE, ImageTools.ROTATE_CLOCKWISE, ImageTools.ROTATE_COUNTERCLOCKWISE, ImageTools.ROTATE_UPSIDE_DOWN

getScaleMode

public java.lang.String getScaleMode()

getSheetForPage

public ComicSheet getSheetForPage(int somePage)

isFirst

public boolean isFirst()
Is the current page or sheet the first one?


isLast

public boolean isLast()
Is the current page or sheet the last one?


isMangaMode

public boolean isMangaMode()

isTwoPageMode

public boolean isTwoPageMode()

componentHidden

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

componentMoved

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

componentResized

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

componentShown

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

dispose

public void dispose()

goFirst

public void goFirst()
Go to first page.


goLast

public void goLast()
Go to last page.


goNext

public void goNext()
Go to next page or sheet.


goNextFew

public void goNextFew()
Go a few pages/sheet forward.

See Also:
Settings.getFew()

goPrevious

public void goPrevious(int count)
Go count pages or sheets backwards.


goPrevious

public void goPrevious()
Go to previous page or sheet.


goPreviousFew

public void goPreviousFew()
Go a few pages/sheets backwards.

See Also:
Settings.getFew()

propertyChange

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

rotateLeft

public void rotateLeft()

rotateRight

public void rotateRight()

scrollHome

public void scrollHome()
Scroll to start of page. Normally this means the left top corner, unless the left and right image are swapped, in which case it means the top right corner.


scrollHorizontally

public void scrollHorizontally(int notches)

scrollVertically

public void scrollVertically(int notches)

updateDisplay

public void updateDisplay()