選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

AWTStarter.java 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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. if (errorDump) {
  80. driver.setErrorDump(true);
  81. }
  82. // init parser
  83. frame.progress(resource.getString("Init parser") + " ...");
  84. XMLReader parser = inputHandler.getParser();
  85. if (parser == null) {
  86. throw new FOPException("Unable to create SAX parser");
  87. }
  88. setParserFeatures(parser);
  89. try {
  90. driver.setRenderer(renderer);
  91. // build FO tree: time
  92. frame.progress(resource.getString("Build FO tree") + " ...");
  93. driver.render(parser, inputHandler.getInputSource());
  94. frame.progress(resource.getString("Show"));
  95. frame.showPage();
  96. } catch (Exception e) {
  97. if (e instanceof FOPException) {
  98. throw (FOPException)e;
  99. }
  100. throw new FOPException(e);
  101. }
  102. }
  103. protected PreviewDialog createPreviewDialog(AWTRenderer renderer,
  104. Translator res) {
  105. PreviewDialog frame = new PreviewDialog(renderer, res);
  106. frame.validate();
  107. frame.addWindowListener(new WindowAdapter() {
  108. public void windowClosed(WindowEvent we) {
  109. System.exit(0);
  110. }
  111. });
  112. // center window
  113. Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  114. Dimension frameSize = frame.getSize();
  115. if (frameSize.height > screenSize.height)
  116. frameSize.height = screenSize.height;
  117. if (frameSize.width > screenSize.width)
  118. frameSize.width = screenSize.width;
  119. frame.setLocation((screenSize.width - frameSize.width) / 2,
  120. (screenSize.height - frameSize.height) / 2);
  121. frame.setVisible(true);
  122. return frame;
  123. }
  124. private SecureResourceBundle getResourceBundle(String path) {
  125. InputStream in = null;
  126. try {
  127. URL url = getClass().getResource(path);
  128. in = url.openStream();
  129. } catch (Exception ex) {
  130. getLogger().error("Can't find URL to: <" + path + "> "
  131. + ex.getMessage(), ex);
  132. }
  133. return new SecureResourceBundle(in);
  134. }
  135. }