Hi G. Wade. G. Wade Johnson: > I've done a little looking at the SVG 1.2 spec and the Batik code. The > spec defines a gotoLocation( uri ) method that on the Global interface > that Window is supposed to derive from.
Since the recent publication of the SVG Tiny 1.2 LCWD, the gotoLocation() method has been removed in favour of an HTML-like window.location thing: http://dev.w3.org/SVG/profiles/1.2T/publish/svgudom.html#dom__Location http://dev.w3.org/SVG/profiles/1.2T/publish/svgudom.html#dom__Window_location > I've found the appropriate code and made mods to add the gotoLocation() > method and hit a roadblock. > > I don't know how to reload the document without access to the > JSVGCanvas and I can't figure out how to get one. Currently, the BridgeContext has a reference to a UserAgent object, which is implemented as an inner class in JSVGViewerFrame. That UserAgent object is used to do things like popping up alert windows, navigating to a new location as a result of clicking on an <a> element, and some other things. So that would be how you control the container of the document. > I thought I had ways around that, but tracking throught the Window, > Document, and BridgeContext classes have not given me any insight. > > Given enough time, I'd probably be able to figure out what I need, but > this is not the problem I'm actually trying to solve. If someone has a > hint to point me in the right direction, I'll keep looking at it. If I was going to add support for window.location, I’d do the following: * Extend the org.apache.batik.bridge.UserAgent interface with a method that can navigate to a new location. * Implement that method on org.apache.batik.swing.svg.JSVGComponent.BridgeUserAgent. * Create new interfaces org.w3c.dom.Location and org.w3c.dom.Window. * Make org.apache.batik.script.Window extend org.w3c.dom.Window. * Modify org.apache.batik.script.rhino.WindowWrapper so that the getLocation() method is exposed. * Implement getLocation() on org.apache.batik.bridge.ScriptingEnvrionment.Window. This could lazily construct an object that implements Location. I’m not sure where the best place to get/store this object would be — maybe on the BridgeContext? * The class that implements the Location object will need access to the BridgeContext so that it can get the UserAgent and call the new location navigation method on it. Ideally, I think the implementation of the Location object would go in org.apache.batik.dom.* somewhere. But as a first step it doesn’t matter if it’s somewhere else, say in the bridge package. At some point the Window stuff and how objects are reflected into script needs to be rewritten, but that might be a while away. Hopefully the above gets you on the right track! Cameron -- Cameron McCormack ≝ http://mcc.id.au/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
