BrowserView.st
changeset 422 23db16b448fd
parent 408 33b1b3dfdac4
child 424 21ff3841f5a5
--- a/BrowserView.st	Sat Mar 02 18:59:00 1996 +0100
+++ b/BrowserView.st	Sat Mar 02 19:02:08 1996 +0100
@@ -473,120 +473,151 @@
 !
 
 classCategoryMenu
-    |specialMenu m labels selectors|
+    |specialMenu m labels selectors shorties|
 
     currentClassCategory notNil ifTrue:[
-	labels :=  #(
-			'fileOut each binary ...'
-			'-'
-			'overall history ...'
-			'-'
-			'checkin each ...'
-		    ).
-	selectors := #(
-			classCategoryFileOutBinaryEach
-			nil
-			classCategoryRepositoryHistory
-			nil
-			classCategoryCheckinEach
-		     ).
+        labels :=  #(
+                        'fileOut each binary ...'
+                        '-'
+                        'overall history ...'
+                        '-'
+                        'checkin each ...'
+                    ).
+        selectors := #(
+                        classCategoryFileOutBinaryEach
+                        nil
+                        classCategoryRepositoryHistory
+                        nil
+                        classCategoryCheckinEach
+                     ).
     ] ifFalse:[
-	labels :=  #(
-			'overall history ...'
-		    ).
-	selectors := #(
-			classCategoryRepositoryHistory
-		     ).
+        labels :=  #(
+                        'overall history ...'
+                    ).
+        selectors := #(
+                        classCategoryRepositoryHistory
+                     ).
     ].
 
     specialMenu := PopUpMenu 
-			labels:(resources array:labels)
-			selectors:selectors
-			receiver:self.
+                        labels:(resources array:labels)
+                        selectors:selectors
+                        receiver:self.
 
     device ctrlDown ifTrue:[
-	^ specialMenu
+        ^ specialMenu
     ].
 
     currentClassCategory isNil ifTrue:[
-	labels := #(
-		    'clone'
-		    'spawn full class'
-		    '-'
-		    'update'
-		    'find class ...'
-		    'find method ...'
-		    '-'
-		    'new class category ...'
-		    '-'
-		    'others ...'
-		   ).
-	selectors := #(
-		    classCategoryClone
-		    classCategorySpawnFullClass
-		    nil
-		    classCategoryUpdate
-		    classCategoryFindClass
-		    classCategoryFindMethod
-		    nil
-		    classCategoryNewCategory
-		    nil
-		    otherMenu
-		   ).
+        labels := #(
+                    'clone'
+                    'spawn full class'
+                    '-'
+                    'update'
+                    'find class ...'
+                    'find method ...'
+                    '-'
+                    'new class category ...'
+                    '-'
+                    'others ...'
+                   ).
+        selectors := #(
+                    classCategoryClone
+                    classCategorySpawnFullClass
+                    nil
+                    classCategoryUpdate
+                    classCategoryFindClass
+                    classCategoryFindMethod
+                    nil
+                    classCategoryNewCategory
+                    nil
+                    otherMenu
+                   ).
+        shorties := #(
+                    nil
+                    nil
+                    nil
+                    nil
+                    Find
+                    nil
+                    nil
+                    nil
+                    nil
+                    #'Ctrl'
+                   ).
     ] ifFalse:[
-	labels := #(
-		    'fileOut'
-		    'fileOut each'
-"/
-"/                      'fileOut binary'
-"/
-		    'printOut' 
-		    'printOut protocol'
-		    '-'
-		    'clone'
-		    'SPAWN_CATEGORY'
-		    'spawn full class'
-		    '-'
-		    'update'
-		    'find class ...'
-		    'find method ...'
-		    '-'
-		    'new class category ...'
-		    'rename ...'
-		    'remove'
-		    '-'
-		    'others ...'
-		   ).
-	selectors := #(
-		   classCategoryFileOut
-		   classCategoryFileOutEach
-		   classCategoryPrintOut
-		   classCategoryPrintOutProtocol
-		   nil
-		   classCategoryClone
-		   classCategorySpawn
-		   classCategorySpawnFullClass
-		   nil
-		   classCategoryUpdate
-		   classCategoryFindClass
-		   classCategoryFindMethod
-		   nil
-		   classCategoryNewCategory
-		   classCategoryRename
-		   classCategoryRemove
-		   nil
-		   otherMenu
-		   ).
+        labels := #(
+                    'fileOut'
+                    'fileOut each'
+                    'printOut' 
+                    'printOut protocol'
+                    '-'
+                    'clone'
+                    'SPAWN_CATEGORY'
+                    'spawn full class'
+                    '-'
+                    'update'
+                    'find class ...'
+                    'find method ...'
+                    '-'
+                    'new class category ...'
+                    'rename ...'
+                    'remove'
+                    '-'
+                    'others ...'
+                   ).
+        selectors := #(
+                   classCategoryFileOut
+                   classCategoryFileOutEach
+                   classCategoryPrintOut
+                   classCategoryPrintOutProtocol
+                   nil
+                   classCategoryClone
+                   classCategorySpawn
+                   classCategorySpawnFullClass
+                   nil
+                   classCategoryUpdate
+                   classCategoryFindClass
+                   classCategoryFindMethod
+                   nil
+                   classCategoryNewCategory
+                   classCategoryRename
+                   classCategoryRemove
+                   nil
+                   otherMenu
+                   ).
+        shorties := #(
+                    nil
+                    nil
+                    nil
+                    nil
+                    nil
+                    nil
+                    nil
+                    nil
+                    nil
+                    nil
+                    Find
+                    nil
+                    nil
+                    nil
+                    nil
+                    nil
+                    nil
+                    #'Ctrl'
+                   ).
     ].
 
     m := PopUpMenu 
