This screenshot demonstrates the power of Joy's scripting system. It shows both InterfaceBuilder running, editing the project, as well as the program running.

In the top-right of the screen, you can see the code for the example. It has been written in the scripting language of Joy--but it looks a lot like Objective-C doesn't it? Have a look at this extract:

The code is interpreted, and so can be changed and re-run right from within InterfaceBuilder. Technically the language is based upon JavaScript, but it has been extended a lot to include most C and Objective-C constructs.

To access objects from the script, connections are made between the interpreter and objects in InterfaceBuilder. They are then accessible to the script by using variable names. The name is defined at the time of the connection, as can be seen in the `connections' window on the right hand side of the original screenshot.

The input dialog, in the bottom-right hand corner of the original screenshot, is connected to the script in this way. The user interface objects, such as the field for width, height, and so on, are accessible by the script, with meaningful variable names such as width and height. About half way down the interpreted script you can see these objects being messaged, with expressions such as [width intValue]; where width is the interface object and intValue is a method applied to get the integer value of the field.