strategy tips?

I am trying to write an educational application using the VisAD
spreadsheet.  As such I need to conceal some of the detail of generating
visualizations with the spreadsheet, in order to let students focus on
the lesson at hand.  At the same time, I need to allow the concealment
to be "peeled away" later if the student wishes.  

At any rate, a typical problem I have is this:  In a lesson about
climate, the student is initially presented with many datasets, each
sampled over the same geographic region, perhaps at many times.  (i.e.
temperature and precipitation in the United States, sampled monthly over
a year.)  So they will start out seeing many cells showing these data as
simple rasters.  I'd like to make a toggle button called "Drape," which,
when pressed, switches the display of a cell from 2D raster, to a 3D
depiction of the data draped over an elevation model.  Since every
dataset will have the same elevation model associated with it, it seems
redundant to include it in every cell, all the time.  On the other hand,
if I keep the elevation dataset separate, until "Drape" is called, at
which point I Combine the elevation data with the existing dataset, I
may get bogged down having to perform all those Combines.  What's the
best strategy?

An addendum to the above problem is this: I want students to be able to
build some simple SpreadSheet functions - Subtract, Average, etc...  IF
the elevation data WERE present in every cell, I would want to "ignore"
it when these calculations were done.  That is, if a student wanted to
subtract one cell from another, it would be pointless to do this to
their elevation data (which would just produce a set of zeroes.)  So, I
guess I would need to "intercept" the String containing the function and
rebuild it so that the appropriate data are Extracted before the
calculation, the re-Combined with elevation after the calculation, as
in:

A1 - A2

becomes:

COMBINE( (EXTRACT(A1,0) - EXTRACT(A2,0)), EXTRACT(A1,1))

Is this what I really want to be doing, or is there a smarter way?  If
this is how I should do it, at what stage should it happen, at the "top
level" where the text is initially parsed by the GUI, or somewhere
deeper?  Would it be better to just extend FancySSCell to somehow deal
with this (as well as the first problem)?


Thanks!

john



-- 
John Brecht
SRI International
Center for Technology in Learning
333 Ravenswood Avenue
Menlo Park, CA  94025
650-859-2325 (voice)
650-859-3673 (fax)
john.brecht@xxxxxxx