You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2005/06/20 11:02:43 UTC

cvs commit: xml-fop/src/java/org/apache/fop/render/awt/viewer PreviewPanel.java ImageProxyPanel.java

jeremias    2005/06/20 02:02:43

  Modified:    src/java/org/apache/fop/render/awt AWTRenderer.java
               src/java/org/apache/fop/render/awt/viewer PreviewPanel.java
                        ImageProxyPanel.java
  Log:
  Bugzilla: #35358
  Fixed the following:
  Dialog appearing when panel embedded in custom apps.
  NullPointerExceptions when embedding PreviewPanel.
  PreviewPanel docs inaccurate.
  Submitted by:	Richard Wheeldon <richardw.at.geoquip-rnd.demon.co.uk>
  
  Revision  Changes    Path
  1.37      +33 -8     xml-fop/src/java/org/apache/fop/render/awt/AWTRenderer.java
  
  Index: AWTRenderer.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/awt/AWTRenderer.java,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- AWTRenderer.java	15 Jun 2005 12:24:01 -0000	1.36
  +++ AWTRenderer.java	20 Jun 2005 09:02:42 -0000	1.37
  @@ -67,39 +67,64 @@
       /** flag for debugging */
       public boolean debug;
   
  +    /** If true, preview dialog is shown. */
  +    public boolean dialogDisplay = true;
  +
       /**
        * The preview dialog frame used for display of the documents. Also used as
        * the AWT Component for FontSetup in generating valid font measures.
        */
       protected PreviewDialog frame;
   
  +    /**
  +     * Creates a new AWTRenderer instance.
  +     */
       public AWTRenderer() {
           translator = new Translator();
       }
   
  +    /** @see org.apache.fop.render.Renderer#setUserAgent(org.apache.fop.apps.FOUserAgent) */
       public void setUserAgent(FOUserAgent foUserAgent) {
           super.setUserAgent(foUserAgent);
  -        createPreviewDialog();
  +        if (dialogDisplay) {
  +            createPreviewDialog();
  +        }
  +    }
  +
  +    /**
  +     * Sets whether the preview dialog should be created and displayed when
  +     * the rendering is finished.
  +     * @param show If false, preview dialog is not shown. True by default
  +     */
  +    public void setPreviewDialogDisplayed(boolean show) {
  +        dialogDisplay = show;
       }
   
  +    /** @see org.apache.fop.render.Renderer#renderPage(org.apache.fop.area.PageViewport) */
       public void renderPage(PageViewport pageViewport) 
               throws IOException, FOPException {
   
           super.renderPage(pageViewport);
  -        frame.setInfo();
  +        if (frame != null) {
  +            frame.setInfo();
  +        }
       }
   
  +    /** @see org.apache.fop.render.Renderer#stopRenderer() */
       public void stopRenderer() throws IOException {
           super.stopRenderer();
  -        frame.setStatus(translator.getString("Status.Show"));
  +        if (frame != null) {
  +            frame.setStatus(translator.getString("Status.Show"));
               frame.reload(); // Refreshes view of page
           }
  +    }
   
  -        /**
  -         * Returns the dimensions of the specified page
  -         * @exception FOPException If the page is out of range or has not been rendered.
  -         */
  -        public Dimension getPageImageSize(int pageNum) throws FOPException {
  +    /**
  +     * @return the dimensions of the specified page
  +     * @param pageNum the page number
  +     * @exception FOPException If the page is out of range or has not been rendered.
  +     */
  +    public Dimension getPageImageSize(int pageNum) throws FOPException {
           Rectangle2D bounds = getPageViewport(pageNum).getViewArea();
           pageWidth = (int) Math.round(bounds.getWidth() / 1000f);
           pageHeight = (int) Math.round(bounds.getHeight() / 1000f);
  
  
  
  1.2       +50 -11    xml-fop/src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java
  
  Index: PreviewPanel.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PreviewPanel.java	15 Jun 2005 12:24:01 -0000	1.1
  +++ PreviewPanel.java	20 Jun 2005 09:02:42 -0000	1.2
  @@ -42,18 +42,42 @@
   
   
   /**
  - * Holds a scrollpane with the rendered page(s) and handles actions performed
  + * <p>Holds a scrollpane with the rendered page(s) and handles actions performed
    * to alter the display of the page.
  - *    
  - * Use PreviewPanel when you want to embed a preview in your own application
  + * </p>
  + * <p>Use PreviewPanel when you want to embed a preview in your own application
    * with your own controls. Use PreviewDialog when you want to use the standard
    * Fop controls.
  - *    
  - * In order to embed a PreviewPanel in your own app, use the following:
  + * </p>   
  + * <p>In order to embed a PreviewPanel in your own app, create your own renderer,
  + * and your own agent. Then call setPreviewDialogDisplayed(false) to hide the
  + * default dialog. Finally create a preview panel with the renderer and add it
  + * to your gui:
  + * </p>
    * <pre>
  - * FOUserAgent ua = new FOUserAgent();
  - * ua.setRendererOverride(new AWTRenderer());
  + * AWTRenderer renderer = new AWTRenderer();
  + * FOUserAgent agent = new FOUserAgent();
  + * agent.setRendererOverride(renderer);
  + * renderer.setPreviewDialogDisplayed(false);
  + * renderer.setUserAgent(agent);
  + * previewPanel = new PreviewPanel(agent, renderer);
    * previewPanel = new PreviewPanel(ua);
  + * myGui.add(previewPanel);
  + * </pre>
  + *
  + * In order to set options and display a page do:
  + * <pre>
  + * renderer.clearViewportList();
  + * // build report xml here
  + * reload(); // optional if setting changed
  + * </pre>
  + *
  + * If you wan't to change settings, don't call reload. A good example is
  + * to set the page to fill the screen and set the scrolling mode:
  + * <pre>
  + * double scale = previewPanel.getScaleToFitWindow();
  + * previewPanel.setScaleFactor(scale);
  + * previewPanel.setDisplayMode(PreviewPanel.CONTINUOUS);
    * </pre>
    */
   public class PreviewPanel extends JPanel {
  @@ -109,6 +133,11 @@
       private ViewportScroller scroller;
   
           
  +    /**
  +     * Creates a new PreviewPanel instance.
  +     * @param foUserAgent the user agent
  +     * @param renderer the AWT Renderer instance to paint with
  +     */
       public PreviewPanel(FOUserAgent foUserAgent, AWTRenderer renderer) {
           super(new GridLayout(1, 1));
           this.renderer = renderer;
  @@ -296,15 +325,17 @@
                   gridPanel.add(pagePanels[pg]);
               }
   
  -            renderer.clearViewportList();
  -
               try {
  -                foUserAgent.getInputHandler().render(fop);
  -                setPage(savedCurrentPage);
  +                if (foUserAgent.getInputHandler() != null) {
  +                    renderer.clearViewportList();
  +                    foUserAgent.getInputHandler().render(fop);
  +                }
               } catch (FOPException e) {
                   e.printStackTrace();
                   // FIXME Should show exception in gui - was reportException(e);
               }
  +
  +            setPage(savedCurrentPage);
           }
       }
   
  @@ -321,6 +352,8 @@
        * Returns the scale factor required in order to fit either the current
        * page within the current window or to fit two adjacent pages within
        * the display if the displaymode is continuous.
  +     * @return the requested scale factor
  +     * @throws FOPException in case of an error while fetching the PageViewport
        */
       public double getScaleToFitWindow() throws FOPException {
           Dimension extents = previewArea.getViewport().getExtentSize();
  @@ -330,6 +363,8 @@
   
       /**
        * As getScaleToFitWindow, but ignoring the Y axis.
  +     * @return the requested scale factor
  +     * @throws FOPException in case of an error while fetching the PageViewport
        */
       public double getScaleToFitWidth() throws FOPException {
           Dimension extents = previewArea.getViewport().getExtentSize();
  @@ -341,6 +376,10 @@
        * two adjacent pages within a window of the given height and width, depending
        * on the display mode. In order to ignore either dimension,
        * just specify it as Double.MAX_VALUE.
  +     * @param viewWidth width of the view
  +     * @param viewHeight height of the view
  +     * @return the requested scale factor
  +     * @throws FOPException in case of an error while fetching the PageViewport
        */
       public double getScaleToFit(double viewWidth, double viewHeight) throws FOPException {
           PageViewport pageViewport = renderer.getPageViewport(currentPage);
  
  
  
  1.2       +9 -3      xml-fop/src/java/org/apache/fop/render/awt/viewer/ImageProxyPanel.java
  
  Index: ImageProxyPanel.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/awt/viewer/ImageProxyPanel.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ImageProxyPanel.java	15 Jun 2005 12:24:01 -0000	1.1
  +++ ImageProxyPanel.java	20 Jun 2005 09:02:42 -0000	1.2
  @@ -54,21 +54,26 @@
   
       /**
        * Panel constructor. Doesn't allocate anything until needed.
  +     * @param renderer the AWTRenderer instance to use for painting
  +     * @param page initial page number to show
        */
       public ImageProxyPanel(AWTRenderer renderer, int page) {
           this.renderer = renderer;
           this.page = page;
  +        // Allows single panel to appear behind page display.
  +        // Important for textured L&Fs.
  +        setOpaque(false);
       }
   
       /**
  -     * Returns the size of the page plus the border.
  +     * @return the size of the page plus the border.
        */
       public Dimension getMinimumSize() {
           return getPreferredSize();
       }
   
       /**
  -     * Returns the size of the page plus the border.
  +     * @return the size of the page plus the border.
        */
       public Dimension getPreferredSize() {
           if (size == null) {
  @@ -87,6 +92,7 @@
   
       /**
        * Sets the number of the page to be displayed and refreshes the display.
  +     * @param pg the page number
        */
       public void setPage(int pg) {
           if (page != pg) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org