ChangesBrowser.st
changeset 1706 dd888c645873
parent 1670 c3915af3f7f6
child 1713 f6a93c02e953
--- a/ChangesBrowser.st	Thu Jun 18 18:44:21 1998 +0200
+++ b/ChangesBrowser.st	Thu Jun 18 22:32:54 1998 +0200
@@ -16,7 +16,7 @@
 		changeIsFollowupMethodChange anyChanges changeNrShown
 		changeNrProcessed skipSignal compareChanges compareCheckBox
 		changeFileSize changeFileTimestamp checkBlock changeTimeStamps
-		tabSpec autoUpdate editingClassSource'
+		tabSpec autoUpdate editingClassSource lastSearchType'
 	classVariableNames:'CompressSnapshotInfo'
 	poolDictionaries:''
 	category:'Interface-Browsers'
@@ -234,28 +234,28 @@
     <resource: #keyboard (#Delete #BackSpace #Accept #Find #FindPrev #FindNext)>
 
     (key == #Delete or:[key == #BackSpace]) ifTrue:[
-	self doDelete.
-	^ self
+        self doDelete.
+        ^ self
     ].
     (key == #Accept) ifTrue:[
-	self doApply.
-	^ self
+        self doApply.
+        ^ self
     ].
     (key == #Find) ifTrue:[
-	self findClass.
-	^ self
+        self findClass.
+        ^ self
     ].
     (key == #FindPrev) ifTrue:[
-	self findPreviousForClass.
-	^ self
+        self findPrevious.
+        ^ self
     ].
     (key == #FindNext) ifTrue:[
-	self findNextForClass.
-	^ self
+        self findNext.
+        ^ self
     ].
     changeListView keyPress:key x:x y:y
 
-    "Modified: 8.4.1997 / 11:01:38 / cg"
+    "Modified: / 18.6.1998 / 22:15:36 / cg"
 ! !
 
 !ChangesBrowser methodsFor:'help '!
@@ -297,6 +297,31 @@
 
     |items m|
 
