Hi Thomas,

I agree with your explanation. But I was thinking to keep the SVGGraphics2D
object alive and use it every time a user clicks on the element. However, it
looks that that will mean that every time the figure is re-draw or modified,
the events and id should be added again too. So it looks that is not the
best option to achieve my goals.

Maybe it could be worth to try to save the svg representation as a
DocumentFragment that can be easily traverse and modified, before it is
added to the document.

Anyway, Thanks a lot for your help.

All the best

On Tue, Jul 8, 2008 at 10:37 AM, <[EMAIL PROTECTED]> wrote:

>
> Hi Abraham,
>
> "Abraham Rodriguez Mota" <[EMAIL PROTECTED]> wrote on 07/08/2008
> 04:59:20 AM:
>
> > I think that your code works making the assumption that the added
> > element is always the last children in the document, but I need to
> > added elements in different locations through the SVG tree.
>
>
>    It assumes that the element just drawn is the last child of
> the element passed to getRoot, when getRoot is called immediately
> after the element is drawn, which should always be the case.
>
> > I also thought that using a Document Fragment and doing what you
> > propouse could resolve the problem but I that is to complex for
> > something that commun, isn't it?.
>
>    The problem is that the Graphics2D is ment to take a hunk of
> Java2D drawing and essentially persist it to SVG.  It isn't
> designed to annotate and structure the generated SVG.  It's tricky
> enough to transcode almost all of the Graphics2D commands allowing
> the user to try and muck with the content as it's generated would
> be a real pain.
>
> > On 7/8/08, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> >
> > Hi Abraham,
> >
> > "Abraham Rodriguez Mota" <[EMAIL PROTECTED]> wrote on
> > 07/07/2008 02:09:43 PM:
> >
> > > I have been trying to find the way to add an "id" attribute to a
> > > rectangle using SVGGraphics2D. I got the code shown below. But I
> > > haven't found the way to do it. It looks as it is an old issue but i
> > > couldn't find a concrete answer.
> >
> >   Yah, there isn't a really good answer, but the following
> > will work.
> >
> > > public void paint(SVGGraphics2D g2d) {
> > >         EventTarget target;
> > >         g2d.setPaint(Color.red);
> > >         g2d.fill(new Rectangle(10, 10, 100, 100));
> > >         Element root=svgDocument.getDocumentElement();
> > >         g2d.getRoot(root);
> >
> >         Element curr = root;
> >         Element lc = curr;
> >         while (lc != null) {
> >            curr = lc;
> >            lc = (Element)curr.getLastChild();
> >         }
> >         curr.setAttributeNS(null, "id", "some_id_you_want");
> >
> > > }
>

Reply via email to