Xj3D 2.0 VRML/X3D Code API

org.web3d.vrml.scripting.ecmascript
Class JavascriptBrowser

java.lang.Object
  extended by org.web3d.vrml.scripting.ecmascript.JavascriptBrowser

public class JavascriptBrowser
extends java.lang.Object

Browser object within an Javascript VRML97 script.

The current implementation ignores any parameter values provided by the world when requesting a loadURL.

The standard Java interface does not allow us to print output. The way that all VRML vendors seem to have gotten around this is to add println methods to the Browser object. We've done this as well. The current implementation just calls System.out directly, but a later revision will probably use a callback for a listener provided instance to send the output to. In addition, this class has to be made public so that Rhino can access the various print methods. Note that the constructor is not private because you should never directly be creating instances of this class.

Version:
$Revision: 1.8 $
Author:
Justin Couch

Method Summary
 void addRoute(org.web3d.vrml.scripting.ecmascript.builtin.SFNode fromNode, java.lang.String fromEventOut, org.web3d.vrml.scripting.ecmascript.builtin.SFNode toNode, java.lang.String toEventIn)
          Add a route between two nodes, from an eventOut to an eventIn.
 org.web3d.vrml.scripting.ecmascript.builtin.MFNode createVrmlFromString(java.lang.String vrmlSyntax)
          Parse the given string and turn this into a list of VRML nodes.
 void createVrmlFromURL(org.web3d.vrml.scripting.ecmascript.builtin.MFString url, org.web3d.vrml.scripting.ecmascript.builtin.SFNode node, java.lang.String eventIn)
          Create and load VRML from the given URL and place the returned values as nodes into the given VRML node in the scene.
 void deleteRoute(org.web3d.vrml.scripting.ecmascript.builtin.SFNode fromNode, java.lang.String fromEventOut, org.web3d.vrml.scripting.ecmascript.builtin.SFNode toNode, java.lang.String toEventIn)
          Delete a route between two nodes.
 float getCurrentFrameRate()
          Get the current frame rate of the browser in frames per second.
 float getCurrentSpeed()
          Get the current velocity of the bound viewpoint in meters per second.
 java.lang.String getDescription()
          Get the description string currently used by the world.
 java.lang.String getName()
          Get the name of the browser.
 java.lang.String getVersion()
          Get the version of the browser.
 java.lang.String getWorldURL()
          Get the fully qualified URL of the currently loaded world.
 void loadURL(org.web3d.vrml.scripting.ecmascript.builtin.MFString url, org.web3d.vrml.scripting.ecmascript.builtin.MFString parameters)
          Load the URL as the new root of the scene.
 VRMLNodeType[] parseVrmlString(java.lang.String vrmlSyntax)
          Convenience version of createVrmlFromString so that the caller can be returned the raw nodes rather than the JavascriptScript versions.
 void print(java.lang.Object obj)
          Print an object instance to the output.
 void print(java.lang.String str)
          Print a string to the output.
 void println(java.lang.Object obj)
          Print an object instance to the output.
 void println(java.lang.String str)
          Print a string to the output.
 void replaceWorld(org.web3d.vrml.scripting.ecmascript.builtin.MFNode nodes)
          Replace the current world with the given nodes.
 void setDescription(java.lang.String desc)
          Set the description of the current world.
 void setErrorReporter(ErrorReporter reporter)
          Register an error reporter with the engine so that any errors generated by the script code can be reported in a nice, pretty fashion.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getDescription

public java.lang.String getDescription()
Get the description string currently used by the world. Returns null if not set or supported.

Returns:
The current description string or null

setDescription

public void setDescription(java.lang.String desc)
Set the description of the current world. If the world is operating as part of a web browser then it shall attempt to set the title of the window. If the browser is from a component then the result is dependent on the implementation

Parameters:
desc - The description string to set.

getName

public java.lang.String getName()
Get the name of the browser. The name is an implementation specific string representing the browser.

Returns:
The name of the browser or null if not supported

getVersion

public java.lang.String getVersion()
Get the version of the browser. Returns an implementation specific representation of the version number.

Returns:
The version of the browser or null if not supported

getCurrentSpeed

public float getCurrentSpeed()
Get the current velocity of the bound viewpoint in meters per second. The velocity is defined in terms of the world values, not the local coordinate system of the viewpoint.

Returns:
The velocity in m/s or 0.0 if not supported

getCurrentFrameRate

public float getCurrentFrameRate()
Get the current frame rate of the browser in frames per second.

Returns:
The current frame rate or 0.0 if not supported

getWorldURL

public java.lang.String getWorldURL()
Get the fully qualified URL of the currently loaded world. This returns the entire URL including any possible arguments that might be associated with a CGI call or similar mechanism. If the initial world is replaced with loadURL then the string will reflect the new URL. If replaceWorld is called then the URL still represents the original world.

Returns:
A string of the URL or null if not supported.
See Also:
replaceWorld(MFNode)

replaceWorld

