Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

AWTStarter.java 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. import java.awt.event.WindowAdapter;
  20. import java.awt.event.WindowEvent;
  21. // SAX
  22. import org.xml.sax.XMLReader;
  23. import org.xml.sax.InputSource;
  24. import org.xml.sax.SAXException;
  25. import org.xml.sax.SAXParseException;
  26. // Java
  27. import java.io.FileReader;
  28. import java.io.File;
  29. import java.io.FileWriter;
  30. import java.io.PrintWriter;
  31. import java.io.IOException;
  32. import java.io.FileNotFoundException;
  33. import java.io.FileInputStream;
  34. import java.io.InputStream;
  35. import java.net.URL;
  36. import java.util.*;
  37. /**
  38. * initialize AWT previewer
  39. */
  40. public class AWTStarter extends CommandLineStarter {
  41. PreviewDialog frame;
  42. AWTRenderer renderer;
  43. public static String TRANSLATION_PATH =
  44. "/org/apache/fop/viewer/resources/";
  45. private Translator resource;
  46. public AWTStarter(CommandLineOptions commandLineOptions)
  47. throws FOPException {
  48. super(commandLineOptions);
  49. init();
  50. }
  51. private void init() {
  52. try {
  53. UIManager.setLookAndFeel(new javax.swing.plaf.metal.MetalLookAndFeel());
  54. } catch (Exception e) {
  55. e.printStackTrace();
  56. }
  57. String language = commandLineOptions.getLanguage();
  58. if (language == null) {
  59. try {
  60. language = System.getProperty("user.language");
  61. } catch(SecurityException se) {
  62. // if this is running in a secure place
  63. }
  64. }
  65. resource = getResourceBundle(TRANSLATION_PATH + "resources."
  66. + language);
  67. UserMessage.setTranslator(getResourceBundle(TRANSLATION_PATH
  68. + "messages."
  69. + language));
  70. resource.setMissingEmphasized(false);
  71. renderer = new AWTRenderer(resource);
  72. frame = createPreviewDialog(renderer, resource);
  73. //renderer.setProgressListener(frame);
  74. renderer.setComponent(frame);
  75. }
  76. public void run() throws FOPException {
  77. Driver driver = new Driver();
  78. setupLogger(driver);
  79. // init parser
  80. frame.progress(resource.getString("Init parser") + " ...");
  81. XMLReader parser = inputHandler.getParser();
  82. if (parser == null) {
  83. throw new FOPException("Unable to create SAX parser");
  84. }
  85. setParserFeatures(parser);
  86. try {
  87. driver.setRenderer(renderer);
  88. // build FO tree: time
  89. frame.progress(resource.getString("Build FO tree") + " ...");
  90. driver.render(parser, inputHandler.getInputSource());
  91. frame.progress(resource.getString("Show"));
  92. frame.showPage();
  93. } catch (Exception e) {
  94. if (e instanceof FOPException) {
  95. throw (FOPException)e;
  96. }
  97. throw new FOPException(e);
  98. }
  99. }
  100. protected PreviewDialog createPreviewDialog(AWTRenderer renderer,
  101. Translator res) {
  102. PreviewDialog frame = new PreviewDialog(renderer, res);
  103. frame.validate();
  104. frame.addWindowListener(new WindowAdapter() {
  105. public void windowClosed(WindowEvent we) {
  106. System.exit(0);
  107. }
  108. });
  109. // center window
  110. Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  111. Dimension frameSize = frame.getSize();
  112. if (frameSize.height > screenSize.height)
  113. frameSize.height = screenSize.height;
  114. if (frameSize.width > screenSize.width)
  115. frameSize.width = screenSize.width;
  116. frame.setLocation((screenSize.width - frameSize.width) / 2,
  117. (screenSize.height - frameSize.height) / 2);
  118. frame.setVisible(true);
  119. return frame;
  120. }
  121. private SecureResourceBundle getResourceBundle(String path) {
  122. InputStream in = null;
  123. try {
  124. URL url = getClass().getResource(path);
  125. in = url.openStream();
  126. } catch (Exception ex) {
  127. getLogger().error("Can't find URL to: <" + path + "> "
  128. + ex.getMessage(), ex);
  129. }
  130. return new SecureResourceBundle(in);
  131. }
  132. }