You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AWTStarter.java 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /*
  2. * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
  3. * For details on use and redistribution please refer to the
  4. * LICENSE file included with these sources."
  5. */
  6. package org.apache.fop.apps;
  7. /*
  8. originally contributed by
  9. Juergen Verwohlt: Juergen.Verwohlt@jCatalog.com,
  10. Rainer Steinkuhle: Rainer.Steinkuhle@jCatalog.com,
  11. Stanislav Gorkhover: Stanislav.Gorkhover@jCatalog.com
  12. */
  13. import org.apache.fop.messaging.MessageHandler;
  14. import org.apache.fop.viewer.*;
  15. import org.apache.fop.render.awt.*;
  16. import javax.swing.UIManager;
  17. import java.awt.*;
  18. // SAX
  19. import org.xml.sax.XMLReader;
  20. import org.xml.sax.InputSource;
  21. import org.xml.sax.SAXException;
  22. import org.xml.sax.SAXParseException;
  23. // Java
  24. import java.io.FileReader;
  25. import java.io.File;
  26. import java.io.FileWriter;
  27. import java.io.PrintWriter;
  28. import java.io.IOException;
  29. import java.io.FileNotFoundException;
  30. import java.io.FileInputStream;
  31. import java.io.InputStream;
  32. import java.net.URL;
  33. import java.util.*;
  34. /**
  35. * initialize AWT previewer
  36. */
  37. public class AWTStarter extends CommandLineStarter {
  38. PreviewDialog frame;
  39. AWTRenderer renderer;
  40. public static String TRANSLATION_PATH = "/org/apache/fop/viewer/resources/";
  41. private Translator resource;
  42. public AWTStarter (CommandLineOptions commandLineOptions) {
  43. super(commandLineOptions);
  44. init();
  45. }
  46. private void init () {
  47. try {
  48. UIManager.setLookAndFeel(
  49. new javax.swing.plaf.metal.MetalLookAndFeel());
  50. } catch (Exception e) {
  51. e.printStackTrace();
  52. }
  53. String language = commandLineOptions.getLanguage();
  54. if (language == null)
  55. language = System.getProperty("user.language");
  56. resource = getResourceBundle(TRANSLATION_PATH + "resources." +
  57. language);
  58. UserMessage.setTranslator(
  59. getResourceBundle(TRANSLATION_PATH + "messages." +
  60. language));
  61. resource.setMissingEmphasized(false);
  62. renderer = new AWTRenderer(resource);
  63. frame = createPreviewDialog(renderer, resource);
  64. renderer.setProgressListener(frame);
  65. renderer.setComponent(frame);
  66. MessageHandler.setOutputMethod(MessageHandler.EVENT);
  67. MessageHandler.addListener(frame);
  68. }
  69. public void run () {
  70. Driver driver = new Driver();
  71. if (errorDump) {
  72. driver.setErrorDump(true);
  73. }
  74. //init parser
  75. frame.progress(resource.getString("Init parser") + " ...");
  76. XMLReader parser = inputHandler.getParser();
  77. if (parser == null) {
  78. MessageHandler.errorln("ERROR: Unable to create SAX parser");
  79. System.exit(1);
  80. }
  81. setParserFeatures(parser);
  82. try {
  83. driver.setRenderer(renderer);
  84. // init mappings: time
  85. frame.progress(resource.getString("Init mappings") + " ...");
  86. driver.addElementMapping("org.apache.fop.fo.StandardElementMapping");
  87. driver.addElementMapping("org.apache.fop.svg.SVGElementMapping");
  88. driver.addPropertyList("org.apache.fop.fo.StandardPropertyListMapping");
  89. driver.addPropertyList("org.apache.fop.svg.SVGPropertyListMapping");
  90. // build FO tree: time
  91. frame.progress(resource.getString("Build FO tree") + " ...");
  92. driver.buildFOTree(parser, inputHandler.getInputSource());
  93. // layout FO tree: time
  94. frame.progress(resource.getString("Layout FO tree") + " ...");
  95. driver.format();
  96. // render: time
  97. frame.progress(resource.getString("Render") + " ...");
  98. driver.render();
  99. frame.progress(resource.getString("Show"));
  100. frame.showPage();
  101. } catch (Exception e) {
  102. MessageHandler.errorln("FATAL ERROR: " + e.getMessage());
  103. e.printStackTrace();
  104. System.exit(1);
  105. }
  106. }
  107. protected PreviewDialog createPreviewDialog(AWTRenderer renderer,
  108. Translator res) {
  109. PreviewDialog frame = new PreviewDialog(renderer, res);
  110. frame.validate();
  111. // center window
  112. Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  113. Dimension frameSize = frame.getSize();
  114. if (frameSize.height > screenSize.height)
  115. frameSize.height = screenSize.height;
  116. if (frameSize.width > screenSize.width)
  117. frameSize.width = screenSize.width;
  118. frame.setLocation((screenSize.width - frameSize.width) / 2,
  119. (screenSize.height - frameSize.height) / 2);
  120. frame.setVisible(true);
  121. return frame;
  122. }
  123. private SecureResourceBundle getResourceBundle(String path) {
  124. InputStream in = null;
  125. try {
  126. URL url = getClass().getResource(path);
  127. in = url.openStream();
  128. } catch (Exception ex) {
  129. MessageHandler.logln("Can't find URL to: <" + path + "> " +
  130. ex.getMessage());
  131. }
  132. return new SecureResourceBundle(in);
  133. }
  134. }