You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by George Armhold <ar...@cs.rutgers.edu> on 2002/12/20 17:27:14 UTC
how to launch an external browser for web page links?
What is the proper way to launch an external web browser when a web
link is clicked inside the JSVGComponent/JSVGCanvas? Is there direct
support for this, or must I listen for mouse clicks and do it by hand?
I notice that when I hover over a link such as "http://xml.apache.org"
the cursor changes to a hand; when I click it seems to try and load
the URL as an SVG document in the canvas. Is there a way to direct it
to load a web page (externally) instead? I'm using Java Web Start,
which provides a means for launching an external browser; I just need
to get the event/url.
Thanks
--
George Armhold
Rutgers University
eLearning Grant, DCIS
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org
Re: how to launch an external browser for web page links?
Posted by J Aaron Farr <ja...@yahoo.com>.
--- George Armhold <ar...@cs.rutgers.edu> wrote:
> What is the proper way to launch an external web browser when a web
> link is clicked inside the JSVGComponent/JSVGCanvas? Is there direct
> support for this, or must I listen for mouse clicks and do it by hand?
> I notice that when I hover over a link such as "http://xml.apache.org"
> the cursor changes to a hand; when I click it seems to try and load
> the URL as an SVG document in the canvas. Is there a way to direct it
> to load a web page (externally) instead? I'm using Java Web Start,
> which provides a means for launching an external browser; I just need
> to get the event/url.
>
> Thanks
>
>
> --
> George Armhold
> Rutgers University
> eLearning Grant, DCIS
Well, here's one way:
1. Create a new class which implements
org.apache.batik.swing.svg.LinkActionListener .
2. In your new LinkActionListener, open your new browser (or whatever else you
need to do) within the "linkActivated()" method.
3. Add your LinkActionListener to the JSVGCanvas:
svgCanvas.addLinkActionListener( myLinkActionListener );
And really it's as simple as that ... or well it should be.
The problem is with #2. The LinkActionListener.linkActivated() method is
passed a LinkActionEvent. From the LinkActionEvent you can retrieve a
referenced URI (as a string), but you cannot retrieve the "link" element itself
(as an SVGElement). A while ago I had this problem, but for some reason I
needed information from the link element itself, not just the URI. My solution
was to change the batik LinkActionEvent source code so as to save the link
element so I could access it in the LinkActionListener. I just checked the
latest sources and the problem still exists. I still don't understand why the
LinkActionEvent doesn't have a getter for the link SVGElement object since that
object _is_ passed to it in its constructor. If it's not being used or saved,
then why even pass it?
My original email about this can be found at
http://koala.ilog.fr/batik/mlists/batik-users/archives/msg01922.html.
If you only need the URI then this solution works very well and is fairly
simple. If anyone has some better solutions I would love to know about them.
Thanks.
jaaron
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org