ChangesBrowser.st
changeset 49 6fe62433cfa3
parent 45 950b84ba89e6
child 50 3106c0de1707
--- a/ChangesBrowser.st	Fri Oct 28 04:30:49 1994 +0100
+++ b/ChangesBrowser.st	Fri Oct 28 04:31:16 1994 +0100
@@ -25,7 +25,7 @@
 COPYRIGHT (c) 1990 by Claus Gittinger
 	    All Rights Reserved
 
-$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.16 1994-10-10 03:15:12 claus Exp $
+$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.17 1994-10-28 03:29:26 claus Exp $
 '!
 
 !ChangesBrowser class methodsFor:'documentation'!
@@ -46,7 +46,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.16 1994-10-10 03:15:12 claus Exp $
+$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.17 1994-10-28 03:29:26 claus Exp $
 "
 !
 
@@ -71,7 +71,7 @@
 openOn:aFileName
     "create c changes browser on a change file"
 
-    ^ ((self new label:'Changes Browser:', aFileName) changeFileName:aFileName) open
+    ^ ((self new label:'Changes Browser: ', aFileName) changeFileName:aFileName) open
 ! !
 
 !ChangesBrowser class methodsFor:'behavior'!
@@ -295,7 +295,7 @@
 
 autoSelect:changeNr
     self class autoSelectNext ifTrue:[
-	(changeNr <= changeChunks size) ifTrue:[
+	(changeNr <= changePositions size) ifTrue:[
 	    self clearCodeView.
 	    changeListView selection:changeNr.
 	    self changeSelection:changeNr.
@@ -306,12 +306,15 @@
 !
 
 autoSelectOrEnd:changeNr
-    changeNr < changeChunks size ifTrue:[
+    |last|
+
+    last := changePositions size.
+    changeNr < last ifTrue:[
 	self autoSelect:changeNr
     ] ifFalse:[
 	self clearCodeView.
-	changeListView selection:changeChunks size.
-	self changeSelection:changeChunks size.
+	changeListView selection:last .
+	self changeSelection:last .
     ]
 !
 
@@ -319,13 +322,19 @@
     "read the changes file, create a list of header-lines (changeChunks)
      and a list of chunk-positions (changePositions)"
 
-    |aStream index chunkText headerLine done sawExcla chunkPos excla
-     myProcess myPriority p sel cls text first category|
+     |aStream index chunkText headerLine done sawExcla chunkPos excla
+     myProcess myPriority p sel cls text first category tabSpec entry|
 
     aStream := FileStream readonlyFileNamed:changeFileName.
     aStream isNil ifTrue:[^ nil].
 
     self withCursor:(Cursor read) do:[
+	tabSpec := TabulatorSpecification new.
+	tabSpec unit:#inch.
+	tabSpec positions:#(0        3.5   4.5 ).
+	"                   cls>>sel type  info "
+	tabSpec align:    #(#left    #left #left).
+
 	"
 	 this is a time consuming operation (especially, if reading an
 	 NFS-mounted directory; therefore lower my priority ...
@@ -342,6 +351,8 @@
 	    excla := aStream class chunkSeparator.
 
 	    [aStream atEnd] whileFalse:[
+		|entry line|
+
 		"
 		 get a chunk (separated by excla)
 		"
@@ -368,14 +379,18 @@
 
 		    changeChunks add:chunkText.
 		    changePositions add:chunkPos.
+		    headerLine := entry := nil.
 
 		    sawExcla ifFalse:[
 			(chunkText startsWith:'''---- snap') ifFalse:[
-			    headerLine := chunkText , ' (doIt)'
+			    headerLine := chunkText , ' (doIt)'.
+		entry := MultiColListEntry new.
+		entry tabulatorSpecification:tabSpec.
+		entry colAt:1 put:(chunkText contractTo:40).
+		entry colAt:2 put:'(doIt)'.
 			] ifTrue:[
 			    headerLine := chunkText
 			].
-			changeHeaderLines add:headerLine.
 		    ] ifTrue:[
 			"
 			 method definitions actually consist of
@@ -427,14 +442,30 @@
 					    sel := p selector.
 					]
 				    ].
+		entry := MultiColListEntry new.
+		entry tabulatorSpecification:tabSpec.
+		sel isNil ifTrue:[
+		    entry colAt:1 put:(chunkText contractTo:40).
+		    entry colAt:2 put:'(change)'.
+		] ifFalse:[
+		    entry colAt:1 put:(cls , ' ' , (sel contractTo:40)).
+		    entry colAt:2 put:'(change category: ''' , category , ''')'.
+		].
 				    sel isNil ifTrue:[
-					changeHeaderLines add:chunkText , ' (change)'.
+					headerLine := chunkText , ' (change)'.
 				    ] ifFalse:[
-					changeHeaderLines add:cls , ' ' , sel , ' ' , '(change category: ''' , category , ''')'.
+					headerLine := cls , ' ' , sel , ' ' , '(change category: ''' , category , ''')'.
 				    ]
 				]
 			    ]
 			]
+		    ].
+		    entry notNil ifTrue:[
+			changeHeaderLines add:entry
+		    ] ifFalse:[
+			headerLine notNil ifTrue:[
+			    changeHeaderLines add:headerLine
+			]
 		    ]
 		]
 	    ].
@@ -498,7 +529,8 @@
     "extract type-information from changes and stuff into top selection
      view"
 
-    changeListView contents:changeHeaderLines "changeChunks".
+"/    changeListView list:changeHeaderLines "changeChunks".
+changeListView setList:changeHeaderLines expandTabs:false.
     self disableMenuEntries
 !
 
@@ -528,7 +560,7 @@
 
     self withCursor:(Cursor write) do:[
 	excla := inStream class chunkSeparator.
-	1 to:(changeChunks size) do:[:index |
+	1 to:(changePositions size) do:[:index |
 	    inStream position:(changePositions at:index).
 	    sawExcla := inStream peekFor:excla.
 	    chunk := inStream nextChunk.
@@ -873,7 +905,7 @@
 	fileBox action:[:fileName |
 			    |thisClassName|
 			    self withCursor:(Cursor write) do:[
-				startNr to:(changeChunks size) do:[:changeNr |
+				startNr to:(changePositions size) do:[:changeNr |
 				    thisClassName := self classNameOfChange:changeNr.
 				    thisClassName = aClassName ifTrue:[
 					changeListView selection:changeNr.
@@ -933,7 +965,7 @@
 	fileBox abortText:'cancel'.
 	fileBox action:[:fileName |
 			    self withCursor:(Cursor write) do:[
-				changeNr to:(changeChunks size) do:[:changeNr |
+				changeNr to:(changePositions size) do:[:changeNr |
 				    changeListView selection:changeNr.
 				    (self appendChange:changeNr toFile:fileName) ifFalse:[
 					^ self
@@ -1065,7 +1097,41 @@
 		changeListView selection:nil.
 		self silentDeleteChangesFor:classNameToDelete 
 				       from:changeNr
-					 to:(changeChunks size).
+					 to:(changePositions size).
+		self setChangeList. "/changeListView setContents:changeChunks.
+		self autoSelectOrEnd:changeNr
+	    ]
+	]
+    ]
+!
+
+doDeleteRest
+    "delete all changes from current to the end"
+
+    |changeNr|
+
+    changeNr := changeListView selection.
+    changeNr notNil ifTrue:[
+	self deleteChangesFrom:changeNr to:(changePositions size).
+	self clearCodeView.
+	self autoSelectOrEnd:changeNr-1
+    ]
+!
+
+doDeleteClassAll
+    "delete all changes with same class as currently selected change"
+
+    |changeNr classNameToDelete|
+
+    changeNr := changeListView selection.
+    changeNr notNil ifTrue:[
+	self withCursor:(Cursor execute) do:[
+	    classNameToDelete := self classNameOfChange:changeNr.
+	    classNameToDelete notNil ifTrue:[
+		changeListView selection:nil.
+		self silentDeleteChangesFor:classNameToDelete
+				       from:1
+					 to:(changePositions size).
 		self setChangeList. "/changeListView setContents:changeChunks.
 		self autoSelectOrEnd:changeNr
 	    ]
@@ -1087,19 +1153,6 @@
     ]
 !
 
-doDeleteRest
-    "delete all changes from current to the end"
-
-    |changeNr|
-
-    changeNr := changeListView selection.
-    changeNr notNil ifTrue:[
-	self deleteChangesFrom:changeNr to:(changeChunks size).
-	self clearCodeView.
-	self autoSelectOrEnd:changeNr-1
-    ]
-!
-
 doCompress
     "compress the change-set; this replaces multiple method-changes by the last 
      (i.e. the most recent) change"
@@ -1226,8 +1279,8 @@
 		index := index - 1
 	    ].
 	    self setChangeList.
-	    changeListView firstLineShown > changeChunks size ifTrue:[
-		changeListView makeLineVisible:changeChunks size
+	    changeListView firstLineShown > changePositions size ifTrue:[
+		changeListView makeLineVisible:changePositions size
 	    ].
 	    self clearCodeView
 	]
@@ -1243,27 +1296,6 @@
     ]
 !
 
-doDeleteClassAll
-    "delete all changes with same class as currently selected change"
-
-    |changeNr classNameToDelete|
-
-    changeNr := changeListView selection.
-    changeNr notNil ifTrue:[
-	self withCursor:(Cursor execute) do:[
-	    classNameToDelete := self classNameOfChange:changeNr.
-	    classNameToDelete notNil ifTrue:[
-		changeListView selection:nil.
-		self silentDeleteChangesFor:classNameToDelete
-				       from:1
-					 to:(changeChunks size).
-		self setChangeList. "/changeListView setContents:changeChunks.
-		self autoSelectOrEnd:changeNr
-	    ]
-	]
-    ]
-!
-
 doCompare
     "compare change with current system version
      - give a note in transcript"