MethodFinderWindow.st
changeset 3777 bc17ad12cef0
parent 3774 271887d2ed74
child 3778 60e5b5a4ba0e
--- a/MethodFinderWindow.st	Wed Oct 02 02:20:29 2019 +0200
+++ b/MethodFinderWindow.st	Wed Oct 02 02:21:57 2019 +0200
@@ -30,12 +30,13 @@
 
 ApplicationModel subclass:#MethodFinderWindow
 	instanceVariableNames:'resultHolder selectorPatternHolder classOfResultHolder
-		selectedClassOfResultHolder selectedImplementorsHolder
-		argumentsEditor messageAnswerEditor receiverEditor receiver
-		resultSelectors arg2BoxVisible arg1BoxVisible arg4BoxVisible
-		arg3BoxVisible argCountHolder argCountList argument1Editor
-		argument2Editor argument3Editor argument4Editor resultSelected
-		lookAtResultEditor codeHolder searchProcess'
+		selectedImplementorsHolder argumentsEditor messageAnswerEditor
+		receiverEditor receiver resultSelectors arg2BoxVisible
+		arg1BoxVisible arg4BoxVisible arg3BoxVisible argCountHolder
+		argCountList argument1Editor argument2Editor argument3Editor
+		argument4Editor resultSelected lookAtResultEditor codeHolder
+		searchProcess classOfResultNameListHolder
+		selectedClassOfResultIndexHolder classOfResultListHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Tools'
@@ -183,23 +184,20 @@
     ^ 
     #(FullSpec
        name: windowSpec
-       uuid: '1871401e-aa2d-11e9-8c78-b8f6b1108e05'
+       uuid: '7da03570-e499-11e9-8918-10ddb1cc5928'
        window: 
       (WindowSpec
          label: 'MethodFinder'
          name: 'MethodFinder'
          uuid: '5fb0c87a-89f6-11e9-8df0-b8f6b1108e05'
-         bounds: (Rectangle 0 0 816 738)
-         menu: menu
+         bounds: (Rectangle 0 0 816 738) menu: menu
          icon: defaultIcon
-       )
-       component: 
+      ) component: 
       (SpecCollection
          collection: (
           (VariableHorizontalPanelSpec
              name: 'VariableHorizontalPanel1'
-             layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-             uuid: '5fb0cd98-89f6-11e9-8df0-b8f6b1108e05'
+             layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) uuid: '5fb0cd98-89f6-11e9-8df0-b8f6b1108e05'
              showHandle: true
              snapMode: both
              component: 
@@ -220,39 +218,34 @@
                            collection: (
                             (ViewSpec
                                name: 'ReceiverArgBox'
-                               layout: (LayoutFrame 0 0 0 0 0 1 -30 1)
-                               uuid: '5fb0d4f0-89f6-11e9-8df0-b8f6b1108e05'
+                               layout: (LayoutFrame 0 0 0 0 0 1 -30 1) uuid: '5fb0d4f0-89f6-11e9-8df0-b8f6b1108e05'
                                component: 
                               (SpecCollection
                                  collection: (
                                   (LabelSpec
                                      label: 'Receiver'
                                      name: 'ReceiverLabel'
-                                     layout: (LayoutFrame 0 0 0 0 0 0.34000000000000002 28 0)
-                                     uuid: '5fb0d6b2-89f6-11e9-8df0-b8f6b1108e05'
+                                     layout: (LayoutFrame 0 0 0 0 0 0.34000000000000002 28 0) uuid: '5fb0d6b2-89f6-11e9-8df0-b8f6b1108e05'
                                      translateLabel: true
-                                   )
+                                  )
                                   (ComboListSpec
                                      name: 'AllowedArguments'
-                                     layout: (LayoutFrame 0 0.34000000000000002 1 0 0 0.64000000000000135 28 0)
-                                     activeHelpKey: argumentCount
+                                     layout: (LayoutFrame 0 0.34000000000000002 1 0 0 0.64000000000000135 28 0) activeHelpKey: argumentCount
                                      uuid: '5fb0da9a-89f6-11e9-8df0-b8f6b1108e05'
                                      model: argCountHolder
                                      comboList: argCountList
                                      useIndex: true
-                                   )
+                                  )
                                   (LabelSpec
                                      label: 'Answer'
                                      name: 'MessageAnswerLabel'
-                                     layout: (LayoutFrame 0 0.64000000000000135 0 0 0 1 28 0)
-                                     activeHelpKey: arg1Value
+                                     layout: (LayoutFrame 0 0.64000000000000135 0 0 0 1 28 0) activeHelpKey: arg1Value
                                      uuid: '5fb0dd60-89f6-11e9-8df0-b8f6b1108e05'
                                      translateLabel: true
-                                   )
+                                  )
                                   (HorizontalPanelViewSpec
                                      name: 'HorizontalPanel1'
-                                     layout: (LayoutFrame 0 0 30 0 0 1 0 1)
-                                     uuid: '5fb0dee6-89f6-11e9-8df0-b8f6b1108e05'
+                                     layout: (LayoutFrame 0 0 30 0 0 1 0 1) uuid: '5fb0dee6-89f6-11e9-8df0-b8f6b1108e05'
                                      horizontalLayout: fit
                                      verticalLayout: fit
                                      horizontalSpace: 3
@@ -271,9 +264,8 @@
                                            miniScrollerVertical: true
                                            autoHideScrollBars: true
                                            hasKeyboardFocusInitially: false
-                                           extent: (Point 86 142)
-                                           postBuildCallback: receiverWidgetCreated:
-                                         )
+                                           extent: (Point 86 142) postBuildCallback: receiverWidgetCreated:
+                                        )
                                         (VerticalPanelViewSpec
                                            name: 'VerticalPanel1'
                                            uuid: '5fb0e51c-89f6-11e9-8df0-b8f6b1108e05'
@@ -285,7 +277,7 @@
                                           (SpecCollection
                                              collection: (
                                               (ViewSpec
-                                                 name: 'Box1'
+                                                 name: 'Arg1Box'
                                                  uuid: '5fb0e6d4-89f6-11e9-8df0-b8f6b1108e05'
                                                  visibilityChannel: arg1BoxVisible
                                                  component: 
@@ -293,8 +285,7 @@
                                                    collection: (
                                                     (WorkspaceSpec
                                                        name: 'Arg1Editor'
-                                                       layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                                                       activeHelpKey: arg1Value
+                                                       layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) activeHelpKey: arg1Value
                                                        uuid: '5fb0e7ce-89f6-11e9-8df0-b8f6b1108e05'
                                                        tabable: true
                                                        hasHorizontalScrollBar: true
@@ -304,23 +295,20 @@
                                                        autoHideScrollBars: true
                                                        hasKeyboardFocusInitially: false
                                                        postBuildCallback: argument1WidgetCreated:
-                                                     )
                                                     )
-                                                  
-                                                 )
-                                                 extent: (Point 87 45)
-                                               )
+                                                  )
+                                                ) extent: (Point 87 45)
+                                              )
                                               (ViewSpec
-                                                 name: 'Box2'
+                                                 name: 'Arg2Box'
                                                  uuid: '5fb0e9b8-89f6-11e9-8df0-b8f6b1108e05'
                                                  visibilityChannel: arg2BoxVisible
                                                  component: 
                                                 (SpecCollection
                                                    collection: (
                                                     (WorkspaceSpec
-                                                       name: 'TextEditor5'
-                                                       layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                                                       activeHelpKey: arg2Value
+                                                       name: 'Arg2Editor'
+                                                       layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) activeHelpKey: arg2Value
                                                        uuid: '5fb0eabc-89f6-11e9-8df0-b8f6b1108e05'
                                                        tabable: true
                                                        hasHorizontalScrollBar: true
@@ -330,23 +318,20 @@
                                                        autoHideScrollBars: true
                                                        hasKeyboardFocusInitially: false
                                                        postBuildCallback: argument2WidgetCreated:
-                                                     )
                                                     )
-                                                  
-                                                 )
-                                                 extent: (Point 87 46)
-                                               )
+                                                  )
+                                                ) extent: (Point 87 46)
+                                              )
                                               (ViewSpec
-                                                 name: 'Box3'
+                                                 name: 'Arg3Box'
                                                  uuid: '5fb0ec74-89f6-11e9-8df0-b8f6b1108e05'
                                                  visibilityChannel: arg3BoxVisible
                                                  component: 
                                                 (SpecCollection
                                                    collection: (
                                                     (WorkspaceSpec
-                                                       name: 'TextEditor6'
-                                                       layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                                                       activeHelpKey: arg3Value
+                                                       name: 'Arg3Editor'
+                                                       layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) activeHelpKey: arg3Value
                                                        uuid: '5fb0ed64-89f6-11e9-8df0-b8f6b1108e05'
                                                        tabable: true
                                                        hasHorizontalScrollBar: true
@@ -356,17 +341,13 @@
                                                        autoHideScrollBars: true
                                                        hasKeyboardFocusInitially: false
                                                        postBuildCallback: argument3WidgetCreated:
-                                                     )
                                                     )
-                                                  
-                                                 )
-                                                 extent: (Point 87 45)
-                                               )
+                                                  )
+                                                ) extent: (Point 87 45)
                                               )
