JHAVÉ
Java-Hosted Algorithm Visualization Environment |
For JHAVÉ Developers
JHAVÉ development can take a variety of forms:
- Developing new visualizations using the GAIGS support classes. This is most common way that others have contributed to the project. We provide extensive materials (below) on doing this from workshops we have conducted during summers at Grand Valley State and at SIGCSE Symposiums. Developing in his fashion does not require that you check out all the source code from our CVS repository.
- Extending the GAIGS structures by inheriting from the base StructureType class. How to do this is described in Chapter 4 of the GAIGS-JHAVÉ Visualization System Manual. It will require that you check out all the source code from our CVS repository. See this README file for a description of how to do this and then build the entire project.
- Writing a new Visualizer. This entails implementing the JHAVÉ Visualizer interface. In effect, this will involve designing your own scripting language (as Guido Rößling of the
Darmstadt University of Technology and Ville Karavirta of the Helsinki University of Technology have done for the Animal and XAAL scripting languages respectively). How to do this is described in Chapter 7 of the GAIGS-JHAVÉ Visualization System Manual. It will require that you check out all the source code from our CVS repository. See this README file for a description of how to do this and then build the entire project.
Developing Visualizations Using the GAIGS support classes
The development of new visualizations with the GAIGS support classes is the most common way that developers contribute to the JHAVÉ project. In brief it involves using the GAIGS support structures to implement the algorithm you want to visualize. These support structures come with a writeSnapshot that you can use to annotate your algorithm's code with interesting events, that is, points in your algorithm's execution where you would like to see a JHAVÉ-rendered picture of the state of a particular data structure. Here are materials we have on using the GAIGS support classes to do this:
java -jar jhave.jar -debug
JavaDoc for
the XML generation support classes.
The current version of the GAIGS
How-To Manual.
David Furcy's JHAVÉ POP
For those of you who
attended our "developer's forum" in June, you're aware of the great
progress David Furcy has made in developing JHAVÉ
visualizations of linked list and pointer operations. See the latest
documentation on JHAVÉ POP.
Other Recent Changes
Some changes have been made in the support classes based on the suggestions
we received during the JHAVÉ workshop held in June. These changes
should all be backwardly compatible.
- Arrays can now have "empty" contents. If an
array location is set to null, "null" appears as the contents of
the array cell (as before). But if the contents are set to the empty string,
the cell appears as empty. Doing this before threw an error.
- Bargraphs now show associated "row" labels centered
below their respective bars. This allows developers to show indices (or what
ever values they like). These labels can be multi-line. You can see an example
of this at work if you use "myles_gaigs_ds" as the list when you
start the client, and then choose the bubblesort example.
- The new GAIGStext structure supports positioning and font-sizing better than the old GAIGSlabel. See the online documentation.
- The new GAIGSlegend structure allows the easy creation of color-legend tables for the colors you use in your graphics. See the online documentation.
-
Captions for snapshots and data structures and the new GAIGStext structure can now have
multi-colored text. Use the usual hex color delimiters with
the string to change color on-the-fly. For example,
fo\#FF0000ba\#00FF00ar
would display the string "foobar" with the first two characters in
black, the next two in red, and the final two in green.
We still have some other suggestions to implement, but this is what we have
for now.