-		labels:(resources array:labels)
-		selectors:selectors.
+                labels:(resources array:labels)
+                selectors:selectors
+                accelerators:shorties.
+
     m subMenuAt:#otherMenu put:specialMenu.
     ^ m
 
     "Created: 14.9.1995 / 10:50:17 / claus"
-    "Modified: 25.1.1996 / 17:29:30 / cg"
+    "Modified: 2.3.1996 / 16:20:33 / cg"
 !
 
 classCategoryNewCategory
@@ -1304,7 +1335,7 @@
 classMenu
     "sent by  classListView to ask for the menu"
 
-    |specialMenu labels selectors m|
+    |specialMenu labels selectors shorties m|
 
     labels :=  #(
                    'fileOut binary'
@@ -1473,6 +1504,8 @@
         ].
     ].
 
+    shorties := (Array new:labels size) , #(nil #'Ctrl').
+
     labels := labels , #(
                           '-'
                           'others ...'
@@ -1481,16 +1514,16 @@
                           nil
                           otherMenu
                         ).
-
     m := PopUpMenu 
             labels:(resources array:labels)
-            selectors:selectors.
+            selectors:selectors
+            accelerators:shorties.
 
     m subMenuAt:#otherMenu put:specialMenu.
 
     ^ m
 
-    "Modified: 24.2.1996 / 16:11:59 / cg"
+    "Modified: 2.3.1996 / 16:20:22 / cg"
 !
 
 classNewClass
@@ -3080,6 +3113,52 @@
     ^ aString copyFrom:(pos + 1)
 ! !
 
