deweese     2002/08/28 13:14:51

  Modified:    sources/org/apache/batik/swing/svg JSVGComponent.java
               sources/org/apache/batik/util
                        ParsedURLDefaultProtocolHandler.java
  Log:
  Fixed a bug in linking with 'a' element and relative URLs.
  
  Revision  Changes    Path
  1.58      +19 -13    xml-batik/sources/org/apache/batik/swing/svg/JSVGComponent.java
  
  Index: JSVGComponent.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/svg/JSVGComponent.java,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- JSVGComponent.java        2 Aug 2002 00:18:35 -0000       1.57
  +++ JSVGComponent.java        28 Aug 2002 20:14:51 -0000      1.58
  @@ -2446,29 +2446,35 @@
                   return;
               }
   
  +            // Always use anchor element's document for base URI,
  +            // for when it comes from an external resource.
  +            ParsedURL newURI = new ParsedURL
  +                (((SVGDocument)elt.getOwnerDocument()).getURL(), href);
  +
  +            // replace href with a fully resolved URI.
  +            href = newURI.toString();
  +
               // Avoid reloading if possible.
               if (svgDocument != null) {
   
  -                // if the anchor element is in an external resource
  -                if (elt.getOwnerDocument() != svgDocument) {
  -                    SVGDocument doc = (SVGDocument)elt.getOwnerDocument();
  -                    href = new ParsedURL(doc.getURL(), href).toString();
  -                }
                   ParsedURL oldURI = new ParsedURL(svgDocument.getURL());
  -                ParsedURL newURI = new ParsedURL(oldURI, href);
  -
  -                String s = newURI.getRef();
  +                // Check if they reference the same file.
                   if (newURI.sameFile(oldURI)) {
  -                    if ((fragmentIdentifier == null && s != null) ||
  -                        (s == null && fragmentIdentifier != null) ||
  -                        (s != null && !s.equals(fragmentIdentifier))) {
  +                    // They do, see if it's a new Fragment Ident.
  +                    String s = newURI.getRef();
  +                    if ((fragmentIdentifier != s) &&
  +                        ((s == null) || (!s.equals(fragmentIdentifier)))) {
  +                        // It is, so update rendering transform.
                           fragmentIdentifier = s;
                           computeRenderingTransform();
                       }
  -                    fireLinkActivatedEvent(elt, newURI.toString());
  +                    // Let every one know the link fired (but don't
  +                    // load doc, it's already loaded.).
  +                    fireLinkActivatedEvent(elt, href);
                       return;
                   }
               }
  +                
               fireLinkActivatedEvent(elt, href);
               if (svgUserAgent != null) {
                   svgUserAgent.openLink(href, false);
  
  
  
  1.10      +6 -6      
xml-batik/sources/org/apache/batik/util/ParsedURLDefaultProtocolHandler.java
  
  Index: ParsedURLDefaultProtocolHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/util/ParsedURLDefaultProtocolHandler.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ParsedURLDefaultProtocolHandler.java      1 Aug 2002 20:24:32 -0000       1.9
  +++ ParsedURLDefaultProtocolHandler.java      28 Aug 2002 20:14:51 -0000      1.10
  @@ -68,14 +68,14 @@
       public ParsedURLData parseURL(String urlStr) {
           try {
               URL url = new URL(urlStr);
  -            // System.out.println("System Parse: " + urlStr);
  +            // System.err.println("System Parse: " + urlStr);
               return constructParsedURLData(url);
           } catch (MalformedURLException mue) {
               // Built in URL wouldn't take it...
           }
   
           // new Exception("Custom Parse: " + urlStr).printStackTrace();
  -        // System.out.println("Custom Parse: " + urlStr);
  +        // System.err.println("Custom Parse: " + urlStr);
   
           ParsedURLData ret = constructParsedURLData();
   
  @@ -222,7 +222,7 @@
           if (urlStr.length() == 0) 
               return baseURL.data;
   
  -        // System.out.println("Base: " + baseURL + "\n" +
  +        // System.err.println("Base: " + baseURL + "\n" +
           //                    "Sub:  " + urlStr);
   
           int idx;
  @@ -291,8 +291,8 @@
           else
               path = path.substring(0,idx+1);
           
  -        // System.out.println("Base Path: " + path);
  -        // System.out.println("Base PortStr: " + baseURL.getPortStr());
  +        // System.err.println("Base Path: " + path);
  +        // System.err.println("Base PortStr: " + baseURL.getPortStr());
           return parseURL(baseURL.getPortStr() + path + urlStr);
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to