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]
> > 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]
> > > 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]
> > > 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]>
> >
> >
> >
> >
> >
> >
> > --
> > Archie L. Cobbs
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
Archie L. Cobbs