[comp.lang.smalltalk] Smalltalk V/286 to Smalltalk 80

fchan@watvlsi.waterloo.edu (Francis Chan) (03/02/89)

This is another attempt to solicit info regarding the porting of
ST-V/286 to ST-80. So far, all I've received are requests for me to
post a summary.

Surely, somebody out there must have done something similar??? 

I have an article which mentions some pertinent stuff.  The authors
ported their stuff from ST-V (not V/286) to ST-80:

The OFMspert Project (Its from July 88 issue of HOOPLA!)
by K.S. Rubin, P.M. Jones and C.M. Mitchell. (Summarized
without permission from authors.)

Essentially you:
{1} file out the source code into 2 files:
    (a) class defs and (b) methods

{2} Adjust syntax as necessary (apparently a mechanical
    process).

{3} File in the class defs. Class categories (ST-80) are
    added to the defs as they are being filed in.

{4} File in the methods. This is apparently another
    mechanical operation. Return expressions should not be
    ended with ".".

{5} Split large methods into smaller ones. 

{6} Add any classes native to ST-V that weren't in ST-80.
    The class they mentioned was the Pattern class.

{7} Test like crazy.

The authors indicated that the first 6 steps took approx.  15 hours for
2 experts to do (ported 33 classes and 291 methods to 244 classes(!!)
and 4902 methods (!!!!!)).  Apparently, the ST-V methods were larger
than most so a lot of splitting had to be done. The testing part (7)
took 120 hours.

This is helpful in itself in order to gauge the time.  However, I need
to know how compatible the window interfaces are. I have unfortunately
done some tweaking to the ST-V/286 window interface to do things like
closing "children" windows and objects when the parent is closed.

I have yet to receive our copy of ST-80 so I cannot look at the
source code for the interface.

Ok. Maybe some more direct questions may help make it easier to
answer.

(i) ST-V/286 has the concepts of buttons ... any equivalent in
    ST-80? (Not very important since use of menus can circumvent
    this)

(ii) ST-V/286 handles windows by using an OrderedCollection of
     dispatchers for the window instances. Does ST-80 do the same
     (sounds like the logical way of doing it)? I ask this because
     of the lack of definitions for similar classes in the "Blue
     book". The "Red book" mentions something brief on the
     ScreenController class.

(iii) ScreenController class: How does it know which window (view) is
      active? Is there a class (subclass) that is responsible for
      each browser that is then stored in a ScreenController
      variable?

(iv) Can someone knowledgeable in the ST-80 interface mention the
     classes involved in closing and opening of a window? How it
     handles cycling? Details needed...

Thanks.
Francis Chan

----------------------------------------------------------------------
fchan@swen1.waterloo.edu
fchan@watvlsi.waterloo.edu

johnson@p.cs.uiuc.edu (03/06/89)

I haven't used ST V much, but have used ST 80 a lot.

The Journal of Object-Oriented Programming had a paper on
Model/View/Controller in V1 N3 that describes the ST 80
user interface classes.  Basically, they are a lot like the
ones in ST V.  

(i) ST-80 has buttons.

(ii) In ST-80, ControlManager has an OrderedCollection of window
     instances and keeps track of which window is active.
(iii)ScreenController only manages a menu.

(iv) StandardSystemView and StandardSystemController manage the
     opening and closing of a window, resizing, cycling, etc.
     Once you get the image, you shouldn't have much trouble
     figuring out what is happening, since the general philosophy
     is similar to that of ST V.

Ralph Johnson