OK, great.  Thanks for explaining how bubbling should work.  It got me
thinking in the right direction.  I do only register the listener once
on the root node.  That's why I was afraid of registering further
listeners on other nodes; it would make it complicated.  I'm only
handling mouse events and so far so good.

Thanks again.

Michael Bishop

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> On Behalf Of Archie Cobbs
> Sent: Thursday, January 03, 2008 5:06 PM
> To: [email protected]
> Subject: Re: Pointer events for a <g> tag?
> 
> I think that should work.
> 
> By the way, with only one listener per document, you might as 
> well just only register the listener once, on the root node. 
> Then use event.getTarget() to determine what node was hit. Of 
> course this only works for events that bubble. 
> 
> 
> On Jan 3, 2008 3:52 PM, Bishop, Michael W. CONTR J9C880 
> <[EMAIL PROTECTED]> wrote:
> 
> 
>       Yeah, the section on interaction was what brought me 
> here.  I thought
>       there'd be a value for the pointer-events tag that 
> pushed events to the
>       parent or absorbed events from the children.
>       
>       I'm trying to avoid having separate listeners for every 
> group that I 
>       add.  As it stands now, I have one mouse listener per 
> document and it'd
>       be a pain to break that paradigm.  The idea about the 
> IDs is specific to
>       my project.  I was thinking of something like this 
> (regarding the IDs): 
>       
>       public void handleEvent(Event event) {
>         final DOMMouseEvent elementEvent = (DOMMouseEvent) event;
>         Element targetElement = (Element) event.getTarget();
>       
>         (Pseudocode)
>         if (targetElement doesn't have an ID) { 
>            targetElement = (Element) targetElement.getParentNode();
>         }
>       
>         // Now we can operate on the intended element.
>         ...
>       }
>       
>       I think this might work, assuimg that I set the children to
>       pointer-events="visible" (or let them inherit from the 
> group tag). 
>       Would this work?  In my case, it'd be easier than a new 
> listener.
>       
> 
>       Michael Bishop
>       
>       > -----Original Message-----
>       > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
>       > On Behalf Of Archie Cobbs
>       
>       > Sent: Thursday, January 03, 2008 4:38 PM
>       > To: [email protected] 
> <mailto:[email protected]> 
>       > Subject: Re: Pointer events for a <g> tag?
>       >
>       > If you haven't already, read 
> http://www.w3.org/TR/SVG/interact.html 
>       >
>       > The presence of an "id" attribute is not relevant. What
>       > matters is the "pointer-events" attribute. Note that the
>       > default value is "inherit".
>       >
>       > If you turn off pointer events on the inner nodes, no events 
>       > will happen, so don't do that.
>       >
>       > If you have something like this:
>       >
>       >   <g pointer-events="all">
>       >      <rect ..>      <!-- note: we inherit the "all" value for 
>       > pointer-events -->
>       >      <line ..>
>       >   </g>
>       >
>       > and then listen for events on the <g> node, then you should
>       > receive any clicks on the <rect> or <line> as they bubble up. 
>       > Note in any case you won't receive events for clicks that are
>       > not directly on either the <rect> or the <line>.
>       >
>       >
>       > On Jan 3, 2008 3:22 PM, Bishop, Michael W. CONTR J9C880 
>       > <[EMAIL PROTECTED]> wrote:
>       >
>       >
>       >       OK, then I'm doing something wrong and I need to
>       > explain a little more.
>       > 
>       >       I have a single listener that's attached to the entire
>       > document.  I want
>       >       to drag and drop objects around my SVG document with
>       > few exceptions:
>       >
>       >       <svg id="..."> 
>       >
>       >         (This rectangle is here specifically to provide a
>       > background color).
>       >         <rect type="background" id="..." ... />
>       >
>       >         (Special metadata is included as an attribute to 
>       > define this element
>       >       as a layer).
>       >         <g type="layer" id="...">
>       >
>       >            (Each of these children can be dragged and dropped)
>       >            <rect id="..." pointer-events="visible" ... /> 
>       >            <ellipse id="..." pointer-events="visible" ... />
>       >            <line id="..." pointer-events="visible" ... />
>       >
>       >            (Special metadata is included as an attribute to 
>       > define this
>       >       element as a group.
>       >             I want to drag and drop the GROUP, not the
>       > elements within!  I
>       >       know this doesn't
>       >             work, but this is what I currently have.  I tried 
>       > to make the
>       >       individual elements
>       >             ignore events so the <g> would receive them.
>       > Obviously it didn't
>       >       work; the
>       >             background rect receives the event.) 
>       >            <g type="group" id="..." pointer-events="visible">
>       >               <circle pointer-events="none" ... />
>       >               <line pointer-events="none" ... /> 
>       >            </g>
>       >         </g>
>       >       </svg>
>       >
>       >       I want any clicks on the group's children to bubble up
>       > to the group, but
>       >       it sounds like that's not possible with a single 
>       > listener.  Is there a
>       >       way I can customize or work around that?  I'm thinking
>       > that if an
>       >       element does not have an "id" node, it bubbles up until
>       > it hits a parent 
>       >       that does?
>       >
>       >       Michael Bishop
>       >
>       >
>       >
>       >       > -----Original Message-----
>       >       > From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] ]
>       >       > On Behalf Of Archie Cobbs
>       >       > Sent: Thursday, January 03, 2008 4:08 PM
>       >       > To: [email protected] 
> <mailto:[email protected]> 
>       >       > Subject: Re: Pointer events for a <g> tag?
>       >       >
>       >       > Not sure what you're asking exactly, but 
> mouse events have a
>       >       > bubble phase during which they pass upwards 
> in the DOM to the 
>       >       > root node.
>       >       >
>       >       > If you listen for mouse events on the <g> tag 
> (only), you'll
>       >       > receive them there when they bubble up from the rect,
>       >       > ellipse, and line nodes. 
>       >       >
>       >       >
>       >       > On Jan 3, 2008 3:03 PM, Bishop, Michael W. 
> CONTR J9C880
>       >       > < [EMAIL PROTECTED]
>       
>       > <mailto:[EMAIL PROTECTED]> > wrote:
>       >       >
>       >       >
>       >       >       Given the following: 
>       >       >
>       >       >       <g pointer-events="visible">
>       >       >         <rect .../>
>       >       >         <ellipse .../>
>       >       >         <line .../> 
>       >       >       </g>
>       >       >
>       >       >       I want to treat the inner elements of 
> the <g> tag as a
>       >       > single entity.  I
>       >       >       want to be able to drag and drop them 
> as a single 
>       >       > element.  I thought
>       >       >       wrapping them in a <g> tag and having 
> the <g> tag
>       >       > respond to pointer
>       >       >       events was the solution.  Upon further 
> research, it 
>       >       > seems pointer events
>       >       >       only work for graphics elements and a 
> <g> tag isn't
>       >       > technically rendered
>       >       >       to the screen.
>       >       > 
>       >       >       So how can I treat this group of 
> elements as a single
>       >       > "group" and have
>       >       >       them respond to pointer events as a whole?
>       >       >
>       >       >       Michael Bishop 
>       >       >
>       >       >
>       >       >
>       > 
> ---------------------------------------------------------------------
>       >       >       To unsubscribe, e-mail:
>       >       > 
> [EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]> 
>       >       >       For additional commands, e-mail:
>       >       > [EMAIL PROTECTED] 
>       
>       > <mailto:[EMAIL PROTECTED]>
>       
>       >       >
>       >       >
>       >       >
>       >       >
>       >       >
>       >       >
>       >       > --
>       >       > Archie L. Cobbs
>       >       >
>       >       >
>       >
>       >
>       > 
> --------------------------------------------------------------------- 
>       >       To unsubscribe, e-mail:
>       > [EMAIL PROTECTED]
>       >       For additional commands, e-mail:
>       > [EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]> 
>       
>       > <mailto:[EMAIL PROTECTED]>
>       
>       >
>       >
>       >
>       >
>       >
>       >
>       > --
>       > Archie L. Cobbs
>       >
>       >
>       
>       
> ---------------------------------------------------------------------
>       To unsubscribe, e-mail: 
> [EMAIL PROTECTED] 
> <mailto:[EMAIL PROTECTED]> 
>       For additional commands, e-mail: 
> [EMAIL PROTECTED]
>       
>       
> 
> 
> 
> 
> --
> Archie L. Cobbs
> 
> 

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

Reply via email to