Well, the JSVGCanvas is nothing but a visual representation of what's in
the SVGDocument. If your circle is shown on the screen, it's gotta be
part of that document. So if you want to find all the circles and
attach mouse events to them, I'd do something like this:
SVGDocument svgDocument = jsvgCanvas.getDocument();
// I'm not sure what's actually on your document, but it should be
circle or
// ellipse.
NodeList circleList = svgDocument.getElementsByTagName("circle");
for (int count = 0; count < circleList.getLength(); count++) {
EventTarget eventTarget = (EventTarget) circleList.item(count);
eventTarget.addEventListener(...);
}
Of course you only want to do this once; you don't want to add a new
EventListener more than once per element.
I like Thomas's solution better; attach one event listener to the root
of your SVG document (svgDocument.getDocumentElement()) and either turn
off mouse events for all the other elements and on for the needed
elements (attribute pointer-events: none/visible) or identify the
elements that should be clicked in some fashion.
Michael Bishop
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Monday, February 27, 2006 1:26 PM
To: [email protected]
Subject: RE: Red Spots
yes, it does but how does that work?
> Well you're not adding them to a document in the file system, but the
> JSVGCanvas certainly has a reference to an SVGDocument in memory,
right?
>
> Michael Bishop
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: Monday, February 27, 2006 1:18 PM
> To: [email protected]
> Subject: RE: Red Spots
>
> Hi there!
>
> I can't make the spots part of the document, because they are drawn
> after
> getting the information from a database (Accident database) ...is
there
> a
> way when a mouse clicks on any of the spots to activate an event?
>
> ThankU
>
> yasmin
>
>
>
>
>
>> Hi Yasmin,
>>
>> [EMAIL PROTECTED] wrote on 02/27/2006 12:42:09 PM:
>>
>>> ...I've drawn the circles on the canvas, they are not part of my svg
>>> document such that the actual file is not altered, the the circles
> are
>> not
>>> individual elements - any ideas :(
>>
>> Yes, make them part of your document ;)
>> Really this is the simplest thing. If you want to minimize the
>> 'impact' on the original document put all the circle in a special
> group
>> (probably dynamically created) so you can just delete the group to
> 'reset'
>> the document. This way you can let the SVG engine do all the event
>> tracking.
>>
>> You could add an event listener (mouse move or the like) to the
>> rootmost SVG element and you will get notified of any mouse event
>> over any element in the document. You could then manually check
these
>> points against your circles. But this seems like a bunch of extra
> work
>> for nothing.
>>
>>>
>>> yasmin
>>>
>>>
>>> > Hello,
>>> > For events, I attach an event to the entire document. For
>>> > individual elements, this may work. You'll need to get your
circle
> as
>>> > an org.w3c.dom.Element.
>>> >
>>> > EventTarget eventTarget = (EventTarget) yourElement;
>>> > eventTarget.addEventListener(SVGConstants.SVG_EVENT_MOUSEDOWN, new
>>> > YourEventListener(), false);
>>> >
>>> > Michael Bishop
>>> >
>>> > -----Original Message-----
>>> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
>>> > Sent: Monday, February 27, 2006 12:13 PM
>>> > To: [email protected]
>>> > Subject: Red Spots
>>> >
>>> >
>>> > Hi Michael Bishop,
>>> >
>>> > I have been beavering on my project and have successfully
converted
> my
>>> > screen coordinates to documents and can interact with my database
> to
>>> > retrieve the information for the current view and show red spots
on
>> the
>>> > areas where accidents have happend on the map ...now I need to
make
>> the
>>> > red spots active so when a user clicks on a red spot the relevant
>>> > information about that particular accident is displayed ...i
simply
>> used
>>> > the following code to create the red spot:
>>> >
>>> > Graphics spot = canvas.getGraphics();
>>> > spot.setColor(Color.RED);
>>> > spot.fillOval(x,y,22,22);
>>> > spot.dispose();
>>> >
>>> > but i cant assign an ActionEvent to the spot ...Any ideas?
>>> >
>>> > Many thanks in advance :)
>>> >
>>> > Yasmin
>>> >
>>> >
>>> >
>>> >
>>> >> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
>>> >> <HTML>
>>> >> <HEAD>
>>> >> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;
>>> > charset=iso-8859-1">
>>> >>
>>> >>
>>> >> <META NAME="Generator" CONTENT="MS Exchange Server version
>>> > 6.5.7226.0">
>>> >> <TITLE>RE: Coordinates</TITLE>
>>> >> </HEAD>
>>> >> <BODY>
>>> >> <DIV id=idOWAReplyText99836 dir=ltr>
>>> >> <DIV dir=ltr><FONT face=Arial color=#000000 size=2>Element
element
>>
>>> >>
> svgDocument.createElement(SVGConstants.SVG_CIRCLE_TAG);</FONT></DIV>
>>> >> <DIV dir=ltr><FONT face=Arial
>>> >> size=2>element.setAttribute(SVGConstants.SVG_CX_ATTR,
>>> >> xPosition);</FONT></DIV>
>>> >> <DIV dir=ltr><FONT face=Arial
>>> >> size=2>element.setAttribute(SVGConstants.SVG_CY_ATTR,
>>> >> yPosition);</FONT></DIV>
>>> >> <DIV dir=ltr><FONT face=Arial
>>> >> size=2>element.setAttribute(SVGConstants.SVG_R_ATTR,
>>> > radius);</FONT></DIV>
>>> >> <DIV dir=ltr><FONT face=Arial
>>> >> size=2>element.setAttribute(SVGConstants.SVG_FILL_ATTR,
>>> >> "red");</FONT></DIV>
>>> >> <DIV dir=ltr><FONT face=Arial
>>> >>
> size=2>svgDocument.getDocumentElement.append(element);</FONT></DIV>
>>> >> <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
>>> >> <DIV dir=ltr><FONT face=Arial size=2>Use code completion or the
> Batik
>>> >> Javadoc. Most of those SVGConstants references are probably
>>> >> wrong.</FONT></DIV>
>>> >> <DIV dir=ltr><FONT face=Arial size=2></FONT> </DIV>
>>> >> <DIV dir=ltr><FONT face=Arial size=2>Michael
>> Bishop</FONT></DIV></DIV>
>>> >> <DIV dir=ltr><BR>
>>> >> <HR tabIndex=-1>
>>> >> <FONT face=Tahoma size=2><B>From:</B> [EMAIL PROTECTED]
>>> >> [mailto:[EMAIL PROTECTED]<BR><B>Sent:</B> Sun 2/19/2006
> 3:07
>>> >> PM<BR><B>To:</B>
>> [email protected]<BR><B>Subject:</B>
>>> > RE:
>>> >> Coordinates<BR></FONT><BR></DIV>
>>> >> <DIV>
>>> >> <P><FONT size=2>me again!<BR><BR>...I think I don't need to
> convert
>>> > back
>>> >> to
>>> >> screen coordinates I should be<BR>able to use the document
>>> > coordinates,
>>> >> but how
>>> >> can I draw a red-spot<BR>(filled circle) and a given location on
> the
>>> >> canvas?<BR><BR>ThankU in advance<BR><BR>yasmin<BR><BR>>
>>> > <!DOCTYPE
>>> >> HTML
>>> >> PUBLIC "-//W3C//DTD HTML 3.2//EN"><BR>>
<HTML><BR>>
>>> >> <HEAD><BR>> <META HTTP-EQUIV="Content-Type"
>>> >> CONTENT="text/html;
>>> >> charset=iso-8859-1"><BR>><BR>><BR>> <META
>>> > NAME="Generator"
>>> >> CONTENT="MS Exchange Server version 6.5.7226.0"><BR>>
>>> >> <TITLE>Coordinates</TITLE><BR>>
> </HEAD><BR>>
>>> >> <BODY><BR>> <DIV id=idOWAReplyText8269
>> dir=ltr><BR>>
>>> >> <DIV
>>> >> dir=ltr><FONT face=Arial color=#000000 size=2>Not sure;
>>> > haven't
>>> >> done<BR>> it in<BR>> reverse.&nbsp; There is a method
> for
>> an
>>> >> SVGLocatable called getScreenCTM<BR>> that<BR>> may be of
>>> >> use.</FONT></DIV><BR>> <DIV dir=ltr><FONT
>>> >> face=Arial
>>> >> size=2></FONT>&nbsp;</DIV><BR>> <DIV
>>> >> dir=ltr><FONT face=Arial size=2>Michael
>>> >> Bishop</FONT></DIV></DIV><BR>> <DIV
>>> >> dir=ltr><BR><BR>> <HR tabIndex=-1><BR>>
> <FONT
>>> >> face=Tahoma size=2><B>From:</B>
>>> >> [EMAIL PROTECTED]<BR>>
>>> >> [<A
>>> >>
>>> >
>>
>
href="mailto:[EMAIL PROTECTED]">mailto:[EMAIL PROTECTED]</A>
>>> > ]<BR><B>Sent:</B>
>>> >> Sun 2/19/2006 1:08<BR>> PM<BR><B>To:</B>
>>> >>
>>> >
>>
>
[email protected]<BR><B>Subject:</B><
>>> > BR>>
>>> >> Coordinates<BR></FONT><BR></DIV><BR>>
>>> >> <DIV><BR>> <P><FONT size=2>Hi Michael
>>> >> Bishop,<BR><BR>...I've converted my screen<BR>>
>>> > coordinates
>>> >> to my
>>> >> document coordinates - now<BR>I'm trying to convert<BR>>
>>> >> document<BR>> coordinates to screen coordinate so that
>>> > at<BR>that
>>> >> point
>>> >> on the map, I<BR>> can draw<BR>> a red_spot on the
> canvas...any
>>> >> ideas?<BR><BR>ThankU in<BR>>
>>> >>
>>> >
>>
>
advance<BR><BR>yasmin<BR><BR><BR>---------
>>> >
>>
>
------------------------------------------------------------<BR>To
>>> > <BR>>
>>> >> unsubscribe, e-mail:
>>> >>
> [EMAIL PROTECTED]<BR>For<BR>>
>>> >> additional
>>> >> commands, e-mail:<BR>>
>>> >>
>>> >
>>
>
[EMAIL PROTECTED]<BR></FONT></P>
>>> > </DIV><BR>><BR>>
>>> >> </BODY><BR>>
>>> >>
>>> >
>>
>
</HTML><BR><BR><BR><BR>-------------------------------------------
>>> > --------------------------<BR>To
>>> >> unsubscribe, e-mail:
>>> > [EMAIL PROTECTED]<BR>For
>>> >> additional commands, e-mail:
>>> >> [EMAIL PROTECTED]<BR></FONT></P></DIV>
>>> >>
>>> >> </BODY>
>>> >> </HTML>
>>> >
>>> >
>>> >
>>> >
> ---------------------------------------------------------------------
>>> > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
>>> > For additional commands, e-mail:
>> [EMAIL PROTECTED]
>>> >
>>> >
> ---------------------------------------------------------------------
>>> > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
>>> > For additional commands, e-mail:
>> [EMAIL PROTECTED]
>>> >
>>> >
>>> >
>>>
>>>
>>>
>>>
---------------------------------------------------------------------
>>> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
>>> For additional commands, e-mail:
> [EMAIL PROTECTED]
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:
[EMAIL PROTECTED]
>> For additional commands, e-mail:
> [EMAIL PROTECTED]
>>
>>
>>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail:
[EMAIL PROTECTED]
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail:
[EMAIL PROTECTED]
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]