+!BrowserView methodsFor:'event handling'!
+
+handlesKeyPress:key inView:view
+    "this method is reached via delegation: are we prepared to handle
+     a keyPress in some other view ?"
+
+    <resource: #keyboard (#Find #Cmdh)>
+
+    |untranslatedKey|
+
+    view == classCategoryListView ifTrue:[
+        (key == #Find) ifTrue:[^ true].
+    ].
+
+    view == methodListView ifTrue:[
+        untranslatedKey := device keyboardMap keyAtValue:key ifAbsent:nil.
+        (untranslatedKey == #Cmdi) ifTrue:[^ true].
+        (untranslatedKey == #Cmds) ifTrue:[^ true].
+    ].
+    ^ false
+
+    "Created: 2.3.1996 / 14:33:30 / cg"
+    "Modified: 2.3.1996 / 16:13:14 / cg"
+!
+
+keyPress:key x:x y:y view:view
+    "this method is reached via delegation from the classCategoryListView"
+
+    <resource: #keyboard (#Find)>
+
+    |untranslatedKey|
+
+    view == classCategoryListView ifTrue:[
+        (key == #Find) ifTrue:[^ self classCategoryFindClass].
+    ].
+    view == methodListView ifTrue:[
+        untranslatedKey := device keyboardMap keyAtValue:key ifAbsent:nil.
+        (untranslatedKey == #Cmdi) ifTrue:[^ self methodImplementors].
+        (untranslatedKey == #Cmds) ifTrue:[^ self methodSenders].
+    ].
+    view keyPress:key x:x y:y
+
+    "Created: 2.3.1996 / 14:37:52 / cg"
+    "Modified: 2.3.1996 / 16:13:28 / cg"
+! !
+
 !BrowserView methodsFor:'help'!
 
 helpTextFor:aComponent
@@ -3311,16 +3390,34 @@
 createCodeViewIn:aView
     "setup the code view"
 
-    ^ self createCodeViewIn:aView at:0.25
-!
-
-createCodeViewIn:aView at:relY
+    ^ self createCodeViewIn:aView atY:0.25
+
+    "Modified: 2.3.1996 / 16:08:46 / cg"
+!
+
+createCodeViewIn:aView atY:relY
     "setup the code view"
     |v|
 
     v := HVScrollableView for:CodeView miniScrollerH:true miniScrollerV:false in:aView.
     v origin:(0.0 @ relY) corner:(1.0 @ 1.0).
     codeView := v scrolledView
+
+    "Created: 2.3.1996 / 16:09:03 / cg"
+!
+
+createMethodListViewIn:aView atX:relX
+    "setup the method list view"
+    |v|
+
+    v := HVScrollableView for:SelectionInListView miniScrollerH:true miniScrollerV:false in:aView.
+    v origin:(relX @ 0.0) corner:(1.0 @ 1.0).
+    methodListView := v scrolledView.
+    methodListView delegate:self.
+    ^ v
+
+    "Created: 2.3.1996 / 16:07:10 / cg"
+    "Modified: 2.3.1996 / 16:11:42 / cg"
 !
 
 createTogglesIn:aFrame
@@ -3405,14 +3502,15 @@
     |vpanel hpanel frame v|
 
     vpanel := VariableVerticalPanel origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) 
-		  in:self.
+                  in:self.
     hpanel := View origin:(0.0 @ 0.0) corner:(1.0 @ 0.25) in:vpanel.
 
     v := HVScrollableView for:SelectionInListView
-			  miniScrollerH:true miniScrollerV:false
-			  in:hpanel.
+                          miniScrollerH:true miniScrollerV:false
+                          in:hpanel.
     v origin:(0.0 @ 0.0) corner:(0.25 @ 1.0).
     classCategoryListView := v scrolledView.
+    classCategoryListView delegate:self.
 
     frame := View origin:(0.25 @ 0.0) corner:(0.5 @ 1.0) in:hpanel.
     self createClassListViewIn:frame.
@@ -3421,11 +3519,11 @@
     v origin:(0.5 @ 0.0) corner:(0.75 @ 1.0).
     methodCategoryListView := v scrolledView.
 
-    v := HVScrollableView for:SelectionInListView miniScrollerH:true miniScrollerV:false in:hpanel.
-    v origin:(0.75 @ 0.0) corner:(1.0 @ 1.0).
-    methodListView := v scrolledView.
+    self createMethodListViewIn:hpanel atX:0.75.
 
     self createCodeViewIn:vpanel
+
+    "Modified: 2.3.1996 / 16:07:24 / cg"
 !
 
 setupForClass:aClass
@@ -3434,8 +3532,8 @@
     |vpanel hpanel frame v|
 
     vpanel := VariableVerticalPanel origin:(0.0 @ 0.0) 
-				    corner:(1.0 @ 1.0)
-					in:self.
+                                    corner:(1.0 @ 1.0)
+                                        in:self.
 
     hpanel := View origin:(0.0 @ 0.0) corner:(1.0 @ 0.25) in:vpanel.
     frame := View origin:(0.0 @ 0.0) corner:(0.5 @ 1.0)in:hpanel.
@@ -3445,18 +3543,15 @@
     v := ScrollableView for:SelectionInListView in:frame.
     v origin:(0.0 @ 0.0)
       extent:[frame width
-	      @
-	      (frame height 
-	       - ViewSpacing
-	       - instanceToggle height
-	       - instanceToggle borderWidth
-	       + v borderWidth)].
+              @
+              (frame height 
+               - ViewSpacing
+               - instanceToggle height
+               - instanceToggle borderWidth
+               + v borderWidth)].
     methodCategoryListView := v scrolledView.
 
-    v := ScrollableView for:SelectionInListView in:hpanel.
-    v origin:(0.5 @ 0.0) corner:(1.0 @ 1.0).
-    methodListView := v scrolledView.
-
+    self createMethodListViewIn:hpanel atX:0.5.
     self createCodeViewIn:vpanel.
 
     self switchToClass:aClass.
@@ -3465,6 +3560,8 @@
     self updateMethodList.
     self updateCodeView.
     self classDefinition.
+
+    "Modified: 2.3.1996 / 16:07:35 / cg"
 !
 
 setupForClass:aClass methodCategory:aMethodCategory
@@ -3473,12 +3570,11 @@
     |vpanel v|
 
     vpanel := VariableVerticalPanel
-			origin:(0.0 @ 0.0) corner:(1.0 @ 1.0)
-			    in:self.
-
-    v := ScrollableView for:SelectionInListView in:vpanel.
-    v origin:(0.0 @ 0.0) corner:(1.0 @ 0.25).
-    methodListView := v scrolledView.
+                        origin:(0.0 @ 0.0) corner:(1.0 @ 1.0)
+                            in:self.
+
+    v := self createMethodListViewIn:vpanel atX:0.0.
+    v corner:(1.0 @ 0.25).
 
     self createCodeViewIn:vpanel.
 
@@ -3488,6 +3584,8 @@
     currentMethodCategory := aMethodCategory.
     self updateMethodList.
     self updateCodeView.
+
+    "Modified: 2.3.1996 / 16:10:44 / cg"
 !
 
 setupForClass:aClass selector:selector
@@ -3516,8 +3614,8 @@
     |vpanel hpanel frame v|
 
     vpanel := VariableVerticalPanel origin:(0.0 @ 0.0) 
-				    corner:(1.0 @ 1.0)
-					in:self.
+                                    corner:(1.0 @ 1.0)
+                                        in:self.
 
     hpanel := View origin:(0.0 @ 0.0) corner:(1.0 @ 0.25) in:vpanel.
     frame  := View origin:(0.0 @ 0.0) corner:(0.33 @ 1.0) in:hpanel.
@@ -3528,10 +3626,7 @@
     v origin:(0.33 @ 0.0) corner:(0.66 @ 1.0).
     methodCategoryListView := v scrolledView.
 
-    v := ScrollableView for:SelectionInListView in:hpanel.
-    v origin:(0.66 @ 0.0) corner:(1.0 @ 1.0).
-    methodListView := v scrolledView.
-
+    self createMethodListViewIn:hpanel atX:0.66.
     self createCodeViewIn:vpanel.
 
     currentClassCategory := aClassCategory.
@@ -3539,6 +3634,8 @@
     self updateMethodCategoryList.
     self updateMethodList.
     self updateCodeView
+
+    "Modified: 2.3.1996 / 16:07:52 / cg"
 !
 
 setupForClassHierarchy:aClass
@@ -3547,8 +3644,8 @@
     |vpanel hpanel frame v cls|
 
     vpanel := VariableVerticalPanel origin:(0.0 @ 0.0)
-				    corner:(1.0 @ 1.0)
-					in:self.
+                                    corner:(1.0 @ 1.0)
+                                        in:self.
 
     "
      notice: we use a different ratio here
@@ -3562,15 +3659,12 @@
     v origin:(0.33 @ 0.0) corner:(0.66 @ 1.0).
     methodCategoryListView := v scrolledView.
 
-    v := ScrollableView for:SelectionInListView in:hpanel.
-    v origin:(0.66 @ 0.0) corner:(1.0 @ 1.0).
-    methodListView := v scrolledView.
-
-    self createCodeViewIn:vpanel at:0.4.
+    self createMethodListViewIn:hpanel atX:0.66.
+    self createCodeViewIn:vpanel atY:0.4.
 
     cls := aClass.
     cls isMeta ifTrue:[
-	cls := cls soleInstance
+        cls := cls soleInstance
     ].
     currentClassHierarchy := currentClass := actualClass := cls.
     self updateClassList.
@@ -3580,8 +3674,10 @@
     self updateCodeView.
 
     aClass isMeta ifTrue:[
-	self instanceProtocol:false
-    ].
+        self instanceProtocol:false
+    ].
+
+    "Modified: 2.3.1996 / 16:08:50 / cg"
 !
 
 setupForClassList:aList
@@ -3590,7 +3686,7 @@
     |vpanel hpanel frame l v|
 
     vpanel := VariableVerticalPanel 
-		 origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:self.
+                 origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:self.
 
     hpanel := View origin:(0.0 @ 0.0) corner:(1.0 @ 0.25) in:vpanel.
     frame := View origin:(0.0 @ 0.0) corner:(0.33 @ 1.0) in:hpanel.
@@ -3601,10 +3697,7 @@
     v origin:(0.33 @ 0.0) corner:(0.66 @ 1.0).
     methodCategoryListView := v scrolledView.
 
-    v := ScrollableView for:SelectionInListView in:hpanel.
-    v origin:(0.66 @ 0.0) corner:(1.0 @ 1.0).
-    methodListView := v scrolledView.
-
+    self createMethodListViewIn:hpanel atX:0.66.
     self createCodeViewIn:vpanel.
 
     l := (aList collect:[:entry | entry name]) asOrderedCollection.
@@ -3613,6 +3706,8 @@
     self updateMethodCategoryList.
     self updateMethodList.
     self updateCodeView
+
+    "Modified: 2.3.1996 / 16:08:06 / cg"
 !
 
 setupForFullClass
@@ -3647,8 +3742,8 @@
     |vpanel hpanel frame v cls|
 
     vpanel := VariableVerticalPanel origin:(0.0 @ 0.0)
-				    corner:(1.0 @ 1.0)
-					in:self.
+                                    corner:(1.0 @ 1.0)
+                                        in:self.
 
     "
      notice: we use a different ratio here
@@ -3665,15 +3760,12 @@
     v origin:(0.33 @ 0.0) corner:(0.66 @ 1.0).
     methodCategoryListView := v scrolledView.
 
-    v := ScrollableView for:SelectionInListView in:hpanel.
-    v origin:(0.66 @ 0.0) corner:(1.0 @ 1.0).
-    methodListView := v scrolledView.
-
-    self createCodeViewIn:vpanel at:0.4.
+    self createMethodListViewIn:hpanel atX:0.66.
+    self createCodeViewIn:vpanel atY:0.4.
 
     cls := aClass.
     cls isMeta ifTrue:[
-	cls := cls soleInstance
+        cls := cls soleInstance
     ].
     currentClassHierarchy := actualClass := acceptClass := currentClass := cls.
     fullProtocol := true.
@@ -3684,8 +3776,10 @@
     self updateCodeView.
     self updateVariableList.
     aClass isMeta ifTrue:[
-	self instanceProtocol:false
-    ].
+        self instanceProtocol:false
+    ].
+
+    "Modified: 2.3.1996 / 16:08:55 / cg"
 !
 
 setupForList:aList
@@ -4592,277 +4686,299 @@
 methodMenu
     "return a popupmenu as appropriate for the methodList"
 
-    |specialMenu m labels selectors 
+    |specialMenu m labels selectors shorties
      newLabels newSelectors
      mthdLabels mthdSelectors
      brkLabels brkSelectors
      fileLabels fileSelectors
-     searchLabels searchSelectors
+     searchLabels searchSelectors searchShorties
      sepLocalLabels sepLocalSelectors
      localSearchLabels localSearchSelectors|
 
     currentMethod notNil ifTrue:[
-	currentMethod isWrapped ifTrue:[
-	    (MessageTracer isCountingMemoryUsage:currentMethod) ifTrue:[
-		brkLabels := #(
-				    '-'
-				    'stop mem usage' 
-			      ).
-
-		brkSelectors := #(
-				    nil
-				    methodStopMemoryUsage
-				 )
-	    ] ifFalse:[
-		(MessageTracer isCounting:currentMethod) ifTrue:[
-		    brkLabels := #(
-					'-'
-					'stop counting' 
-				  ).
-
-		    brkSelectors := #(
-					nil
-					methodStopCounting
-				     )
-		] ifFalse:[
-		    brkLabels := #(
-					'-'
-					'remove break/trace' 
-				  ).
-
-		    brkSelectors := #(
-					nil
-					methodRemoveBreakOrTrace
-				     )
-		]
-	    ]
-	] ifFalse:[
-	    brkLabels := #(
-				'-'
-				'breakpoint' 
-				'trace' 
-				'trace sender' 
-				'trace full walkback' 
-				'start counting'
-				'start mem usage'
-			  ).
-
-	    brkSelectors := #(
-				nil
-				methodBreakPoint
-				methodTrace
-				methodTraceSender
-				methodTraceFull
-				methodStartCounting
-				methodStartMemoryUsage
-			     )
-	].
-
-	Method methodPrivacySupported ifTrue:[
-	    labels := #(
-			    'inspect method'
-			    'compile to machine code'
-			    'decompile'
-			    '-'
-			    'make private'
-			    'make protected'
-			    'make public'
-			    'make ignored'
-		       ).
-	    selectors := #(
-			    methodInspect
-			    methodSTCCompile
-			    methodDecompile
-			    nil
-			    methodMakePrivate
-			    methodMakeProtected
-			    methodMakePublic
-			    methodMakeIgnored
-			  )
-	] ifFalse:[
-	    labels := #(
-			    'inspect method'
-			    'compile to machine code'
-			    'decompile'
-		       ).
-	    selectors := #(
-			    methodInspect
-			    methodSTCCompile
-			    methodDecompile
-			  )
-	].
-
-	labels := labels , brkLabels.
-	selectors := selectors , brkSelectors.
-
-	specialMenu := PopUpMenu
-			    labels:(resources array:labels)
-			    selectors:selectors.
+        currentMethod isWrapped ifTrue:[
+            (MessageTracer isCountingMemoryUsage:currentMethod) ifTrue:[
+                brkLabels := #(
+                                    '-'
+                                    'stop mem usage' 
+                              ).
+
+                brkSelectors := #(
+                                    nil
+                                    methodStopMemoryUsage
+                                 )
+            ] ifFalse:[
+                (MessageTracer isCounting:currentMethod) ifTrue:[
+                    brkLabels := #(
+                                        '-'
+                                        'stop counting' 
+                                  ).
+
+                    brkSelectors := #(
+                                        nil
+                                        methodStopCounting
+                                     )
+                ] ifFalse:[
+                    brkLabels := #(
+                                        '-'
+                                        'remove break/trace' 
+                                  ).
+
+                    brkSelectors := #(
+                                        nil
+                                        methodRemoveBreakOrTrace
+                                     )
+                ]
+            ]
+        ] ifFalse:[
+            brkLabels := #(
+                                '-'
+                                'breakpoint' 
+                                '-'
+                                'trace' 
+                                'trace sender' 
+                                'trace full walkback' 
+                                '-'
+                                'start counting'
+                                'start mem usage'
+                          ).
+
+            brkSelectors := #(
+                                nil
+                                methodBreakPoint
+                                nil
+                                methodTrace
+                                methodTraceSender
+                                methodTraceFull
+                                nil
+                                methodStartCounting
+                                methodStartMemoryUsage
+                             )
+        ].
+
+        Method methodPrivacySupported ifTrue:[
+            labels := #(
+                            'inspect method'
+                            'compile to machine code'
+                            'decompile'
+                            '-'
+                            'make public'
+                            'make private'
+                            'make protected'
+                            'make ignored'
+                       ).
+            selectors := #(
+                            methodInspect
+                            methodSTCCompile
+                            methodDecompile
+                            nil
+                            methodMakePublic
+                            methodMakePrivate
+                            methodMakeProtected
+                            methodMakeIgnored
+                          )
+        ] ifFalse:[
+            labels := #(
+                            'inspect method'
+                            'compile to machine code'
+                            'decompile'
+                       ).
+            selectors := #(
+                            methodInspect
+                            methodSTCCompile
+                            methodDecompile
+                          )
+        ].
+
+        labels := labels , brkLabels.
+        selectors := selectors , brkSelectors.
+
+        specialMenu := PopUpMenu
+                            labels:(resources array:labels)
+                            selectors:selectors.
     ].
 
     device ctrlDown ifTrue:[
-	currentMethod isNil ifTrue:[
-	    methodListView flash.
-	    ^ nil
-	].
-
-	^ specialMenu
+        currentMethod isNil ifTrue:[
+            methodListView flash.
+            ^ nil
+        ].
+
+        ^ specialMenu
     ].
 
 
     sepLocalLabels := sepLocalSelectors := #().
 
     searchLabels := #(
