The book I used to learn the language was 'JAVA, How to Program' by Deitel and Deitel, and many aspects of the program were built just by modifying examples from that book. The first version came together quickly and went on-line in 1997. Color control, and variable parameters were added quite early, but adaptive graphing (varying the resolution according to the complexity of the gaph), and the mouse responses (popup labels, point and line drawing, and screen drag) were not added until later.
In late 1998 I read Bruce Eckel's 'Thinking in JAVA' and spent some time in early 1999 restructuring the code to conform to a more object oriented style and to use the jdk 1.1 event model. I also experimented at that time with another approach to adaptive graphing that may (or may not) be more efficient than my first approach. The revised version is still being refined and adjusted but is useable and much like the original in its look and feel although the parameter controls have been redesigned, and the mouse responses (for drawing, dragging, etc) have been changed. One advantage of the re-structuring of the code is that it makes it easier to modify the applet and to change its look and feel as well as to have it (or maybe just some key components) link to other programs or applets using the JAVA Bean or other component technology.
Some alternate versions designed to illustrate specific topics have been created, and I am working with a group at the Cenre for Experimental and Constructive Mathematics at SFU on using the JAVA Bean approach to linking the Graph Explorer with other tools.