Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

AWTStarter.java 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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. // build FO tree: time
  85. frame.progress(resource.getString("Build FO tree") + " ...");
  86. driver.buildFOTree(parser, inputHandler.getInputSource());
  87. // layout FO tree: time
  88. frame.progress(resource.getString("Layout FO tree") + " ...");
  89. driver.format();
  90. // render: time
  91. frame.progress(resource.getString("Render") + " ...");
  92. driver.render();
  93. frame.progress(resource.getString("Show"));
  94. frame.showPage();
  95. } catch (Exception e) {
  96. MessageHandler.errorln("FATAL ERROR: " + e.getMessage());
  97. e.printStackTrace();
  98. System.exit(1);
  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. MessageHandler.logln("Can't find URL to: <" + path + "> " +
  124. ex.getMessage());
  125. }
  126. return new SecureResourceBundle(in);
  127. }
  128. }