-                                            
-                                           )
-                                           extent: (Point 87 142)
-                                         )
+                                            )
+                                          ) extent: (Point 87 142)
+                                        )
                                         (WorkspaceSpec
                                            name: 'AnswerEditor'
                                            activeHelpKey: answerValue
@@ -378,51 +359,43 @@
                                            miniScrollerVertical: true
                                            autoHideScrollBars: true
                                            hasKeyboardFocusInitially: false
-                                           extent: (Point 87 142)
-                                           postBuildCallback: messageAnswerWidgetCreated:
-                                         )
+                                           extent: (Point 87 142) postBuildCallback: messageAnswerWidgetCreated:
                                         )
-                                      
-                                     )
-                                   )
+                                      )
+                                    )
                                   )
-                                
-                               )
-                             )
+                                )
+                              )
+                            )
                             (ViewSpec
                                name: 'ReceiverArgBoxActionBox'
-                               layout: (LayoutFrame 0 0 -30 1 0 1 0 1)
-                               uuid: '5fb0f0fc-89f6-11e9-8df0-b8f6b1108e05'
+                               layout: (LayoutFrame 0 0 -30 1 0 1 0 1) uuid: '5fb0f0fc-89f6-11e9-8df0-b8f6b1108e05'
                                component: 
                               (SpecCollection
                                  collection: (
                                   (ActionButtonSpec
                                      label: 'Clear'
                                      name: 'ClearButton'
-                                     layout: (LayoutFrame 5 0 0 0 -5 0.5 0 1)
-                                     activeHelpKey: clearButton
+                                     layout: (LayoutFrame 5 0 0 0 -5 0.5 0 1) activeHelpKey: clearButton
                                      uuid: '5fb0f214-89f6-11e9-8df0-b8f6b1108e05'
                                      translateLabel: true
                                      model: clear
-                                   )
+                                  )
                                   (ActionButtonSpec
                                      label: 'Search'
                                      name: 'SearchButton'
-                                     layout: (LayoutFrame 5 0.5 0 0 -5 1 0 1)
-                                     activeHelpKey: startSearchButton
+                                     layout: (LayoutFrame 5 0.5 0 0 -5 1 0 1) activeHelpKey: startSearchButton
                                      uuid: '5fb0f52a-89f6-11e9-8df0-b8f6b1108e05'
                                      translateLabel: true
                                      tabable: true
                                      model: search
-                                   )
                                   )
-                                
-                               )
-                             )
+                                )
+                              )
                             )