-				'senders ...'
-				'implementors ...'
-				'globals ...'
-				'string search ...'
-				'apropos ...'
-		    ).
+                                'senders ...'
+                                'implementors ...'
+                                'globals ...'
+                                'string search ...'
+                                'apropos ...'
+                    ).
     searchSelectors := #(
-				methodSenders
-				methodImplementors
-				methodGlobalReferends
-				methodStringSearch
-				methodAproposSearch
-			).
+                                methodSenders
+                                methodImplementors
+                                methodGlobalReferends
+                                methodStringSearch
+                                methodAproposSearch
+                        ).
+
+    searchShorties := #(
+                                Cmds
+                                Cmdi
+                                nil
+                                nil
+                                nil
+                       ).
 
     currentClass notNil ifTrue:[
-	localSearchLabels := #(
-				'-'
-				'local senders ...'
-				'local implementors ...'
-				'local super sends ...'
-				'local string search ...'
-				'local apropos ...'
-			    ).
-	localSearchSelectors := #(
-				nil
-				methodLocalSenders
-				methodLocalImplementors
-				methodLocalSuperSends
-				methodLocalStringSearch
-				methodLocalAproposSearch
-			      ).
+        localSearchLabels := #(
+                                '-'
+                                'local senders ...'
+                                'local implementors ...'
+                                'local super sends ...'
+                                'local string search ...'
+                                'local apropos ...'
+                            ).
+        localSearchSelectors := #(
+                                nil
+                                methodLocalSenders
+                                methodLocalImplementors
+                                methodLocalSuperSends
+                                methodLocalStringSearch
+                                methodLocalAproposSearch
+                              ).
     ] ifFalse:[
-	localSearchLabels := localSearchSelectors := #()
+        localSearchLabels := localSearchSelectors := #()
     ].
 
     currentMethodCategory notNil ifTrue:[
-	sepLocalLabels := #('-'). sepLocalSelectors := #(nil).
-
-	newLabels :=           #(
-				'new method' 
-				).
-
-	newSelectors :=    #(
-				methodNewMethod
-			     ).
+        sepLocalLabels := #('-'). sepLocalSelectors := #(nil).
+
+        newLabels :=           #(
+                                'new method' 
+                                ).
+
+        newSelectors :=    #(
+                                methodNewMethod
+                             ).
     ] ifFalse:[
-	newLabels := newSelectors := #()
+        newLabels := newSelectors := #()
     ].
 
     currentMethod notNil ifTrue:[
-	fileLabels :=           #(
-				'fileOut'
-				'printOut'
-				'-'
-				'SPAWN_METHOD'
-				'-'
-				).
-
-	fileSelectors :=    #(
-				methodFileOut
-				methodPrintOut
-				nil
-				methodSpawn
-				nil
-			     ).
-
-	sepLocalLabels := #('-'). sepLocalSelectors := #(nil).
-
-	mthdLabels :=           #(
-				'change category ...' 
-				'move ...'
-				'remove'
-				).
-
-	mthdSelectors :=    #(
-				methodChangeCategory
-				methodMove
-				methodRemove
-			     ).
+        fileLabels :=           #(
+                                'fileOut'
+                                'printOut'
+                                '-'
+                                'SPAWN_METHOD'
+                                '-'
+                                ).
+
+        fileSelectors :=    #(
+                                methodFileOut
+                                methodPrintOut
+                                nil
+                                methodSpawn
+                                nil
+                             ).
+
+        sepLocalLabels := #('-'). sepLocalSelectors := #(nil).
+
+        mthdLabels :=           #(
+                                'change category ...' 
+                                'move ...'
+                                'remove'
+                                ).
+
+        mthdSelectors :=    #(
+                                methodChangeCategory
+                                methodMove
+                                methodRemove
+                             ).
 
     ] ifFalse:[
-	fileLabels := fileSelectors := #().
-	mthdLabels := mthdSelectors := #().
+        fileLabels := fileSelectors := #().
+        mthdLabels := mthdSelectors := #().
     ].
 
 
 
     labels :=
