Index: src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java
===================================================================
--- src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java	(revision 532345)
+++ src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java	(working copy)
@@ -24,6 +24,7 @@
 package org.apache.fop.render.awt.viewer;
 
 // Java
+import java.awt.Adjustable;
 import java.awt.BorderLayout;
 import java.awt.Dimension;
 import java.awt.GridBagConstraints;
@@ -33,6 +34,8 @@
 import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.AdjustmentEvent;
+import java.awt.event.AdjustmentListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
@@ -167,6 +170,10 @@
         //Page view stuff
         previewPanel = new PreviewPanel(foUserAgent, renderable, renderer);
         getContentPane().add(previewPanel, BorderLayout.CENTER);
+        previewPanel.addPageChangeListener(new PageChangeListener() {
+            public void pageChanged(PageChangeEvent pce) {
+              new ShowInfo().run();              
+            }});
 
         // Keyboard shortcuts - pgup/pgdn
         InputMap im = previewPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
Index: src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java
===================================================================
--- src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java	(revision 532345)
+++ src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java	(working copy)
@@ -19,10 +19,13 @@
 
 package org.apache.fop.render.awt.viewer;
 
+import java.awt.Adjustable;
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.GridLayout;
 import java.awt.Point;
+import java.awt.event.AdjustmentEvent;
+import java.awt.event.AdjustmentListener;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
@@ -142,8 +145,36 @@
      */
     private ViewportScroller scroller;
 
-        
     /**
+       Add a listener to recieve notification of page change events. Events will
+       be fired whenever the currentPage value is changed. The values recorded
+       are 0-based.
+    */
+    public void addPageChangeListener(PageChangeListener l) {
+        listenerList.add(PageChangeListener.class, l);
+    }
+
+    public void removePageChangeListener(PageChangeListener l)  {
+        listenerList.remove(PageChangeListener.class, l);
+    }
+
+    /**
+       Notify all registered listeners of a page change event.
+    */
+    protected void firePageChange(int oldPage, int newPage) {
+        Object[] listeners = listenerList.getListenerList();
+        PageChangeEvent e = null;
+        for (int i = listeners.length - 2; i >= 0; i -= 2) {
+            if (listeners[i]==PageChangeListener.class) {
+                if (e == null) {
+                    e = new PageChangeEvent(this, newPage, oldPage);
+                }
+                ((PageChangeListener)listeners[i+1]).pageChanged(e);
+            }          
+        }
+    }   
+
+    /**
      * Creates a new PreviewPanel instance.
      * @param foUserAgent the user agent
      * @param renderable the Renderable instance that is used to reload/re-render a document
@@ -161,6 +192,8 @@
 
         previewArea = new JScrollPane(gridPanel);
         previewArea.getViewport().setBackground(Color.gray);
+        
+        previewArea.getVerticalScrollBar().addAdjustmentListener(new PageNumberListener());
 
         // FIXME should add scroll wheel support here at some point.
         scroller = new ViewportScroller(previewArea.getViewport());
@@ -184,6 +217,7 @@
      * @param number the page number
      */
     public void setPage(int number) {
+        int oldPage = currentPage;
         if (displayMode == CONTINUOUS || displayMode == CONT_FACING) {
             currentPage = number;
             gridPanel.scrollRectToVisible(pagePanels[currentPage].getBounds());
@@ -192,6 +226,7 @@
             firstPage = currentPage;
         }
         showPage();
+        firePageChange(oldPage, currentPage);
     }
 
     /**
@@ -348,6 +383,23 @@
         }
     }
 
+    private class PageNumberListener implements AdjustmentListener {
+        public void adjustmentValueChanged(AdjustmentEvent e) {
+            if (displayMode==PreviewPanel.CONTINUOUS || displayMode==PreviewPanel.CONT_FACING) {
+                Adjustable a = e.getAdjustable();
+                int value = +e.getValue();
+                int min = a.getMinimum();
+                int max = a.getMaximum();
+                int page = ( (renderer.getNumberOfPages() * value) / (max - min) );
+                if (page != currentPage) {
+                    int oldPage = currentPage;
+                    currentPage = page;
+                    firePageChange(oldPage, currentPage);
+                }
+            }
+        }
+    }
+
     /**
      * Scales page image
      * @param scale [0;1]
Index: src/java/org/apache/fop/render/awt/viewer/PageChangeEvent.java
===================================================================
--- src/java/org/apache/fop/render/awt/viewer/PageChangeEvent.java	(revision 0)
+++ src/java/org/apache/fop/render/awt/viewer/PageChangeEvent.java	(revision 0)
@@ -0,0 +1,28 @@
+package org.apache.fop.render.awt.viewer;
+
+import java.util.EventObject;
+
+/**
+   Swing event fired whenever the current page selection of a
+   PreviewPanel changes. Page numbers are 0-based.
+*/
+public class PageChangeEvent extends EventObject {
+
+    private int oldPage;
+    private int newPage;
+
+    public PageChangeEvent(PreviewPanel panel, int oldPage, int newPage) {
+        super(panel);
+        this.oldPage = oldPage;
+        this.newPage = newPage;
+    }
+
+    public int getNewPage() {
+        return newPage;
+    }
+
+    public int getOldPage() {
+        return oldPage;
+    }
+    
+}
Index: src/java/org/apache/fop/render/awt/viewer/PageChangeListener.java
===================================================================
--- src/java/org/apache/fop/render/awt/viewer/PageChangeListener.java	(revision 0)
+++ src/java/org/apache/fop/render/awt/viewer/PageChangeListener.java	(revision 0)
@@ -0,0 +1,11 @@
+package org.apache.fop.render.awt.viewer;
+
+import java.util.EventListener;
+
+/**
+   Swing listener interface for classes which wish to reciev
+   notification of page change events.
+*/
+public interface PageChangeListener extends EventListener {
+    public void pageChanged(PageChangeEvent pce);
+}
