Thanks, I have implemented you solution but the event never comes. I am un 
eclipse behind a swing component wrapper. I don't know if the EventTarget 
actually received the event. How can I check that? I have seen that you 
register an event listener on the event type "click". It is hard coded. Is 
there a list of events as constants? Is it possible I register all the events 
to see if it is Eclipse that consumes the events forgetting to redispatch them?



-----Message d'origine-----
De : Heidrun Beer [mailto:[email protected]] 
Envoyé : lundi 26 octobre 2009 11:59
À : [email protected]
Objet : Re: locate an SVG element using x, y position

On Mon, 26 Oct 2009 10:44:49 +0100, HODAC, Olivier wrote in
<1950_1256550419_4ae57013_1950_34_1_0471c9ac78f671458c5e3f9c69b73c8609879...@fr0-mailmb17.res.airbus.corp>:

>I'd like to add a mouse listener on my JSVGCanvas to select an element
>of my rendered SVG.
>How can I find the right node using x,y mouse postion?


I have explored that, but the problem is that you have
only the bounds of the element to locate your mouse point
in. This is a rectangle. If now the element is, say, an
ellipse or a line or another shape that is not rectangular, 
the function won't work with mouse points inside that 
rectangle, but outside the shape.

You need to add an event listener to each element as
you create it. If you load your drawing from a file,
you need to loop through the whole element tree and
add it to each element. It's not so much code, as 
you do it all in a loop.

Here is the code that I am using, after I have retrieved
my document string from a database and created the document. 

I have the special situation that I skip the first element, 
which is a background rectangle that I don't want to be
moveable. It is always the first in the document.


            BackG = doc.getElementById("BackgroundRectangle");
            EventTarget etr = null;
            Node no = (Node) BackG;
            Node no2 = no.getNextSibling();
            if (no2!=null) {
                do {
                    etr = (EventTarget) no2; 
                    etr.addEventListener("click",new 
org.w3c.dom.events.EventListener()
                    {
                        org.w3c.dom.events.Event evt;

                        public void handleEvent(org.w3c.dom.events.Event evt) {
                            EventTarget etr2 = evt.getTarget();

                            ActivateSelEl(etr2); // function that selects the 
element,
                                                 // retrieves its bounds and 
sets a flag 
                                                 // that tells the canvas to 
paint a 
                                                 // selection rectangle with 
mouse 
                                                 // anchors on top of the SVG 
drawing 
                                                 // in its paint function
                            repaint(); 
                        }
                        public void run() {
                            handleEvent(evt);
                        }

                    },false
                    );
                    no2=no2.getNextSibling();
                } while (no2!=null);
            }



Best,


Heidrun Beer

Workgroup for Fundamental Spiritual Research and Mental Training
http://www.sgmt.at
http://www.RecastReality.org


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


This mail has originated outside your organization, either from an external 
partner or the Global Internet.
Keep this in mind if you answer this message.




The information in this e-mail is confidential. The contents may not be 
disclosed or used by anyone other than the addressee. Access to this e-mail by 
anyone else is unauthorised.
If you are not the intended recipient, please notify Airbus immediately and 
delete this e-mail.
Airbus cannot accept any responsibility for the accuracy or completeness of 
this e-mail as it has been sent over public networks. If you have any concerns 
over the content of this message or its Accuracy or Integrity, please contact 
Airbus immediately.
All outgoing e-mails from Airbus are checked using regularly updated virus 
scanning software but you should take whatever measures you deem to be 
appropriate to ensure that this message and any attachments are virus free.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to