-		fileLabels ,
-		searchLabels ,
-		localSearchLabels ,
-		sepLocalLabels ,
-		newLabels ,
-		mthdLabels.
+                fileLabels ,
+                searchLabels ,
+                localSearchLabels ,
+                sepLocalLabels ,
+                newLabels ,
+                mthdLabels.
 
     selectors :=
-		fileSelectors ,
-		searchSelectors ,
-		localSearchSelectors ,
-		sepLocalSelectors ,
-		newSelectors ,
-		mthdSelectors .
+                fileSelectors ,
+                searchSelectors ,
+                localSearchSelectors ,
+                sepLocalSelectors ,
+                newSelectors ,
+                mthdSelectors .
+
+    shorties := (Array new:(fileSelectors size))
+                , searchShorties
+                , (Array new:(localSearchSelectors size
+                              + sepLocalSelectors size
+                              + newSelectors size
+                              + mthdSelectors size)).
+
 
     specialMenu notNil ifTrue:[
-	labels := labels , #(
-			'-'
-			'others ...'
-		  ).
-	selectors := selectors , #(
-			nil
-			#otherMenu
-		  )
+        labels := labels , #(
+                        '-'
+                        'others ...'
+                  ).
+        selectors := selectors , #(
+                        nil
+                        #otherMenu
+                  ).
+        shorties := shorties , #( nil #'Ctrl')
     ].
 
     m := PopUpMenu