+    self sensor ctrlDown ifTrue:[
+        lastSearchType == #selector ifTrue:[
+            items := #(
+                              ('search class'                 findClass             #Find         )
+                              ('next for this class'          findNextForClass                    )
+                              ('previous for this class'      findPreviousForClass                )
+                              ('-'                                                                )
+                              ('search selector'              findSelector                        )
+                              ('next with this selector'      findNextForSelector     #FindNext   )
+                              ('previous with this selector'  findPreviousForSelector #FindPrev   )
+                     ).
+        ] ifFalse:[
+            items := #(
+                              ('search class'                 findClass             #Find         )
+                              ('next for this class'          findNextForClass      #FindNext     )
+                              ('previous for this class'      findPreviousForClass  #FindPrev     )
+                              ('-'                                                                )
+                              ('search selector'              findSelector                        )
+                              ('next with this selector'      findNextForSelector                 )
+                              ('previous with this selector'  findPreviousForSelector             )
+                     ).
+        ].
+        ^ PopUpMenu itemList:items resources:resources.
+    ].
+
     items := #(
                       ('apply'                        doApply                    Accept)
                       ('apply to end'                 doApplyRest                      )
@@ -375,7 +400,7 @@
     ^ m
 
     "Modified: / 6.9.1995 / 17:14:22 / claus"
-    "Modified: / 21.5.1998 / 16:04:05 / cg"
+    "Modified: / 18.6.1998 / 22:28:34 / cg"
 !
 
 compare:aBoolean
@@ -2490,37 +2515,124 @@
 findClass
     |nm current savedCursor search|
 
+    lastSearchType := #class.
+
     changeNrShown notNil ifTrue:[
-	current := self classNameOfChange:changeNrShown.
+        current := self classNameOfChange:changeNrShown.
     ].
     nm := Dialog 
-	    request:'class to search for:' 
-	    initialAnswer:current
-	    onCancel:nil.
+            request:'class to search for:' 
+            initialAnswer:current
+            onCancel:nil.
     nm isNil ifTrue:[
-	^ self
+        ^ self
     ].
 
     changeNrShown isNil ifTrue:[
-	search := 1.
+        search := 1.
     ] ifFalse:[
-	search := changeNrShown + 1
+        search := changeNrShown + 1
     ].
 
     self withCursor:Cursor questionMark do:[
-	|lastNr cls nr thisClass |
-
-	lastNr := self numberOfChanges.
-	nr := search.
-	[nr <= lastNr] whileTrue:[
-	    thisClass := self classNameOfChange:nr.
-	    thisClass = nm ifTrue:[
-		changeListView setSelection:nr.
-		self changeSelection:nr.
-		^ self
-	    ].
-	    nr := nr + 1.
-	].
+        |lastNr nr thisClass |
+
+        lastNr := self numberOfChanges.
+        nr := search.
+        [nr <= lastNr] whileTrue:[
+            thisClass := self classNameOfChange:nr.
+            (thisClass = nm
+            or:[nm includesMatchCharacters and:[nm match:thisClass]]) ifTrue:[
+                changeListView setSelection:nr.
+                self changeSelection:nr.
+                ^ self
+            ].
+            nr := nr + 1.
+        ].
+    ].
+    self beep.
+
+    savedCursor := cursor.
+    self cursor:(Cursor cross).
+    Delay waitForMilliseconds:300.
+    self cursor:savedCursor
+
+    "Created: / 8.4.1997 / 11:00:16 / cg"
+    "Modified: / 18.4.1997 / 12:47:52 / stefan"
+    "Modified: / 18.6.1998 / 22:27:33 / cg"
+!
+
+findNext
+    lastSearchType == #selector ifTrue:[
+        ^ self findNextForSelector
+    ].
+    ^ self findNextForClass
+
+    "Created: / 18.6.1998 / 22:15:00 / cg"
+    "Modified: / 18.6.1998 / 22:15:25 / cg"
+!
+
+findNextForClass
+    |savedCursor|
+
+    lastSearchType := #class.
+    changeNrShown isNil ifTrue:[^ self].
+
+    self withCursor:Cursor questionMark do:[
+        |lastNr cls nr thisClass |
+
+        cls := self classNameOfChange:changeNrShown.
+        cls isNil ifTrue:[^ self].
+
+        lastNr := self numberOfChanges.
+        nr := changeNrShown + 1.
+        [nr <= lastNr] whileTrue:[
+            thisClass := self classNameOfChange:nr.
+            (thisClass = cls
+            or:[cls includesMatchCharacters and:[cls match:thisClass]]) ifTrue:[
+                changeListView setSelection:nr .
+                self changeSelection:nr.
+                ^ self
+            ].
+            nr := nr + 1.
+        ].
+    ].
+    self beep.
+
+    savedCursor := cursor.
+    self cursor:(Cursor cross).
+    Delay waitForMilliseconds:300.
+    self cursor:savedCursor
+
+    "Created: / 21.1.1997 / 22:28:07 / cg"
+    "Modified: / 18.4.1997 / 12:48:18 / stefan"
+    "Modified: / 18.6.1998 / 22:29:40 / cg"
+!
+
+findNextForSelector
+    |savedCursor|
+
+    lastSearchType := #selector.
+    changeNrShown isNil ifTrue:[^ self].
+
+    self withCursor:Cursor questionMark do:[
+        |lastNr sel nr thisSelector |
+
+        sel := self selectorOfMethodChange:changeNrShown.
+        sel isNil ifTrue:[^ self].
+
+        lastNr := self numberOfChanges.
+        nr := changeNrShown + 1.
+        [nr <= lastNr] whileTrue:[
+            thisSelector := self classNameOfChange:nr.
+            (thisSelector = sel
+            or:[sel includesMatchCharacters and:[sel match:thisSelector]]) ifTrue:[
+                changeListView setSelection:nr .
+                self changeSelection:nr.
+                ^ self
+            ].
+            nr := nr + 1.
+        ].
     ].
     self beep.
 
@@ -2529,33 +2641,48 @@
     Delay waitForMilliseconds:300.
     self cursor:savedCursor
 
-    "Created: 8.4.1997 / 11:00:16 / cg"
-    "Modified: 18.4.1997 / 12:47:52 / stefan"
-    "Modified: 5.8.1997 / 23:13:39 / cg"
+    "Modified: / 18.4.1997 / 12:48:18 / stefan"
+    "Created: / 18.6.1998 / 22:17:37 / cg"
+    "Modified: / 18.6.1998 / 22:29:33 / cg"
 !
 
-findNextForClass
+findPrevious
+    lastSearchType == #selector ifTrue:[
+        ^ self findPreviousForSelector
+    ].
+    ^ self findPreviousForClass
+
+    "Created: / 18.6.1998 / 22:15:15 / cg"
+!
+
+findPreviousForClass
     |savedCursor|
 
+    lastSearchType := #class.
     changeNrShown isNil ifTrue:[^ self].
 
     self withCursor:Cursor questionMark do:[
-	|lastNr cls nr thisClass |
-
-	cls := self classNameOfChange:changeNrShown.
-	cls isNil ifTrue:[^ self].
-
-	lastNr := self numberOfChanges.
-	nr := changeNrShown + 1.
-	[nr <= lastNr] whileTrue:[
-	    thisClass := self classNameOfChange:nr.
-	    thisClass = cls ifTrue:[
-		changeListView setSelection:nr .
-		self changeSelection:nr.
-		^ self
-	    ].
-	    nr := nr + 1.
-	].
+        |cls nr thisClass |
+
+        Object userInterruptSignal handle:[:ex |
+            self beep.
+            ^ self
+        ] do:[
+            cls := self classNameOfChange:changeNrShown.
+            cls isNil ifTrue:[^ self].
+
+            nr := changeNrShown - 1.
+            [nr >= 1] whileTrue:[
+                thisClass := self classNameOfChange:nr.
+                (thisClass = cls
+                or:[cls includesMatchCharacters and:[cls match:thisClass]]) ifTrue:[
+                    changeListView setSelection:nr .
+                    self changeSelection:nr.
+                    ^ self
+                ].
+                nr := nr - 1.
+            ].
+        ]
     ].
     self beep.
 
@@ -2564,36 +2691,38 @@
     Delay waitForMilliseconds:300.
     self cursor:savedCursor
 
-    "Created: 21.1.1997 / 22:28:07 / cg"
-    "Modified: 18.4.1997 / 12:48:18 / stefan"
+    "Modified: / 18.4.1997 / 12:48:41 / stefan"
+    "Modified: / 18.6.1998 / 22:29:44 / cg"
 !
 
-findPreviousForClass
+findPreviousForSelector
     |savedCursor|
 
+    lastSearchType := #selector.
     changeNrShown isNil ifTrue:[^ self].
 
     self withCursor:Cursor questionMark do:[
-	|cls nr thisClass |
-
-	Object userInterruptSignal handle:[:ex |
-	    self beep.
-	    ^ self
-	] do:[
-	    cls := self classNameOfChange:changeNrShown.
-	    cls isNil ifTrue:[^ self].
-
-	    nr := changeNrShown - 1.
-	    [nr >= 1] whileTrue:[
-		thisClass := self classNameOfChange:nr.
-		thisClass = cls ifTrue:[
-		    changeListView setSelection:nr .
-		    self changeSelection:nr.
-		    ^ self
-		].
-		nr := nr - 1.
-	    ].
-	]
+        |sel nr thisSelector |
+
+        Object userInterruptSignal handle:[:ex |
+            self beep.
+            ^ self
+        ] do:[
+            sel := self selectorOfMethodChange:changeNrShown.
+            sel isNil ifTrue:[^ self].
+
+            nr := changeNrShown - 1.
+            [nr >= 1] whileTrue:[
+                thisSelector := self selectorOfMethodChange:nr.
+                (thisSelector = sel
+                or:[sel includesMatchCharacters and:[sel match:thisSelector]]) ifTrue:[
+                    changeListView setSelection:nr .
+                    self changeSelection:nr.
+                    ^ self
+                ].
+                nr := nr - 1.
+            ].
+        ]
     ].
     self beep.
 
@@ -2602,8 +2731,59 @@
     Delay waitForMilliseconds:300.
     self cursor:savedCursor
 
-    "Modified: 2.4.1997 / 18:17:02 / cg"
-    "Modified: 18.4.1997 / 12:48:41 / stefan"
+    "Modified: / 18.4.1997 / 12:48:41 / stefan"
+    "Created: / 18.6.1998 / 22:18:19 / cg"
+    "Modified: / 18.6.1998 / 22:29:29 / cg"
+!
+
+findSelector
+    |sel current savedCursor search|
+
+    lastSearchType := #selector.
+
+    changeNrShown notNil ifTrue:[
+        current := self selectorOfMethodChange:changeNrShown.
+    ].
+    sel := Dialog 
+            request:'selector to search for:' 
+            initialAnswer:current
+            onCancel:nil.
+    sel isNil ifTrue:[
+        ^ self
+    ].
+
+    changeNrShown isNil ifTrue:[
+        search := 1.
+    ] ifFalse:[
+        search := changeNrShown + 1
+    ].
+
+    self withCursor:Cursor questionMark do:[
+        |lastNr cls nr thisSelector |
+
+        lastNr := self numberOfChanges.
+        nr := search.
+        [nr <= lastNr] whileTrue:[
+            thisSelector := self selectorOfMethodChange:nr.
+            (thisSelector = sel
+            or:[sel includesMatchCharacters and:[sel match:thisSelector]]) ifTrue:[
+                changeListView setSelection:nr.
+                self changeSelection:nr.
+                ^ self
+            ].
+            nr := nr + 1.
+        ].
+    ].
+    self beep.
+
+    savedCursor := cursor.
+    self cursor:(Cursor cross).
+    Delay waitForMilliseconds:300.
+    self cursor:savedCursor
+
+    "Modified: / 18.4.1997 / 12:47:52 / stefan"
+    "Created: / 18.6.1998 / 22:17:04 / cg"
+    "Modified: / 18.6.1998 / 22:27:44 / cg"
 !
 
 noChangesAllowed
@@ -2649,5 +2829,5 @@
 !ChangesBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.137 1998-05-21 14:05:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.138 1998-06-18 20:32:54 cg Exp $'
 ! !