-                          
-                         )
-                       )
+                          )
+                        )
+                      )
                       (ViewSpec
                          name: 'SelectorFinderBox'
                          uuid: '5fb0f714-89f6-11e9-8df0-b8f6b1108e05'
@@ -431,48 +404,42 @@
                            collection: (
                             (ViewSpec
                                name: 'MatchActionBox'
-                               layout: (LayoutFrame 0 0 0 0 0 1 90 0)
-                               uuid: '5fb0f818-89f6-11e9-8df0-b8f6b1108e05'
+                               layout: (LayoutFrame 0 0 0 0 0 1 90 0) uuid: '5fb0f818-89f6-11e9-8df0-b8f6b1108e05'
                                component: 
                               (SpecCollection
                                  collection: (
                                   (LabelSpec
                                      label: 'Selector Pattern:'
                                      name: 'SelectorPatternLabel'
-                                     layout: (LayoutFrame 0 0 0 0 0 1 25 0)
-                                     uuid: '5fb0f908-89f6-11e9-8df0-b8f6b1108e05'
+                                     layout: (LayoutFrame 0 0 0 0 0 1 25 0) uuid: '5fb0f908-89f6-11e9-8df0-b8f6b1108e05'
                                      translateLabel: true
                                      adjust: left
-                                   )
+                                  )
                                   (InputFieldSpec
                                      name: 'SelectorPattern'
-                                     layout: (LayoutFrame 2 0 -54 1 -2 1 -29 1)
-                                     activeHelpKey: selectorPattern
+                                     layout: (LayoutFrame 2 0 -54 1 -2 1 -29 1) activeHelpKey: selectorPattern
                                      uuid: '5fb0fa70-89f6-11e9-8df0-b8f6b1108e05'
                                      model: selectorPatternHolder
                                      immediateAccept: true
                                      acceptOnReturn: true
                                      acceptOnTab: true
                                      acceptOnPointerLeave: true
-                                   )
+                                  )
                                   (ActionButtonSpec
                                      label: 'Search'
                                      name: 'SearchPatternButton'
-                                     layout: (LayoutFrame 5 0.5 -25 1 -5 1 0 1)
-                                     activeHelpKey: startSearchPatternButton
+                                     layout: (LayoutFrame 5 0.5 -25 1 -5 1 0 1) activeHelpKey: startSearchPatternButton
                                      uuid: '5fb0fea8-89f6-11e9-8df0-b8f6b1108e05'
                                      translateLabel: true
                                      tabable: true
                                      model: searchPatternMatchesInBackground
-                                   )
                                   )
-                                
-                               )
-                             )
+                                )
+                              )
+                            )
                             (SequenceViewSpec
                                name: 'ResultList'
-                               layout: (LayoutFrame 0 0 94 0 0 1 0 1)
-                               activeHelpKey: implementorsFound
+                               layout: (LayoutFrame 0 0 94 0 0 1 0 1) activeHelpKey: implementorsFound
                                uuid: '5fb1009c-89f6-11e9-8df0-b8f6b1108e05'
                                model: selectedImplementorsHolder
                                menu: resultListMenu
@@ -481,16 +448,13 @@
                                autoHideScrollBars: true
                                useIndex: true
                                sequenceList: resultHolder
-                             )
                             )
-                          
-                         )
-                       )
+                          )
+                        )
                       )
-                    
-                   )
-                   handles: (Any 0.28000000000000003 1.0)
-                 )
+                    )
+                  ) handles: (Any 0.28000000000000003 1.0)
+                )
                 (VariableVerticalPanelSpec
                    name: 'RightBox'
                    uuid: '5fb103c6-89f6-11e9-8df0-b8f6b1108e05'
@@ -500,16 +464,16 @@
                       (SequenceViewSpec
                          name: 'ImplementorsList'
                          uuid: '5fb10524-89f6-11e9-8df0-b8f6b1108e05'
-                         model: selectedClassOfResultHolder
+                         model: selectedClassOfResultIndexHolder
                          menu: implementorListMenu
                          hasHorizontalScrollBar: true
                          hasVerticalScrollBar: true
                          autoHideScrollBars: true
                          doubleClickSelector: openBrowserOn:
-                         valueChangeSelector: selectedClassOfResultHolderChanged
-                         useIndex: false
-                         sequenceList: classOfResultHolder
-                       )
+                         valueChangeSelector: selectedClassOfResultIndexHolderChanged
+                         useIndex: true
+                         sequenceList: classOfResultNameListHolder
+                      )
                       (ViewSpec
                          name: 'Box4'
                          uuid: '4698d744-a993-11e9-b8a4-b8f6b1108e05'
@@ -518,8 +482,7 @@
                            collection: (
                             (CodeViewSpec
                                name: 'CodeView'
-                               layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-                               uuid: '5fb106dc-89f6-11e9-8df0-b8f6b1108e05'
+                               layout: (LayoutFrame 0 0 0 0 0 1 0 1) uuid: '5fb106dc-89f6-11e9-8df0-b8f6b1108e05'
                                model: codeHolder
                                hasHorizontalScrollBar: true
                                hasVerticalScrollBar: true
@@ -527,25 +490,19 @@
                                hasKeyboardFocusInitially: false
                                viewClassName: 'codeViewClass'
                                postBuildCallback: sourceCodeWidgetCreated:
-                             )
                             )
-                          
-                         )
-                       )
+                          )
+                        )
                       )
-                    
-                   )
-                   handles: (Any 0.5 1.0)
-                 )
+                    )
+                  ) handles: (Any 0.5 1.0)
                 )
-              
-             )
-             handles: (Any 0.33000000000000002 1.0)
-           )
+              )
+            ) handles: (Any 0.33000000000000002 1.0)
           )
-        
-       )
-     )
+        )
+      )
+    )
 !
 
 windowSpec_old
@@ -556,70 +513,70 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:MethodFinderWindow andSelector:#windowSpec
-     MethodFinderWindow new openInterface:#windowSpec
-     MethodFinderWindow open
+     UIPainter new openOnClass:MethodFinderWindow andSelector:#windowSpec_old
+     MethodFinderWindow new openInterface:#windowSpec_old
     "
 
     <resource: #canvas>
 
     ^ 
     #(FullSpec
