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 2006/07/10 21:56:50 UTC

svn commit: r420623 - in /xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt: AWTRenderer.java viewer/PreviewDialog.java

Author: jeremias
Date: Mon Jul 10 12:56:49 2006
New Revision: 420623

URL: http://svn.apache.org/viewvc?rev=420623&view=rev
Log:
Bugzilla #39709:
Some clean-up in the AWT Renderer/Preview.
Submitted by: Stefan Ziel <stefan.ziel.at.claninfo.ch>

Original patch slightly modified for (hopefully) better naming.

Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java?rev=420623&r1=420622&r2=420623&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java Mon Jul 10 12:56:49 2006
@@ -28,9 +28,6 @@
 // Java
 import java.awt.Color;
 import java.awt.Dimension;
-import java.awt.Toolkit;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
 import java.awt.geom.Rectangle2D;
 import java.awt.print.PageFormat;
 import java.awt.print.Pageable;
@@ -44,8 +41,8 @@
 import org.apache.fop.area.Area;
 import org.apache.fop.area.PageViewport;
 import org.apache.fop.render.awt.viewer.PreviewDialog;
+import org.apache.fop.render.awt.viewer.StatusListener;
 import org.apache.fop.render.awt.viewer.Renderable;
-import org.apache.fop.render.awt.viewer.Translator;
 import org.apache.fop.render.java2d.Java2DRenderer;
 
 /**
@@ -58,9 +55,6 @@
     /** The MIME type for AWT-Rendering */
     public static final String MIME_TYPE = MimeConstants.MIME_FOP_AWT_PREVIEW;
 
-    /** The resource bundle used for AWT messages. */
-    protected Translator translator = null;
-
     /** flag for debugging */
     public boolean debug;
 
@@ -68,29 +62,27 @@
     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;
-
-    /**
      * Renderable instance that can be used to reload and re-render a document after 
      * modifications.
      */
     protected Renderable renderable;
+
+    /**
+     * Will be notified when rendering progresses 
+     */
+    protected StatusListener statusListener = null;
     
     /**
      * 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);
         if (dialogDisplay) {
-            createPreviewDialog();
+            setStatusListener(PreviewDialog.createPreviewDialog(userAgent, this.renderable));
         }
     }
 
@@ -118,17 +110,16 @@
     public void renderPage(PageViewport pageViewport) throws IOException {
 
         super.renderPage(pageViewport);
-        if (frame != null) {
-            frame.setInfo();
+        if (statusListener != null) {
+            statusListener.notifyPageRendered();
         }
     }
 
     /** @see org.apache.fop.render.Renderer#stopRenderer() */
     public void stopRenderer() throws IOException {
         super.stopRenderer();
-        if (frame != null) {
-            frame.setStatus(translator.getString("Status.Show"));
-            frame.reload(); // Refreshes view of page
+        if (statusListener != null) {
+            statusListener.notifyRendererStopped(); // Refreshes view of page
         }
     }
 
@@ -149,32 +140,7 @@
                 / userAgent.getTargetPixelUnitToMillimeter();
         int bitmapWidth = (int) ((pageWidth * scaleX) + 0.5);
         int bitmapHeight = (int) ((pageHeight * scaleY) + 0.5);
-                return new Dimension(bitmapWidth, bitmapHeight);
-    }
-
-    /** Creates and initialize the AWT Viewer main window */
-    private PreviewDialog createPreviewDialog() {
-        frame = new PreviewDialog(userAgent, this.renderable);
-        frame.addWindowListener(new WindowAdapter() {
-            public void windowClosed(WindowEvent we) {
-                System.exit(0);
-            }
-        });
-
-        // Centers the window
-        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
-        Dimension frameSize = frame.getSize();
-        if (frameSize.height > screenSize.height) {
-            frameSize.height = screenSize.height;
-        }
-        if (frameSize.width > screenSize.width) {
-            frameSize.width = screenSize.width;
-        }
-        frame.setLocation((screenSize.width - frameSize.width) / 2,
-                (screenSize.height - frameSize.height) / 2);
-        frame.setStatus(translator.getString("Status.Build.FO.tree"));
-        frame.setVisible(true);
-        return frame;
+        return new Dimension(bitmapWidth, bitmapHeight);
     }
 
     /** @see java.awt.print.Pageable#getPageFormat(int) */
