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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*
  2. * $Id$
  3. * Copyright (C) 2001-2003 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. //FOP
  9. import org.apache.fop.render.awt.AWTRenderer;
  10. import org.apache.fop.viewer.PreviewDialog;
  11. import org.apache.fop.viewer.Translator;
  12. //Java
  13. import java.awt.Dimension;
  14. import java.awt.Toolkit;
  15. import java.awt.event.WindowAdapter;
  16. import java.awt.event.WindowEvent;
  17. import java.util.Locale;
  18. // SAX
  19. import org.xml.sax.XMLReader;
  20. /**
  21. * AWT Viewer starter.
  22. * Originally contributed by:
  23. * Juergen Verwohlt: Juergen.Verwohlt@jCatalog.com,
  24. * Rainer Steinkuhle: Rainer.Steinkuhle@jCatalog.com,
  25. * Stanislav Gorkhover: Stanislav.Gorkhover@jCatalog.com
  26. * Modified to use streaming API by Mark Lillywhite, mark-fop@inomial.com
  27. */
  28. public class AWTStarter extends CommandLineStarter {
  29. private PreviewDialog frame;
  30. private Translator translator;
  31. private Driver driver;
  32. private XMLReader parser;
  33. /**
  34. * Construct an AWTStarter
  35. * @param commandLineOptions the parsed command line options
  36. * @throws FOPException if anything goes wrong during initialization.
  37. */
  38. public AWTStarter(CommandLineOptions commandLineOptions)
  39. throws FOPException {
  40. super(commandLineOptions);
  41. init();
  42. }
  43. private void init() throws FOPException {
  44. //Creates Translator according to the language
  45. String language = commandLineOptions.getLanguage();
  46. if (language == null) {
  47. translator = new Translator(Locale.getDefault());
  48. } else {
  49. translator = new Translator(new Locale(language, ""));
  50. }
  51. AWTRenderer renderer = new AWTRenderer(translator);
  52. frame = createPreviewDialog(renderer, translator);
  53. renderer.setComponent(frame);
  54. driver = new Driver();
  55. driver.setRenderer(renderer);
  56. parser = inputHandler.getParser();
  57. if (parser == null) {
  58. throw new FOPException("Unable to create SAX parser");
  59. }
  60. }
  61. /**
  62. * Runs formatting.
  63. * @throws FOPException FIXME should not happen.
  64. */
  65. public void run() throws FOPException {
  66. driver.reset();
  67. try {
  68. frame.setStatus(translator.getString("Status.Build.FO.tree"));
  69. driver.render(parser, inputHandler.getInputSource());
  70. frame.setStatus(translator.getString("Status.Show"));
  71. frame.showPage();
  72. } catch (Exception e) {
  73. frame.reportException(e);
  74. }
  75. }
  76. private PreviewDialog createPreviewDialog(AWTRenderer renderer,
  77. Translator res) {
  78. PreviewDialog frame = new PreviewDialog(this, renderer, res);
  79. frame.addWindowListener(new WindowAdapter() {
  80. public void windowClosed(WindowEvent we) {
  81. System.exit(0);
  82. }
  83. });
  84. //Centers the window
  85. Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  86. Dimension frameSize = frame.getSize();
  87. if (frameSize.height > screenSize.height) {
  88. frameSize.height = screenSize.height;
  89. }
  90. if (frameSize.width > screenSize.width) {
  91. frameSize.width = screenSize.width;
  92. }
  93. frame.setLocation((screenSize.width - frameSize.width) / 2,
  94. (screenSize.height - frameSize.height) / 2);
  95. frame.setVisible(true);
  96. return frame;
  97. }
  98. }