HierarchicalListEditor.st
changeset 506 249e94fdeb94
parent 489 d5f942ce5c94
child 522 06bef91cb861
equal deleted inserted replaced
505:d9ed26eeafe9 506:249e94fdeb94
    76     ^
    76     ^
    77      
    77      
    78        #(#FullSpec
    78        #(#FullSpec
    79           #'window:' 
    79           #'window:' 
    80            #(#WindowSpec
    80            #(#WindowSpec
    81               #'name:' 'Painter'
    81               #'name:' 'Hierarchical List Editor'
    82               #'layout:' #(#LayoutFrame 233 0 430 0 533 0 558 0)
    82               #'layout:' #(#LayoutFrame 197 0 172 0 497 0 300 0)
    83               #'label:' 'Painter'
    83               #'label:' 'Hierarchical List Editor'
    84               #'min:' #(#Point 10 10)
    84               #'min:' #(#Point 10 10)
    85               #'max:' #(#Point 1160 870)
    85               #'max:' #(#Point 1160 870)
    86               #'bounds:' #(#Rectangle 233 430 534 559)
    86               #'bounds:' #(#Rectangle 197 172 498 301)
    87               #'usePreferredExtent:' false
    87               #'usePreferredExtent:' false
    88           )
    88           )
    89           #'component:' 
    89           #'component:' 
    90            #(#SpecCollection
    90            #(#SpecCollection
    91               #'collection:' 
    91               #'collection:' 
   105                     #'resizeForLabel:' true
   105                     #'resizeForLabel:' true
   106                 )
   106                 )
   107                  #(#InputFieldSpec
   107                  #(#InputFieldSpec
   108                     #'name:' 'classField'
   108                     #'name:' 'classField'
   109                     #'layout:' #(#LayoutFrame 47 0.11 39 0 -2 1.0 61 0)
   109                     #'layout:' #(#LayoutFrame 47 0.11 39 0 -2 1.0 61 0)
       
   110                     #'enableChannel:' #canChangeClassName
   110                     #'tabable:' true
   111                     #'tabable:' true
   111                     #'model:' #specClassChannel
   112                     #'model:' #specClassChannel
   112                 )
   113                 )
   113                  #(#LabelSpec
   114                  #(#LabelSpec
   114                     #'name:' 'methodLabel'
   115                     #'name:' 'methodLabel'
   118                     #'resizeForLabel:' true
   119                     #'resizeForLabel:' true
   119                 )
   120                 )
   120                  #(#InputFieldSpec
   121                  #(#InputFieldSpec
   121                     #'name:' 'methodField'
   122                     #'name:' 'methodField'
   122                     #'layout:' #(#LayoutFrame 47 0.11 64 0 -2 1.0 86 0)
   123                     #'layout:' #(#LayoutFrame 47 0.11 64 0 -2 1.0 86 0)
   123                     #'tabable:' true
       
   124                     #'model:' #specSelectorChannel
       
   125                     #'type:' #string
       
   126                 )
       
   127                  #(#UISubSpecification
       
   128                     #'name:' 'SubSpecification'
       
   129                     #'layout:' #(#LayoutFrame 0 0.0 -29 1 0 1.0 -5 1.0)
       
   130                     #'majorKey:' #ToolApplicationModel
       
   131                     #'minorKey:' #windowSpecForCommitWithoutChannels
       
   132                 )
       
   133               )
       
   134           )
       
   135       )
       
   136 !
       
   137 
       
   138 menu
       
   139     "this window spec was automatically generated by the ST/X MenuEditor"
       
   140 
       
   141     "do not manually edit this - the builder may not be able to
       
   142      handle the specification if its corrupted."
       
   143 
       
   144     "
       
   145      MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menu
       
   146      (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menu)) startUp
       
   147     "
       
   148 
       
   149     <resource: #menu>
       
   150 
       
   151     ^
       
   152      
       
   153        #(#Menu
       
   154           
       
   155            #(
       
   156              #(#MenuItem
       
   157                 #'label:' 'About'
       
   158                 #'labelImage:' #(#ResourceRetriever nil #icon)
       
   159                 #'submenuChannel:' #menuAbout
       
   160             )
       
   161              #(#MenuItem
       
   162                 #'label:' 'File'
       
   163                 #'submenu:' 
       
   164                  #(#Menu
       
   165                     
       
   166                      #(
       
   167                        #(#MenuItem
       
   168                           #'label:' 'New'
       
   169                           #'value:' #doNew
       
   170                       )
       
   171                        #(#MenuItem
       
   172                           #'label:' 'Reload'
       
   173                           #'value:' #doReload
       
   174                       )
       
   175                        #(#MenuItem
       
   176                           #'label:' '-'
       
   177                       )
       
   178                        #(#MenuItem
       
   179                           #'label:' 'Save'
       
   180                           #'value:' #doInstall
       
   181                           #'enabled:' #hasValidClass
       
   182                       )
       
   183                        #(#MenuItem
       
   184                           #'label:' '-'
       
   185                       )
       
   186                        #(#MenuItem
       
   187                           #'label:' 'Define Selector...'
       
   188                           #'value:' #doDefineSelector
       
   189                           #'enabled:' #hasValidClass
       
   190                       )
       
   191                        #(#MenuItem
       
   192                           #'label:' 'Define Class...'
       
   193                           #'value:' #doDefineClass
       
   194                           #'enabled:' #canChangeClassName
       
   195                       )
       
   196                        #(#MenuItem
       
   197                           #'label:' '-'
       
   198                       )
       
   199                        #(#MenuItem
       
   200                           #'label:' 'Exit'
       
   201                           #'value:' #closeRequest
       
   202                       )
       
   203                     ) nil
       
   204                     nil
       
   205                 )
       
   206             )
       
   207              #(#MenuItem
       
   208                 #'label:' 'Edit'
       
   209                 #'submenuChannel:' #menuEdit
       
   210             )
       
   211              #(#MenuItem
       
   212                 #'label:' 'Browse'
       
   213                 #'enabled:' #hasValidClass
       
   214                 #'submenu:' 
       
   215                  #(#Menu
       
   216                     
       
   217                      #(
       
   218                        #(#MenuItem
       
   219                           #'label:' 'Class'
       
   220                           #'value:' #'doBrowse:'
       
   221                           #'argument:' #class
       
   222                       )
       
   223                        #(#MenuItem
       
   224                           #'label:' 'Method'
       
   225                           #'value:' #'doBrowse:'
       
   226                           #'enabled:' #hasValidMethodSelector
       
   227                           #'argument:' #method
       
   228                       )
       
   229                        #(#MenuItem
       
   230                           #'label:' 'Specification'
       
   231                           #'value:' #'doBrowse:'
       
   232                           #'enabled:' #hasValidSpecSelector
       
   233                           #'argument:' #spec
       
   234                       )
       
   235                     ) nil
       
   236                     nil
       
   237                 )
       
   238             )
       
   239           ) nil
       
   240           nil
       
   241       )
       
   242 !
       
   243 
       
   244 menuEdit
       
   245     "this window spec was automatically generated by the ST/X MenuEditor"
       
   246 
       
   247     "do not manually edit this - the builder may not be able to
       
   248      handle the specification if its corrupted."
       
   249 
       
   250     "
       
   251      MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menuEdit
       
   252      (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menuEdit)) startUp
       
   253     "
       
   254 
       
   255     <resource: #menu>
       
   256 
       
   257     ^
       
   258      
       
   259        #(#Menu
       
   260           
       
   261            #(
       
   262              #(#MenuItem
       
   263                 #'label:' 'Cut'
       
   264                 #'value:' #doCut
       
   265                 #'enabled:' #canCut
       
   266             )
       
   267              #(#MenuItem
       
   268                 #'label:' 'Copy'
       
   269                 #'value:' #doCopy
       
   270                 #'enabled:' #canCopy
       
   271             )
       
   272              #(#MenuItem
       
   273                 #'label:' 'Paste'
       
   274                 #'value:' #doPaste
       
   275                 #'enabled:' #canPaste
       
   276             )
       
   277              #(#MenuItem
       
   278                 #'label:' '-'
       
   279             )
       
   280              #(#MenuItem
       
   281                 #'label:' 'Create Child'
       
   282                 #'value:' #doCreateChild
       
   283                 #'enabled:' #canCreateChildChannel
       
   284                 #'labelImage:' #(#ResourceRetriever #HierarchicalListEditor #iconCreateChild)
       
   285             )
       
   286              #(#MenuItem
       
   287                 #'label:' 'Create Sister'
       
   288                 #'value:' #doCreateSister
       
   289                 #'enabled:' #canCreateSisterChannel
       
   290                 #'labelImage:' #(#ResourceRetriever #HierarchicalListEditor #iconCreateSister)
       
   291             )
       
   292           ) nil
       
   293           nil
       
   294       )
       
   295 !
       
   296 
       
   297 menuToolbar
       
   298     "this window spec was automatically generated by the ST/X MenuEditor"
       
   299 
       
   300     "do not manually edit this - the builder may not be able to
       
   301      handle the specification if its corrupted."
       
   302 
       
   303     "
       
   304      MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menuToolbar
       
   305      (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menuToolbar)) startUp
       
   306     "
       
   307 
       
   308     <resource: #menu>
       
   309 
       
   310     ^
       
   311      
       
   312        #(#Menu
       
   313           
       
   314            #(
       
   315              #(#MenuItem
       
   316                 #'label:' 'New'
       
   317                 #'isButton:' true
       
   318                 #'value:' #doNew
       
   319                 #'enabled:' #canCreateChildChannel
       
   320                 #'labelImage:' #(#ResourceRetriever nil #newIcon)
       
   321             )
       
   322              #(#MenuItem
       
   323                 #'label:' 'Save'
       
   324                 #'isButton:' true
       
   325                 #'value:' #doInstall
       
   326                 #'enabled:' #canCreateChildChannel
       
   327                 #'labelImage:' #(#ResourceRetriever nil #saveIcon)
       
   328             )
       
   329              #(#MenuItem
       
   330                 #'label:' ''
       
   331             )
       
   332              #(#MenuItem
       
   333                 #'label:' 'Create Child'
       
   334                 #'isButton:' true
       
   335                 #'value:' #doCreateChild
       
   336                 #'enabled:' #canCreateChildChannel
       
   337                 #'labelImage:' #(#ResourceRetriever nil #createChildIcon)
       
   338             )
       
   339              #(#MenuItem
       
   340                 #'label:' 'Create Sister'
       
   341                 #'isButton:' true
       
   342                 #'value:' #doCreateSister
       
   343                 #'enabled:' #canCreateSisterChannel
       
   344                 #'labelImage:' #(#ResourceRetriever nil #createSisterIcon)
       
   345             )
       
   346              #(#MenuItem
       
   347                 #'label:' ''
       
   348             )
       
   349              #(#MenuItem
       
   350                 #'label:' 'Step Up'
       
   351                 #'isButton:' true
       
   352                 #'value:' #doStepUp
       
   353                 #'enabled:' #canStepOverChannel
       
   354                 #'labelImage:' #(#ResourceRetriever nil #upIcon)
       
   355             )
       
   356              #(#MenuItem
       
   357                 #'label:' 'Step Down'
       
   358                 #'isButton:' true
       
   359                 #'value:' #doStepDown
       
   360                 #'enabled:' #canStepOverChannel
       
   361                 #'labelImage:' #(#ResourceRetriever nil #downIcon)
       
   362             )
       
   363              #(#MenuItem
       
   364                 #'label:' 'Step In'
       
   365                 #'isButton:' true
       
   366                 #'value:' #doStepIn
       
   367                 #'enabled:' #canStepInChannel
       
   368                 #'labelImage:' #(#ResourceRetriever nil #downRightIcon)
       
   369             )
       
   370              #(#MenuItem
       
   371                 #'label:' 'Step Out'
       
   372                 #'isButton:' true
       
   373                 #'value:' #doStepOut
       
   374                 #'enabled:' #canStepOutChannel
       
   375                 #'labelImage:' #(#ResourceRetriever nil #leftDownIcon)
       
   376             )
       
   377           ) nil
       
   378           nil
       
   379       )
       
   380 !
       
   381 
       
   382 methodSpec
       
   383     "this window spec was automatically generated by the ST/X UIPainter"
       
   384 
       
   385     "do not manually edit this - the painter/builder may not be able to
       
   386      handle the specification if its corrupted."
       
   387 
       
   388     "
       
   389      UIPainter new openOnClass:HierarchicalListEditor andSelector:#methodSpec
       
   390      HierarchicalListEditor new openInterface:#methodSpec
       
   391     "
       
   392 
       
   393     <resource: #canvas>
       
   394 
       
   395     ^
       
   396      
       
   397        #(#FullSpec
       
   398           #'window:' 
       
   399            #(#WindowSpec
       
   400               #'name:' 'Painter'
       
   401               #'layout:' #(#LayoutFrame 151 0 377 0 431 0 455 0)
       
   402               #'label:' 'Painter'
       
   403               #'min:' #(#Point 10 10)
       
   404               #'max:' #(#Point 1160 870)
       
   405               #'bounds:' #(#Rectangle 151 377 432 456)
       
   406               #'usePreferredExtent:' false
       
   407           )
       
   408           #'component:' 
       
   409            #(#SpecCollection
       
   410               #'collection:' 
       
   411                #(
       
   412                  #(#LabelSpec
       
   413                     #'name:' 'boxLabel'
       
   414                     #'layout:' #(#LayoutFrame 0 0.0 3 0 0 1.0 20 0)
       
   415                     #'label:' 'Selector for code:'
       
   416                     #'adjust:' #left
       
   417                     #'resizeForLabel:' true
       
   418                 )
       
   419                  #(#InputFieldSpec
       
   420                     #'name:' 'methodField'
       
   421                     #'layout:' #(#LayoutFrame 0 0.0 22 0 0 1.0 44 0)
       
   422                     #'tabable:' true
   124                     #'tabable:' true
   423                     #'model:' #specSelectorChannel
   125                     #'model:' #specSelectorChannel
   424                     #'type:' #string
   126                     #'type:' #string
   425                 )
   127                 )
   426                  #(#UISubSpecification
   128                  #(#UISubSpecification
   542               )
   244               )
   543           )
   245           )
   544       )
   246       )
   545 ! !
   247 ! !
   546 
   248 
       
   249 !HierarchicalListEditor class methodsFor:'menu specs'!
       
   250 
       
   251 menu
       
   252     "this window spec was automatically generated by the ST/X MenuEditor"
       
   253 
       
   254     "do not manually edit this - the builder may not be able to
       
   255      handle the specification if its corrupted."
       
   256 
       
   257     "
       
   258      MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menu
       
   259      (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menu)) startUp
       
   260     "
       
   261 
       
   262     <resource: #menu>
       
   263 
       
   264     ^
       
   265      
       
   266        #(#Menu
       
   267           
       
   268            #(
       
   269              #(#MenuItem
       
   270                 #'label:' 'About'
       
   271                 #'labelImage:' #(#ResourceRetriever nil #icon)
       
   272                 #'submenuChannel:' #menuAbout
       
   273             )
       
   274              #(#MenuItem
       
   275                 #'label:' 'File'
       
   276                 #'submenu:' 
       
   277                  #(#Menu
       
   278                     
       
   279                      #(
       
   280                        #(#MenuItem
       
   281                           #'label:' 'New'
       
   282                           #'value:' #doNew
       
   283                       )
       
   284                        #(#MenuItem
       
   285                           #'label:' 'Reload'
       
   286                           #'value:' #doReload
       
   287                       )
       
   288                        #(#MenuItem
       
   289                           #'label:' '-'
       
   290                       )
       
   291                        #(#MenuItem
       
   292                           #'label:' 'Save'
       
   293                           #'value:' #doInstall
       
   294                           #'enabled:' #hasValidClass
       
   295                       )
       
   296                        #(#MenuItem
       
   297                           #'label:' '-'
       
   298                       )
       
   299                        #(#MenuItem
       
   300                           #'label:' 'Define Class And Selector...'
       
   301                           #'value:' #doDefineClass
       
   302                       )
       
   303                        #(#MenuItem
       
   304                           #'label:' '-'
       
   305                       )
       
   306                        #(#MenuItem
       
   307                           #'label:' 'Exit'
       
   308                           #'value:' #closeRequest
       
   309                       )
       
   310                     ) nil
       
   311                     nil
       
   312                 )
       
   313             )
       
   314              #(#MenuItem
       
   315                 #'label:' 'Edit'
       
   316                 #'submenuChannel:' #menuEdit
       
   317             )
       
   318              #(#MenuItem
       
   319                 #'label:' 'Browse'
       
   320                 #'enabled:' #hasValidClass
       
   321                 #'submenu:' 
       
   322                  #(#Menu
       
   323                     
       
   324                      #(
       
   325                        #(#MenuItem
       
   326                           #'label:' 'Class'
       
   327                           #'value:' #'doBrowse:'
       
   328                           #'argument:' #class
       
   329                       )
       
   330                        #(#MenuItem
       
   331                           #'label:' 'Method'
       
   332                           #'value:' #'doBrowse:'
       
   333                           #'enabled:' #hasValidMethodSelector
       
   334                           #'argument:' #method
       
   335                       )
       
   336                        #(#MenuItem
       
   337                           #'label:' 'Specification'
       
   338                           #'value:' #'doBrowse:'
       
   339                           #'enabled:' #hasValidSpecSelector
       
   340                           #'argument:' #spec
       
   341                       )
       
   342                     ) nil
       
   343                     nil
       
   344                 )
       
   345             )
       
   346           ) nil
       
   347           nil
       
   348       )
       
   349 !
       
   350 
       
   351 menuEdit
       
   352     "this window spec was automatically generated by the ST/X MenuEditor"
       
   353 
       
   354     "do not manually edit this - the builder may not be able to
       
   355      handle the specification if its corrupted."
       
   356 
       
   357     "
       
   358      MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menuEdit
       
   359      (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menuEdit)) startUp
       
   360     "
       
   361 
       
   362     <resource: #menu>
       
   363 
       
   364     ^
       
   365      
       
   366        #(#Menu
       
   367           
       
   368            #(
       
   369              #(#MenuItem
       
   370                 #'label:' 'Cut'
       
   371                 #'value:' #doCut
       
   372                 #'enabled:' #canCut
       
   373             )
       
   374              #(#MenuItem
       
   375                 #'label:' 'Copy'
       
   376                 #'value:' #doCopy
       
   377                 #'enabled:' #canCopy
       
   378             )
       
   379              #(#MenuItem
       
   380                 #'label:' 'Paste'
       
   381                 #'value:' #doPaste
       
   382                 #'enabled:' #canPaste
       
   383             )
       
   384              #(#MenuItem
       
   385                 #'label:' '-'
       
   386             )
       
   387              #(#MenuItem
       
   388                 #'label:' 'Create Child'
       
   389                 #'value:' #doCreateChild
       
   390                 #'enabled:' #canCreateChildChannel
       
   391                 #'labelImage:' #(#ResourceRetriever #HierarchicalListEditor #createChildIcon 'Create Child')
       
   392             )
       
   393              #(#MenuItem
       
   394                 #'label:' 'Create Sister'
       
   395                 #'value:' #doCreateSister
       
   396                 #'enabled:' #canCreateSisterChannel
       
   397                 #'labelImage:' #(#ResourceRetriever #HierarchicalListEditor #createSisterIcon 'Create Sister')
       
   398             )
       
   399              #(#MenuItem
       
   400                 #'label:' '-'
       
   401             )
       
   402              #(#MenuItem
       
   403                 #'label:' 'Move Up'
       
   404                 #'value:' #doStepUp
       
   405                 #'activeHelpKey:' #moveSelectionUp
       
   406                 #'enabled:' #canStepOverChannel
       
   407                 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #upIcon 'Move Up')
       
   408             )
       
   409              #(#MenuItem
       
   410                 #'label:' 'Move Down'
       
   411                 #'value:' #doStepDown
       
   412                 #'activeHelpKey:' #moveSelectionDown
       
   413                 #'enabled:' #canStepOverChannel
       
   414                 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #downIcon 'Move Down')
       
   415             )
       
   416              #(#MenuItem
       
   417                 #'label:' 'Move In'
       
   418                 #'value:' #doStepIn
       
   419                 #'activeHelpKey:' #moveSelectionRight
       
   420                 #'enabled:' #canStepInChannel
       
   421                 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #downRightIcon 'Move In')
       
   422             )
       
   423              #(#MenuItem
       
   424                 #'label:' 'Move Out'
       
   425                 #'value:' #doStepOut
       
   426                 #'activeHelpKey:' #moveSelectionLeft
       
   427                 #'enabled:' #canStepOutChannel
       
   428                 #'labelImage:' #(#ResourceRetriever #ToolApplicationModel #leftDownIcon 'Move Out')
       
   429             )
       
   430           ) nil
       
   431           nil
       
   432       )
       
   433 !
       
   434 
       
   435 menuToolbar
       
   436     "this window spec was automatically generated by the ST/X MenuEditor"
       
   437 
       
   438     "do not manually edit this - the builder may not be able to
       
   439      handle the specification if its corrupted."
       
   440 
       
   441     "
       
   442      MenuEditor new openOnClass:HierarchicalListEditor andSelector:#menuToolbar
       
   443      (Menu new fromLiteralArrayEncoding:(HierarchicalListEditor menuToolbar)) startUp
       
   444     "
       
   445 
       
   446     <resource: #menu>
       
   447 
       
   448     ^
       
   449      
       
   450        #(#Menu
       
   451           
       
   452            #(
       
   453              #(#MenuItem
       
   454                 #'label:' 'New'
       
   455                 #'isButton:' true
       
   456                 #'value:' #doNew
       
   457                 #'labelImage:' #(#ResourceRetriever nil #newIcon)
       
   458             )
       
   459              #(#MenuItem
       
   460                 #'label:' 'Save'
       
   461                 #'isButton:' true
       
   462                 #'value:' #doInstall
       
   463                 #'enabled:' #hasValidClass
       
   464                 #'labelImage:' #(#ResourceRetriever nil #saveIcon)
       
   465             )
       
   466              #(#MenuItem
       
   467                 #'label:' ''
       
   468             )
       
   469              #(#MenuItem
       
   470                 #'label:' 'Create Child'
       
   471                 #'isButton:' true
       
   472                 #'value:' #doCreateChild
       
   473                 #'enabled:' #canCreateChildChannel
       
   474                 #'labelImage:' #(#ResourceRetriever nil #createChildIcon)
       
   475             )
       
   476              #(#MenuItem
       
   477                 #'label:' 'Create Sister'
       
   478                 #'isButton:' true
       
   479                 #'value:' #doCreateSister
       
   480                 #'enabled:' #canCreateSisterChannel
       
   481                 #'labelImage:' #(#ResourceRetriever nil #createSisterIcon)
       
   482             )
       
   483              #(#MenuItem
       
   484                 #'label:' ''
       
   485             )
       
   486              #(#MenuItem
       
   487                 #'label:' 'Move Up'
       
   488                 #'isButton:' true
       
   489                 #'value:' #doStepUp
       
   490                 #'enabled:' #canStepOverChannel
       
   491                 #'labelImage:' #(#ResourceRetriever nil #upIcon)
       
   492             )
       
   493              #(#MenuItem
       
   494                 #'label:' 'Move Down'
       
   495                 #'isButton:' true
       
   496                 #'value:' #doStepDown
       
   497                 #'enabled:' #canStepOverChannel
       
   498                 #'labelImage:' #(#ResourceRetriever nil #downIcon)
       
   499             )
       
   500              #(#MenuItem
       
   501                 #'label:' 'Move In'
       
   502                 #'isButton:' true
       
   503                 #'value:' #doStepIn
       
   504                 #'enabled:' #canStepInChannel
       
   505                 #'labelImage:' #(#ResourceRetriever nil #downRightIcon)
       
   506             )
       
   507              #(#MenuItem
       
   508                 #'label:' 'Move Out'
       
   509                 #'isButton:' true
       
   510                 #'value:' #doStepOut
       
   511                 #'enabled:' #canStepOutChannel
       
   512                 #'labelImage:' #(#ResourceRetriever nil #leftDownIcon)
       
   513             )
       
   514           ) nil
       
   515           nil
       
   516       )
       
   517 ! !
       
   518 
   547 !HierarchicalListEditor class methodsFor:'printing'!
   519 !HierarchicalListEditor class methodsFor:'printing'!
   548 
   520 
   549 prettyPrintArray:anArray on:aStream indent:anIndent
   521 prettyPrintArray:anArray on:aStream indent:anIndent
   550     "print a literal array in a nice format
   522     "print a literal array in a nice format
   551     "
   523     "
   672 
   644 
   673     ^builder booleanValueAspectFor:#canStepOverChannel
   645     ^builder booleanValueAspectFor:#canStepOverChannel
   674 
   646 
   675 !
   647 !
   676 
   648 
       
   649 hasValidClass
       
   650     "automatically generated by UIPainter ..."
       
   651 
       
   652     ^builder booleanValueAspectFor:#hasValidClass
       
   653 
       
   654 !
       
   655 
   677 itemName
   656 itemName
   678     "automatically generated by UIPainter ..."
   657     "automatically generated by UIPainter ..."
   679 
   658 
   680     |holder|
   659     |holder|
   681 
   660 
   724             noText:'No';
   703             noText:'No';
   725             yesText:'Yes';
   704             yesText:'Yes';
   726             showAtPointer;
   705             showAtPointer;
   727             accepted) ifFalse: [self valueOfEnablingCommitButtons value: false. ^true].
   706             accepted) ifFalse: [self valueOfEnablingCommitButtons value: false. ^true].
   728         self accept
   707         self accept
       
   708     ].
       
   709     ^true
       
   710 !
       
   711 
       
   712 checkModified
       
   713     "check menu modification
       
   714     "
       
   715     isModified
       
   716     ifTrue:
       
   717     [
       
   718         ((YesNoBox title:'Hierarchical list was modified!!')        
       
   719             noText:'Cancel';
       
   720             yesText:'Waste it and proceed';
       
   721             showAtPointer;
       
   722             accepted) ifFalse: [^false].
       
   723         isModified := false
   729     ].
   724     ].
   730     ^true
   725     ^true
   731 !
   726 !
   732 
   727 
   733 newItem
   728 newItem
   763     ].
   758     ].
   764     self canCreateChildChannel  value:chnChild.
   759     self canCreateChildChannel  value:chnChild.
   765     self canCreateSisterChannel value:chnSister.
   760     self canCreateSisterChannel value:chnSister.
   766     self canStepOverChannel     value:chnStepOvr.
   761     self canStepOverChannel     value:chnStepOvr.
   767     self canStepOutChannel      value:chnStepOut.
   762     self canStepOutChannel      value:chnStepOut.
   768     self canStepInChannel       value:chnStepIn
   763     self canStepInChannel       value:chnStepIn.
       
   764 
       
   765 
   769 !
   766 !
   770 
   767 
   771 updateInputFields
   768 updateInputFields
   772     "reload item value into input fields"
   769     "reload item value into input fields"
   773 
   770 
   813 canPaste
   810 canPaste
   814     "returns true if something to be paste exists and a
   811     "returns true if something to be paste exists and a
   815      single selection exists"
   812      single selection exists"
   816 
   813 
   817     ^CopyBuffer notNil and:[treeView selectedNode notNil]
   814     ^CopyBuffer notNil and:[treeView selectedNode notNil]
   818 !
       
   819 
       
   820 hasValidClass
       
   821     "returns true if the class defined allready exists"
       
   822 
       
   823     ^specClass isBehavior
       
   824 !
   815 !
   825 
   816 
   826 hasValidMethodSelector
   817 hasValidMethodSelector
   827     "returns true if the class and the instance selector defined
   818     "returns true if the class and the instance selector defined
   828      allready exists."
   819      allready exists."
   871         (specClass respondsTo:specSelector) 
   862         (specClass respondsTo:specSelector) 
   872         ifTrue:
   863         ifTrue:
   873         [
   864         [
   874             anchor := specClass perform:specSelector.
   865             anchor := specClass perform:specSelector.
   875             anchor isArray ifTrue:[anchor := anchor decodeAsLiteralArray]
   866             anchor isArray ifTrue:[anchor := anchor decodeAsLiteralArray]
   876         ]
   867         ].
       
   868         self hasValidClass value: true
   877     ].
   869     ].
   878     anchor notNil 
   870     anchor notNil 
   879         ifTrue: [anchor expand. treeView root:anchor] 
   871         ifTrue: [anchor expand. treeView root:anchor] 
   880         ifFalse:[self doNew]
   872         ifFalse:[self doNew]
       
   873 !
       
   874 
       
   875 closeRequest
       
   876     "close request"
       
   877 
       
   878     (self checkMenuItemModified and: [self checkModified]) ifTrue: [super closeRequest]
       
   879 
       
   880 
   881 !
   881 !
   882 
   882 
   883 initialize
   883 initialize
   884     "setup default values"
   884     "setup default values"
   885 
   885 
   890     treeView showDirectoryIndicator: true.
   890     treeView showDirectoryIndicator: true.
   891     treeView showDirectoryIndicatorForRoot: false.
   891     treeView showDirectoryIndicatorForRoot: false.
   892     treeView action:[:aNr| self updateChannels. self updateInputFields].
   892     treeView action:[:aNr| self updateChannels. self updateInputFields].
   893     treeView selectConditionBlock: [:i|self checkMenuItemModified].
   893     treeView selectConditionBlock: [:i|self checkMenuItemModified].
   894     treeView validateDoubleClickBlock: [:node| node ~~ treeView model list first].
   894     treeView validateDoubleClickBlock: [:node| node ~~ treeView model list first].
   895     self doNew.
       
   896 !
   895 !
   897 
   896 
   898 openModalOnClass:aClass andSelector:aSelector
   897 openModalOnClass:aClass andSelector:aSelector
   899     "open modal on class and selector"
   898     "open modal on class and selector"
   900 
   899 
   920     specClass isAssociation ifTrue:[
   919     specClass isAssociation ifTrue:[
   921         cls := specClass key.
   920         cls := specClass key.
   922         sel := specClass value.
   921         sel := specClass value.
   923     ].
   922     ].
   924     self buildFrom:cls andSelector:sel.
   923     self buildFrom:cls andSelector:sel.
       
   924 
       
   925     isModified := false
   925 
   926 
   926 ! !
   927 ! !
   927 
   928 
   928 !HierarchicalListEditor methodsFor:'user actions'!
   929 !HierarchicalListEditor methodsFor:'user actions'!
   929 
   930 
   938         node := treeView nodeAtIndex:index.
   939         node := treeView nodeAtIndex:index.
   939         node name: self itemName value.
   940         node name: self itemName value.
   940         node contents: self itemValue value.
   941         node contents: self itemValue value.
   941         treeView redrawLine:index.
   942         treeView redrawLine:index.
   942     ].
   943     ].
       
   944     isModified := true.
   943     self valueOfEnablingCommitButtons value: false
   945     self valueOfEnablingCommitButtons value: false
   944 !
   946 !
   945 
   947 
   946 cancel
   948 cancel
   947     "invoked by button 'Cancel'"
   949     "invoked by button 'Cancel'"
   948 
   950 
   949     self updateInputFields.
   951     self updateInputFields.
   950 
   952 
       
   953     isModified := false.
   951     self valueOfEnablingCommitButtons value: false
   954     self valueOfEnablingCommitButtons value: false
   952 !
   955 !
   953 
   956 
   954 doBrowse:what
   957 doBrowse:what
   955     "open a system browser"
   958     "open a system browser"
   986     ifTrue:
   989     ifTrue:
   987     [
   990     [
   988         treeView model add: self newItem beforeIndex:1 below:node.
   991         treeView model add: self newItem beforeIndex:1 below:node.
   989         treeView selectedNodeExpand:true.
   992         treeView selectedNodeExpand:true.
   990         self updateChannels.
   993         self updateChannels.
       
   994         isModified := true
   991     ]
   995     ]
   992 !
   996 !
   993 
   997 
   994 doCreateSister
   998 doCreateSister
   995     "create a sister next to selected item
   999     "create a sister next to selected item
  1000     ifTrue:
  1004     ifTrue:
  1001     [
  1005     [
  1002         node parent notNil 
  1006         node parent notNil 
  1003             ifTrue: [treeView model add: self newItem after:node] 
  1007             ifTrue: [treeView model add: self newItem after:node] 
  1004             ifFalse:[treeView model add: self newItem beforeIndex:1 below:node].
  1008             ifFalse:[treeView model add: self newItem beforeIndex:1 below:node].
  1005         self updateChannels
  1009         self updateChannels.
       
  1010         isModified := true
  1006     ]
  1011     ]
  1007 !
  1012 !
  1008 
  1013 
  1009 doCut
  1014 doCut
  1010     "cut current selected nodes"
  1015     "cut current selected nodes"
  1015     [
  1020     [
  1016         self doCopy.
  1021         self doCopy.
  1017         selection := treeView selection asSortedCollection.
  1022         selection := treeView selection asSortedCollection.
  1018         treeView selectedNodesRemove.
  1023         treeView selectedNodesRemove.
  1019         treeView selection: selection first - 1.
  1024         treeView selection: selection first - 1.
  1020         self updateChannels
  1025         self updateChannels.
       
  1026         isModified := true
  1021     ]
  1027     ]
  1022 !
  1028 !
  1023 
  1029 
  1024 doDefineClass
  1030 doDefineClass
  1025     "define class and selector"
  1031     "define class and selector"
  1026 
  1032 
  1027     |sel cls bindings accepted|
  1033     |sel cls bindings accepted|
  1028 
  1034 
  1029     masterApplication notNil ifTrue:[^self information:'Only selector can be changed.'].
       
  1030     accepted := true.
  1035     accepted := true.
  1031     bindings := IdentityDictionary new.
  1036     bindings := IdentityDictionary new.
  1032 
  1037 
  1033     specClass    notNil ifTrue:[cls := specClass name asString]
  1038     specClass    notNil ifTrue:[cls := specClass name asString]
  1034                        ifFalse:[cls := ''].
  1039                        ifFalse:[cls := ''].
  1051                 (sel := (bindings at:#specSelectorChannel) value withoutSeparators) size ~~ 0 
  1056                 (sel := (bindings at:#specSelectorChannel) value withoutSeparators) size ~~ 0 
  1052                 ifTrue:
  1057                 ifTrue:
  1053                 [
  1058                 [
  1054                     specClass    := cls.
  1059                     specClass    := cls.
  1055                     specSelector := sel asSymbol.
  1060                     specSelector := sel asSymbol.
       
  1061                     self hasValidClass value: true.
       
  1062                     isModified := true.
  1056                     ^self
  1063                     ^self
  1057                 ]
  1064                 ]
  1058             ]
       
  1059         ]
       
  1060     ]
       
  1061 
       
  1062 !
       
  1063 
       
  1064 doDefineSelector
       
  1065     "define selector only"
       
  1066 
       
  1067     |sel bindings accepted|
       
  1068 
       
  1069     accepted := true.
       
  1070     bindings := IdentityDictionary new.
       
  1071 
       
  1072     specSelector notNil ifTrue:[sel := specSelector asString]
       
  1073                        ifFalse:[sel := ''].
       
  1074 
       
  1075     bindings at:#specSelectorChannel put:(sel asValue).
       
  1076 
       
  1077     [accepted] 
       
  1078     whileTrue:
       
  1079     [
       
  1080         (accepted := self openDialogInterface:#methodSpec withBindings:bindings)
       
  1081         ifTrue:
       
  1082         [
       
  1083             (sel := (bindings at:#specSelectorChannel) value withoutSeparators) size ~~ 0 
       
  1084             ifTrue:
       
  1085             [
       
  1086                 specSelector := sel asSymbol.
       
  1087                 ^self
       
  1088             ]
  1065             ]
  1089         ]
  1066         ]
  1090     ]
  1067     ]
  1091 
  1068 
  1092 !
  1069 !
  1106     stream := WriteStream on:String new.
  1083     stream := WriteStream on:String new.
  1107     self class prettyPrintArray:spec on:stream indent:4.
  1084     self class prettyPrintArray:spec on:stream indent:4.
  1108     spec       := stream contents.
  1085     spec       := stream contents.
  1109     category   := 'interface specs'.
  1086     category   := 'interface specs'.
  1110     didInstall := true.
  1087     didInstall := true.
       
  1088     isModified := false.
  1111 
  1089 
  1112     (mthd := specClass class compiledMethodAt:specSelector) notNil 
  1090     (mthd := specClass class compiledMethodAt:specSelector) notNil 
  1113     ifTrue:
  1091     ifTrue:
  1114     [
  1092     [
  1115         category := mthd category
  1093         category := mthd category
  1168 
  1146 
  1169 doNew
  1147 doNew
  1170     "remove all items; restart"
  1148     "remove all items; restart"
  1171 
  1149 
  1172     treeView root:(TreeItem name:'Anchor' contents:#anchor).
  1150     treeView root:(TreeItem name:'Anchor' contents:#anchor).
  1173     treeView selection:0
  1151     treeView selection:0.
       
  1152     isModified := true
       
  1153 
       
  1154 
       
  1155 
  1174 
  1156 
  1175 !
  1157 !
  1176 
  1158 
  1177 doPaste
  1159 doPaste
  1178     "paste after current selected item"
  1160     "paste after current selected item"
  1179 
  1161 
  1180     treeView selectedNodeAdd:CopyBuffer.
  1162     treeView selectedNodeAdd:CopyBuffer.
  1181     self updateChannels
  1163     self updateChannels.
       
  1164     isModified := true
       
  1165 
  1182 !
  1166 !
  1183 
  1167 
  1184 doReload
  1168 doReload
  1185     "reload spec from current class and selector"
  1169     "reload spec from current class and selector"
  1186 
  1170 
  1190 
  1174 
  1191 doStepDown
  1175 doStepDown
  1192     "move selected item after next item"
  1176     "move selected item after next item"
  1193 
  1177 
  1194     treeView selectedNodeChangeSequenceOrder:1.
  1178     treeView selectedNodeChangeSequenceOrder:1.
  1195     self updateChannels
  1179     self updateChannels.
       
  1180     isModified := true
       
  1181 
  1196 !
  1182 !
  1197 
  1183 
  1198 doStepIn
  1184 doStepIn
  1199     "lets become the selected item a child of its next sister"
  1185     "lets become the selected item a child of its next sister"
  1200 
  1186 
  1201     treeView selectedNodeBecomeChildOfNext.
  1187     treeView selectedNodeBecomeChildOfNext.
  1202     self updateChannels
  1188     self updateChannels.
       
  1189     isModified := true
       
  1190 
       
  1191 
       
  1192 
  1203 !
  1193 !
  1204 
  1194 
  1205 doStepOut
  1195 doStepOut
  1206     "let selected node become a sister of its current parent"
  1196     "let selected node become a sister of its current parent"
  1207 
  1197 
  1208     treeView selectedNodeBecomeSisterOfParent.
  1198     treeView selectedNodeBecomeSisterOfParent.
  1209     self updateChannels
  1199     self updateChannels.
       
  1200     isModified := true
       
  1201 
       
  1202 
       
  1203 
  1210 !
  1204 !
  1211 
  1205 
  1212 doStepUp
  1206 doStepUp
  1213     "move selected item before previous item"
  1207     "move selected item before previous item"
  1214 
  1208 
  1215     treeView selectedNodeChangeSequenceOrder:-1.
  1209     treeView selectedNodeChangeSequenceOrder:-1.
  1216     self updateChannels
  1210     self updateChannels.
       
  1211     isModified := true
       
  1212 
       
  1213 
       
  1214 
  1217 ! !
  1215 ! !
  1218 
  1216 
  1219 !HierarchicalListEditor class methodsFor:'documentation'!
  1217 !HierarchicalListEditor class methodsFor:'documentation'!
  1220 
  1218 
  1221 version
  1219 version