public void replaceWorld(org.web3d.vrml.scripting.ecmascript.builtin.MFNode nodes)
Replace the current world with the given nodes. Replaces the entire contents of the VRML world with the new nodes. Any node references that belonged to the previous world are still valid but no longer form part of the scene graph (unless it is these nodes passed to this method). The URL of the world still represents the just unloaded world.

Calling this method causes a SHUTDOWN event followed by an INITIALIZED event to be generated.

Parameters:
nodes - The list of nodes to use as the new root of the world

createVrmlFromString

public org.web3d.vrml.scripting.ecmascript.builtin.MFNode createVrmlFromString(java.lang.String vrmlSyntax)
Parse the given string and turn this into a list of VRML nodes. Method is a blocking call that won't return until all of the top level nodes defined in the string have been returned.

At the point that this method returns, external files such as textures, sounds and inlines may not have been loaded.

The string may contain all legal VRML syntax. The VRML header line is not required to be present in the string.

Parameters:
vrmlSyntax - The string containing VRML string syntax
Returns:
A list of the top level nodes in VRML representation as defined in the parameter
Throws:
InvalidVRMLSyntaxException - If the string does not contain legal VRML syntax or no node instantiations

createVrmlFromURL

public void createVrmlFromURL(org.web3d.vrml.scripting.ecmascript.builtin.MFString url,
                              org.web3d.vrml.scripting.ecmascript.builtin.SFNode node,
                              java.lang.String eventIn)
Create and load VRML from the given URL and place the returned values as nodes into the given VRML node in the scene. The difference between this and loadURL is that this method does not replace the entire scene with the contents from the URL. Instead, it places the return values as events in the nominated node and MFNode eventIn.

Parameters:
url - The list of URLs in decreasing order of preference as defined in the VRML97 specification.
node - The destination node for the VRML code to be sent to.
eventIn - The name of the MFNode eventIn to send the nodes to.

addRoute

public void addRoute(org.web3d.vrml.scripting.ecmascript.builtin.SFNode fromNode,
                     java.lang.String fromEventOut,
                     org.web3d.vrml.scripting.ecmascript.builtin.SFNode toNode,
                     java.lang.String toEventIn)
Add a route between two nodes, from an eventOut to an eventIn. If the ROUTE already exists, this method silently exits. It does not attempt to add a second parallel ROUTE.

Parameters:
fromNode - The source node for the route
fromEventOut - The eventOut source of the route
toNode - The destination node of the route
toEventIn - The eventIn destination of the route
Throws:
InvalidEventInException - the eventIn name is not a field of the destination node
InvalidEventOutException - the eventOut name is not a field of the source node

deleteRoute

public void deleteRoute(org.web3d.vrml.scripting.ecmascript.builtin.SFNode fromNode,
                        java.lang.String fromEventOut,
                        org.web3d.vrml.scripting.ecmascript.builtin.SFNode toNode,
                        java.lang.String toEventIn)
Delete a route between two nodes. If the route does not exist, the method silently exits.

Parameters:
fromNode - The source node for the route
fromEventOut - The eventOut source of the route
toNode - The destination node of the route
toEventIn - The eventIn destination of the route
Throws:
InvalidEventInException - the eventIn name is not a field of the destination node
InvalidEventOutException - the eventOut name is not a field of the source node

loadURL

public void loadURL(org.web3d.vrml.scripting.ecmascript.builtin.MFString url,
                    org.web3d.vrml.scripting.ecmascript.builtin.MFString parameters)
Load the URL as the new root of the scene. Replaces all the current scene graph with the new world. A non-blocking call that will change the contents at some time in the future.

Generates an immediate SHUTDOWN event and then when the new contents are ready to be loaded, sends an INITIALIZED event.

Parameters:
url - The list of URLs in decreasing order of preference as defined in the VRML97 specification.
parameters - The list of parameters to accompany the load call as defined in the Anchor node specification of VRML97

println

public void println(java.lang.String str)
Print a string to the output.

Parameters:
str - The string to print

println

public void println(java.lang.Object obj)
Print an object instance to the output.

Parameters:
obj - The object to print

print

public void print(java.lang.String str)
Print a string to the output.

Parameters:
str - The string to print

print

public void print(java.lang.Object obj)
Print an object instance to the output.

Parameters:
obj - The object to print

setErrorReporter

public void setErrorReporter(ErrorReporter reporter)
Register an error reporter with the engine so that any errors generated by the script code can be reported in a nice, pretty fashion. Setting a value of null will clear the currently set reporter. If one is already set, the new value replaces the old. Also changes the ErrorReporter used by the CommonBrowser instance.

Parameters:
reporter - The instance to use or null

parseVrmlString

public VRMLNodeType[] parseVrmlString(java.lang.String vrmlSyntax)
                               throws VRMLParseException,
                                      VRMLException
Convenience version of createVrmlFromString so that the caller can be returned the raw nodes rather than the JavascriptScript versions.

Throws:
VRMLParseException
VRMLException

Xj3D 2.0 VRML/X3D Code API

Copyright © 2001 - 2006 Web3D Consortium