[net.lang.st80] Sharing History goodie

axel@tub.UUCP (04/03/86)

Subject: Sharing History goodie

Hi !!!!!!

I'd like to share a goodie with you, which I  developed the  last
week.  It's an offspring of my "Diplomarbeit" and I use it to ex-
amine the development  of  object  oriented  applications written
in ST80.

It may be used to access a Smalltalk-formatted file in  a  struc-
tured,  graphical,  way.  In some aspects it may be used like the
ChangeManagement Browser which is  provided  with  Version  2  of
ST80.  So, I think it is quit useful, for the rest of us, hacking
in ST80, Version 1, on the Macintosh.

Because I use the line  drawing  capabilities  of  the  Macintosh
toolbox,  you  will  have to make some changes to this goodie, if
you want to use it in a different system.  It should be no  prob-
lem,  I  just  have  no  time  doing  it.  (Hints for that are in
ChangesHistory class|readMe).

The History goodie was developed on my 1MB Mac with a 20MB Hyper-
drive.   I  don't know whether it will fitt into the 512KB image,
its size is about 450 ObjectPointers and 7500 words.  The largest
file  I  scanned until now was about 327KB long (a changes file),
but if you have enough  patience  you  may  examine  even  bigger
files.

The   following    text    is    copied    from    ChangesHistory
class|howToUseIt,  to  give  you  some more information about the
goodie. The History.st sources are contained in my next mail.


Hope you'll enjoy it
	axel    (axel@tub.UUCP)

PS: I currently have no access to a  Version2  system  and  would
like  to  get some information how the source file is scanned and
what data structures are build by the  ChangeManagement  Browser.
How fast is it compared to the goodie?

-------------------------------------------------------
ChangesHistory class methodsFor: 'copyright/documentation'

howToUseIt
	" A ChangesHistoryView is  opened  by  several messages to the
	ChangesHistory class.(See ChangesHistory|instance
	creation/examples).  It is possible  to open the view on an
	arbitrary file, or to recover i-characters from the current
	changes file.


	The view consists of 2 panes, in the upper pane you  will see a
	visual representation of the history, namely horizontal bars in
	four categories, and in  the  lower  pane you  will  see source
	text, if an entry in the upper pane is selected.  

	The leftmost category  in  the  upper  pane represents
	actions  which have implications on the class hierarchy, e.g.
	the first definition of a class,  changes in the subclass
	relationship and renaming of classes will appear here.  
	
	The second  category  shows actions which result   in   the
	change   of   a   class description,   e.g.  adding/removing
	protocol and  variables, comments  of  a class.  

	The  third category  represents changes in the source text of methods.
	The first definition of a method goes in the second category
	(protocol change), all further definitions will go in the
	third  category.   All  the rest  of  expressions  and actions
	appear in the fourth category, e.g. doIt's from  testing,
	snapshot  and  quit messages.   
	
	The first time the view comes up, all entries appear in black,
	they are emphasized and may be selected by pointing   and
	clicking   with  the  mouse.

	A  selection results in a change of  the  second  pane,  which  always
	displays the source text of the selection (OK. don' bother a selection
	is currently not highlighted).  If the entries  seem to small
	for you to be properly selected, use the bigger/smaller command
	of the pop  up  menu  of  this pane.  
	The searchUp and searchDown command let you search for the next
	emphasized entry, which will be selected and its source text
	displayed.  The two buttons at the bottom of the upper pane let
	you choose restrict the  emphasized entries  to  those of the
	same class (class button) or of the same detail (detail
	button),  or  both.  
	
	Associated with   each   entry   is   its detail  name:  
	#subclass:  	  --> class definitions 
	#rename:  	  --> class   renaming 
	#removeSelector:  --> removing methods from a class 
	method selector   --> different    for   each   method definition   
	#snapshot 	  --> snapshot     (at category four)     
	#quit 		  --> quit    (also at    category four)    
	#DoIt 		  --> all other expressions


	All entries are linked to the class they belong  to,  except
	most of the doIt's in category four.  Only in obvious cases,
	when the receiver is in the set of previously used classes, the
	doIts get their class link as well.


	If you make a selection and then choose one  of  the  two
	buttons all entries which are not equal to the selection, in
	the sense of the class/detail relationship, are  deemphasized.
	You may not select deemphasized entries unless you press the
	shift key while  clicking  the  mouse.  
	The searchEntry command  in the pum gives you a template for
	searching entries from the beginning of the file. It will
	select  and  scroll to the entry, or will flash the view.  
	All emphasized entries, or those  of  certain categories may  be
	transferred  to  the edit pane.  Use the editEmphasized,
	hierarchy  level,  class level,  and method   level command
	in  the pum for this purpose. (The transfer happens via a
	temporary file, so don't get  upset  when  the disk  starts
	running  here).  
	The transferred entries in the edit pane are headed by a string
	which describes  the entries.  You may perform the
	Smalltalk-traditional editing command in the editPane, even it
	won't have  any  implications  on  the source.  The command
	fileItIn of the editPane pum will fileIn the current
	selection.  The command  fileIn  will fileIn the entire content
	of the editPane.  The command fileOut will ask you for a
	filename and will fileOut the entire content of the edit pane."

steve@lpi3230.UUCP (Steve Burbeck) (04/10/86)

>I'd like to share a goodie with you, which I  developed the  last
>week.  It's an offspring of my "Diplomarbeit" and I use it to ex-
>amine the development  of  object  oriented  applications written
>in ST80.

The posting didn't seem to make it this far intact.  We only received the
first 129 lines.  Could you please repost?  The goodie sounds useful, and
I would like to try it on our IMB PC/AT Version 2 system.

						Steve Burbeck
						Linus Pauling Institute
						440 Page Mill Road
						Palo Alto, CA 94306
						(415)327-4064