-       name: windowSpec
+       name: #'windowSpec_old'
+       uuid: '92a85286-e499-11e9-8918-10ddb1cc5928'
        window: 
       (WindowSpec
          label: 'MethodFinder'
          name: 'MethodFinder'
-         bounds: (Rectangle 0 0 920 690)
-         menu: menu
+         uuid: '92a85542-e499-11e9-8918-10ddb1cc5928'
+         bounds: (Rectangle 0 0 920 690) menu: menu
          icon: defaultIcon
-       )
-       component: 
+      ) component: 
       (SpecCollection
          collection: (
           (VariableHorizontalPanelSpec
              name: 'VariableHorizontalPanel1'
-             layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+             layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) uuid: '92a857b8-e499-11e9-8918-10ddb1cc5928'
              snapMode: both
              component: 
             (SpecCollection
                collection: (
                 (ViewSpec
                    name: 'LeftBox'
+                   uuid: '92a85998-e499-11e9-8918-10ddb1cc5928'
                    level: 1
                    component: 
                   (SpecCollection
                      collection: (
                       (ViewSpec
                          name: 'ReceiverArgBox'
-                         layout: (LayoutFrame 0 0 0 0 0 1 -100 0.5)
+                         layout: (LayoutFrame 0 0 0 0 0 1 -100 0.5) uuid: '92a85ad8-e499-11e9-8918-10ddb1cc5928'
                          component: 
                         (SpecCollection
                            collection: (
                             (LabelSpec
                                label: 'Receiver'
                                name: 'ReceiverLabel'
-                               layout: (LayoutFrame 0 0 0 0 0 0.34000000000000002 28 0)
+                               layout: (LayoutFrame 0 0 0 0 0 0.34000000000000002 28 0) uuid: '92a85bd2-e499-11e9-8918-10ddb1cc5928'
                                translateLabel: true
-                             )
+                            )
                             (ComboListSpec
                                name: 'AllowedArguments'
-                               layout: (LayoutFrame 0 0.34000000000000002 1 0 0 0.64000000000000046 28 0)
-                               activeHelpKey: argumentCount
+                               layout: (LayoutFrame 0 0.34000000000000002 1 0 0 0.64000000000000046 28 0) activeHelpKey: argumentCount
+                               uuid: '92a85d8a-e499-11e9-8918-10ddb1cc5928'
                                model: argCountHolder
                                comboList: argCountList
                                useIndex: true
-                             )
+                            )
                             (LabelSpec
                                label: 'Answer'
                                name: 'MessageAnswerLabel'
-                               layout: (LayoutFrame 0 0.64000000000000046 0 0 0 1 28 0)
-                               activeHelpKey: arg1Value
+                               layout: (LayoutFrame 0 0.64000000000000046 0 0 0 1 28 0) activeHelpKey: arg1Value
+                               uuid: '92a85f4c-e499-11e9-8918-10ddb1cc5928'
                                translateLabel: true
-                             )
+                            )
                             (HorizontalPanelViewSpec
                                name: 'HorizontalPanel1'
-                               layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+                               layout: (LayoutFrame 0 0 30 0 0 1 0 1) uuid: '92a860aa-e499-11e9-8918-10ddb1cc5928'
                                horizontalLayout: fit
                                verticalLayout: fit
                                horizontalSpace: 3
@@ -630,6 +587,7 @@
                                   (WorkspaceSpec
                                      name: 'ReceiverEditor'
                                      activeHelpKey: receiverValue
+                                     uuid: '92a8626c-e499-11e9-8918-10ddb1cc5928'
                                      tabable: true
                                      hasHorizontalScrollBar: true
                                      hasVerticalScrollBar: true
@@ -637,11 +595,11 @@
                                      miniScrollerVertical: true
                                      autoHideScrollBars: true
                                      hasKeyboardFocusInitially: false
-                                     extent: (Point 110 214)
-                                     postBuildCallback: receiverWidgetCreated:
-                                   )
+                                     extent: (Point 111 214) postBuildCallback: receiverWidgetCreated:
+                                  )
                                   (VerticalPanelViewSpec
                                      name: 'VerticalPanel1'
+                                     uuid: '92a864f6-e499-11e9-8918-10ddb1cc5928'
                                      horizontalLayout: fit
                                      verticalLayout: fit
                                      horizontalSpace: 3
@@ -650,15 +608,16 @@
                                     (SpecCollection
                                        collection: (
                                         (ViewSpec
-                                           name: 'Box1'
+                                           name: 'Arg1Box'
+                                           uuid: '92a8667c-e499-11e9-8918-10ddb1cc5928'
                                            visibilityChannel: arg1BoxVisible
                                            component: 
                                           (SpecCollection
                                              collection: (
                                               (WorkspaceSpec
                                                  name: 'Arg1Editor'
-                                                 layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                                                 activeHelpKey: arg1Value
+                                                 layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) activeHelpKey: arg1Value
+                                                 uuid: '92a8678a-e499-11e9-8918-10ddb1cc5928'
                                                  tabable: true
                                                  hasHorizontalScrollBar: true
                                                  hasVerticalScrollBar: true
@@ -667,22 +626,21 @@
                                                  autoHideScrollBars: true
                                                  hasKeyboardFocusInitially: false
                                                  postBuildCallback: argument1WidgetCreated:
-                                               )
                                               )
-                                            
-                                           )
-                                           extent: (Point 110 69)
-                                         )
+                                            )
+                                          ) extent: (Point 111 69)
+                                        )
                                         (ViewSpec
-                                           name: 'Box2'
+                                           name: 'Arg2Box'
+                                           uuid: '92a86974-e499-11e9-8918-10ddb1cc5928'
                                            visibilityChannel: arg2BoxVisible
                                            component: 
                                           (SpecCollection
                                              collection: (
                                               (WorkspaceSpec
-                                                 name: 'TextEditor5'
-                                                 layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                                                 activeHelpKey: arg2Value
+                                                 name: 'Arg2Editor'
+                                                 layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) activeHelpKey: arg2Value
+                                                 uuid: '92a86a6e-e499-11e9-8918-10ddb1cc5928'
                                                  tabable: true
                                                  hasHorizontalScrollBar: true
                                                  hasVerticalScrollBar: true
@@ -691,22 +649,21 @@
                                                  autoHideScrollBars: true
                                                  hasKeyboardFocusInitially: false
                                                  postBuildCallback: argument2WidgetCreated:
-                                               )
                                               )
-                                            
-                                           )
-                                           extent: (Point 110 70)
-                                         )
+                                            )
+                                          ) extent: (Point 111 70)
+                                        )
                                         (ViewSpec
-                                           name: 'Box3'
+                                           name: 'Arg3Box'
+                                           uuid: '92a86c30-e499-11e9-8918-10ddb1cc5928'
                                            visibilityChannel: arg3BoxVisible
                                            component: 
                                           (SpecCollection
                                              collection: (
                                               (WorkspaceSpec
-                                                 name: 'TextEditor6'
-                                                 layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                                                 activeHelpKey: arg3Value
+                                                 name: 'Arg3Editor'
+                                                 layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) activeHelpKey: arg3Value
+                                                 uuid: '92a86d20-e499-11e9-8918-10ddb1cc5928'
                                                  tabable: true
                                                  hasHorizontalScrollBar: true
                                                  hasVerticalScrollBar: true
@@ -715,20 +672,17 @@
                                                  autoHideScrollBars: true
                                                  hasKeyboardFocusInitially: false
                                                  postBuildCallback: argument3WidgetCreated:
-                                               )
                                               )
-                                            
-                                           )
-                                           extent: (Point 110 69)
-                                         )
+                                            )
+                                          ) extent: (Point 111 69)
                                         )
