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]