Overview of important classes
Plotter, Plotter2, RotatedPlotter
The Plotter class (and its two variants) are responsible for painting graphs on the screen. The whole graph can be painted with a single method invocation, or individual components (scale, axes, etc.) can be drawn separately. It is generally best to have one plotter per data set; if they are to plotted on top of one another, the scale and axes of one plotter can be disabled to reduce drawing time (and potential for unsightly visual artifacts).
Solvable
The data to be plotted is provided by a Solvable object; implementation of this interface requires implementation of a solve() method, which should fill an array with solution data.
This approach is faster than requesting individual values (simply because the method invocation overheads are removed); it is more flexible too. This approach does not force each value to be independent; the (i+1)th value can depend on the ith value if necessary. There is no requirement that the mechanism behind this method should resemble a function; the Histogram and TimeGraph classes are examples of this.
SolnCache is an example of a Solvable object which does no work for itself; an instance of this class will be initialised with a "slave" Solvable, which it will use to fill a cache of solution data.
Function
As a rule, any object which behaves like a function could implement the Function interface. To create a Solvable from a Function, use the SolvFunction class.
BaseApplet
BaseApplet is the common superclass for all of these applets. Implements buffered painting to remove flicker effects and reduce repainting costs. Also reads in some standard parameters for setting font face and size, enabling buffering, and enabling extra safety checks.
BaseApplet2
All the applets, bar LatticeApplet are derived from BaseApplet2, itself derived from BaseApplet. As the name suggests, this is an extended version of BaseApplet. This class automatically creates a panel at the base of the applet to hold GUI components, and redirects calls to add() and setLayout() to this panel. Helper methods are provided to combine common operations; a text field with a label may be created, added to the panel, registered with the applet (so that events may be received), and added to a list of controls, all in one method invocation. As a list of controls is kept by this class, it is possible to enable or disable every control simultaneously with a single method invocation.