better user interface when asking for a revision to compare.
authorClaus Gittinger <cg@exept.de>
Thu, 13 Jul 2000 17:48:58 +0200
changeset 934 4f06b1db2ca1
parent 933 84fd7806afaf
child 935 f5a8e98c8730
better user interface when asking for a revision to compare.
SourceCodeManagerUtilities.st
--- a/SourceCodeManagerUtilities.st	Thu Jul 13 10:06:55 2000 +0200
+++ b/SourceCodeManagerUtilities.st	Thu Jul 13 17:48:58 2000 +0200
@@ -177,6 +177,121 @@
     "
 !
 
+askForRevisionToCompare:boxText title:title class:aClass
+    "open a dialog asking for a containers revision;
+     return a revision number, or nil if canceled."
+
+    |mgr sourceInfo module package fileName|
+
+    mgr := aClass sourceCodeManager.
+    sourceInfo := mgr sourceInfoOfClass:aClass.
+    sourceInfo isNil ifTrue:[^ nil].
+
+    package := mgr packageFromSourceInfo:sourceInfo.
+    module := mgr moduleFromSourceInfo:sourceInfo.  
+    fileName := mgr containerFromSourceInfo:sourceInfo.
+    ^ self
+        askForRevisionToCompare:boxText 
+        title:title 
+        class:aClass 
+        manager:mgr 
+        module:module package:package fileName:fileName
+
+    "
+     SourceCodeManagerUtilities
+        askForRevisionToCompare:'enter revision'
+        title:'revision'
+        class:Array
+    "
+!
+
+askForRevisionToCompare:boxText title:title class:clsOrNil manager:aSourceCodeManager module:module package:package fileName:fileName
+    "open a dialog asking for a containers revision;
+     return a revision number, or nil if canceled."
+
+    |partialLog revisions items newestRev
+     box y component resources 
+     revisionHolder|
+
+    partialLog := aSourceCodeManager
+        revisionLogOf:clsOrNil
+        numberOfRevisions:20
+        fileName:fileName
+        directory:package 
+        module:module.
+    partialLog notNil ifTrue:[
+        newestRev := partialLog at:#newestRevision.
+        revisions := partialLog at:#revisions.
+        items := revisions collect:[:each | |rev date who|
+                                        rev := each at:#revision.
+                                        date := each at:#date.
+                                        who := each at:#author.
+                                        rev asText allBold , ' [' , date , ' by ' , who , ']'
+                                   ].
+        revisions := revisions collect:[:each | each at:#revision].
+    ] ifFalse:[
+        newestRev := aSourceCodeManager newestRevisionInFile:fileName directory:package module:module.
+        revisions := items := nil.
+    ].
+
+    revisionHolder  := newestRev asValue.
+    resources := ResourcePack for:self.
+
+    revisionHolder onChangeEvaluate:[
+        "/ cut off everything after revision
+        |s first|
+
+        s := revisionHolder value.
+        first := s asCollectionOfWords first string.
+        first ~= s ifTrue:[
+            revisionHolder value:first
+        ]
+    ].
+
+    "/
+    "/ open a dialog for this
+    "/
+    box := DialogBox new.
+    box label:title.
+
+    component := box addTextLabel:boxText withCRs.
+    component adjust:#left; borderWidth:0.
+    box addVerticalSpace.
+    box addVerticalSpace.
+
+    y := box yPosition.
+    component := box addTextLabel:(resources string:'Revision:').
+    component width:0.4; adjust:#right.
+    box yPosition:y.
+    component := box addComboBoxOn:revisionHolder tabable:true.
+    component list:items.
+    component width:0.6; left:0.4; immediateAccept:true; acceptOnLeave:false; cursorMovementWhenUpdating:#beginOfLine.
+
+    box addVerticalSpace.
+
+    box addAbortAndOkButtons.
+    box showAtPointer.
+
+    box accepted ifFalse:[
+        box destroy.
+        ^ nil
+    ].
+    box destroy.
+
+    ^ revisionHolder value withoutSpaces.
+
+    "
+     SourceCodeManagerUtilities
+        askForRevisionToCompare:'enter revision'
+        title:'revision'
+        class:nil
+        manager:SourceCodeManager 
+        module:'stx'
+        package:'libbasic'
+        fileName:'Array.st'
+    "
+!
+
 checkinClass:aClass
     "check a class into the source repository.
      Asks interactively for log-message."
@@ -779,5 +894,5 @@
 !SourceCodeManagerUtilities class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.12 2000-07-13 08:06:55 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.13 2000-07-13 15:48:58 cg Exp $'
 ! !