# GeoGebra JavaScript Methods

GeoGebra 3.2, November 2008

Markus Hohenwarter, Michael Borcherds

This document describes public methods available in geogebra.GeoGebraApplet to be used from an HTML page via JavaScript.

[hide]

# Examples

Example 1: the following HTML code fragment adds a "Reset" button to an HTML page that lets the user reset the construction shown in the GeoGebraApplet to its initial state:

``` <form>
<input type="button" value="Reset" onclick="document.applets[0].reset();">
</form>
```

Example 2: this adds two buttons "Hide A" and "Show A" change the visibility state of an object named "A" in the construction

``` <form>
<input type="button" value="Hide A" onclick="document.applets[0].setVisible('A', false);">
<input type="button" value="Show A" onclick="document.applets[0].setVisible('A', true);">
</form>
```

Example 3: a JavaScript function "myLittleConstruction()" is used to call several methods of the GeoGebraApplet. Note: the language is set to German ("de") with the applet parameter "language" in the applet tag in order to make sure that the German command "Gerade" (line) will work.

``` <applet name="ggbApplet" code="geogebra.GeoGebraApplet"
archive="geogebra.jar"
width=200 height=40>
<param name="filename" value="circle.ggb">
<param name="framePossible" value="false">
<param name="language" value="de">
</applet>
<script type="text/javascript">
function myLittelConstruction() {
var applet = document.ggbApplet;
applet.evalCommand("A = (1,1)");
applet.evalCommand("B = (3,2)");
}
</script>
<form>
<input type="button" value="Do construction" onclick="myLittelConstruction();">
</form>
```

Example 4: Have a look at the source code of the following example worksheet that uses JavaScript.

``` http://www.geogebra.org/source/program/applet/geogebra_applet_javascript_test.htm
```

# Available Methods

 Method Signature Since Description boolean evalCommand(String cmdString) 3.0 Evaluates the given string just like it would be evaluated when entered into GeoGebra's input bar. Returns whether command evaluation was successful. Note: use the language parameter to ensure your local command names will work.

With these methods you can implement Applet to JavaScript communication. When you use any of the following methods, you should make sure to insert the MAYSCRIPT option add the end of the first line of your applet tag. For example:

``` <applet name="ggbApplet" code="geogebra.GeoGebraApplet" codebase="." archive="geogebra.jar" width="500" height="250" MAYSCRIPT>
```

The MAYSCRIPT option is only needed for GeoGebraApplet to JavaScript communication; it is not needed for JavaScript to access the GeoGebraApplet methods.

For example, these methods can be used to

# Setting the state of objects

## General methods

 Method Signature Since Description void deleteObject(String objName) 2.7 Deletes the object with the given name. void setValue(String objName, double value) 3.2 Sets the double value of the object with the given name. Note: if the specified object is boolean, use a value of 1 to set it to true and any other value to set it to false. For any other object type, nothing is done. void setCoords(String objName, double x, double y) 3.0 Sets the coordinates of the object with the given name. Note: if the specified object is not a point or a vector, nothing is done. void setColor(String objName, int red, int green, int blue) 2.7 Sets the color of the object with the given name. void setVisible(String objName, boolean visible) 2.7 Shows or hides the object with the given name in the graphics window. void setLabelVisible(String objName, boolean visible) 3.0 Shows or hides the label of the object with the given name in the graphics window. void setLabelStyle(String objName, boolean visible) 3.0 Sets the label style of the object with the given name in the graphics window. Possible label styles are NAME = 0, NAME_VALUE = 1, VALUE = 2 and (from GeoGebra 3.2) CAPTION = 3 void setFixed(String objName, boolean flag) 3.0 Sets the fixed state of the object with the given name. Note: fixed objects cannot be changed. void setTrace(String objName, boolean flag) 3.0 Turns the trace of the object with the given name on or off. boolean renameObject(String oldObjName, String newObjName) 3.2 Renames oldObjName to newObjName. Returns whether the rename was successful void setLayer(String objName) 3.2 Sets the layer of the object void setLayerVisible(int layer, boolean visible) 3.2 Shows or hides the all objects in the given layer

## Automatic Animation

 Method Signature Since Description void setAnimating(String objName, boolean animate) 3.2 Sets whether an object should be animated. This does not start the animation yet, use startAnimation() to do so. void setAnimationSpeed(String objName, double speed) 3.2 Sets the animation speed of an object. void startAnimation 3.2 Starts automatic animation for all objects with the animating flag set, see setAnimating() void stopAnimation 3.2 Stops animation for all objects with the animating flag set, see setAnimating() boolean isAnimationRunning() 3.2 Returns whether automatic animation is currently running.

