Class RMViewer

All Implemented Interfaces:
ImageObserver, MenuContainer, PropertyChangeListener, Serializable, EventListener, Scrollable
Direct Known Subclasses:
Gallery.GViewer, RMEditor, RMTrackballControl

public class RMViewer extends JComponent implements PropertyChangeListener, Scrollable
The RMViewer class is a JComponent subclass that can be used in Swing applications to display and/or print an RMDocument.

You might use it like this to simply print a document:

   new RMViewer(aDocument).print();
 

Or you might want to allocate one and add it to a Swing component hierarchy:

   RMViewer viewer = new RMViewer(); viewer.setContent(new RMDocument(aSource));
   myFrame.getContentPane().add(new JScrollPane(viewer));
 
See Also:
  • Field Details

  • Constructor Details

    • RMViewer

      public RMViewer()
      Creates a new RMViewer with an empty document in it.
  • Method Details

    • getViewerShape

      public RMViewerShape getViewerShape()
      Returns the viewer shape.
    • createViewerShape

      protected RMViewerShape createViewerShape()
      Creates the viewer shape.
    • getContent

      public RMParentShape getContent()
      Returns the root shape that is the content of this viewer.
    • setContent

      public void setContent(RMParentShape aShape)
      Sets the root shape that is the content of this viewer.
    • setContent

      public void setContent(Object aSource)
      Sets the content from any source.
    • getDocument

      @Nullable public RMDocument getDocument()
      Returns the RMDocument associated with this viewer.
    • getSourceURL

      public WebURL getSourceURL()
      Returns the source URL.
    • isEditing

      public boolean isEditing()
      Returns whether viewer is really doing editing.
    • isPreview

      public boolean isPreview()
      Returns whether editor is preview (or viewer) mode.
    • getPageCount

      public int getPageCount()
      Returns the page count.
    • getSelectedPage

      public RMParentShape getSelectedPage()
      Returns the currently selected page shape.
    • getSelectedPageIndex

      public int getSelectedPageIndex()
      Returns the index of the current visible document page.
    • setSelectedPageIndex

      public void setSelectedPageIndex(int anIndex)
      Sets the page of viewer's document that is visible (by index).
    • pageForward

      public void pageForward()
      Selects the next page based on the page layout. This will adjust the increment for page changes based on the number of pages in the view resulting in stepping a view at a time when necessary.
    • pageBack

      public void pageBack()
      Selects the previous page based on the page layout. This will adjust the increment for page changes based on the number of pages in the view resulting in stepping a view at a time when necessary.
    • lastPage

      public void lastPage()
      changes the selected page to the last page if the pageLayout is not of a continuous type.
    • firstPage

      public void firstPage()
      changes the selected page to the first page if the pageLayout is not of a continuous type.
    • play

      public void play()
      Starts any animation viewer might have.
    • stop

      public void stop()
      Stops any animation viewer might have.
    • getShown

      public boolean getShown()
      Returns whether viewer was shown.
    • setShown

      protected void setShown(boolean aValue)
      Sets whether viewer was shown.
    • viewerShown

      protected void viewerShown()
      Called when viewer is shown.
    • viewerHidden

      protected void viewerHidden()
      Called when viewer is hidden.
    • getDocumentBounds

      public RMRect getDocumentBounds()
      Returns the bounds of the viewer document.
    • getPageBounds

      public RMRect getPageBounds()
      Returns the bounds of the viewer document's selected page.
    • getShapeAtPoint

      public RMShape getShapeAtPoint(Point2D aPoint, boolean goDeep)
      Returns the first shape hit by the given point.
    • getZoomFactor

      public float getZoomFactor()
      Returns the viewer's zoom factor (1 by default).
    • setZoomFactor

      public void setZoomFactor(float aFactor)
      Sets the viewer's zoom factor (1 for 100%).
    • setZoomFactorImpl

      protected void setZoomFactorImpl(float aFactor)
      Sets the viewer's zoom factor (1 for 100%) and mode.
    • getZoomMode

      public RMViewer.ZoomMode getZoomMode()
      Returns the ZoomMode (ZoomToFit, ZoomIfNeeded, ZoomToFactor).
    • setZoomMode

      public void setZoomMode(RMViewer.ZoomMode aZoomMode)
      Sets the ZoomMode.
    • isZoomToFactor

      public boolean isZoomToFactor()
      Returns whether viewer is set to ZoomToFactor.
    • getlastZoomFactor

      public float getlastZoomFactor()
    • getZoomFactor

      public float getZoomFactor(RMViewer.ZoomMode aMode)
      Returns the zoom factor for the given mode at the current viewer size.
    • setZoomToFitFactor

      public void setZoomToFitFactor()
      Sets the zoom to fit factor, based on the current zoom mode.
    • getZoomFocusRect

      public Rectangle getZoomFocusRect()
      Returns zoom focus rect (just the visible rect by default, but overriden by editor to return selected shapes rect).
    • getZoomToActualSizeFactor

      public float getZoomToActualSizeFactor()
      Returns the zoom factor to view the document at actual size taking into account the current screen resolution.
    • zoomToggleLast

      public void zoomToggleLast()
      Sets the viewer's zoom to its previous value.
    • runZoomPanel

      public void runZoomPanel()
      Runs a dialog panel to request a percentage zoom (which is then set with setZoomFactor).
    • setBounds

      public void setBounds(int x, int y, int w, int h)
      Overrides to update ZoomFactor if dynamic.
      Overrides:
      setBounds in class Component
    • getContentX

      public int getContentX()
      Returns the content shape's X location in viewer.
    • getContentY

      public int getContentY()
      Returns the content shape's Y location in viewer.
    • convertPointFromShape

      public RMPoint convertPointFromShape(RMPoint aPoint, RMShape aShape)
      Returns a point converted from the coordinate space of the given shape to viewer coords.
    • convertPointToShape

      public RMPoint convertPointToShape(Point2D aPoint, RMShape aShape)
      Returns a point converted from viewer coords to the coordinate space of the given shape.
    • convertRectFromShape

      public RMRect convertRectFromShape(RMRect aRect, RMShape aShape)
      Returns a rect converted from the coordinate space of the given shape to viewer coords.
    • convertRectToShape

      public RMRect convertRectToShape(RMRect aRect, RMShape aShape)
      Returns a rect converted from viewer coords to the coordinate space of the given shape.
    • getTransformFromShape

      public AffineTransform getTransformFromShape(RMShape aShape)
      Returns the transform from given shape to viewer.
    • repaint

      public void repaint(Rectangle2D aRect)
      Requests a repaint for the area represented by the given rect.
    • getShapePainter

      public RMShapePainter getShapePainter(Graphics2D aGr)
      Returns the object that is actually responsible for paining shapes in the viewer.
    • createShapePainter

      protected RMShapePainterJ2D createShapePainter(Graphics2D aGr)
      Creates the object that is actually responsible for paining shapes in the viewer.
    • getDrawsBackground

      public boolean getDrawsBackground()
      Returns whether or not the gutter, page background & drop shadow get drawn.
    • paintComponent

      public void paintComponent(Graphics aGraphics)
      Overrides JComponent implementation to paint viewer shapes and page, margin, grid, etc.
      Overrides:
      paintComponent in class JComponent
    • paintBackground

      protected void paintBackground(Graphics2D aGrfx)
      Paints the background.
    • getInputAdapter

      public RMViewerInputAdapter getInputAdapter()
      Returns the input adapter for the viewer (handles mouse and keyboard input).
    • setInputAdapter

      public void setInputAdapter(RMViewerInputAdapter anInputAdapter)
      Sets the input adapter for the viewer (handles mouse and keyboard input).
    • createInputAdapter

      protected RMViewerInputAdapter createInputAdapter()
      Creates a default input adapter.
    • processMouseEvent

      protected void processMouseEvent(MouseEvent anEvent)
      Handle mouse events.
      Overrides:
      processMouseEvent in class JComponent
    • processMouseMotionEvent

      protected void processMouseMotionEvent(MouseEvent anEvent)
      Handle mouse motion events
      Overrides:
      processMouseMotionEvent in class JComponent
    • processMouseWheelEvent

      protected void processMouseWheelEvent(MouseWheelEvent anEvent)
      Handle mouse wheel events.
      Overrides:
      processMouseWheelEvent in class Component
    • processKeyEvent

      protected void processKeyEvent(KeyEvent anEvent)
      Handle key events.
      Overrides:
      processKeyEvent in class JComponent
    • mousePressed

      protected void mousePressed(MouseEvent anEvent)
      Handle mouse pressed event.
    • mouseDragged

      protected void mouseDragged(MouseEvent anEvent)
      Handle mouse dragged event.
    • mouseReleased

      protected void mouseReleased(MouseEvent anEvent)
      Handle mouse released event.
    • mouseMoved

      protected void mouseMoved(MouseEvent anEvent)
      Handle mouse moved event.
    • performActionURLClick

      public void performActionURLClick(@Nonnull String aURL)
      Viewer callback - called when shape with URL is clicked (opens URL).
    • getHoverShape

      public RMShape getHoverShape(String aString)
      Returns a hover shape for given something.
    • getPreferredSize

      public Dimension getPreferredSize()
      Returns the optimal size of the viewer.
      Overrides:
      getPreferredSize in class JComponent
    • getPrefSize

      protected Dimension getPrefSize()
      Returns the preferred size of the viewer ignoring ZoomFactor.
    • getPrefSize

      protected Dimension getPrefSize(float aScale)
      Returns the preferred size of the viewer scaled to a given zoom factor.
    • getScrollableTracksViewportWidth

      public boolean getScrollableTracksViewportWidth()
      Scrollable methods.
      Specified by:
      getScrollableTracksViewportWidth in interface Scrollable
    • getScrollableTracksViewportHeight

      public boolean getScrollableTracksViewportHeight()
      Specified by:
      getScrollableTracksViewportHeight in interface Scrollable
    • getScrollableBlockIncrement

      public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
      Specified by:
      getScrollableBlockIncrement in interface Scrollable
    • getScrollableUnitIncrement

      public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
      Specified by:
      getScrollableUnitIncrement in interface Scrollable
    • getPreferredScrollableViewportSize

      public Dimension getPreferredScrollableViewportSize()
      Specified by:
      getPreferredScrollableViewportSize in interface Scrollable
    • getUndoer

      public RMUndoer getUndoer()
      Returns the undoer associated with the viewer's document.
    • undoerSetUndoTitle

      public void undoerSetUndoTitle(String aTitle)
      Sets the title of the next registered undo in the viewer's documents's undoer (convenience).
    • undoerHasUndos

      public boolean undoerHasUndos()
      Returns whether undos exist in the viewer's documents's undoer (convenience).
    • getShapeRepaintEnabled

      public boolean getShapeRepaintEnabled()
      Returns whether changes to shapes cause repaints.
    • setShapeRepaintEnabled

      public void setShapeRepaintEnabled(boolean aFlag)
      Sets whether changes to shapes cause repaints.
    • docShapeRepaint

      public void docShapeRepaint(RMShape aShape)
      Doc listener method - called before a shape makes a visual change. Provides a mechanism to efficiently repaint the portion of the viewer that currently displays a shape. Registers the area covered by the shape now and at event end, to efficiently repaint shapes in transition as well.
    • flushShapeRepaints

      protected void flushShapeRepaints()
      This method repaints the total bounds of shapes that have previously been registered by shapeNeedsRepaint. This should only be used internally.
    • getRepaintBoundsForShape

      public RMRect getRepaintBoundsForShape(RMShape aShape)
      Returns the bounds for a given shape in the viewer. Subclasses can override this to account for things like different bounds for selected shapes.
    • propertyChange

      public void propertyChange(PropertyChangeEvent anEvent)
      PropertyChangeListener method - called by document.
      Specified by:
      propertyChange in interface PropertyChangeListener
    • getShape

      public RMShape getShape(String aName)
      Returns the document shape for given name.
    • getPhantomPane

      public RMViewer.PhantomPane getPhantomPane()
      Returns the phantom pane (creating, if necessary).
    • getPaintFrameRate

      public boolean getPaintFrameRate()
      Returns whether we paint frame rate.
    • setPaintFrameRate

      public void setPaintFrameRate(boolean aValue)
      Sets whether we paint frame rate.
    • print

      public void print() throws PrinterException
      This method tells the RMViewer to print by running the print dialog (configured to the default printer).
      Throws:
      PrinterException - Thrown when an error that causes the print job to abort occurs.

      Modified in 7.8.0

    • print

      public void print(String aPrinterName, boolean runPanel) throws PrinterException
      This method tells the RMViewer to print to the printer with the given printer name (use null for default printer). It also offers an option to run the printer dialog.
      Parameters:
      aPrinterName - The name returned by PrintServiceLookup.lookupPrintServices, or null for default printer
      runPanel - True if the print dialog should be shown.
      Throws:
      PrinterException - Thrown when an error that causes the print job to abort occurs.

      Modified in 7.8.0

    • getPrintingMode

      public int getPrintingMode()
      Since:
      7.8.0
    • setPrintingMode

      public void setPrintingMode(int printingMode)
      Parameters:
      printingMode - Allowable values are the constants PRINT_MODE_RASTER and PRINT_MODE_VECTOR. Other values will give undefined results.
      Since:
      7.8.0
    • getPrintingDPI

      public int getPrintingDPI()
      Since:
      7.8.0
    • setPrintingDPI

      public void setPrintingDPI(int printingDPI)
      Parameters:
      printingDPI - Must be a positive integer
      Since:
      7.8.0
    • getCopies

      public int getCopies()
      Since:
      7.8.0
    • setCopies

      public void setCopies(int copies)
      Parameters:
      copies - Must be a positive integer
      Since:
      7.8.0
    • isUseAutoLandscape

      public boolean isUseAutoLandscape()
      Since:
      7.8.0
    • setUseAutoLandscape

      public void setUseAutoLandscape(boolean useAutoLandscape)
      Since:
      7.8.0
    • getPageOrientation

      public int getPageOrientation()
      Since:
      7.8.0
    • setPageOrientation

      public void setPageOrientation(int pageOrientation)
      Since:
      7.8.0
    • isPrintBothSides

      public boolean isPrintBothSides()
      Since:
      7.8.0
    • setPrintBothSides

      public void setPrintBothSides(boolean printBothSides)
      Since:
      7.8.0
    • isCollate

      public boolean isCollate()
      Since:
      7.8.0
    • setCollate

      public void setCollate(boolean collate)
      Since:
      7.8.0
    • getBook

      public Book getBook(int orientation, Paper paper)
      Returns a java.awt.print.Book, suitable for AWT printing.

      Changes in 7.8.0: made the printable used based on printing mode