123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
-
- package org.apache.fop.apps;
- /*
- originally contributed by
- Juergen Verwohlt: Juergen.Verwohlt@jCatalog.com,
- Rainer Steinkuhle: Rainer.Steinkuhle@jCatalog.com,
- Stanislav Gorkhover: Stanislav.Gorkhover@jCatalog.com
- */
- import org.apache.fop.messaging.MessageHandler;
- import org.apache.fop.viewer.*;
- import org.apache.fop.render.awt.*;
-
-
- import javax.swing.UIManager;
- import java.awt.*;
-
- // SAX
- import org.xml.sax.XMLReader;
- import org.xml.sax.InputSource;
- import org.xml.sax.SAXException;
- import org.xml.sax.SAXParseException;
-
-
-
- // Java
- import java.io.FileReader;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.PrintWriter;
- import java.io.IOException;
- import java.io.FileNotFoundException;
- import java.io.FileInputStream;
- import java.io.InputStream;
- import java.net.URL;
- import java.util.*;
-
-
-
- /**
- * initialize AWT previewer
- */
-
- public class AWTCommandLine {
-
-
- public static String TRANSLATION_PATH = "/org/apache/fop/viewer/resources/";
-
-
- private Translator resource;
-
-
-
- public AWTCommandLine(String srcFile, String language) {
-
- if (language == null)
- language = System.getProperty("user.language");
-
- resource = getResourceBundle(TRANSLATION_PATH + "resources." +
- language);
-
- UserMessage.setTranslator(
- getResourceBundle(TRANSLATION_PATH + "messages." +
- language));
-
- resource.setMissingEmphasized(false);
- AWTRenderer renderer = new AWTRenderer(resource);
- PreviewDialog frame = createPreviewDialog(renderer, resource);
- renderer.setProgressListener(frame);
- renderer.setComponent(frame);
- MessageHandler.setOutputMethod(MessageHandler.EVENT);
- MessageHandler.addListener(frame);
-
- //init parser
- frame.progress(resource.getString("Init parser") + " ...");
- XMLReader parser = createParser();
-
- if (parser == null) {
- MessageHandler.errorln("ERROR: Unable to create SAX parser");
- System.exit(1);
- }
-
- // setting the necessary parser features
- try {
- parser.setFeature("http://xml.org/sax/features/namespace-prefixes",
- true);
- } catch (SAXException e) {
- MessageHandler.errorln("Error in setting up parser feature namespace-prefixes");
- MessageHandler.errorln("You need a parser which supports SAX version 2");
- System.exit(1);
- }
-
- try {
- Driver driver = new Driver();
- driver.setRenderer(renderer);
-
- // init mappings: time
- frame.progress(resource.getString("Init mappings") + " ...");
-
- driver.addElementMapping("org.apache.fop.fo.StandardElementMapping");
- driver.addElementMapping("org.apache.fop.svg.SVGElementMapping");
- driver.addPropertyList("org.apache.fop.fo.StandardPropertyListMapping");
- driver.addPropertyList("org.apache.fop.svg.SVGPropertyListMapping");
-
- // build FO tree: time
- frame.progress(resource.getString("Build FO tree") + " ...");
- driver.buildFOTree(parser, fileInputSource(srcFile));
-
- // layout FO tree: time
- frame.progress(resource.getString("Layout FO tree") + " ...");
- driver.format();
-
- // render: time
- frame.progress(resource.getString("Render") + " ...");
- driver.render();
-
- frame.progress(resource.getString("Show"));
- frame.showPage();
-
- } catch (Exception e) {
- MessageHandler.errorln("FATAL ERROR: " + e.getMessage());
- e.printStackTrace();
- System.exit(1);
- }
- }
-
-
- static XMLReader createParser() {
- String parserClassName = System.getProperty("org.xml.sax.parser");
- if (parserClassName == null) {
- parserClassName = "org.apache.xerces.parsers.SAXParser";
- }
- MessageHandler.logln("using SAX parser " + parserClassName);
-
- try {
- return (XMLReader) Class.forName(
- parserClassName).newInstance();
- } catch (ClassNotFoundException e) {
- MessageHandler.errorln("Could not find " + parserClassName);
- }
- catch (InstantiationException e) {
- MessageHandler.errorln("Could not instantiate " +
- parserClassName);
- }
- catch (IllegalAccessException e) {
- MessageHandler.errorln("Could not access " + parserClassName);
- }
- catch (ClassCastException e) {
- MessageHandler.errorln(parserClassName + " is not a SAX driver");
- }
- return null;
- }
-
-
-
- protected PreviewDialog createPreviewDialog(AWTRenderer renderer,
- Translator res) {
- PreviewDialog frame = new PreviewDialog(renderer, res);
- frame.validate();
-
- // center 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.setVisible(true);
- return frame;
- }
-
-
-
- /**
- * create an InputSource from a file name
- *
- * @param filename the name of the file
- * @return the InputSource created
- */
- protected static InputSource fileInputSource(String filename) {
- /* this code adapted from James Clark's in XT */
- File file = new File(filename);
- String path = file.getAbsolutePath();
- String fSep = System.getProperty("file.separator");
- if (fSep != null && fSep.length() == 1)
- path = path.replace(fSep.charAt(0), '/');
- if (path.length() > 0 && path.charAt(0) != '/')
- path = '/' + path;
- try {
- return new InputSource(new URL("file", null, path).toString());
- } catch (java.net.MalformedURLException e) {
- throw new Error("unexpected MalformedURLException");
- }
- }
-
-
- private SecureResourceBundle getResourceBundle(String path) {
- InputStream in = null;
-
- try {
- URL url = getClass().getResource(path);
- in = url.openStream();
- } catch (Exception ex) {
- MessageHandler.logln("Can't find URL to: <" + path + "> " +
- ex.getMessage());
- }
- return new SecureResourceBundle(in);
- }
-
-
- /* main
- */
- public static void main(String[] args) {
- try {
- UIManager.setLookAndFeel(
- new javax.swing.plaf.metal.MetalLookAndFeel());
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- String srcPath = null;
- String language = null;
- String imageDir = null;
-
- MessageHandler.errorln(Version.getVersion());
- if (args.length < 1 || args.length > 3) {
- MessageHandler.errorln("usage: java AWTCommandLine " + "formatting-object-file [language] ");
- System.exit(1);
- }
-
- srcPath = args[0];
- if (args.length > 1) {
- language = args[1];
- }
-
- new AWTCommandLine(srcPath, language);
-
- } // main
- } // AWTCommandLine
-
-
|