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 vh...@apache.org on 2002/06/10 14:07:05 UTC

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

vhardy      2002/06/10 05:07:05

  Modified:    test-sources/org/apache/batik/swing NullURITest.java
               sources/org/apache/batik/swing JSVGCanvas.java
  Log:
  Fix/implementation for bug/REF #6683
  
  Revision  Changes    Path
  1.2       +89 -19    xml-batik/test-sources/org/apache/batik/swing/NullURITest.java
  
  Index: NullURITest.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/test-sources/org/apache/batik/swing/NullURITest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NullURITest.java	10 Jun 2002 09:29:08 -0000	1.1
  +++ NullURITest.java	10 Jun 2002 12:07:05 -0000	1.2
  @@ -9,9 +9,11 @@
   package org.apache.batik.swing;
   
   import javax.swing.*;
  +import java.awt.*;
   import java.awt.event.*;
   
   import org.apache.batik.swing.svg.*;
  +import org.apache.batik.swing.gvt.*;
   import org.apache.batik.test.*;
   
   /**
  @@ -19,24 +21,60 @@
    * null does not cause a NullPointerException
    *
    * @author <a href="mailto:vincent.hardy@sun.com">Vincent Hardy</a>
  - * @version $Id: NullURITest.java,v 1.1 2002/06/10 09:29:08 vhardy Exp $
  + * @version $Id: NullURITest.java,v 1.2 2002/06/10 12:07:05 vhardy Exp $
    */
   public class NullURITest extends AbstractTest {
  -    /**
  -     * Code used if error happens while setting null URI on JSVGCanvas
  -     */
  -    public static final String ERROR_WITH_NULL_URI
  -        = "error.with.null.uri";
  +    public static final String TEST_NON_NULL_URI
  +        = "file:samples/anne.svg";
  +
  +    public static final String ERROR_COULD_NOT_RENDER_TEST_URI
  +        = "error.could.not.render.test.uri";
  +
  +    public static final String ERROR_COULD_NOT_RENDER_NULL_URI
  +        = "error.could.not.render.null.uri";
  +
  +    public String testURI = "samples/anne.svg";
   
       public TestReport runImpl() throws Exception {
  +        final JFrame f = new JFrame();
           final JSVGCanvas canvas = new JSVGCanvas();
  +
           final String monitor = "monitor";
   
  +        f.getContentPane().add(canvas);
  +        f.setSize(new Dimension(450, 500));
  +        f.setVisible(true);
  +
  +        // This class is not fool-proof: it assumes that the
  +        // non-null uri will render properly
  +        class InitialRenderListener extends GVTTreeRendererAdapter {
  +            public boolean failed = true;
  +
  +            public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
  +                failed = false;
  +                synchronized(monitor){
  +                    monitor.notifyAll();
  +                }
  +            }
  +
  +
  +            public void gvtRenderingCancelled(GVTTreeRendererEvent e) {
  +                synchronized(monitor){
  +                    monitor.notifyAll();
  +                }
  +            }
  +
  +            public void gvtRenderingFailed(GVTTreeRendererEvent e) {
  +                synchronized(monitor){
  +                    monitor.notifyAll();
  +                }
  +            }
  +        }
  +
           class LoadListener extends SVGDocumentLoaderAdapter {
               public boolean failed = false;
               public void documentLoadingFailed(SVGDocumentLoaderEvent e) {
                   synchronized(monitor){
  -                    System.out.println(">>>>>>>>>>>>>>> in documentLoadingFailed");
                       failed = true;
                       monitor.notifyAll();
                   }
  @@ -44,6 +82,7 @@
   
               public void documentLoadingCancelled(SVGDocumentLoaderEvent e) {
                   synchronized(monitor){
  +                    failed = true;
                       monitor.notifyAll();
                   }
               }
  @@ -55,24 +94,55 @@
               }
           }
   
  -        LoadListener l = new LoadListener();
  -        canvas.addSVGDocumentLoaderListener(l);
  +        InitialRenderListener l = new InitialRenderListener();
  +        LoadListener ll = new LoadListener();
  +        canvas.addGVTTreeRendererListener(l);
  +
  +        canvas.setURI(TEST_NON_NULL_URI);
  +        canvas.setEnabled(false);
  +
  +        synchronized(monitor){
  +            monitor.wait();
  +        }
  +
  +        if (l.failed || ll.failed){
  +            f.setVisible(false);
  +            return reportError(ERROR_COULD_NOT_RENDER_TEST_URI);
  +        }
   
  +        // Now, wait on new rendering
  +        l.failed = true;
           canvas.setURI(null);
  +        canvas.setEnabled(false);
   
  -        // Give chance to the DocumentLoader thread to kick in
  -        // This is not 
           synchronized(monitor){
  -            // Document loading should not take more than 10 sec.
  -            // Put a maximum to avoid deadlocks in case something
  -            // else goes wrong.
  -            monitor.wait(10000);
  +            monitor.wait();
  +        }
  +
  +        if (l.failed || ll.failed){
  +            f.setVisible(false);
  +            return reportError(ERROR_COULD_NOT_RENDER_NULL_URI);
  +        }
  +
  +        canvas.setURI(TEST_NON_NULL_URI);
  +        canvas.setEnabled(false);
  +        synchronized(monitor){
  +            monitor.wait();
  +        }
  +
  +        if (l.failed || ll.failed){
  +            f.setVisible(false);
  +            return reportError(ERROR_COULD_NOT_RENDER_TEST_URI);
           }
   
  -        if (!l.failed){
  -            return reportSuccess();
  -        } else {
  -            return reportError(ERROR_WITH_NULL_URI);
  +        
  +        f.dispose();
  +
  +        synchronized(monitor){
  +            monitor.wait(10000);
           }
  +
  +        return reportSuccess();
  +    
       }
   }
  
  
  
  1.34      +17 -3     xml-batik/sources/org/apache/batik/swing/JSVGCanvas.java
  
  Index: JSVGCanvas.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/JSVGCanvas.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- JSVGCanvas.java	17 Apr 2002 14:39:50 -0000	1.33
  +++ JSVGCanvas.java	10 Jun 2002 12:07:05 -0000	1.34
  @@ -37,6 +37,8 @@
   
   import org.apache.batik.bridge.UserAgent;
   
  +import org.apache.batik.dom.svg.SVGDOMImplementation;
  +
   import org.apache.batik.swing.gvt.AbstractImageZoomInteractor;
   import org.apache.batik.swing.gvt.AbstractPanInteractor;
   import org.apache.batik.swing.gvt.AbstractResetTransformInteractor;
  @@ -51,6 +53,7 @@
   import org.apache.batik.util.SVGConstants;
   import org.apache.batik.util.XMLConstants;
   
  +import org.w3c.dom.DOMImplementation;
   import org.w3c.dom.Element;
   import org.w3c.dom.Node;
   
  @@ -58,6 +61,7 @@
   import org.w3c.dom.events.EventListener;
   import org.w3c.dom.events.EventTarget;
   
  +import org.w3c.dom.svg.SVGDocument;
   
   /**
    * This class represents a general-purpose swing SVG component. The
  @@ -69,7 +73,7 @@
    *
    * @author <a href="mailto:tkormann@apache.org">Thierry Kormann</a>
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: JSVGCanvas.java,v 1.33 2002/04/17 14:39:50 tkormann Exp $
  + * @version $Id: JSVGCanvas.java,v 1.34 2002/06/10 12:07:05 vhardy Exp $
    */
   public class JSVGCanvas extends JSVGComponent {
   
  @@ -453,14 +457,24 @@
       }
   
       /**
  -     * Sets the URI to the specified uri.
  +     * Sets the URI to the specified uri. If the input 'newURI'
  +     * string is null, then the canvas will display an empty
  +     * document.
        *
        * @param newURI the new uri of the document to display
        */
       public void setURI(String newURI) {
           String oldValue = uri;
           this.uri = newURI;
  -        loadSVGDocument(uri);
  +        if (uri != null) {
  +            loadSVGDocument(uri);
  +        } else {
  +            DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();
  +            SVGDocument doc = (SVGDocument)impl.createDocument(SVGConstants.SVG_NAMESPACE_URI, 
  +                                                               SVGConstants.SVG_SVG_TAG, null);
  +            setSVGDocument(doc);
  +        }
  +
           pcs.firePropertyChange("URI", oldValue, uri);
       }
   
  
  
  

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