@@ -222,11 +188,6 @@
         return true; // TODO true?
     }
 
-    /** @return the Translator for this renderer */
-    public Translator getTranslator() {
-        return translator;
-    }
-
     /** @see org.apache.fop.render.AbstractRenderer */
     public String getMimeType() {
         return MIME_TYPE;
@@ -270,6 +231,19 @@
 
         // restores the last graphics state from the stack
         restoreGraphicsState();
+    }
+
+    /** @return the StatusListener. */
+    public StatusListener getStatusListener() {
+        return statusListener;
+    }
+
+    /**
+     * Sets a StatusListener this renderer uses to notify about events.
+     * @param statusListener The StatusListener to set.
+     */
+    public void setStatusListener(StatusListener statusListener) {
+        this.statusListener = statusListener;
     }
 
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java?rev=420623&r1=420622&r2=420623&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java Mon Jul 10 12:56:49 2006
@@ -33,6 +33,8 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
 import java.awt.print.PrinterException;
 import java.awt.print.PrinterJob;
 
@@ -60,7 +62,7 @@
  * AWT Viewer main window.
  * Surrounds a PreviewPanel with a bunch of pretty buttons and controls.
  */
-public class PreviewDialog extends JFrame {
+public class PreviewDialog extends JFrame implements StatusListener {
 
     /** The Translator for localization */
     protected Translator translator;
@@ -99,7 +101,7 @@
         renderer = (AWTRenderer) foUserAgent.getRendererOverride();
         this.foUserAgent = foUserAgent;
         this.renderable = renderable;
-        translator = renderer.getTranslator();
+        translator = new Translator();
 
         //Commands aka Actions
         Command printAction = new Command(translator.getString("Menu.Print"), "Print") {
@@ -238,6 +240,38 @@
                                              new Insets(0, 0, 0, 0), 0, 0));
         getContentPane().add(statusBar, BorderLayout.SOUTH);
     }
+    
+    /**
+     * Creates and initialize the AWT Viewer main window. 
+     * @param foUserAgent the FO user agent
+     * @param renderable the target for the rendering
+     * @return the newly initialized preview dialog
+     */
+    public static PreviewDialog createPreviewDialog(FOUserAgent foUserAgent, 
+                Renderable renderable) {
+        PreviewDialog frame = new PreviewDialog(foUserAgent, renderable);
+
+        frame.addWindowListener(new WindowAdapter() {
+            public void windowClosed(WindowEvent we) {
+                System.exit(0);
+            }
+        });
+
+        // Centers the window
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        Dimension frameSize = frame.getSize();
+        if (frameSize.height > screenSize.height) {
+            frameSize.height = screenSize.height;
+        }
+        if (frameSize.width > screenSize.width) {
+            frameSize.width = screenSize.width;
+        }
+        frame.setLocation((screenSize.width - frameSize.width) / 2,
+                    (screenSize.height - frameSize.height) / 2);
+        frame.setStatus(frame.translator.getString("Status.Build.FO.tree"));
+        frame.setVisible(true);
+        return frame;
+    }
 
     /**
      * Creates a new PreviewDialog that uses the given renderer.
@@ -396,10 +430,16 @@
         return menuBar;
     }
 
-    public void reload() {
-        previewPanel.reload();
+    /** @see org.apache.fop.render.awt.viewer.StatusListener#notifyRendererStopped() */
+    public void notifyRendererStopped() {
+        reload();
     }
 
+    private void reload() {
+        setStatus(translator.getString("Status.Show"));
+        previewPanel.reload();
+    }
+    
     /**
      * Changes the current visible page
      * @param number the page number to go to
@@ -407,7 +447,7 @@
     public void goToPage(int number) {
         if (number != previewPanel.getPage()) {
             previewPanel.setPage(number);
-            setInfo();
+            notifyPageRendered();
         }
     }
 
@@ -570,7 +610,7 @@
     /**
      * Updates the message to be shown in the info bar in a thread safe way.
      */
-    public void setInfo() {
+    public void notifyPageRendered() {
         SwingUtilities.invokeLater(new ShowInfo());
     }
 



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