chrisg      2002/07/04 05:00:26

  Modified:    src/org/apache/fop/apps Tag: fop-0_20_2-maintain
                        AWTStarter.java
               src/org/apache/fop/viewer Tag: fop-0_20_2-maintain
                        PreviewDialog.java
  Added:       src/org/apache/fop/viewer/Images Tag: fop-0_20_2-maintain
                        reload.gif
  Log:
  added reload functionality in AWT preview window
  Submitted by: Oleg Tkachenko <[EMAIL PROTECTED]>
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.9.2.4   +13 -13    xml-fop/src/org/apache/fop/apps/AWTStarter.java
  
  Index: AWTStarter.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/apps/AWTStarter.java,v
  retrieving revision 1.9.2.3
  retrieving revision 1.9.2.4
  diff -u -r1.9.2.3 -r1.9.2.4
  --- AWTStarter.java   1 Apr 2002 19:21:39 -0000       1.9.2.3
  +++ AWTStarter.java   4 Jul 2002 12:00:25 -0000       1.9.2.4
  @@ -51,6 +51,8 @@
   
       PreviewDialog frame;
       AWTRenderer renderer;
  +    protected Driver driver;
  +    protected XMLReader parser;
       public static String TRANSLATION_PATH =
           "/org/apache/fop/viewer/resources/";
   
  @@ -62,7 +64,7 @@
           init();
       }
   
  -    private void init() {
  +    private void init() throws FOPException {
           try {
               UIManager.setLookAndFeel(new javax.swing.plaf.metal.MetalLookAndFeel());
           } catch (Exception e) {
  @@ -90,27 +92,24 @@
           frame = createPreviewDialog(renderer, resource);
           renderer.setProgressListener(frame);
           renderer.setComponent(frame);
  -    }
  -
  -
  -    public void run() throws FOPException {
  -        Driver driver = new Driver();
  +        driver = new Driver();
           driver.setLogger(log);
           if (errorDump) {
               driver.setErrorDump(true);
           }
  -
  +        driver.setRenderer(renderer);
           // init parser
           frame.progress(resource.getString("Init parser") + " ...");
  -        XMLReader parser = inputHandler.getParser();
  -
  +        parser = inputHandler.getParser();
           if (parser == null) {
               throw new FOPException("Unable to create SAX parser");
           }
  +    }
   
  -        try {
  -            driver.setRenderer(renderer);
   
  +    public void run() throws FOPException {
  +        driver.reset();
  +        try {
               // build FO tree: time
               frame.progress(resource.getString("Build FO tree") + " ...");
               driver.render(parser, inputHandler.getInputSource());
  @@ -119,6 +118,7 @@
               frame.showPage();
   
           } catch (Exception e) {
  +            frame.reportException(e);
               if (e instanceof FOPException) {
                   throw (FOPException)e;
               }
  @@ -129,7 +129,7 @@
   
       protected PreviewDialog createPreviewDialog(AWTRenderer renderer,
               Translator res) {
  -        PreviewDialog frame = new PreviewDialog(renderer, res);
  +        PreviewDialog frame = new PreviewDialog(this, renderer, res);
           frame.validate();
           frame.addWindowListener(new WindowAdapter() {
                   public void windowClosed(WindowEvent we) {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.7.2.2   +71 -1     xml-fop/src/org/apache/fop/viewer/PreviewDialog.java
  
  Index: PreviewDialog.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/viewer/PreviewDialog.java,v
  retrieving revision 1.7.2.1
  retrieving revision 1.7.2.2
  diff -u -r1.7.2.1 -r1.7.2.2
  --- PreviewDialog.java        1 Apr 2002 19:21:39 -0000       1.7.2.1
  +++ PreviewDialog.java        4 Jul 2002 12:00:25 -0000       1.7.2.2
  @@ -33,6 +33,8 @@
   import org.apache.fop.layout.*;
   import org.apache.fop.render.awt.*;
   import org.apache.fop.messaging.*;
  +import org.apache.fop.apps.AWTStarter;
  +import org.apache.fop.apps.FOPException;
   
   /**
    * Frame and User Interface for Preview
  @@ -46,6 +48,7 @@
       protected int pageCount = 0;
   
       protected AWTRenderer renderer;
  +    protected AWTStarter starter;
   
       protected IconToolBar toolBar = new IconToolBar();
   
  @@ -54,6 +57,8 @@
       protected Command previousPageAction;
       protected Command nextPageAction;
       protected Command lastPageAction;
  +    protected Command reloadAction;
  +    protected Reloader reloader;
   
       protected JLabel zoomLabel =
           new JLabel();    // {public float getAlignmentY() { return 0.0f; }};
  @@ -74,6 +79,18 @@
       protected JLabel infoStatus = new JLabel();
       protected JLabel previewImageLabel = new JLabel();
   
  +     /**
  +     * Create a new PreviewDialog that uses the given starter, renderer and 
translator.
  +     *
  +     *  @param aStarter the to use starter
  +     *  @param aRenderer the to use renderer
  +     *  @param aRes the to use translator
  +     */
  +    public PreviewDialog(AWTStarter aStarter, AWTRenderer aRenderer, Translator 
aRes) {
  +        this(aRenderer, aRes);
  +        starter = aStarter;
  +    }
  +
       /**
        * Create a new PreviewDialog that uses the given renderer and translator.
        *
  @@ -116,6 +133,12 @@
               }
   
           };
  +        reloadAction = new Command(res.getString("Reload"), "reload") {
  +            public void doit() {
  +                reload(null);
  +            }
  +
  +        };
   
           setDefaultCloseOperation(DISPOSE_ON_CLOSE);
           this.setSize(new Dimension(379, 476));
  @@ -150,6 +173,7 @@
           this.getContentPane().add(toolBar, BorderLayout.NORTH);
   
           toolBar.add(printAction);
  +        toolBar.add(reloadAction);
           toolBar.addSeparator();
           toolBar.add(firstPageAction);
           toolBar.add(previousPageAction);
  @@ -221,6 +245,12 @@
               }
   
           });
  +        menu.add(new Command(res.getString("Reload")) {
  +            public void doit() {
  +                reload(null);
  +            }
  +
  +        });
           menu.addSeparator();
           menu.add(new Command(res.getString("Exit")) {
               public void doit() {
  @@ -385,6 +415,35 @@
       }
   
       /**
  +     * Reloads and reformats document.
  +     */
  +    private synchronized void reload(ActionEvent e) {
  +        if (reloader == null || !reloader.isAlive()) {
  +            reloader = new Reloader();
  +            reloader.start();
  +        }
  +    }
  +
  +    /**
  +     * This class is used to reload document  in
  +     * a thread safe way.
  +     */
  +    private class Reloader extends Thread {
  +        public void run() {
  +            previewImageLabel.setIcon(null);
  +            statisticsStatus.setText("");
  +            //Cleans up renderer
  +            while (renderer.getPageCount() != 0)
  +                renderer.removePage(0);
  +            try {
  +                starter.run();
  +            } catch (FOPException e) {
  +                e.printStackTrace();
  +            }
  +        }
  +    }
  +
  +    /**
        * Shows a page by number.
        */
       private void goToPage(ActionEvent e) {
  @@ -624,6 +683,17 @@
                   }
               }
           }
  +    }
  +
  +    public void reportException(Exception e) {
  +        String msg = res.getString("An exception has occured");
  +        progress(msg);
  +        JOptionPane.showMessageDialog(
  +                 getContentPane(),
  +            "<html><b>" + msg + ":</b><br>"
  +                  + e.getClass().getName() + "<br>" + e.getMessage() + "</html>", 
res.getString("Fatal error"),
  +             JOptionPane.ERROR_MESSAGE
  +             );
       }
   
   }    // class PreviewDialog
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +4 -0      xml-fop/src/org/apache/fop/viewer/Images/Attic/reload.gif
  
        <<Binary file>>
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to