-                                      
-                                     )
-                                     extent: (Point 110 214)
-                                   )
+                                      )
+                                    ) extent: (Point 111 214)
+                                  )
                                   (WorkspaceSpec
                                      name: 'AnswerEditor'
                                      activeHelpKey: answerValue
+                                     uuid: '92a86ef6-e499-11e9-8918-10ddb1cc5928'
                                      tabable: true
                                      hasHorizontalScrollBar: true
                                      hasVerticalScrollBar: true
@@ -736,81 +690,76 @@
                                      miniScrollerVertical: true
                                      autoHideScrollBars: true
                                      hasKeyboardFocusInitially: false
-                                     extent: (Point 110 214)
-                                     postBuildCallback: messageAnswerWidgetCreated:
-                                   )
+                                     extent: (Point 111 214) postBuildCallback: messageAnswerWidgetCreated:
                                   )
-                                
-                               )
-                             )
+                                )
+                              )
                             )
-                          
-                         )
-                       )
+                          )
+                        )
+                      )
                       (ViewSpec
                          name: 'ReceiverArgBoxActionBox'
-                         layout: (LayoutFrame 0 0 -98 0.5 0 1 -75 0.5)
+                         layout: (LayoutFrame 0 0 -98 0.5 0 1 -75 0.5) uuid: '92a870cc-e499-11e9-8918-10ddb1cc5928'
                          component: 
                         (SpecCollection
                            collection: (
                             (ActionButtonSpec
-                               activeHelpKey: clearButton    
                                label: 'Clear'
                                name: 'Button2'
-                               layout: (LayoutFrame 5 0 0 0 -5 0.5 0 1)
+                               layout: (LayoutFrame 5 0 0 0 -5 0.5 0 1) activeHelpKey: clearButton
+                               uuid: '92a871d0-e499-11e9-8918-10ddb1cc5928'
                                translateLabel: true
                                model: clear
-                             )
+                            )
                             (ActionButtonSpec
-                               activeHelpKey: startSearchButton    
                                label: 'Search'
                                name: 'Button1'
-                               layout: (LayoutFrame 5 0.5 0 0 -5 1 0 1)
+                               layout: (LayoutFrame 5 0.5 0 0 -5 1 0 1) activeHelpKey: startSearchButton
+                               uuid: '92a8740a-e499-11e9-8918-10ddb1cc5928'
                                translateLabel: true
                                tabable: true
                                model: search
-                             )
                             )
-                          
-                         )
-                       )
+                          )
+                        )
+                      )
                       (ViewSpec
                          name: 'MatchActionBox'
-                         layout: (LayoutFrame 0 0 -70 0.5 0 1 10 0.5)
+                         layout: (LayoutFrame 0 0 -70 0.5 0 1 10 0.5) uuid: '92a875e0-e499-11e9-8918-10ddb1cc5928'
                          component: 
                         (SpecCollection
                            collection: (
                             (LabelSpec
                                label: 'Selector Pattern:'
                                name: 'Label1'
-                               layout: (LayoutFrame 0 0 0 0 0 0.5 25 0)
+                               layout: (LayoutFrame 0 0 0 0 0 0.5 25 0) uuid: '92a876e4-e499-11e9-8918-10ddb1cc5928'
                                translateLabel: true
                                adjust: left
-                             )
+                            )
                             (InputFieldSpec
                                name: 'EntryField1'
-                               layout: (LayoutFrame 2 0 -54 1 -2 1 -29 1)
+                               layout: (LayoutFrame 2 0 -54 1 -2 1 -29 1) uuid: '92a87838-e499-11e9-8918-10ddb1cc5928'
                                model: selectorPatternHolder
                                immediateAccept: true
                                acceptOnReturn: true
                                acceptOnTab: true
                                acceptOnPointerLeave: true
-                             )
+                            )
                             (ActionButtonSpec
                                label: 'Search'
                                name: 'Button4'
-                               layout: (LayoutFrame 5 0.5 -25 1 -5 1 0 1)
+                               layout: (LayoutFrame 5 0.5 -25 1 -5 1 0 1) uuid: '92a87a9a-e499-11e9-8918-10ddb1cc5928'
                                translateLabel: true
                                tabable: true
                                model: searchPatternMatchesInBackground
-                             )
                             )
-                          
-                         )
-                       )
+                          )
+                        )
+                      )
                       (SequenceViewSpec
                          name: 'ResultList'
-                         layout: (LayoutFrame 0 0 15 0.5 0 1 0 1)
+                         layout: (LayoutFrame 0 0 15 0.5 0 1 0 1) uuid: '92a87c66-e499-11e9-8918-10ddb1cc5928'
                          model: selectedImplementorsHolder
                          menu: resultListMenu
                          hasHorizontalScrollBar: true
@@ -818,54 +767,49 @@
                          autoHideScrollBars: true
                          useIndex: true
                          sequenceList: resultHolder
-                       )
                       )
