You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by tk...@apache.org on 2001/05/16 15:23:26 UTC

cvs commit: xml-batik/sources/org/apache/batik/swing/svg SVGDocumentLoaderAdapter.java

tkormann    01/05/16 06:23:24

  Modified:    resources/org/apache/batik/apps/svgbrowser/resources
                        GUI.properties
               sources/org/apache/batik/apps/svgbrowser
                        JSVGViewerFrame.java ThumbnailDialog.java
               sources/org/apache/batik/swing/svg
                        SVGDocumentLoaderAdapter.java
  Log:
  Improve Thumbnail even though no interaction is allowed at this time.
  
  Revision  Changes    Path
  1.27      +3 -3      xml-batik/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties
  
  Index: GUI.properties
  ===================================================================
  RCS file: /home/cvs/xml-batik/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- GUI.properties	2001/05/16 12:32:42	1.26
  +++ GUI.properties	2001/05/16 13:23:01	1.27
  @@ -9,7 +9,7 @@
   # The viewer's GUI resources.
   #
   # Author: stephane@hillion.org
  -# $Id: GUI.properties,v 1.26 2001/05/16 12:32:42 deweese Exp $
  +# $Id: GUI.properties,v 1.27 2001/05/16 13:23:01 tkormann Exp $
   #
   
   ViewSource.width = 750
  @@ -152,9 +152,9 @@
   
   
   # View menu ################
  -#View = ResetTransform ZoomIn ZoomOut - PreviousTransform NextTransform SetTransform - ThumbnailDialog ViewSource
  +View = ResetTransform ZoomIn ZoomOut - PreviousTransform NextTransform SetTransform - ThumbnailDialog ViewSource
   
  -View = ResetTransform ZoomIn ZoomOut - PreviousTransform NextTransform SetTransform - ViewSource
  +#View = ResetTransform ZoomIn ZoomOut - PreviousTransform NextTransform SetTransform - ViewSource
   
   View.type = MENU
   View.text = View
  
  
  
  1.42      +3 -4      xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java
  
  Index: JSVGViewerFrame.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- JSVGViewerFrame.java	2001/05/16 12:33:12	1.41
  +++ JSVGViewerFrame.java	2001/05/16 13:23:12	1.42
  @@ -133,7 +133,7 @@
    * This class represents a SVG viewer swing frame.
    *
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: JSVGViewerFrame.java,v 1.41 2001/05/16 12:33:12 deweese Exp $
  + * @version $Id: JSVGViewerFrame.java,v 1.42 2001/05/16 13:23:12 tkormann Exp $
    */
   public class JSVGViewerFrame
       extends    JFrame
  @@ -1249,7 +1249,6 @@
                   findDialog.setLocation(fr.x + (fr.width  - td.width) / 2,
                                          fr.y + (fr.height - td.height) / 2);
               }
  -            findDialog.pack();
               findDialog.show();
           }
       }
  @@ -1261,14 +1260,14 @@
           public ThumbnailDialogAction() {}
           public void actionPerformed(ActionEvent e) {
               if (thumbnailDialog == null) {
  -                thumbnailDialog = new ThumbnailDialog(JSVGViewerFrame.this, svgCanvas);
  +                thumbnailDialog
  +                    = new ThumbnailDialog(JSVGViewerFrame.this, svgCanvas);
                   thumbnailDialog.pack();
                   Rectangle fr = getBounds();
                   Dimension td = thumbnailDialog.getSize();
                   thumbnailDialog.setLocation(fr.x + (fr.width  - td.width) / 2,
                                               fr.y + (fr.height - td.height) / 2);
               }
  -            thumbnailDialog.pack();
               thumbnailDialog.show();
           }
       }
  
  
  
  1.2       +93 -24    xml-batik/sources/org/apache/batik/apps/svgbrowser/ThumbnailDialog.java
  
  Index: ThumbnailDialog.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/ThumbnailDialog.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ThumbnailDialog.java	2001/05/15 15:57:37	1.1
  +++ ThumbnailDialog.java	2001/05/16 13:23:15	1.2
  @@ -11,25 +11,37 @@
   import java.awt.BorderLayout;
   import java.awt.Dimension;
   import java.awt.Frame;
  +import java.awt.geom.AffineTransform;
   
  +import java.awt.event.ComponentAdapter;
  +import java.awt.event.ComponentEvent;
  +import java.awt.event.WindowAdapter;
  +import java.awt.event.WindowEvent;
  +
   import java.util.Locale;
   import java.util.ResourceBundle;
   
   import javax.swing.JDialog;
   
  +import org.apache.batik.bridge.ViewBox;
   import org.apache.batik.swing.JSVGCanvas;
  +import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
   import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
  -import org.apache.batik.swing.gvt.GVTTreeRendererListener;
  +import org.apache.batik.swing.svg.SVGDocumentLoaderAdapter;
  +import org.apache.batik.swing.svg.SVGDocumentLoaderEvent;
   import org.apache.batik.util.gui.resource.ResourceManager;
   
  +import org.w3c.dom.svg.SVGDocument;
  +import org.w3c.dom.svg.SVGSVGElement;
  +
   /**
    * This class represents a Dialog that displays a Thumbnail of the current SVG
    * document.
    *
    * @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
  - * @version $Id: ThumbnailDialog.java,v 1.1 2001/05/15 15:57:37 tkormann Exp $
  + * @version $Id: ThumbnailDialog.java,v 1.2 2001/05/16 13:23:15 tkormann Exp $
    */
  -public class ThumbnailDialog extends JDialog implements GVTTreeRendererListener {
  +public class ThumbnailDialog extends JDialog {
   
       /**
        * The resource file name
  @@ -58,6 +70,9 @@
       /** The canvas that displays the thumbnail. */
       protected JSVGCanvas svgThumbnailCanvas;
   
  +    /** A flag bit that indicates a document has been loaded. */
  +    protected boolean documentChanged;
  +
       /**
        * Constructs a new <tt>ThumbnailDialog</tt> for the specified canvas.
        *
  @@ -65,51 +80,105 @@
        */
       public ThumbnailDialog(Frame owner, JSVGCanvas svgCanvas) {
           super(owner, resources.getString("Dialog.title"));
  +
  +        addWindowListener(new ThumbnailListener());
  +
  +        // register listeners to maintain consistency
           this.svgCanvas = svgCanvas;
  -        svgThumbnailCanvas = new JSVGCanvas();
  +        svgCanvas.addGVTTreeRendererListener(new ThumbnailGVTListener());
  +        svgCanvas.addSVGDocumentLoaderListener(new ThumbnailDocumentListener());
  +
  +        // create the thumbnail
  +        svgThumbnailCanvas = new JSVGCanvas(null, false, false);
           svgThumbnailCanvas.setPreferredSize(new Dimension(150, 150));
  +
  +        svgThumbnailCanvas.setEnableZoomInteractor(false);
  +        svgThumbnailCanvas.setEnableImageZoomInteractor(false);
  +        svgThumbnailCanvas.setEnablePanInteractor(false);
  +        svgThumbnailCanvas.setEnableRotateInteractor(false);
  +
  +        svgThumbnailCanvas.addComponentListener(new ThumbnailComponentListener());
  +
           getContentPane().add(svgThumbnailCanvas, BorderLayout.CENTER);
   
  -        svgCanvas.addGVTTreeRendererListener(this);
       }
   
       /**
  -     * Called when a rendering is in its preparing phase.
  +     * Updates the thumbnail component.
        */
  -    public void gvtRenderingPrepare(GVTTreeRendererEvent e) {
  -        System.out.println("gvtRenderingPrepare");
  +    protected void updateThumbnailGraphicsNode() {
           svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
  +        updateThumbnailRenderingTransform();
       }
   
       /**
  -     * Called when a rendering started.
  +     * Updates the thumbnail component rendering transform.
        */
  -    public void gvtRenderingStarted(GVTTreeRendererEvent e) {
  -        System.out.println("gvtRenderingStarted");
  -        svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
  +    protected void updateThumbnailRenderingTransform() {
  +        SVGDocument svgDocument = svgCanvas.getSVGDocument();
  +        if (svgDocument != null) {
  +            SVGSVGElement elt = svgDocument.getRootElement();
  +            Dimension dim = svgThumbnailCanvas.getSize();
  +
  +            AffineTransform Tx
  +                = ViewBox.getViewTransform(null, elt, dim.width, dim.height);
  +            svgThumbnailCanvas.setRenderingTransform(Tx);
  +        }
       }
   
       /**
  -     * Called when a rendering was completed.
  +     * Used to determine whether or not the GVT tree of the thumbnail has to be
  +     * updated.
        */
  -    public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
  -        System.out.println("gvtRenderingCompleted");
  -        svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
  +    protected class ThumbnailDocumentListener extends SVGDocumentLoaderAdapter {
  +
  +        public void documentLoadingStarted(SVGDocumentLoaderEvent e) {
  +            documentChanged = true;
  +        }
       }
   
       /**
  -     * Called when a rendering was cancelled.
  +     * Used to update the overlay and/or the GVT tree of the thumbnail.
        */
  -    public void gvtRenderingCancelled(GVTTreeRendererEvent e) {
  -        System.out.println("gvtRenderingCancelled");
  -        svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
  +    protected class ThumbnailGVTListener extends GVTTreeRendererAdapter {
  +
  +        public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
  +            if (documentChanged) {
  +                updateThumbnailGraphicsNode();
  +                documentChanged = false;
  +            }
  +        }
  +
  +        public void gvtRenderingCancelled(GVTTreeRendererEvent e) {
  +            svgThumbnailCanvas.setGraphicsNode(null);
  +            svgThumbnailCanvas.setRenderingTransform(new AffineTransform());
  +        }
  +
  +        public void gvtRenderingFailed(GVTTreeRendererEvent e) {
  +            svgThumbnailCanvas.setGraphicsNode(null);
  +            svgThumbnailCanvas.setRenderingTransform(new AffineTransform());
  +        }
       }
   
       /**
  -     * Called when a rendering failed.
  +     * Used the first time the thumbnail dialog is shown to make visible the
  +     * current GVT tree being displayed by the original SVG component.
        */
  -    public void gvtRenderingFailed(GVTTreeRendererEvent e) {
  -        System.out.println("gvtRenderingFailed");
  -        svgThumbnailCanvas.setGraphicsNode(svgCanvas.getGraphicsNode());
  +    protected class ThumbnailListener extends WindowAdapter {
  +
  +        public void windowOpened(WindowEvent evt) {
  +            updateThumbnailGraphicsNode();
  +        }
  +    }
  +
  +    /**
  +     * Used to allow the SVG document being displayed by the thumbnail to be
  +     * resized properly.
  +     */
  +    protected class ThumbnailComponentListener extends ComponentAdapter {
  +
  +        public void componentResized(ComponentEvent e) {
  +            updateThumbnailRenderingTransform();
  +        }
       }
   }
  
  
  
  1.2       +3 -3      xml-batik/sources/org/apache/batik/swing/svg/SVGDocumentLoaderAdapter.java
  
  Index: SVGDocumentLoaderAdapter.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/svg/SVGDocumentLoaderAdapter.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SVGDocumentLoaderAdapter.java	2001/04/13 17:09:09	1.1
  +++ SVGDocumentLoaderAdapter.java	2001/05/16 13:23:21	1.2
  @@ -9,11 +9,11 @@
   package org.apache.batik.swing.svg;
   
   /**
  - * An adapter class that represents a listener to the SVGDocumentLoaderEvent
  - * events.
  + * An adapter class that represents a listener to the
  + * <tt>SVGDocumentLoaderEvent</tt> events.
    *
    * @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
  - * @version $Id: SVGDocumentLoaderAdapter.java,v 1.1 2001/04/13 17:09:09 tkormann Exp $
  + * @version $Id: SVGDocumentLoaderAdapter.java,v 1.2 2001/05/16 13:23:21 tkormann Exp $
    */
   public abstract class SVGDocumentLoaderAdapter
       implements SVGDocumentLoaderListener {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org