ResourceSelectionBrowser.st
changeset 1384 ff417bf5f8d8
parent 1329 a38c2e29d1fb
child 1404 f088630ac860
equal deleted inserted replaced
1383:179597c2abed 1384:ff417bf5f8d8
     8  be provided or otherwise made available to, or used by, any
     8  be provided or otherwise made available to, or used by, any
     9  other person. No title to or ownership of the software is
     9  other person. No title to or ownership of the software is
    10  hereby transferred.
    10  hereby transferred.
    11 "
    11 "
    12 
    12 
       
    13 
       
    14 "{ Package: 'stx:libtool2' }"
    13 
    15 
    14 SelectionBrowser subclass:#ResourceSelectionBrowser
    16 SelectionBrowser subclass:#ResourceSelectionBrowser
    15 	instanceVariableNames:'resourceMethod resourceClass resourceSuperclass resourceTypes
    17 	instanceVariableNames:'resourceMethod resourceClass resourceSuperclass resourceTypes
    16 		allClasses classSelectionBlock'
    18 		allClasses classSelectionBlock'
    17 	classVariableNames:'ClassPresentation'
    19 	classVariableNames:'ClassPresentation'
   256      ResourceSelectionBrowser open
   258      ResourceSelectionBrowser open
   257     "
   259     "
   258 
   260 
   259     <resource: #canvas>
   261     <resource: #canvas>
   260 
   262 
   261     ^
   263     ^ 
   262      
   264      #(#FullSpec
   263        #(#FullSpec
   265         #name: #windowSpec
   264           #window: 
   266         #window: 
   265            #(#WindowSpec
   267        #(#WindowSpec
   266               #name: 'Resource Selection Browser'
   268           #label: 'Resource Selection Browser'
   267               #layout: #(#LayoutFrame 194 0 307 0 793 0 656 0)
   269           #name: 'Resource Selection Browser'
   268               #label: 'Resource Selection Browser'
   270           #min: #(#Point 400 300)
   269               #min: #(#Point 400 300)
   271           #max: #(#Point 1152 864)
   270               #max: #(#Point 1152 864)
   272           #bounds: #(#Rectangle 145 206 745 556)
   271               #bounds: #(#Rectangle 194 307 794 657)
   273         )
   272               #usePreferredExtent: false
   274         #component: 
   273           )
   275        #(#SpecCollection
   274           #component: 
   276           #collection: #(
   275            #(#SpecCollection
   277            #(#VariableHorizontalPanelSpec
   276               #collection: 
   278               #name: 'VariableHorizontalPanel'
   277                #(
   279               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -36 1.0)
   278                  #(#VariableHorizontalPanelSpec
   280               #component: 
   279                     #name: 'VariableHorizontalPanel'
   281              #(#SpecCollection
   280                     #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -36 1.0)
   282                 #collection: #(
       
   283                  #(#ViewSpec
       
   284                     #name: 'Box1'
   281                     #component: 
   285                     #component: 
   282                      #(#SpecCollection
   286                    #(#SpecCollection
   283                         #collection: 
   287                       #collection: #(
   284                          #(
   288                        #(#HorizontalPanelViewSpec
   285                            #(#ViewSpec
   289                           #name: 'HorizontalPanel2'
   286                               #name: 'Box1'
   290                           #layout: #(#LayoutFrame 0 0 2 0 297 0 23 0)
   287                               #component: 
   291                           #horizontalLayout: #leftSpace
   288                                #(#SpecCollection
   292                           #verticalLayout: #fit
   289                                   #collection: 
   293                           #horizontalSpace: 3
   290                                    #(
   294                           #verticalSpace: 3
   291                                      #(#HorizontalPanelViewSpec
   295                           #component: 
   292                                         #name: 'HorizontalPanel2'
   296                          #(#SpecCollection
   293                                         #layout: #(#LayoutFrame 0 0 2 0 297 0 23 0)
   297                             #collection: #(
   294                                         #component: 
   298                              #(#RadioButtonSpec
   295                                          #(#SpecCollection
   299                                 #label: 'Categories'
   296                                             #collection: 
   300                                 #name: 'ClassCategoriesRadioButton'
   297                                              #(
   301                                 #translateLabel: true
   298                                                #(#RadioButtonSpec
   302                                 #model: #selectionOfClassPresentation
   299                                                   #name: 'ClassCategoriesRadioButton'
   303                                 #isTriggerOnDown: true
   300                                                   #label: 'Categories'
   304                                 #lampColor: #(#Color 0.0 0.0 0.0)
   301                                                   #translateLabel: true
   305                                 #select: #'Class Categories'
   302                                                   #model: #selectionOfClassPresentation
   306                                 #extent: #(#Point 124 21)
   303                                                   #isTriggerOnDown: true
       
   304                                                   #lampColor: #(#Color 0.0 0.0 0.0)
       
   305                                                   #select: #'Class Categories'
       
   306                                                   #extent: #(#Point 124 21)
       
   307                                               )
       
   308                                                #(#RadioButtonSpec
       
   309                                                   #name: 'ClassHierarchyRadioButton'
       
   310                                                   #label: 'Hierarchy'
       
   311                                                   #translateLabel: true
       
   312                                                   #model: #selectionOfClassPresentation
       
   313                                                   #isTriggerOnDown: true
       
   314                                                   #lampColor: #(#Color 0.0 0.0 0.0)
       
   315                                                   #select: #'Class Hierarchy'
       
   316                                                   #extent: #(#Point 145 21)
       
   317                                               )
       
   318                                             )
       
   319                                         )
       
   320                                         #horizontalLayout: #leftSpace
       
   321                                         #verticalLayout: #fit
       
   322                                         #horizontalSpace: 3
       
   323                                         #verticalSpace: 3
       
   324                                     )
       
   325                                      #(#SelectionInTreeViewSpec
       
   326                                         #name: 'listOfClassHierarchyView'
       
   327                                         #layout: #(#LayoutFrame 0 0.0 23 0.0 0 1.0 -24 1.0)
       
   328                                         #tabable: true
       
   329                                         #model: #selectionOfClassHierarchy
       
   330                                         #hasHorizontalScrollBar: true
       
   331                                         #hasVerticalScrollBar: true
       
   332                                         #miniScrollerHorizontal: true
       
   333                                         #showDirectoryIndicatorForRoot: false
       
   334                                         #showDirectoryIndicator: true
       
   335                                         #valueChangeSelector: #classSelected
       
   336                                         #hierarchicalList: #rootOfClassHierarchy
       
   337                                         #validateDoubleClickSelector: #validateDoubleClick:
       
   338                                         #contentsSelector: #treeViewClassHierarchyContents
       
   339                                         #labelSelector: #treeViewClassHierarchyLabel
       
   340                                         #childrenSelector: #treeViewClassHierarchyChildren
       
   341                                         #iconSelector: #treeViewClassHierarchyIcon
       
   342                                     )
       
   343                                      #(#SelectionInTreeViewSpec
       
   344                                         #name: 'listOfClassCategoriesView'
       
   345                                         #layout: #(#LayoutFrame 0 0.0 23 0.0 0 1.0 -24 1.0)
       
   346                                         #tabable: true
       
   347                                         #model: #selectionOfClassCategories
       
   348                                         #hasHorizontalScrollBar: true
       
   349                                         #hasVerticalScrollBar: true
       
   350                                         #miniScrollerHorizontal: true
       
   351                                         #showRoot: false
       
   352                                         #showDirectoryIndicator: true
       
   353                                         #valueChangeSelector: #classSelected
       
   354                                         #hierarchicalList: #rootOfClassCategories
       
   355                                         #validateDoubleClickSelector: #validateDoubleClick:
       
   356                                         #childrenSelector: #treeViewClassCategoryChildren
       
   357                                         #iconSelector: #treeViewClassCategoryIcon
       
   358                                     )
       
   359                                      #(#InputFieldSpec
       
   360                                         #name: 'classNameInputField'
       
   361                                         #layout: #(#LayoutFrame 2 0.0 -22 1 -1 1.0 0 1)
       
   362                                         #tabable: true
       
   363                                         #model: #valueOfClassName
       
   364                                     )
       
   365                                   )
       
   366                               )
   307                               )
   367                           )
   308                              #(#RadioButtonSpec
   368                            #(#ViewSpec
   309                                 #label: 'Hierarchy'
   369                               #name: 'Box2'
   310                                 #name: 'ClassHierarchyRadioButton'
   370                               #component: 
   311                                 #translateLabel: true
   371                                #(#SpecCollection
   312                                 #model: #selectionOfClassPresentation
   372                                   #collection: 
   313                                 #isTriggerOnDown: true
   373                                    #(
   314                                 #lampColor: #(#Color 0.0 0.0 0.0)
   374                                      #(#DataSetSpec
   315                                 #select: #'Class Hierarchy'
   375                                         #name: 'resourcesDataSetView'
   316                                 #extent: #(#Point 145 21)
   376                                         #layout: #(#LayoutFrame 2 0.0 2 0.0 -2 1.0 -24 1.0)
       
   377                                         #model: #selectionOfResourceMethod
       
   378                                         #hasHorizontalScrollBar: true
       
   379                                         #hasVerticalScrollBar: true
       
   380                                         #miniScrollerHorizontal: true
       
   381                                         #rowClassName: 'ResourceSelectionBrowser::Row'
       
   382                                         #dataList: #listOfResourceMethods
       
   383                                         #useIndex: false
       
   384                                         #has3Dsepartors: true
       
   385                                         #has3Dseparators: true
       
   386                                         #doubleClickSelector: #resourceDoubleClicked
       
   387                                         #columnHolder: #resourceMethodColumns
       
   388                                         #valueChangeSelector: #resourceSelected
       
   389                                         #verticalSpacing: 1
       
   390                                     )
       
   391                                      #(#InputFieldSpec
       
   392                                         #name: 'selectorInputField'
       
   393                                         #layout: #(#LayoutFrame 2 0.0 -22 1 -2 1.0 0 1)
       
   394                                         #tabable: true
       
   395                                         #model: #valueOfResourceSelector
       
   396                                     )
       
   397                                   )
       
   398                               )
   317                               )
       
   318                              )
       
   319                            
   399                           )
   320                           )
   400                         )
   321                         )
       
   322                        #(#SelectionInTreeViewSpec
       
   323                           #name: 'listOfClassHierarchyView'
       
   324                           #layout: #(#LayoutFrame 0 0.0 23 0.0 0 1.0 -24 1.0)
       
   325                           #tabable: true
       
   326                           #model: #selectionOfClassHierarchy
       
   327                           #hasHorizontalScrollBar: true
       
   328                           #hasVerticalScrollBar: true
       
   329                           #miniScrollerHorizontal: true
       
   330                           #showDirectoryIndicatorForRoot: false
       
   331                           #showDirectoryIndicator: true
       
   332                           #valueChangeSelector: #classSelected
       
   333                           #hierarchicalList: #rootOfClassHierarchy
       
   334                           #validateDoubleClickSelector: #validateDoubleClick:
       
   335                           #contentsSelector: #treeViewClassHierarchyContents
       
   336                           #labelSelector: #treeViewClassHierarchyLabel
       
   337                           #childrenSelector: #treeViewClassHierarchyChildren
       
   338                           #iconSelector: #treeViewClassHierarchyIcon
       
   339                           #highlightMode: #line
       
   340                         )
       
   341                        #(#SelectionInTreeViewSpec
       
   342                           #name: 'listOfClassCategoriesView'
       
   343                           #layout: #(#LayoutFrame 0 0.0 23 0.0 0 1.0 -24 1.0)
       
   344                           #tabable: true
       
   345                           #model: #selectionOfClassCategories
       
   346                           #hasHorizontalScrollBar: true
       
   347                           #hasVerticalScrollBar: true
       
   348                           #miniScrollerHorizontal: true
       
   349                           #showRoot: false
       
   350                           #showDirectoryIndicator: true
       
   351                           #valueChangeSelector: #classSelected
       
   352                           #hierarchicalList: #rootOfClassCategories
       
   353                           #validateDoubleClickSelector: #validateDoubleClick:
       
   354                           #childrenSelector: #treeViewClassCategoryChildren
       
   355                           #iconSelector: #treeViewClassCategoryIcon
       
   356                           #highlightMode: #line
       
   357                         )
       
   358                        #(#InputFieldSpec
       
   359                           #name: 'classNameInputField'
       
   360                           #layout: #(#LayoutFrame 2 0.0 -22 1 -1 1.0 0 1)
       
   361                           #tabable: true
       
   362                           #model: #valueOfClassName
       
   363                           #acceptOnLeave: true
       
   364                           #acceptOnLostFocus: true
       
   365                           #acceptOnPointerLeave: true
       
   366                         )
       
   367                        )
       
   368                      
   401                     )
   369                     )
   402                     #handles: #(#Any 0.5 1.0)
   370                   )
   403                 )
   371                  #(#ViewSpec
   404                  #(#HorizontalPanelViewSpec
   372                     #name: 'Box2'
   405                     #name: 'HorizontalPanel1'
       
   406                     #layout: #(#LayoutFrame 2 0.0 -30 1 -2 1.0 -4 1.0)
       
   407                     #component: 
   373                     #component: 
   408                      #(#SpecCollection
   374                    #(#SpecCollection
   409                         #collection: 
   375                       #collection: #(
   410                          #(
   376                        #(#DataSetSpec
   411                            #(#ActionButtonSpec
   377                           #name: 'resourcesDataSetView'
   412                               #name: 'HelpButton'
   378                           #layout: #(#LayoutFrame 2 0.0 2 0.0 -2 1.0 -24 1.0)
   413                               #activeHelpKey: #dss
   379                           #model: #selectionOfResourceMethod
   414                               #label: 'Help'
   380                           #hasHorizontalScrollBar: true
   415                               #model: #openHTMLDocument:
   381                           #hasVerticalScrollBar: true
   416                               #initiallyDisabled: true
   382                           #miniScrollerHorizontal: true
   417                               #enableChannel: #helpEnabled
   383                           #rowClassName: 'ResourceSelectionBrowser::Row'
   418                               #actionValue: 'tools/uipainter/ResourceSelectionBrowser.html'
   384                           #dataList: #listOfResourceMethods
   419                               #extent: #(#Point 196 26)
   385                           #useIndex: false
   420                           )
   386                           #has3Dsepartors: true
   421                            #(#ActionButtonSpec
   387                           #has3Dseparators: true
   422                               #name: 'cancelButton'
   388                           #doubleClickSelector: #resourceDoubleClicked
   423                               #activeHelpKey: #commitCancel
   389                           #columnHolder: #resourceMethodColumns
   424                               #label: 'Cancel'
   390                           #valueChangeSelector: #resourceSelected
   425                               #tabable: true
   391                           #verticalSpacing: 1
   426                               #model: #cancel
       
   427                               #extent: #(#Point 196 26)
       
   428                           )
       
   429                            #(#ActionButtonSpec
       
   430                               #name: 'okButton'
       
   431                               #activeHelpKey: #commitOK
       
   432                               #label: 'OK'
       
   433                               #tabable: true
       
   434                               #model: #accept
       
   435                               #isDefault: true
       
   436                               #extent: #(#Point 196 24)
       
   437                           )
       
   438                         )
   392                         )
       
   393                        #(#InputFieldSpec
       
   394                           #name: 'selectorInputField'
       
   395                           #layout: #(#LayoutFrame 2 0.0 -22 1 -2 1.0 0 1)
       
   396                           #tabable: true
       
   397                           #model: #valueOfResourceSelector
       
   398                           #acceptOnLeave: true
       
   399                           #acceptOnLostFocus: true
       
   400                           #acceptOnPointerLeave: true
       
   401                         )
       
   402                        )
       
   403                      
   439                     )
   404                     )
   440                     #horizontalLayout: #fit
   405                   )
   441                     #verticalLayout: #fit
   406                  )
   442                 )
   407                
   443               )
   408               )
   444           )
   409               #handles: #(#Any 0.5 1.0)
       
   410             )
       
   411            #(#HorizontalPanelViewSpec
       
   412               #name: 'HorizontalPanel1'
       
   413               #layout: #(#LayoutFrame 2 0.0 -30 1 -2 1.0 -4 1.0)
       
   414               #horizontalLayout: #fit
       
   415               #verticalLayout: #fit
       
   416               #component: 
       
   417              #(#SpecCollection
       
   418                 #collection: #(
       
   419                  #(#ActionButtonSpec
       
   420                     #label: 'Help'
       
   421                     #name: 'HelpButton'
       
   422                     #activeHelpKey: #dss
       
   423                     #model: #openHTMLDocument:
       
   424                     #initiallyDisabled: true
       
   425                     #enableChannel: #helpEnabled
       
   426                     #actionValue: 'tools/uipainter/ResourceSelectionBrowser.html'
       
   427                     #extent: #(#Point 196 26)
       
   428                   )
       
   429                  #(#ActionButtonSpec
       
   430                     #label: 'Cancel'
       
   431                     #name: 'cancelButton'
       
   432                     #activeHelpKey: #commitCancel
       
   433                     #tabable: true
       
   434                     #model: #cancel
       
   435                     #extent: #(#Point 196 26)
       
   436                   )
       
   437                  #(#ActionButtonSpec
       
   438                     #label: 'OK'
       
   439                     #name: 'okButton'
       
   440                     #activeHelpKey: #commitOK
       
   441                     #tabable: true
       
   442                     #model: #accept
       
   443                     #isDefault: true
       
   444                     #extent: #(#Point 196 24)
       
   445                   )
       
   446                  )
       
   447                
       
   448               )
       
   449             )
       
   450            )
       
   451          
       
   452         )
   445       )
   453       )
   446 
       
   447     "Modified: / 27.7.1998 / 18:05:40 / cg"
       
   448 ! !
   454 ! !
   449 
   455 
   450 !ResourceSelectionBrowser class methodsFor:'list specs'!
   456 !ResourceSelectionBrowser class methodsFor:'list specs'!
   451 
   457 
   452 tableColumnsForResourceMethodAttributes
   458 tableColumnsForResourceMethodAttributes
   601     "returns the value holder for the name of the class"
   607     "returns the value holder for the name of the class"
   602 
   608 
   603     |holder|                   
   609     |holder|                   
   604     (holder := builder bindingAt:#valueOfClassName) isNil ifTrue:[
   610     (holder := builder bindingAt:#valueOfClassName) isNil ifTrue:[
   605         builder aspectAt:#valueOfClassName put:(holder :=  '' asValue).
   611         builder aspectAt:#valueOfClassName put:(holder :=  '' asValue).
       
   612         holder onChangeEvaluate:[self classSelectionUpdate:holder value].
   606     ].
   613     ].
   607     ^ holder
   614     ^ holder
   608 !
   615 !
   609 
   616 
   610 valueOfResourceSelector
   617 valueOfResourceSelector
   741                     [:m| m resources notNil and: [resourceTypes includes: m resourceType]]))
   748                     [:m| m resources notNil and: [resourceTypes includes: m resourceType]]))
   742              collect: [:m| (ResourceMethod new method: m)]).
   749              collect: [:m| (ResourceMethod new method: m)]).
   743     ]
   750     ]
   744 !
   751 !
   745 
   752 
       
   753 classSelectionUpdate:clsPattern
       
   754     |foundClass classes|  
       
   755 
       
   756     clsPattern notNil ifTrue:[
       
   757         foundClass := Smalltalk at:(clsPattern printString asSymbol).
       
   758     ].
       
   759     (foundClass isClass not or:[foundClass name ~= clsPattern])
       
   760     ifTrue:
       
   761     [
       
   762         classes := allClasses select: [:cls| cls name size >= clsPattern size].
       
   763         1 to: clsPattern size do: 
       
   764         [:i|    
       
   765              classes := classes select: [:cls| (cls name at: i) == (clsPattern at: i)].
       
   766         ].    
       
   767         foundClass := classes at: 1 ifAbsent: [nil] 
       
   768     ].          
       
   769     foundClass notNil
       
   770     ifTrue:
       
   771     [           
       
   772         ClassPresentation = #'Class Hierarchy'
       
   773         ifTrue:  
       
   774         [
       
   775             |searchArgs nonSuperclasses|
       
   776             foundClass isPrivate
       
   777                 ifFalse: [searchArgs := foundClass withAllSuperclasses reverse]
       
   778                 ifTrue:  [searchArgs := foundClass owningClass withAllSuperclasses reverse. searchArgs add: foundClass]
       
   779 .                                  
       
   780             (nonSuperclasses := self treeViewClassHierarchyContents allSuperclasses) notNil 
       
   781                 ifTrue: [searchArgs := searchArgs reject: [:cls| nonSuperclasses includes: cls]].
       
   782 
       
   783             self selectionOfClassHierarchy value: (self rootOfClassHierarchy detectChild:[:child :arg| child contents == arg] arguments:searchArgs).
       
   784         ]
       
   785         ifFalse: 
       
   786         [
       
   787             |searchArgs|
       
   788             foundClass isPrivate
       
   789                 ifTrue:  [searchArgs := Array with: 'Categories' with: foundClass category with: foundClass owningClass name with: foundClass name]
       
   790                 ifFalse: [searchArgs := Array with: 'Categories' with: foundClass category with: foundClass name].
       
   791 
       
   792             self selectionOfClassCategories value: (self rootOfClassCategories detectChild:[:child :arg| (child name upTo: $ ) = arg] arguments:searchArgs).
       
   793         ].
       
   794     ].
       
   795     self valueOfClassName value: clsPattern
       
   796 
       
   797 
       
   798 !
       
   799 
   746 resourceDoubleClicked
   800 resourceDoubleClicked
   747     "after a double click on resource method, accept it and close"
   801     "after a double click on resource method, accept it and close"
   748 
   802 
   749     accept value: true.
   803     accept value: true.
   750     self closeRequest
   804     self closeRequest
   827     (classSelection isNil or:[Smalltalk at: classSelection]) isNil 
   881     (classSelection isNil or:[Smalltalk at: classSelection]) isNil 
   828         ifTrue: [classSelection :=  self class lastSelection].
   882         ifTrue: [classSelection :=  self class lastSelection].
   829     (classSelection isNil or:[Smalltalk at: classSelection]) isNil 
   883     (classSelection isNil or:[Smalltalk at: classSelection]) isNil 
   830         ifTrue: [classSelection :=  self treeViewContents].
   884         ifTrue: [classSelection :=  self treeViewContents].
   831 
   885 
   832     classSelectionBlock := 
   886     classSelectionBlock := [:clsPattern | self classSelectionUpdate:clsPattern].
   833     [:clsPattern|                                  
       
   834         |foundClass classes|  
       
   835 
       
   836         clsPattern notNil ifTrue:[
       
   837             foundClass := Smalltalk at:(clsPattern printString asSymbol).
       
   838         ].
       
   839         (foundClass isClass not or:[foundClass name ~= clsPattern])
       
   840         ifTrue:
       
   841         [
       
   842             classes := allClasses select: [:cls| cls name size >= clsPattern size].
       
   843             1 to: clsPattern size do: 
       
   844             [:i|    
       
   845                  classes := classes select: [:cls| (cls name at: i) == (clsPattern at: i)].
       
   846             ].    
       
   847             foundClass := classes at: 1 ifAbsent: [nil] 
       
   848         ].          
       
   849         foundClass notNil
       
   850         ifTrue:
       
   851         [           
       
   852             ClassPresentation = #'Class Hierarchy'
       
   853             ifTrue:  
       
   854             [
       
   855                 |searchArgs nonSuperclasses|
       
   856                 foundClass isPrivate
       
   857                     ifFalse: [searchArgs := foundClass withAllSuperclasses reverse]
       
   858                     ifTrue:  [searchArgs := foundClass owningClass withAllSuperclasses reverse. searchArgs add: foundClass]
       
   859     .                                  
       
   860                 (nonSuperclasses := self treeViewClassHierarchyContents allSuperclasses) notNil 
       
   861                     ifTrue: [searchArgs := searchArgs reject: [:cls| nonSuperclasses includes: cls]].
       
   862 
       
   863                 self selectionOfClassHierarchy value: (self rootOfClassHierarchy detectChild:[:child :arg| child contents == arg] arguments:searchArgs).
       
   864             ]
       
   865             ifFalse: 
       
   866             [
       
   867                 |searchArgs|
       
   868                 foundClass isPrivate
       
   869                     ifTrue:  [searchArgs := Array with: 'Categories' with: foundClass category with: foundClass owningClass name with: foundClass name]
       
   870                     ifFalse: [searchArgs := Array with: 'Categories' with: foundClass category with: foundClass name].
       
   871 
       
   872                 self selectionOfClassCategories value: (self rootOfClassCategories detectChild:[:child :arg| (child name upTo: $ ) = arg] arguments:searchArgs).
       
   873             ].
       
   874         ].
       
   875         self valueOfClassName value: clsPattern
       
   876     ].
       
   877     self valueOfClassName value: classSelection.  
   887     self valueOfClassName value: classSelection.  
   878 
   888 
   879     (classNameInputField := builder componentAt: #classNameInputField) entryCompletionBlock:
   889     (classNameInputField := builder componentAt: #classNameInputField) entryCompletionBlock:
   880     [:value|
   890     [:value|
   881         |what oldClassName|
   891         |what oldClassName|