-                    
-                   )
-                 )
+                    )
+                  )
+                )
                 (VariableVerticalPanelSpec
                    name: 'VariableVerticalPanel1'
+                   uuid: '92a87e78-e499-11e9-8918-10ddb1cc5928'
                    component: 
                   (SpecCollection
                      collection: (
                       (SequenceViewSpec
                          name: 'List2'
-                         model: selectedClassOfResultHolder
+                         uuid: '92a87fd6-e499-11e9-8918-10ddb1cc5928'
+                         model: selectedClassOfResultIndexHolder
                          menu: implementorListMenu
                          hasHorizontalScrollBar: true
                          hasVerticalScrollBar: true
                          autoHideScrollBars: true
                          doubleClickSelector: openBrowserOn:
-                         valueChangeSelector: selectedClassOfResultHolderChanged
-                         useIndex: false
-                         sequenceList: classOfResultHolder
-                       )
+                         valueChangeSelector: selectedClassOfResultIndexHolderChanged
+                         useIndex: true
+                         sequenceList: classOfResultNameListHolder
+                      )
                       (CodeViewSpec
                          name: 'CodeView'
+                         uuid: '92a88184-e499-11e9-8918-10ddb1cc5928'
                          model: codeHolder
                          hasHorizontalScrollBar: true
                          hasVerticalScrollBar: true
                          autoHideScrollBars: true
                          hasKeyboardFocusInitially: false
+                         viewClassName: 'codeViewClass'
                          postBuildCallback: sourceCodeWidgetCreated:
-                         viewClassName: 'codeViewClass'
-                       )
                       )
-                    
-                   )
-                   handles: (Any 0.5 1.0)
-                 )
+                    )
+                  ) handles: (Any 0.5 1.0)
                 )
-              
-             )
-             handles: (Any 0.37391304347826104 1.0)
-           )
+              )
+            ) handles: (Any 0.37 1.0)
           )
-        
-       )
-     )
-
-    "Modified: / 19-07-2019 / 12:01:12 / Claus Gittinger"
+        )
+      )
+    )
 ! !
 
 !MethodFinderWindow class methodsFor:'menu specs'!
@@ -1038,8 +982,10 @@
     argument3Editor contents:nil.
     messageAnswerEditor contents:nil.
     self resultHolder value:nil.
-    self classOfResultHolder value: nil.
-    codeHolder value:nil.
+    self classOfResultListHolder value: nil.
+    codeHolder notNil ifTrue:[
+        codeHolder value:nil.
+    ].
 !
 
 messageAnswerEditorContents
@@ -1050,20 +996,28 @@
     |aCleanedAnswerString compiledAnswer|
 
     aCleanedAnswerString := self cleanInputs:(messageAnswerEditor contents).
-    compiledAnswer := Compiler evaluate:aCleanedAnswerString.
+    compiledAnswer := Compiler evaluate:aCleanedAnswerString 
+                               ifFail:[
+                                    Dialog information:'Bad value in the answer field'.
+                                    AbortOperationRequest raise.
+                                ].
     ((self isExpression:aCleanedAnswerString) or:[ compiledAnswer isNil ]) ifTrue:[
         aCleanedAnswerString := compiledAnswer printString
     ].
     ^ aCleanedAnswerString -> compiledAnswer.
 !
 
-openBrowserOn:anArgument 
-    "Opens browser on theArgument of a specific class. anArgument being a string with the
-       Class and the selector upon which the browser is to be opened. Return the receiver."
+openBrowserOn:indexInList
+    "Opens browser on theArgument of a specific class. 
+     anArgument being the index of the selected list entry,
+     which is a string with the class and the selector 
+     upon which the browser is to be opened. 
+     Return the receiver."
 
-    |classAndSelector|
+    |sel classAndSelector|
 
-    classAndSelector := self extractClassAndSelectorFrom:anArgument.
+    sel := classOfResultListHolder value at:indexInList.
+    classAndSelector := self extractClassAndSelectorFrom:sel.
     classAndSelector isNil ifTrue:[
         ^ self
     ].
@@ -1128,7 +1082,7 @@
     |tempReceiver tempAnswer tempArguments anArray resultArrayOrErrorString receiverWithArgument mf|
 
     self resultHolder value:nil.
-    self classOfResultHolder value:nil.
+    self classOfResultListHolder value:nil.
     self codeHolder value:nil.
     tempArguments := self argumentEditorsContents.
     tempReceiver := self receiverEditorContents.
@@ -1338,7 +1292,7 @@
     pattern := self selectorPatternHolder value.
     pattern isEmptyOrNil ifTrue:[
         self resultHolder value:self resultInfoText.
-        self classOfResultHolder value:nil.
+        self classOfResultListHolder value:nil.
         self codeHolder value:nil.
         ^ self
     ].
@@ -1356,40 +1310,45 @@
 !
 
 updateImplementorsOf:anInteger 
-    "Request the implementors of the selected argument provided by aNumber.
+    "Request the implementors of the selected argument provided by aNumber (index in list).
      Return the receiver."
     
-    |methods classList aNumber|
+    |methods classList classNameList aNumber|
 
