TODO: - purpose statement for each interface method - one day, not now: blank out error messages somehow on the next event - one day, not now: a common abstract class ;; Information about the union's common fields: (add-button info-pane "Add Common Field" (lambda (x e) (send field-panel add))) (define field-panel (new field-panel% (parent info-pane) (window this) (error-message (lambda (x) (error-message x))))) -------------------------------------------------------------------------------- adapted wizard to interfaces (from abstract classes) unions are interfaces plus implementing classes signatures of common methods | construction attributes --- presentation only | Languages | template toString diagram ------------------------------------------------------------------ BEGINNER | -- -- okay INTERMEDIATE | no "public" no "public" okay PROFESSIONAL | okay okay okay -------------------------------------------------------------------------------- view0: design interfaces by hand abstract into functions abstract common pieces via multiple values view: replace the multiple values abstraction with classes data-def0 everything is a list data-def unions (dt) becomes a struct so that I could add common fields draw-txt0 explorative prototype