Hi Dan,

Dan Slater <[email protected]> wrote on 02/04/2009 02:26:28 PM:

> Does anyone have an example of code that results in a tooltip for a 
> <use> element in a JSVGCanvas?  This is unfortunately a long-standing 
> unresolved problem I have [1].  That past example shows that, for a Web 
> page, it would work like so:
> 
>     <a xlink:href="http://www.gnote.org/"; cursor="help" 
> xlink:title="thinking about communication">
>         <title>Thought bubbles</title>
>         <use xlink:href="#communicate" x="90" y="-150" />
>     </a>

> Indeed, "thinking about communication" pops up on mouseover.

   This should work for Batik, you will get a tool tip with
'Thought bubbles' and not 'thinking about communication'.

> But I am developing for JSVGCanvas (Batik v1.6), not the Web.  When I 
> use this code:
> 
>     SVGElement elt = (SVGElement)doc.createElementNS(Intersection.svgNS, 

> "use");
>     elt.setAttributeNS("http://www.w3.org/1999/xlink";, "xlink:href", 
> "#receptor");
>     xlink.setXLinkTitle(elt, "test");

   You need to create an SVG 'title' element as your example shows and
put your tool-tip text in that.

> nothing pops up on hover. Nor when I wrap the <use> in an <a> and put 
> xlink:title in the <a>.  Nor when I explicitly set "xlink:title" instead 

> of using the XLinkSupport class, which just produces 'title="xyz"'....

   So we use the SVG native 'title' and 'desc' elements rather than 
the xlink attributes.

>     Element d = doc.createElementNS(Intersection.svgNS, "desc");
>     Text t = doc.createTextNode(id);
> 
>     Element a = doc.createElementNS(Intersection.svgNS, "a");
>     a.setAttributeNS("http://www.w3.org/1999/xlink";, "xlink:title", 
"test");
>      //xlink.setXLinkTitle(a, "test");
> 
>      d.appendChild(t);
>      elt.appendChild(d);
>      a.appendChild(elt);
>      parElt.appendChild(a);
> 
> Any hints would be extremely welcome.

   This example should work and does work in my testing.
I'm not sure why it isn't working for you.  You can drop all
of the 'xlink:title' stuff if you want for now.

Reply via email to