xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André de Brito <andre.br...@evolve.pt>
Subject Re: Mouse EventListener on SVG group elements
Date Thu, 17 Feb 2011 10:10:18 GMT
Hello Thomas,

You are absolutely right! I set the canvas to always dynamic and it works.
Thanks very much for the help.

To any future readers, you need to add the following line
"myJSVGCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);"
before loading the document (with setURI, setDocument, setSVGDocument,
etc.).
(as explained in the batik FAQ 3.2)

Thanks again Thomas!

Kind regards,
ABrito

On 16 February 2011 22:42, <thomas.deweese@kodak.com> wrote:

> Hi Andre,
>
>         I think the problem is that you need to tell the Canvas to be
> interactive/dynamic.  If the Canvas looks at the document and doesn't
> see any dynamic content it uses a quicker lower memory build that doesn't
> support event handlers at all.
>
>         Check out FAQ 3.2:
>                 http://xmlgraphics.apache.org/batik/faq.html
>
>         I had no idea what the problem was for quite some time
> since the difference isn't between clicking on a 'g' or an 'a' element
> it's between a document that has 'a' element or a document that doesn't
> have an 'a' element.
>
> André de Brito <andre.brito@evolve.pt> wrote on 02/16/2011 04:48:44 PM:
>
>
> > I'm using batik to display SVG files on a JSVGCanvas and I'm trying
> > to respond to mouse click events over SVG elements with tags <a>
> > (SVGOMAElement) and <g> (SVGOMGElement).
> > Here is the code I'm using to add the event listener to a Node:
> >
> > if ((no.getNodeName().equalsIgnoreCase("a")) || (no.getNodeName
> > ().equalsIgnoreCase("g"))) {
> >     EventTarget etr = (EventTarget) no;
> >     etr.addEventListener(SVGConstants.SVG_EVENT_CLICK, new
> EventListener() {
> >                     public void handleEvent(Event evt) {
> >                         Log.debug("HANDLE EVENT");
> >                     }
> >     }, false);
> >
> > What happens is that the listener is correcly called when an <a>
> > element is clicked, but nothing happens when a <g> element is clicked!
> > I debuged the code above and verified that the "click" listener is
> > being added to the both node's bubblingListeners table
> > (etr->eventSupport->bubblingListeners). However, I noticed that the
> > <a> elements seem to have two other (default) listeners - for events
> > "mouseout" and "mouseover" - which are not present on the <g>
> > elements. I don't believe this is the cause, but ...
> >
> > Any ideas on what could be causing this behaviour?
>
> *Thomas DeWeese* | CDG Advanced Development |
> Eastman Kodak Company | 343 State Street | Rochester, NY 14650-0128 | *
> **Thomas.DeWeese@Kodak.com* <Thomas.DeWeese@Kodak.com> | 585 724-0294 | *
> **www.kodak.com* <http://www.kodak.com/>
>

Mime
View raw message