-	 labels:(resources array:labels)
-	 selectors:selectors.
+         labels:(resources array:labels)
+         selectors:selectors
+         accelerators:shorties.
 
     specialMenu notNil ifTrue:[
-	m subMenuAt:#otherMenu put:specialMenu.
+        m subMenuAt:#otherMenu put:specialMenu.
     ].
 
     currentMethod notNil ifTrue:[
-	currentMethod isPrivate ifTrue:[
-	    m disable:#methodMakePrivate
-	].
-	currentMethod isProtected ifTrue:[
-	    m disable:#methodMakeProtected
-	].
-	currentMethod isPublic ifTrue:[
-	    m disable:#methodMakePublic
-	].
-	currentMethod isIgnored ifTrue:[
-	    m disable:#methodMakeIgnored
-	].
+        currentMethod isPrivate ifTrue:[
+            m disable:#methodMakePrivate
+        ].
+        currentMethod isProtected ifTrue:[
+            m disable:#methodMakeProtected
+        ].
+        currentMethod isPublic ifTrue:[
+            m disable:#methodMakePublic
+        ].
+        currentMethod isIgnored ifTrue:[
+            m disable:#methodMakeIgnored
+        ].
     ].
     currentMethod notNil ifTrue:[
-	(currentMethod code notNil
-	or:[Compiler canCreateMachineCode not]) ifTrue:[
-	    m disable:#methodSTCCompile
-	].
-	currentMethod byteCode isNil ifTrue:[
-	    m disable:#methodDecompile
-	].
+        (currentMethod code notNil
+        or:[Compiler canCreateMachineCode not]) ifTrue:[
+            m disable:#methodSTCCompile
+        ].
+        currentMethod byteCode isNil ifTrue:[
+            m disable:#methodDecompile
+        ].
     ].
     ^ m
 
     "Created: 23.11.1995 / 12:02:29 / cg"
     "Modified: 18.12.1995 / 16:20:07 / stefan"
-    "Modified: 23.12.1995 / 17:06:00 / cg"
+    "Modified: 2.3.1996 / 16:20:12 / cg"
 !
 
 methodMove
@@ -6817,6 +6933,6 @@
 !BrowserView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.107 1996-02-27 16:55:02 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.108 1996-03-02 18:02:08 cg Exp $'
 ! !
 BrowserView initialize!