View this PageEdit this Page (locked)Attachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Another Group: Milestone 5

Purpose:
The goal was to give our Guide a demonstration engine that would allow it to show menus, make selections, type text, and, basically, demonstrate the steps of our topics. For the complete specs, see Fall 2003 M5: Create a demonstration engine.

Our Approach:
We broke down the demonstration scripts needed for our existing 5 topics between two of our members. The 3rd member was finishing the XML implementation. Our design had a single class containing various "scripts", such as opening a window, doing a menu item, etc. The scripts for our topics would use these generic functions.

Design Notes:
The main design changes for this milestone was the addition of methods to the DemonstrationEngine class (as well as some small changes to Topic and TopicStep for XML functionality). We had intentially waited until this milestone to add these methods, since we had no idea during M3 what kind of scripts we would need. We also added the class InterpolateableString based on Jeff's lecture slides.

Observations:
Our problems for this milestone came from wrapping our demonstration scripts in animations. One of our demonstrations was relatively unstable since it got executed out of order due to the delay caused by animations; keep in mind that the Scheduler runs animations in parallel, not sequentially. For this milestone, going to class was key; Jeff provided solutions to some of the harder animated demonstrations.

Code Snippets:
We had a hard time getting the PluggableTextMorph to update after having an animation type text in it. Using updateFromParagraph was the trick (where pTextMorph is a PluggableTextMorph):

tMorph _ (((pTextMorph submorphs select: [:morph | morph class = TransformMorph]) at: 1)
    submorphs select: [:morph | morph class = TextMorphForEditView]) at: 1.
tMorph editor replace: (1 to: (tMorph editor text size))
    with: (Text fromString: 'some text')
    and: [].
tMorph editor selectFrom: 0 to: 0.
tMorph updateFromParagraph.


Screenshot:
No screenshot for this milestone, so here's another from M4.

Uploaded Image: m5-image1.gif

Downloads:
M5.zip: code, MDLs, documentation, and XML tasks


Link to this Page