# Getting the state of objects

 Method Signature Since Description double getXcoord(String objName) 2.7 Returns the cartesian x-coord of the object with the given name. Note: returns 0 if the object is not a point or a vector. double getYcoord(String objName) 2.7 Returns the cartesian y-coord of the object with the given name. Note: returns 0 if the object is not a point or a vector. double getValue(String objName) 3.2 Returns the double value of the object with the given name (e.g. length of segment, area of polygon). Note: returns 1 for a boolean object with value true. Otherwise 0 is returned. String getColor(String objName) 2.7 Returns the color of the object with the given name as a hex string, e.g. "#FF0000" for red. Note that the hex string always starts with # and contains no lower case letters. boolean getVisible(String objName) 3.2 Returns true or false depending on whether the object is visible in the Graphics View. Returns false if the object does not exist. String getValueString(String objName) 2.7 Returns the value of the object with the given name as a string. String getDefinitionString(String objName) 2.7 Returns the definition of the object with the given name as a string. String getCommandString(String objName) 2.7 Returns the command of the object with the given name as a string. String getObjectType(String objName) 2.7 Returns the type of the given object as a string (like "point", "line", "circle", etc.). boolean exists(String objName) 2.7 Returns whether an object with the given name exists in the construction. boolean isDefined(String objName) 2.7 Returns whether the given object's value is valid at the moment. String [] getAllObjectNames() Deprecated since 3.0 2.7 Returns an array with all object names in the construction. Note: using arrays in JavaScript causes problems with some browsers. Use getObjectNumber() and getObjectName() instead. int getObjectNumber() 3.0 Returns the number of objects in the construction. String getObjectName(int i) 3.0 Returns the name of the n-th object of the construction. String getLayer(String objName) 3.2 Returns the layer of the object.

# Construction / User Interface

 Method Signature Since Description void setMode(int mode) 2.7 Sets the mouse mode (i.e. tool) for the graphics window (see Toolbar Mode Values and the applet parameters "showToolBar" and  "customToolBar" ) void openFile(String strURL) 2.7 Opens a construction from a  file (given as absolute or relative URL string) void reset() 2.7 Reloads the initial construction (given in filename parameter) of this applet. void refreshViews() 2.7 Refreshs all views. Note: this clears all traces in the graphics window. void setRepaintingActive(boolean flag) 2.7 Turns the repainting of this applet on (true) or off (false). Note: use this method for efficient repainting when you invoke several methods. void setErrorDialogsActive(boolean flag) 3.0 Turns showing of error dialogs on (true) or off (false). Note: this is especially useful together with evalCommand(). void setCoordSystem(double xmin, double xmax, double ymin, double ymax) 3.0 Sets the Cartesian coordinate system of the graphics window. void setAxesVisible(boolean xAxis, boolean yAxis) 3.0 Shows or hides the x- and y-axis of the coordinate system in the graphics window. void setGridVisible(boolean flag) 3.0 Shows or hides the coordinate grid in the graphics window.

# GeoGebraApplet to JavaScript Communication

With these methods you can implement Applet to JavaScript communication. When you use any of the following methods, you should make sure to insert the MAYSCRIPT option add the end of the first line of your applet tag. For example:

<applet name="ggbApplet" code="geogebra.GeoGebraApplet" codebase="." archive="geogebra.jar" width="500" height="250" MAYSCRIPT>. The MAYSCRIPT option is only needed for GeoGebraApplet to JavaScript communication; it is not needed for JavaScript to access the GeoGebraApplet methods. For example, these methods can be used to:

# GeoGebra's XML format

With these methods you can set everything in a construction (see GeoGebra's XML Format ).

 Method Signature Since Description void evalXML(String xmlString) 2.7 Evaluates the given XML string and changes the current construction. Note: the construction is NOT cleared before evaluating the XML string. void setXML(String xmlString) 2.7 Evaluates the given XML string and changes the current construction. Note: the construction is cleared before evaluating the XML string. This method could be used to load constructions. String getXML() 2.7 Returns the current construction in GeoGebra's XML format. This method could be used to save constructions. String getXML(String objName) 3.2 Returns the GeoGebra XML string for the given object, i.e. only the tag is returned. String getAlgorithmXML(String objName) 3.2 For a dependent GeoElement objName the XML string of the parent algorithm and all its output objects is returned. For a free GeoElement objName "" is returned.

# Miscellaneous

 Method Signature Since Description String evalMathPiper(String string) 3.2 Passes the string to MathPiper and returns the result as a String. String getIPAddress() 3.2 Returns the IP address of the local computer as a String eg "192.168.0.4" String getHostname() 3.2 Returns the hostname of the local computer as a String void debug(String string) 3.2 Prints the string to the Java Console