From 560bfb1ba1ae52b6f43eb08881fcb5c62aff4333 Mon Sep 17 00:00:00 2001 From: Steve Coffman Date: Thu, 13 Apr 2000 19:25:30 +0000 Subject: [PATCH] This is the other half of the patch Wouter Lagerweij had Arved apply. Should fix the current woes. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@193326 13f79535-47bb-0310-9956-ffa450edef68 --- src/org/apache/fop/viewer/PreviewDialog.java | 582 ++++++++++--------- 1 file changed, 311 insertions(+), 271 deletions(-) diff --git a/src/org/apache/fop/viewer/PreviewDialog.java b/src/org/apache/fop/viewer/PreviewDialog.java index e46447b27..178083b9c 100644 --- a/src/org/apache/fop/viewer/PreviewDialog.java +++ b/src/org/apache/fop/viewer/PreviewDialog.java @@ -1,4 +1,3 @@ - package org.apache.fop.viewer; /* @@ -12,311 +11,352 @@ package org.apache.fop.viewer; import java.awt.*; import java.awt.print.*; import java.awt.event.*; -import java.util.*; +import java.awt.image.BufferedImage; + import javax.swing.*; -import java.beans.*; -import org.apache.fop.apps.AWTCommandLine; import org.apache.fop.layout.*; import org.apache.fop.render.awt.*; - - - /** * Frame and User Interface for Preview */ public class PreviewDialog extends JFrame implements ProgressListener { - protected Translator res; - - protected int currentPage = 0; - protected int pageCount = 0; - - protected AWTRenderer renderer; - - protected IconToolBar toolBar = new IconToolBar(); - - protected Command printAction; - protected Command firstPageAction; - protected Command previousPageAction; - protected Command nextPageAction; - protected Command lastPageAction; - - - - - - protected JLabel zoomLabel = new JLabel(); //{public float getAlignmentY() { return 0.0f; }}; - protected JComboBox scale = new JComboBox() {public float getAlignmentY() { return 0.5f; }}; - - protected JScrollPane previewArea = new JScrollPane(); - // protected JLabel statusBar = new JLabel(); - protected JPanel statusBar = new JPanel(); - protected GridBagLayout statusBarLayout = new GridBagLayout(); - - protected JLabel statisticsStatus = new JLabel(); - protected JLabel processStatus = new JLabel(); - protected JLabel infoStatus = new JLabel(); - protected DocumentPanel docPanel; - - - - - public PreviewDialog(AWTRenderer aRenderer, Translator aRes) { - res = aRes; - renderer = aRenderer; - - printAction = new Command(res.getString("Print"), "Print") { public void doit() {print();}}; - firstPageAction = new Command(res.getString("First page"), "firstpg") { public void doit() {goToFirstPage(null);}}; - previousPageAction = new Command(res.getString("Previous page"), "prevpg") { public void doit() {goToPreviousPage(null);}}; - nextPageAction = new Command(res.getString("Next page"), "nextpg") { public void doit() {goToNextPage(null);}}; - lastPageAction = new Command(res.getString("Last page"), "lastpg") { public void doit() {goToLastPage(null);}}; - - setDefaultCloseOperation(DISPOSE_ON_CLOSE); - this.setSize(new Dimension(379, 476)); - previewArea.setMinimumSize(new Dimension(50, 50)); - - this.setTitle("FOP: AWT-" + res.getString("Preview")); - - scale.addItem("25"); - scale.addItem("50"); - scale.addItem("75"); - scale.addItem("100"); - scale.addItem("150"); - scale.addItem("200"); - - scale.setMaximumSize(new Dimension(80, 24)); - scale.setPreferredSize(new Dimension(80, 24)); - - scale.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(ActionEvent e) { - scale_actionPerformed(e); - } - }); - - scale.setSelectedItem("100"); - renderer.setScaleFactor(100.0); - - zoomLabel.setText(res.getString("Zoom")); - - this.setJMenuBar(setupMenue()); - - this.getContentPane().add(toolBar, BorderLayout.NORTH); - - toolBar.add(printAction); - toolBar.addSeparator(); - toolBar.add(firstPageAction); - toolBar.add(previousPageAction); - toolBar.add(nextPageAction); - toolBar.add(lastPageAction); - toolBar.addSeparator(); - toolBar.add(zoomLabel, null); - toolBar.addSeparator(); - toolBar.add(scale, null); - - this.getContentPane().add(previewArea, BorderLayout.CENTER); - this.getContentPane().add(statusBar, BorderLayout.SOUTH); - - - statisticsStatus.setBorder(BorderFactory.createEtchedBorder()); - processStatus.setBorder(BorderFactory.createEtchedBorder()); - infoStatus.setBorder(BorderFactory.createEtchedBorder()); - - statusBar.setLayout(statusBarLayout); - - processStatus.setPreferredSize(new Dimension(200, 21)); - statisticsStatus.setPreferredSize(new Dimension(100, 21)); - infoStatus.setPreferredSize(new Dimension(100, 21)); - processStatus.setMinimumSize(new Dimension(200, 21)); - statisticsStatus.setMinimumSize(new Dimension(100, 21)); - infoStatus.setMinimumSize(new Dimension(100, 21)); - statusBar.add(processStatus, new GridBagConstraints(0, 0, 2, 1, 2.0, 0.0 - ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 5), 0, 0)); - statusBar.add(statisticsStatus, new GridBagConstraints(2, 0, 1, 2, 1.0, 0.0 - ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 5), 0, 0)); - statusBar.add(infoStatus, new GridBagConstraints(3, 0, 1, 1, 1.0, 0.0 - ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); - - - docPanel = new DocumentPanel(renderer, this); - - previewArea.setSize(docPanel.getSize()); - previewArea.getViewport().add(docPanel); - } - - - JMenuBar setupMenue() { - JMenuBar menuBar; - JMenuItem menuItem; - JMenu menu; - JMenu subMenu; + protected Translator res; + + protected int currentPage = 0; + protected int pageCount = 0; + + protected AWTRenderer renderer; + + protected IconToolBar toolBar = new IconToolBar(); + + protected Command printAction; + protected Command firstPageAction; + protected Command previousPageAction; + protected Command nextPageAction; + protected Command lastPageAction; + + protected JLabel zoomLabel = new JLabel(); //{public float getAlignmentY() { return 0.0f; }}; + protected JComboBox scale = new JComboBox() { + public float getAlignmentY() { return 0.5f; }}; + + protected JScrollPane previewArea = new JScrollPane(); + // protected JLabel statusBar = new JLabel(); + protected JPanel statusBar = new JPanel(); + protected GridBagLayout statusBarLayout = new GridBagLayout(); + + protected JLabel statisticsStatus = new JLabel(); + protected JLabel processStatus = new JLabel(); + protected JLabel infoStatus = new JLabel(); + protected JLabel previewImageLabel = new JLabel(); + + /** + * Create a new PreviewDialog that uses the given renderer and translator. + * + * @param aRenderer the to use renderer + * @param aRes the to use translator + */ + public PreviewDialog(AWTRenderer aRenderer, Translator aRes) { + res = aRes; + renderer = aRenderer; + + printAction = new Command(res.getString("Print"), "Print") { + public void doit() {print();}}; + firstPageAction = + new Command(res.getString("First page"), "firstpg") { + public void doit() {goToFirstPage(null);}}; + previousPageAction = + new Command(res.getString("Previous page"), "prevpg") { + public void doit() {goToPreviousPage(null);}}; + nextPageAction = new Command(res.getString("Next page"),"nextpg") { + public void doit() {goToNextPage(null);}}; + lastPageAction = new Command(res.getString("Last page"), "lastpg") { + public void doit() {goToLastPage(null);}}; + + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + this.setSize(new Dimension(379, 476)); + previewArea.setMinimumSize(new Dimension(50, 50)); + + this.setTitle("FOP: AWT-" + res.getString("Preview")); + + scale.addItem("25"); + scale.addItem("50"); + scale.addItem("75"); + scale.addItem("100"); + scale.addItem("150"); + scale.addItem("200"); + + scale.setMaximumSize(new Dimension(80, 24)); + scale.setPreferredSize(new Dimension(80, 24)); + + scale.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(ActionEvent e) { + scale_actionPerformed(e); + } + }); + + scale.setSelectedItem("100"); + renderer.setScaleFactor(100.0); + + zoomLabel.setText(res.getString("Zoom")); + + this.setJMenuBar(setupMenue()); + + this.getContentPane().add(toolBar, BorderLayout.NORTH); + + toolBar.add(printAction); + toolBar.addSeparator(); + toolBar.add(firstPageAction); + toolBar.add(previousPageAction); + toolBar.add(nextPageAction); + toolBar.add(lastPageAction); + toolBar.addSeparator(); + toolBar.add(zoomLabel, null); + toolBar.addSeparator(); + toolBar.add(scale, null); + + this.getContentPane().add(previewArea, BorderLayout.CENTER); + this.getContentPane().add(statusBar, BorderLayout.SOUTH); + + statisticsStatus.setBorder(BorderFactory.createEtchedBorder()); + processStatus.setBorder(BorderFactory.createEtchedBorder()); + infoStatus.setBorder(BorderFactory.createEtchedBorder()); + + statusBar.setLayout(statusBarLayout); + + processStatus.setPreferredSize(new Dimension(200, 21)); + statisticsStatus.setPreferredSize(new Dimension(100, 21)); + infoStatus.setPreferredSize(new Dimension(100, 21)); + processStatus.setMinimumSize(new Dimension(200, 21)); + statisticsStatus.setMinimumSize(new Dimension(100, 21)); + infoStatus.setMinimumSize(new Dimension(100, 21)); + statusBar.add(processStatus, + new GridBagConstraints(0, 0, 2, 1, 2.0, 0.0, + GridBagConstraints.CENTER, + GridBagConstraints.HORIZONTAL, + new Insets(0, 0, 0, 5), 0, 0)); + statusBar.add(statisticsStatus, + new GridBagConstraints(2, 0, 1, 2, 1.0, 0.0, + GridBagConstraints.CENTER, + GridBagConstraints.HORIZONTAL, + new Insets(0, 0, 0, 5), 0, 0)); + statusBar.add(infoStatus, + new GridBagConstraints(3, 0, 1, 1, 1.0, 0.0, + GridBagConstraints.CENTER, + GridBagConstraints.HORIZONTAL, + new Insets(0, 0, 0, 0), 0, 0)); + + previewArea.getViewport().add(previewImageLabel); + showPage(); + } - menuBar = new JMenuBar(); - menu = new JMenu(res.getString("File")); + /** + * Create a new menubar to be shown in this window. + * + * @return the newly created menubar + */ + private JMenuBar setupMenue() { + JMenuBar menuBar; + JMenuItem menuItem; + JMenu menu; + JMenu subMenu; + + menuBar = new JMenuBar(); + menu = new JMenu(res.getString("File")); subMenu = new JMenu("OutputFormat"); - subMenu.add(new Command("mHTML")); - subMenu.add(new Command("mPDF")); - subMenu.add(new Command("mRTF")); - subMenu.add(new Command("mTEXT")); + subMenu.add(new Command("mHTML")); + subMenu.add(new Command("mPDF")); + subMenu.add(new Command("mRTF")); + subMenu.add(new Command("mTEXT")); // menu.add(subMenu); // menu.addSeparator(); - menu.add(new Command(res.getString("Print")) {public void doit(){print();}}); - menu.addSeparator(); - menu.add(new Command(res.getString("Close")){ public void doit() {dispose();}} ); + menu.add(new Command(res.getString("Print")) { + public void doit(){print();}}); menu.addSeparator(); - menu.add(new Command(res.getString("Exit")){ public void doit() {System.exit(0);}} ); - menuBar.add(menu); - menu = new JMenu(res.getString("View")); - menu.add(new Command(res.getString("First page")) { public void doit() {goToFirstPage(null);}} ); - menu.add(new Command(res.getString("Previous page")) { public void doit() {goToPreviousPage(null);}} ); - menu.add(new Command(res.getString("Next page")) { public void doit() {goToNextPage(null);}} ); - menu.add(new Command(res.getString("Last page")) { public void doit() {goToLastPage(null);}} ); + menu.add(new Command(res.getString("Exit")) { + public void doit() {dispose();}} ); + menuBar.add(menu); + menu = new JMenu(res.getString("View")); + menu.add(new Command(res.getString("First page")) { + public void doit() {goToFirstPage(null);}} ); + menu.add(new Command(res.getString("Previous page")) { + public void doit() {goToPreviousPage(null);}} ); + menu.add(new Command(res.getString("Next page")) { + public void doit() {goToNextPage(null);}} ); + menu.add(new Command(res.getString("Last page")) { + public void doit() {goToLastPage(null);}} ); menu.addSeparator(); subMenu = new JMenu(res.getString("Zoom")); - subMenu.add(new Command("25%") { public void doit() {setScale(25.0);}} ); - subMenu.add(new Command("50%") { public void doit() {setScale(50.0);}} ); - subMenu.add(new Command("75%") { public void doit() {setScale(75.0);}} ); - subMenu.add(new Command("100%") { public void doit() {setScale(100.0);}} ); - subMenu.add(new Command("150%") { public void doit() {setScale(150.0);}} ); - subMenu.add(new Command("200%") { public void doit() {setScale(200.0);}} ); + subMenu.add(new Command("25%") { + public void doit() {setScale(25.0);}} ); + subMenu.add(new Command("50%") { + public void doit() {setScale(50.0);}} ); + subMenu.add(new Command("75%") { + public void doit() {setScale(75.0);}} ); + subMenu.add(new Command("100%") { + public void doit() {setScale(100.0);}} ); + subMenu.add(new Command("150%") { + public void doit() {setScale(150.0);}} ); + subMenu.add(new Command("200%") { + public void doit() {setScale(200.0);}} ); menu.add(subMenu); menu.addSeparator(); - menu.add(new Command(res.getString("Default zoom")) { public void doit() {setScale(100.0);}} ); - menuBar.add(menu); - menu = new JMenu(res.getString("Help")); + menu.add(new Command(res.getString("Default zoom")) { + public void doit() {setScale(100.0);}} ); + menuBar.add(menu); + menu = new JMenu(res.getString("Help")); menu.add(new Command(res.getString("Index"))); menu.addSeparator(); menu.add(new Command(res.getString("Introduction"))); menu.addSeparator(); - menu.add(new Command(res.getString("About")){ public void doit() {startHelpAbout(null);}} ); - menuBar.add(menu); - return menuBar; - } - - //Aktion Hilfe | Info durchgeführt - - public void startHelpAbout(ActionEvent e) { - PreviewDialogAboutBox dlg = new PreviewDialogAboutBox(this); - Dimension dlgSize = dlg.getPreferredSize(); - Dimension frmSize = getSize(); - Point loc = getLocation(); - dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y); - dlg.setModal(true); - dlg.show(); - } - - void goToPage(int number) { - docPanel.setPageNumber(number); - repaint(); - previewArea.repaint(); - statisticsStatus.setText(res.getString("Page") + " " + (currentPage + 1) + " " + res.getString("of") + " " + - pageCount); - } - - /** - * Shows the previous page. - */ - void goToPreviousPage(ActionEvent e) { - if (currentPage <= 0) - return; - currentPage--; - goToPage(currentPage); - } - - - /** - * Shows the next page. - */ - void goToNextPage(ActionEvent e) { - if (currentPage >= pageCount - 1) - return; - currentPage++; - goToPage(currentPage); - } - - /** - * Shows the last page. - */ - void goToLastPage(ActionEvent e) { - - if (currentPage == pageCount - 1) return; - currentPage = pageCount - 1; - - goToPage(currentPage); - } - - /** - * Shows the first page. - */ - void goToFirstPage(ActionEvent e) { - if (currentPage == 0) - return; - currentPage = 0; - goToPage(currentPage); - } - - void print() { - - PrinterJob pj = PrinterJob.getPrinterJob(); - // Nicht nötig, Pageable get a Printable. - // pj.setPrintable(renderer); - pj.setPageable(renderer); - - if (pj.printDialog()) { - try { - pj.print(); - } catch(PrinterException pe) { - pe.printStackTrace(); - } + menu.add(new Command(res.getString("About")){ + public void doit() {startHelpAbout(null);}} ); + menuBar.add(menu); + return menuBar; + } + + //Aktion Hilfe | Info durchgeführt + + /** + * Show the About box + * + * @param e a value of type 'ActionEvent' + */ + public void startHelpAbout(ActionEvent e) { + PreviewDialogAboutBox dlg = new PreviewDialogAboutBox(this); + Dimension dlgSize = dlg.getPreferredSize(); + Dimension frmSize = getSize(); + Point loc = getLocation(); + dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, + (frmSize.height - dlgSize.height) / 2 + loc.y); + dlg.setModal(true); + dlg.show(); + } + + /** + * Change the current visible page + * + * @param number the page number to go to + */ + private void goToPage(int number) { + currentPage = number; + renderer.setPageNumber(number); + showPage(); } - } - public void setScale(double scaleFactor) { + /** + * Shows the previous page. + */ + private void goToPreviousPage(ActionEvent e) { + if (currentPage <= 0) + return; + currentPage--; + goToPage(currentPage); + } - if (scaleFactor == 25.0) - scale.setSelectedIndex(0); - else if (scaleFactor == 50.0) - scale.setSelectedIndex(1); - else if (scaleFactor == 75.0) - scale.setSelectedIndex(2); - else if (scaleFactor == 100.0) - scale.setSelectedIndex(3); - else if (scaleFactor == 150.0) - scale.setSelectedIndex(4); - else if (scaleFactor == 200.0) - scale.setSelectedIndex(5); - renderer.setScaleFactor(scaleFactor); - previewArea.invalidate(); - previewArea.repaint(); - } + /** + * Shows the next page. + */ + private void goToNextPage(ActionEvent e) { + if (currentPage >= pageCount - 1) + return; + currentPage++; + goToPage(currentPage); + } - void scale_actionPerformed(ActionEvent e) { - setScale(new Double((String)scale.getSelectedItem()).doubleValue()); - } + /** + * Shows the last page. + */ + private void goToLastPage(ActionEvent e) { + if (currentPage == pageCount - 1) return; + currentPage = pageCount - 1; - public void setPageCount(int aPageCount) { - pageCount = aPageCount; - statisticsStatus.setText(res.getString("Page") + " " + (currentPage + 1) + - " " + res.getString("of") + " " + pageCount); - } + goToPage(currentPage); + } + /** + * Shows the first page. + */ + private void goToFirstPage(ActionEvent e) { + if (currentPage == 0) + return; + currentPage = 0; + goToPage(currentPage); + } - public void progress(int percentage) { - processStatus.setText(percentage + "%"); - } + private void print() { + PrinterJob pj = PrinterJob.getPrinterJob(); + // Nicht nötig, Pageable get a Printable. + // pj.setPrintable(renderer); + pj.setPageable(renderer); + + if (pj.printDialog()) { + try { + pj.print(); + } catch(PrinterException pe) { + pe.printStackTrace(); + } + } + } - public void progress(int percentage, String message) { - processStatus.setText(message + " " + percentage + "%"); - } + public void setScale(double scaleFactor) { + + if (scaleFactor == 25.0) + scale.setSelectedIndex(0); + else if (scaleFactor == 50.0) + scale.setSelectedIndex(1); + else if (scaleFactor == 75.0) + scale.setSelectedIndex(2); + else if (scaleFactor == 100.0) + scale.setSelectedIndex(3); + else if (scaleFactor == 150.0) + scale.setSelectedIndex(4); + else if (scaleFactor == 200.0) + scale.setSelectedIndex(5); + + renderer.setScaleFactor(scaleFactor); + showPage(); + } - public void progress(String message) { - processStatus.setText(message); - } + void scale_actionPerformed(ActionEvent e) { + setScale(new Double((String)scale.getSelectedItem()).doubleValue()); + } + public void progress(int percentage) { + processStatus.setText(percentage + "%"); + } -} // class PreviewDialog + public void progress(int percentage, String message) { + processStatus.setText(message + " " + percentage + "%"); + } + public void progress(String message) { + processStatus.setText(message); + } + + public void showPage() { + BufferedImage pageImage = null; + Graphics graphics = null; + + renderer.render(currentPage); + pageImage = renderer.getLastRenderedPage(); + graphics = pageImage.getGraphics(); + graphics.setColor(Color.black); + graphics.drawRect(0, 0, pageImage.getWidth() - 1, + pageImage.getHeight() -1 ); + + previewImageLabel.setIcon(new ImageIcon(pageImage)); + + pageCount = renderer.getPageCount(); + + statisticsStatus.setText(res.getString("Page") + " " + + (currentPage + 1) + " " + + res.getString("of") + " " + + pageCount); + } +} // class PreviewDialog -- 2.39.5