-    (anInteger isNil) ifTrue:[
+    (anInteger isNil or:[anInteger == 0]) ifTrue:[
         ^ self
     ].
+
     aNumber := anInteger ? 1.
     methods := SystemBrowser 
-            findImplementorsOf:(resultSelectors at:aNumber)
-            in:Smalltalk allClasses
-            ignoreCase:false.
+                findImplementorsOf:(resultSelectors at:aNumber)
+                in:Smalltalk allClasses
+                ignoreCase:false.
     methods := methods asOrderedCollection. 
     classList := methods collect:[:m | m mclass name , ' ' , m selector ].
-    classList := self markMatchingClasses:(resultSelectors at:aNumber) 
-                      classesWithSelector:classList.
+    classList := self markMatchingClasses:(resultSelectors at:aNumber) classesWithSelector:classList.
+
+    classNameList := classList with:methods collect:[:s1 :m | s1 , ' ' , ('{' , m category , '}') allGray ].
+
     "/ now classList contains a list of <className> <selector>,
     "/ where the one which is responsible for the selected result is marked (bold)
-    self classOfResultHolder value:classList.
+    self classOfResultListHolder value:classList.
+    self classOfResultNameListHolder value:classNameList.
 
     "/ initially select the bold one
     classList notEmptyOrNil ifTrue:[
-        |receiversMethodEntryInClass|
-        
+        |idx receiversMethodEntryInClass|
+
+        idx := classList findFirst:#isText.
+        idx == 0 ifTrue:[
+            "/ not found; select the first
+            idx := 1.
+        ].
         receiversMethodEntryInClass := classList detect:#isText ifNone:nil.
-        receiversMethodEntryInClass notNil ifTrue:[
-            self selectedClassOfResultHolder value:receiversMethodEntryInClass.
-        ] ifFalse:[
-            self selectedClassOfResultHolder value:(classList first).
-        ].
-        self selectedClassOfResultHolderChanged.
+        self selectedClassOfResultIndexHolder value:idx.
+        self selectedClassOfResultIndexHolderChanged.
     ] ifFalse:[
-        self selectedClassOfResultHolder value:nil.
+        self selectedClassOfResultIndexHolder value:nil.
     ].
 
     "Modified (comment): / 24-06-2012 / 18:41:45 / cg"
@@ -1399,7 +1358,7 @@
 updateListAfterPatternSearch:resultList
     |searchPattern idx|
     
-    self classOfResultHolder value:nil.
+    self classOfResultListHolder value:nil.
     self codeHolder value:nil.
     self resultHolder value:resultList.
 
@@ -1488,14 +1447,25 @@
     ^ argCountList.
 !
 
-classOfResultHolder
+classOfResultListHolder
     "Return a valueHolder which contains a collection with the names of the 
      implementors of a specific message.   "
 
-    classOfResultHolder isNil ifTrue:[
-        classOfResultHolder := ValueHolder new.
+    classOfResultListHolder isNil ifTrue:[
+        classOfResultListHolder := ValueHolder new.
     ].
-    ^ classOfResultHolder
+    ^ classOfResultListHolder
+!
+
+classOfResultNameListHolder
+    "Return a valueHolder which contains a collection with the names of the 
+     implementors of a specific message with cateogy.
+     This is shown in the list view"
+
+    classOfResultNameListHolder isNil ifTrue:[
+        classOfResultNameListHolder := ValueHolder new.
+    ].
+    ^ classOfResultNameListHolder
 !
 
 codeHolder
@@ -1536,13 +1506,13 @@
        }
 !
 
-selectedClassOfResultHolder
+selectedClassOfResultIndexHolder
     "valueHolder which contains the index of the selected result class (right list)"
 
-    selectedClassOfResultHolder isNil ifTrue:[
-        selectedClassOfResultHolder := ValueHolder new.
+    selectedClassOfResultIndexHolder isNil ifTrue:[
+        selectedClassOfResultIndexHolder := ValueHolder new.
     ].
-    ^ selectedClassOfResultHolder
+    ^ selectedClassOfResultIndexHolder
 
     "Modified (comment): / 21-09-2012 / 11:10:29 / cg"
 !
@@ -1572,8 +1542,8 @@
 !MethodFinderWindow methodsFor:'controlInput'!
 
 cleanInputs:aDirtyString 
-    "Find and remove common mistakes made by the user. Return the 
-     'aStringToBeCleaned' variable"
+    "Find and remove common mistakes made by the user. 
+     Return the 'aStringToBeCleaned' variable"
     
     |aStringToBeCleaned rs position|
 
@@ -1775,62 +1745,58 @@
 
 !MethodFinderWindow methodsFor:'private'!
 
+argStringAndValueFromEditorContents:editorContents
+    |associationKey associationValue|
+
+    associationValue := Compiler 
+                                evaluate:editorContents
+                                ifFail:[
+                                    Dialog information:'Bad value in the answer field'.
+                                    AbortOperationRequest raise.
+                                ].
+    ((self isExpression:editorContents) or:[ associationValue isNil]) ifTrue:[
+        "looks if an expression is typed in"
+        associationKey := associationValue printString
+    ] ifFalse:[
+        associationKey := editorContents
+    ].
+    ^ (associationKey -> associationValue).
+!
+
 argumentEditorsContents
     "Determine how many text editors of the arguments are used and store the result
-    as argCounter. The result being the minimum between how many editors have
-    expressions in and how many are displayed.
+     as argCounter. The result being the minimum between how many editors have
+     expressions in and how many are displayed.
 
-    Add each argument string (key)and the evaluated version (value) to an Ordered Dictionary
-    from each of the text editors.
+     Add each argument string (key)and the evaluated version (value) to an Ordered Dictionary
+     from each of the text editors.
 
-    Return the OrderedDictionary with the expressions from all the text editors. "
+     Return the OrderedDictionary with the expressions from all the text editors. "
 
-     | tempArguments argCounter tempArgument1Editor tempArgument2Editor tempArgument3Editor
-       associationKey associationValue|
+     | tempArguments argCounter 
+       tempArgument1EditorContents tempArgument2EditorContents tempArgument3EditorContents |
 
     argCounter:=0.
 
-    tempArgument1Editor:= (self cleanInputs: argument1Editor contents).
-    tempArgument2Editor:=  (self cleanInputs: argument2Editor contents).
-    tempArgument3Editor:= (self cleanInputs: argument3Editor contents).
+    tempArgument1EditorContents := (self cleanInputs: argument1Editor contents).
+    tempArgument2EditorContents := (self cleanInputs: argument2Editor contents).
+    tempArgument3EditorContents := (self cleanInputs: argument3Editor contents).
 
-    tempArgument1Editor = '' ifFalse:[argCounter:=argCounter +1].
-    tempArgument2Editor = '' ifFalse:[argCounter:=argCounter +1].
-    tempArgument3Editor = '' ifFalse:[argCounter:=argCounter +1].
+    tempArgument1EditorContents = '' ifFalse:[argCounter := argCounter +1].
+    tempArgument2EditorContents = '' ifFalse:[argCounter := argCounter +1].
+    tempArgument3EditorContents = '' ifFalse:[argCounter := argCounter +1].
 
     argCounter:= (argCounter min: (self argCountHolder value -1)).
     tempArguments:= OrderedDictionary new:argCounter. 
 
     (argCounter value >= 1) ifTrue:[
-        associationValue:= (Compiler evaluate: tempArgument1Editor).
-        ((self isExpression:tempArgument1Editor) or:[ associationValue isNil]) ifTrue:[
-            "looks if an expression is typed in"
-            associationKey:=associationValue printString
-        ] ifFalse:[
-            associationKey:=tempArgument1Editor
-        ].
-        tempArguments add: associationKey-> associationValue.
+        tempArguments add:(self argStringAndValueFromEditorContents:tempArgument1EditorContents)
     ].
     (argCounter value >= 2) ifTrue:[ 
-        associationValue:= (Compiler evaluate: tempArgument2Editor).
-        (((self isExpression:tempArgument2Editor) or:[ associationValue isNil])) ifTrue:[
-            "looks if an expression is typed in"
-            associationKey:=associationValue printString
-        ] ifFalse:[
-            associationKey:=tempArgument2Editor
-        ].
-        tempArguments add: associationKey-> associationValue
+        tempArguments add:(self argStringAndValueFromEditorContents:tempArgument2EditorContents)
     ].
-
     (argCounter value >= 3) ifTrue:[ 
-        associationValue:= (Compiler evaluate: tempArgument3Editor).
-        ((self isExpression:tempArgument3Editor) or:[ associationValue isNil]) ifTrue:[
-            "looks if an expression is typed in"
-            associationKey:=associationValue printString
-        ] ifFalse:[
-            associationKey:=tempArgument3Editor
-        ].
-        tempArguments add: associationKey-> associationValue
+        tempArguments add:(self argStringAndValueFromEditorContents:tempArgument3EditorContents)
     ].
 
 
@@ -1838,8 +1804,9 @@
 !
 
 extractClassAndSelectorFrom:anArgument 
-    "Opens browser on theArgument of a specific class. anArgument being a string with the
-       Class and the selector upon which the browser is to be opened. Return the receiver."
+    "extracts the class and selector from a list entry,
+     which contains the classname and selector sep'd by a space.
+     Return an association"
 
     |aClass aSelector x theArgument marker|
 
@@ -1859,20 +1826,25 @@
     ].
     ^ aClass -> aSelector asSymbol
 
-"
-MethodFinderWindow new extractClassAndSelectorFrom: '*SmallInteger +'
-MethodFinderWindow new extractClassAndSelectorFrom: 'String ,'       
-MethodFinderWindow new extractClassAndSelectorFrom: 'Number detentBy:atMultiplesOf:snap:' 
-
-
-"
+    "
+     MethodFinderWindow new extractClassAndSelectorFrom: '*SmallInteger +'
+     MethodFinderWindow new extractClassAndSelectorFrom: 'String ,'       
+     MethodFinderWindow new extractClassAndSelectorFrom: 'Number detentBy:atMultiplesOf:snap:' 
+    "
 
     "Modified: / 27-04-2012 / 15:05:53 / cg"
 !
 
 isExpression:aString 
     "Return true or false depending on if the subString includes certain characters"
-    
+
+    |tree|
+
+    Error ignoreIn:[
+        tree := Parser parseExpression:aString.
+        ^ tree isMessage
+    ].
+
     "/ cg: this is naive - why not ask the parser, if it is a literal?
     (aString includesSubString:': ') ifTrue:[
         ^ true
@@ -1916,18 +1888,20 @@
     |aCleanedReceiverString compiledReceiver|
 
     aCleanedReceiverString := self cleanInputs:(receiverEditor contents).
-    "/ allow C-style integers
-    (aCleanedReceiverString startsWith:'0b') ifTrue:[
-        aCleanedReceiverString := '2r',(aCleanedReceiverString withoutPrefix:'0b')
-    ] ifFalse:[
-        (aCleanedReceiverString startsWith:'0x') ifTrue:[
-            aCleanedReceiverString := '16r',(aCleanedReceiverString withoutPrefix:'0x')
-        ] ifFalse:[
-            (aCleanedReceiverString startsWith:'0o') ifTrue:[
-                aCleanedReceiverString := '8r',(aCleanedReceiverString withoutPrefix:'0o')
-            ].
-        ].
-    ].
+
+    "/ allow C-style integers 
+"/ (now supported by compiler)
+"/    (aCleanedReceiverString startsWith:'0b') ifTrue:[
+"/        aCleanedReceiverString := '2r',(aCleanedReceiverString withoutPrefix:'0b')
+"/    ] ifFalse:[
+"/        (aCleanedReceiverString startsWith:'0x') ifTrue:[
+"/            aCleanedReceiverString := '16r',(aCleanedReceiverString withoutPrefix:'0x')
+"/        ] ifFalse:[
+"/            (aCleanedReceiverString startsWith:'0o') ifTrue:[
+"/                aCleanedReceiverString := '8r',(aCleanedReceiverString withoutPrefix:'0o')
+"/            ].
+"/        ].
+"/    ].
     compiledReceiver := Compiler evaluate:aCleanedReceiverString.
     ((self isExpression:aCleanedReceiverString) or:[ compiledReceiver isNil ]) ifTrue:[
         aCleanedReceiverString := compiledReceiver printString
@@ -1945,15 +1919,19 @@
 
 !MethodFinderWindow methodsFor:'user actions'!
 
-selectedClassOfResultHolderChanged
-    |sel classAndSelector mthd|
+selectedClassOfResultIndexHolderChanged
+    |selIdx sel classAndSelector mthd|
 
-    sel := self selectedClassOfResultHolder value.
+    selIdx := self selectedClassOfResultIndexHolder value.
+    selIdx isNil ifTrue:[^ self].
+
+    sel := classOfResultListHolder value at:selIdx.
 
     classAndSelector := self extractClassAndSelectorFrom:sel.
     classAndSelector isNil ifTrue:[
         ^ self
     ].
+
     mthd := classAndSelector key >> classAndSelector value.   
     mthd notNil ifTrue:[
         self withWaitCursorDo:[