Class RMViewer

  • All Implemented Interfaces:
    RMDocument.DocListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable
    Direct Known Subclasses:
    Gallery.GViewer, RMEditor, RMTrackballControl, Scene3DTool.Scene3DControl

    public class RMViewer
    extends javax.swing.JComponent
    implements RMDocument.DocListener
    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();
     JScrollPane scrollPane = new JScrollPane(viewer);
     myFrame.getContentPane().add(scrollPane, Border.CENTER);
     viewer.setDocument(new RMDocument(aSource));
     

    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

      Fields 
      Modifier and Type Field Description
      static java.awt.Color GridColor  
      static java.awt.Color MarginColor  
      static int PRINT_MODE_RASTER  
      static int PRINT_MODE_VECTOR  
      • Fields inherited from class javax.swing.JComponent

        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

        accessibleContext, 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

      Constructors 
      Constructor Description
      RMViewer()
      Creates a new RMViewer with an empty document in it.
      RMViewer​(java.lang.Object aSource)
      Creates a new RMViewer from the given source.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      RMPoint convertPointFromShape​(RMPoint aPoint, RMShape aShape)
      Returns a point converted from the coordinate space of the given shape to viewer coords.
      RMPoint convertPointToShape​(java.awt.geom.Point2D aPoint, RMShape aShape)
      Returns a point converted from viewer coords to the coordinate space of the given shape.
      RMRect convertRectFromShape​(RMRect aRect, RMShape aShape)
      Returns a rect converted from the coordinate space of the given shape to viewer coords.
      RMRect convertRectToShape​(RMRect aRect, RMShape aShape)
      Returns a rect converted from viewer coords to the coordinate space of the given shape.
      void docShapeBoundsChanged​(RMDocument aDoc, RMShape aShape)
      Doc listener method - called by editor when making bounds changes.
      void docShapeNeedsRepaint​(RMDocument aDoc, RMShape aShape)
      Doc listener method - called before a shape makes a visual change.
      void docUndoerAddDirtyObject​(RMDocument aDoc, RMObject anObj)
      Doc listener method - RMViewer ignores it, but RMEditor calls setUndoSelectedObjects.
      boolean drawsBackground()
      Returns whether or not the gutter, page background & dropshadow get drawn.
      void flushGraphics()
      This method repaints the total bounds of shapes that have previously been registered by shapeNeedsRepaint.
      java.awt.print.Book getBook​(int orientation, java.awt.print.Paper paper)
      Returns a java.awt.print.Book, suitable for AWT printing.
      RMRect getDirtyRect()
      Returns the dirty rect of shapes currently registered with shapeNeedsRepaint (and clears _dirtyShapes).
      RMDocument getDocument()
      Returns the RMDocument associated with this viewer.
      RMRect getDocumentBounds()
      Returns the bounds of the viewer document.
      java.lang.String getFilename()
      Returns filename associated with viewer's document (or null if the document didn't come from a file).
      java.awt.Dimension getMinimumSize()
      Standard minimum size method.
      RMRect getPageBounds()
      Returns the bounds of the viewer document's selected page.
      byte getPageLayout()
      Returns the page layout of the viewer's document.
      java.awt.Dimension getPreferredSize()
      Returns the optimal size of the viewer.
      int getPrintingDPI()  
      int getPrintingMode()  
      java.awt.RenderingHints getRenderingHints()
      Returns the rendering hings used to paint the view.
      RMShape getSelectedPage()
      Returns the currently selected page shape.
      int getSelectedPageIndex()
      Returns the index of the current visiable document page.
      RMShape getShapeAtPoint​(java.awt.geom.Point2D aPoint, boolean goDeep)
      Returns the first shape hit by the given point.
      RMShapePainter getShapePainter()
      Returns the object that is actually responsible for paining shapes in the viewer.
      boolean getShapeRepaintEnabled()
      Returns whether changes to shapes cause repaints.
      java.awt.geom.AffineTransform getTransformFromShape​(RMShape aShape)
      Returns the transform from given shape to viewer.
      RMUndoer getUndoer()
      Returns the undoer associated with the viewer's document.
      float getZoomFactor()
      Returns the viewer's zoom factor (1 by default).
      void mouseDragged​(java.awt.event.MouseEvent anEvent)
      Handle mouse dragged event.
      void mouseMoved​(java.awt.event.MouseEvent anEvent)
      Handle mouse moved event.
      void mousePressed​(java.awt.event.MouseEvent anEvent)
      Handle mouse pressed event.
      void mouseReleased​(java.awt.event.MouseEvent anEvent)
      Handle mouse released event.
      void pageBack()
      Selects the previous page.
      void pageForward()
      Selects the next page.
      void paintComponent​(java.awt.Graphics g)
      Overrides JComponent implementation to paint viewer shapes and page, margin, grid, etc.
      void paintComponentAbove​(java.awt.Graphics2D g)
      Provides a hook for subclasses to paint above standard viewer drawing.
      void performActionURLClick​(java.lang.String aURL)
      Viewer callback - called when shape with URL is clicked (opens URL).
      void print()
      This method tells the RMViewer to print by running the print dialog (configured to the default printer).
      void print​(java.lang.String aPrinterName, boolean runPanel)
      This method tells the RMViewer to print to the printer with the given printer name (use null for default printer).
      void print2()  
      void print2​(java.lang.String aPrinterName, boolean runPanel)  
      protected void processMouseEvent​(java.awt.event.MouseEvent anEvent)
      Handle mouse events.
      protected void processMouseMotionEvent​(java.awt.event.MouseEvent anEvent)  
      void repaint​(RMRect aRect)
      Requests a repaint for the area represented by the given rect.
      void runZoomPanel()
      Runs a dialog panel to request a percentage zoom (which is then set with setZoomFactor).
      void setDocument​(RMDocument aDoc)
      Sets the RMDocument associated with this viewer.
      void setPrintingDPI​(int printingDPI)  
      void setPrintingMode​(int printingMode)  
      void setSelectedPageIndex​(int anIndex)
      Sets the page of viewer's document that is visible (by index).
      void setShapePainter​(RMShapePainter aPainter)
      Sets the object that is actually responsible for paining shapes in the viewer.
      void setShapeRepaintEnabled​(boolean aFlag)
      Sets whether changes to shapes cause repaints.
      void setZoomFactor​(float aFactor)
      Sets the viewer's zoom factor (1 for 100%).
      void setZoomForScreenResolution()
      Sets the viewer's zoom to match the current screen resolution
      void undoerAddChildToShape​(RMShape aShape, RMShape aParent)
      Adds a child with undo registration in the viewer's documents's undoer (convenience).
      void undoerDisable()
      Disable's undo in the viewer's documents's undoer (convenience).
      void undoerEnable()
      Enable's undo in the viewer's documents's undoer (convenience).
      boolean undoerHasUndos()
      Returns whether undos exist in the viewer's documents's undoer (convenience).
      void undoerSetCoalesce​(boolean aFlag)
      Turns on undo coalescing in the viewer's documents's undoer (convenience).
      void undoerSetUndoTitle​(java.lang.String aTitle)
      Sets the title of the next registered undo in the viewer's documents's undoer (convenience).
      protected void updateShapeUnderStack​(RMShape aShape, java.awt.event.MouseEvent anEvent)
      The shape under stack should always be a stack of descendants that acceptEvents.
      void zoomToggleLast()
      Sets the viewer's zoom to its previous value.
      • 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, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, 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, 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, getAccessibleContext, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • GridColor

        public static java.awt.Color GridColor
      • MarginColor

        public static java.awt.Color MarginColor
    • Constructor Detail

      • RMViewer

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

        public RMViewer​(java.lang.Object aSource)
        Creates a new RMViewer from the given source. aSource is used to get an RMDocument and can be many different things: String file path, File object, InputStream, byte array, URL or even an RMDocument.
    • Method Detail

      • getPrintingMode

        public int getPrintingMode()
      • setPrintingMode

        public void setPrintingMode​(int printingMode)
      • getPrintingDPI

        public int getPrintingDPI()
      • setPrintingDPI

        public void setPrintingDPI​(int printingDPI)
      • getDocument

        public RMDocument getDocument()
        Returns the RMDocument associated with this viewer.
      • setDocument

        public void setDocument​(RMDocument aDoc)
        Sets the RMDocument associated with this viewer.
      • getSelectedPage

        public RMShape getSelectedPage()
        Returns the currently selected page shape.
      • getFilename

        public java.lang.String getFilename()
        Returns filename associated with viewer's document (or null if the document didn't come from a file).
      • getPageLayout

        public byte getPageLayout()
        Returns the page layout of the viewer's document.
      • getSelectedPageIndex

        public int getSelectedPageIndex()
        Returns the index of the current visiable 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.
      • pageBack

        public void pageBack()
        Selects the previous page.
      • 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​(java.awt.geom.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%).
      • setZoomForScreenResolution

        public void setZoomForScreenResolution()
        Sets the viewer's zoom to match 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).
      • 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​(java.awt.geom.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 java.awt.geom.AffineTransform getTransformFromShape​(RMShape aShape)
        Returns the transform from given shape to viewer.
      • repaint

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

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

        public void setShapePainter​(RMShapePainter aPainter)
        Sets the object that is actually responsible for paining shapes in the viewer.
      • getRenderingHints

        public java.awt.RenderingHints getRenderingHints()
        Returns the rendering hings used to paint the view.
      • drawsBackground

        public boolean drawsBackground()
        Returns whether or not the gutter, page background & dropshadow get drawn.
      • paintComponent

        public void paintComponent​(java.awt.Graphics g)
        Overrides JComponent implementation to paint viewer shapes and page, margin, grid, etc.
        Overrides:
        paintComponent in class javax.swing.JComponent
      • paintComponentAbove

        public void paintComponentAbove​(java.awt.Graphics2D g)
        Provides a hook for subclasses to paint above standard viewer drawing.
      • processMouseEvent

        protected void processMouseEvent​(java.awt.event.MouseEvent anEvent)
        Handle mouse events.
        Overrides:
        processMouseEvent in class javax.swing.JComponent
      • processMouseMotionEvent

        protected void processMouseMotionEvent​(java.awt.event.MouseEvent anEvent)
        Overrides:
        processMouseMotionEvent in class javax.swing.JComponent
      • mousePressed

        public void mousePressed​(java.awt.event.MouseEvent anEvent)
        Handle mouse pressed event.
      • mouseDragged

        public void mouseDragged​(java.awt.event.MouseEvent anEvent)
        Handle mouse dragged event.
      • mouseReleased

        public void mouseReleased​(java.awt.event.MouseEvent anEvent)
        Handle mouse released event.
      • mouseMoved

        public void mouseMoved​(java.awt.event.MouseEvent anEvent)
        Handle mouse moved event.
      • updateShapeUnderStack

        protected void updateShapeUnderStack​(RMShape aShape,
                                             java.awt.event.MouseEvent anEvent)
        The shape under stack should always be a stack of descendants that acceptEvents.
      • performActionURLClick

        public void performActionURLClick​(java.lang.String aURL)
        Viewer callback - called when shape with URL is clicked (opens URL).
      • getMinimumSize

        public java.awt.Dimension getMinimumSize()
        Standard minimum size method.
        Overrides:
        getMinimumSize in class javax.swing.JComponent
      • getPreferredSize

        public java.awt.Dimension getPreferredSize()
        Returns the optimal size of the viewer.
        Overrides:
        getPreferredSize in class javax.swing.JComponent
      • getUndoer

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

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

        public void undoerDisable()
        Disable's undo in the viewer's documents's undoer (convenience).
      • undoerEnable

        public void undoerEnable()
        Enable's undo in the viewer's documents's undoer (convenience).
      • undoerSetCoalesce

        public void undoerSetCoalesce​(boolean aFlag)
        Turns on undo coalescing in the viewer's documents's undoer (convenience).
      • undoerHasUndos

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

        public void undoerAddChildToShape​(RMShape aShape,
                                          RMShape aParent)
        Adds a child with undo registration 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.
      • docShapeNeedsRepaint

        public void docShapeNeedsRepaint​(RMDocument aDoc,
                                         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.
        Specified by:
        docShapeNeedsRepaint in interface RMDocument.DocListener
      • flushGraphics

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

        public RMRect getDirtyRect()
        Returns the dirty rect of shapes currently registered with shapeNeedsRepaint (and clears _dirtyShapes).
      • print

        public void print()
        This method tells the RMViewer to print by running the print dialog (configured to the default printer).
      • print

        public void print​(java.lang.String aPrinterName,
                          boolean runPanel)
        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.
      • print2

        public void print2()
      • print2

        public void print2​(java.lang.String aPrinterName,
                           boolean runPanel)
      • getBook

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