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 4.5KB

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