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]