]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugzilla #40813:
authorJeremias Maerki <jeremias@apache.org>
Sun, 12 Nov 2006 15:38:45 +0000 (15:38 +0000)
committerJeremias Maerki <jeremias@apache.org>
Sun, 12 Nov 2006 15:38:45 +0000 (15:38 +0000)
1. The PreviewDialog did not display correctly under certain Window managers
(this is actually a bug in Sun's JVM).
2. Keyboard shortcuts are added for PageUp/PageDown (prev/next page), Home
(first page) and End (last page).
3. PreviewPanel.setPage() scrolls to the selected page.
Submitted by: Richard Wheeldon <richardw.at.geoquip-rnd.demon.co.uk>

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@473976 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java
src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java
status.xml

index 55ebfc702217f78a7a2d98edf5303dd12d3344ca..5ce3823ec2892f61f6e28db83e25691449ab2fb4 100644 (file)
@@ -41,17 +41,21 @@ import java.awt.print.PrinterJob;
 
 import java.text.DecimalFormat;
 
+import javax.swing.ActionMap;
 import javax.swing.BorderFactory;
 import javax.swing.ButtonGroup;
+import javax.swing.InputMap;
 import javax.swing.JComboBox;
-import javax.swing.JRadioButtonMenuItem;
+import javax.swing.JComponent;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JMenu;
 import javax.swing.JMenuBar;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
+import javax.swing.JRadioButtonMenuItem;
 import javax.swing.JToolBar;
+import javax.swing.KeyStroke;
 import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
 
@@ -155,6 +159,8 @@ public class PreviewDialog extends JFrame implements StatusListener {
 
         //Sets size to be 61%x90% of the screen size
         Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
+        // Needed due to bug in Sun's JVM 1.5 (6429775)
+        pack();
         //Rather frivolous size - fits A4 page width in 1024x768 screen on my desktop
         setSize(screen.width * 61 / 100, screen.height * 9 / 10);
 
@@ -162,6 +168,18 @@ public class PreviewDialog extends JFrame implements StatusListener {
         previewPanel = new PreviewPanel(foUserAgent, renderable, renderer);
         getContentPane().add(previewPanel, BorderLayout.CENTER);
 
+        // Keyboard shortcuts - pgup/pgdn
+        InputMap im = previewPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+        ActionMap am = previewPanel.getActionMap();
+        im.put(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, 0), "nextPage");
+        im.put(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0), "prevPage");
+        im.put(KeyStroke.getKeyStroke(KeyEvent.VK_HOME, 0), "firstPage");
+        im.put(KeyStroke.getKeyStroke(KeyEvent.VK_END, 0), "lastPage");
+        previewPanel.getActionMap().put("nextPage", nextPageAction);
+        previewPanel.getActionMap().put("prevPage", previousPageAction);
+        previewPanel.getActionMap().put("firstPage", firstPageAction);
+        previewPanel.getActionMap().put("lastPage", lastPageAction);
+
         //Scaling combobox
         scale = new JComboBox();
         scale.addItem(translator.getString("Menu.Fit.Window"));
@@ -510,23 +528,7 @@ public class PreviewDialog extends JFrame implements StatusListener {
 
     /** Scales page image */
     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);
-//         } else if (scaleFactor == 400.0) {
-//             scale.setSelectedIndex(6);
-//         } else {
         scale.setSelectedItem(percentFormat.format(scaleFactor) + "%");
-//              }
         previewPanel.setScaleFactor(scaleFactor / 100d);
     }
 
index 1512f4eb9f15ca12c496f9bb1860dc444101338d..734dc90dd6aebecff98773ed6d9486cac0a6f9ee 100644 (file)
@@ -61,11 +61,13 @@ import org.apache.fop.render.awt.AWTRenderer;
  * renderer and add it to your gui:
  * </p>
  * <pre>
+ * FopFactory fopFactory = FopFactory.newInstance();
  * AWTRenderer renderer = new AWTRenderer();
- * FOUserAgent agent = new FOUserAgent();
+ * FOUserAgent agent = fopFactory.newFOUserAgent();
  * agent.setRendererOverride(renderer);
  * renderer.setPreviewDialogDisplayed(false);
  * renderer.setUserAgent(agent);
+ * renderer.setUserAgent(agent);
  * previewPanel = new PreviewPanel(agent, null, renderer);
  * previewPanel = new PreviewPanel(ua);
  * myGui.add(previewPanel);
@@ -183,8 +185,8 @@ public class PreviewPanel extends JPanel {
      */
     public void setPage(int number) {
         if (displayMode == CONTINUOUS || displayMode == CONT_FACING) {
-            // FIXME Should scroll so page is visible
             currentPage = number;
+            gridPanel.scrollRectToVisible(pagePanels[currentPage].getBounds());
         } else { // single page mode
             currentPage = number;
             firstPage = currentPage;
index 7224186e094cf7b7c3abb836e81e090c054ab12d..13a81ba02f43fa965311266dd7e4e616d3fdb1fc 100644 (file)
 
   <changes>
     <release version="FOP Trunk">
+      <action context="Code" dev="JM" type="update" fixes-bug="40813" due-to="Richard Wheeldon">
+        Minor fixes and improvements for the AWT Preview (keyboard shortcuts, scrolling, windows
+        setup).
+      </action>
       <action context="Code" dev="JM" type="add" fixes-bug="40849" due-to="Dominic Brügger">
         Added support for SVG in fo:instream-foreign objects for RTF output.
       </action>