HierarchicalListEditor.st
changeset 581 399646a86258
parent 566 58b18ffe959c
child 602 5bf03bf611c8
equal deleted inserted replaced
580:77cf5b8dcffc 581:399646a86258
    74 'Adds a new child item.'
    74 'Adds a new child item.'
    75 
    75 
    76 #addSister
    76 #addSister
    77 'Adds a new sister item.'
    77 'Adds a new sister item.'
    78 
    78 
       
    79 #contents
       
    80 'Contents of the tree item.'
       
    81 
    79 #fileNew
    82 #fileNew
    80 'Creates a new hierarchical list.'
    83 'Creates a new hierarchical list.'
    81 
    84 
    82 #fileReload
    85 #fileReload
    83 'Reload hierarchical list from current class and selector.'
    86 'Reload hierarchical list from current class and selector.'
    84 
    87 
    85 #fileSave
    88 #fileSave
    86 'Saves current hierarchical list.'
    89 'Saves current hierarchical list.'
       
    90 
       
    91 #label
       
    92 'Label of the tree item.'
    87 
    93 
    88 )
    94 )
    89 ! !
    95 ! !
    90 
    96 
    91 !HierarchicalListEditor class methodsFor:'interface specs'!
    97 !HierarchicalListEditor class methodsFor:'interface specs'!
   183      
   189      
   184        #(#FullSpec
   190        #(#FullSpec
   185           #'window:' 
   191           #'window:' 
   186            #(#WindowSpec
   192            #(#WindowSpec
   187               #'name:' 'Hierarchical List Editor'
   193               #'name:' 'Hierarchical List Editor'
   188               #'layout:' #(#LayoutFrame 366 0 355 0 840 0 667 0)
   194               #'layout:' #(#LayoutFrame 92 0 328 0 566 0 640 0)
   189               #'label:' 'Hierarchical List Editor'
   195               #'label:' 'Hierarchical List Editor'
   190               #'min:' #(#Point 10 10)
   196               #'min:' #(#Point 10 10)
   191               #'max:' #(#Point 1160 870)
   197               #'max:' #(#Point 1160 870)
   192               #'bounds:' #(#Rectangle 366 355 841 668)
   198               #'bounds:' #(#Rectangle 92 328 567 641)
   193               #'menu:' #menu
   199               #'menu:' #menu
   194               #'usePreferredExtent:' false
   200               #'usePreferredExtent:' false
   195           )
   201           )
   196           #'component:' 
   202           #'component:' 
   197            #(#SpecCollection
   203            #(#SpecCollection
   226                                   #'collection:' 
   232                                   #'collection:' 
   227                                    #(
   233                                    #(
   228                                      #(#LabelSpec
   234                                      #(#LabelSpec
   229                                         #'name:' 'nameLabel'
   235                                         #'name:' 'nameLabel'
   230                                         #'layout:' #(#AlignmentOrigin 107 0 25 0 1 0.5)
   236                                         #'layout:' #(#AlignmentOrigin 107 0 25 0 1 0.5)
   231                                         #'label:' 'Name:'
   237                                         #'label:' 'Label:'
   232                                         #'resizeForLabel:' true
   238                                         #'resizeForLabel:' true
   233                                     )
   239                                     )
   234                                      #(#InputFieldSpec
   240                                      #(#InputFieldSpec
   235                                         #'name:' 'nameInputField'
   241                                         #'name:' 'labelInputField'
   236                                         #'layout:' #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
   242                                         #'layout:' #(#LayoutFrame 110 0 15 0 -5 1.0 37 0)
       
   243                                         #'activeHelpKey:' #label
   237                                         #'tabable:' true
   244                                         #'tabable:' true
   238                                         #'model:' #itemName
   245                                         #'model:' #itemName
   239                                     )
   246                                     )
   240                                      #(#LabelSpec
   247                                      #(#LabelSpec
   241                                         #'name:' 'valueLabel'
   248                                         #'name:' 'valueLabel'
   242                                         #'layout:' #(#AlignmentOrigin 107 0 51 0 1 0.5)
   249                                         #'layout:' #(#AlignmentOrigin 107 0 51 0 1 0.5)
   243                                         #'label:' 'Value:'
   250                                         #'activeHelpKey:' #contents
       
   251                                         #'label:' 'Contents:'
   244                                         #'resizeForLabel:' true
   252                                         #'resizeForLabel:' true
   245                                     )
   253                                     )
   246                                      #(#InputFieldSpec
   254                                      #(#InputFieldSpec
   247                                         #'name:' 'valueInputField'
   255                                         #'name:' 'valueInputField'
   248                                         #'layout:' #(#LayoutFrame 110 0 41 0 -5 1.0 63 0)
   256                                         #'layout:' #(#LayoutFrame 110 0 41 0 -5 1.0 63 0)
       
   257                                         #'activeHelpKey:' #contents
   249                                         #'tabable:' true
   258                                         #'tabable:' true
   250                                         #'model:' #itemValue
   259                                         #'model:' #itemValue
   251                                         #'type:' #symbolOrNil
   260                                         #'type:' #symbolOrNil
   252                                     )
   261                                     )
   253                                      #(#UISubSpecification
   262                                      #(#UISubSpecification
   338                       )
   347                       )
   339                        #(#MenuItem
   348                        #(#MenuItem
   340                           #'label:' '-'
   349                           #'label:' '-'
   341                       )
   350                       )
   342                        #(#MenuItem
   351                        #(#MenuItem
       
   352                           #'label:' 'Browse Class'
       
   353                           #'value:' #doBrowse
       
   354                           #'activeHelpKey:' #fileBrowseClass
       
   355                           #'enabled:' #hasValidClass
       
   356                       )
       
   357                        #(#MenuItem
       
   358                           #'label:' '-'
       
   359                       )
       
   360                        #(#MenuItem
   343                           #'label:' 'Exit'
   361                           #'label:' 'Exit'
   344                           #'value:' #closeRequest
   362                           #'value:' #closeRequest
   345                           #'activeHelpKey:' #fileExit
   363                           #'activeHelpKey:' #fileExit
   346                       )
   364                       )
   347                     ) nil
   365                     ) nil
   375                     ) nil
   393                     ) nil
   376                     nil
   394                     nil
   377                 )
   395                 )
   378             )
   396             )
   379              #(#MenuItem
   397              #(#MenuItem
   380                 #'label:' 'Browse'
       
   381                 #'enabled:' #hasValidClass
       
   382                 #'submenu:' 
       
   383                  #(#Menu
       
   384                     
       
   385                      #(
       
   386                        #(#MenuItem
       
   387                           #'label:' 'Class'
       
   388                           #'value:' #'doBrowse:'
       
   389                           #'argument:' #class
       
   390                       )
       
   391                        #(#MenuItem
       
   392                           #'label:' 'Method'
       
   393                           #'value:' #'doBrowse:'
       
   394                           #'enabled:' #hasValidMethodSelector
       
   395                           #'argument:' #method
       
   396                       )
       
   397                        #(#MenuItem
       
   398                           #'label:' 'Specification'
       
   399                           #'value:' #'doBrowse:'
       
   400                           #'enabled:' #hasValidSpecSelector
       
   401                           #'argument:' #spec
       
   402                       )
       
   403                     ) nil
       
   404                     nil
       
   405                 )
       
   406             )
       
   407              #(#MenuItem
       
   408                 #'label:' 'Help'
   398                 #'label:' 'Help'
   409                 #'startGroup:' #right
   399                 #'startGroup:' #right
   410                 #'submenuChannel:' #menuHelp
   400                 #'submenuChannel:' #menuHelp
   411             )
   401             )
   412           ) nil
   402           ) nil
   751     "one of my models changed"
   741     "one of my models changed"
   752 
   742 
   753     self valueOfEnablingCommitButtons value: true
   743     self valueOfEnablingCommitButtons value: true
   754 ! !
   744 ! !
   755 
   745 
       
   746 !HierarchicalListEditor methodsFor:'help'!
       
   747 
       
   748 defaultInfoLabel
       
   749 
       
   750     specClass isNil ifTrue: [^'No hierarchical list class defined'].
       
   751     ^specClass name, ' >> ', specSelector printString
       
   752 
       
   753 ! !
       
   754 
   756 !HierarchicalListEditor methodsFor:'private'!
   755 !HierarchicalListEditor methodsFor:'private'!
   757 
   756 
   758 checkMenuItemModified
   757 checkMenuItemModified
   759     "check item modification"
   758     "check item modification"
   760 
   759 
  1014 
  1013 
  1015     isModified := false.
  1014     isModified := false.
  1016     self valueOfEnablingCommitButtons value: false
  1015     self valueOfEnablingCommitButtons value: false
  1017 !
  1016 !
  1018 
  1017 
  1019 doBrowse:what
  1018 doBrowse
  1020     "open a system browser"
  1019     "open a system browser"
  1021 
  1020 
  1022     |cls sel|
  1021     SystemBrowser openInClass: specClass class selector: specSelector
  1023 
  1022 
  1024     (cls := specClass) notNil 
       
  1025     ifTrue:
       
  1026     [
       
  1027         what == #class 
       
  1028         ifFalse:
       
  1029         [
       
  1030             (sel := specSelector) isNil ifTrue:[^self].
       
  1031             what == #spec ifTrue:[cls := cls class]
       
  1032         ].
       
  1033         SystemBrowser openInClass:cls selector:sel
       
  1034     ]
       
  1035 !
  1023 !
  1036 
  1024 
  1037 doCopy
  1025 doCopy
  1038     "copy current selected nodes into copy buffer"
  1026     "copy current selected nodes into copy buffer"
  1039 
  1027 
  1126                 [
  1114                 [
  1127                     specClass    := cls.
  1115                     specClass    := cls.
  1128                     specSelector := sel asSymbol.
  1116                     specSelector := sel asSymbol.
  1129                     self hasValidClass value: true.
  1117                     self hasValidClass value: true.
  1130                     isModified := true.
  1118                     isModified := true.
       
  1119                     self updateInfoLabel.
  1131                     ^self
  1120                     ^self
  1132                 ]
  1121                 ]
  1133             ]
  1122             ]
  1134         ]
  1123         ]
  1135     ]
  1124     ]
  1215 doNew
  1204 doNew
  1216     "remove all items; restart"
  1205     "remove all items; restart"
  1217 
  1206 
  1218     treeView root:(TreeItem name:'Root' contents:#anchor).
  1207     treeView root:(TreeItem name:'Root' contents:#anchor).
  1219     treeView selection:1.
  1208     treeView selection:1.
  1220     isModified := true
  1209     isModified := true.
  1221 
       
  1222 
  1210 
  1223 
  1211 
  1224 
  1212 
  1225 !
  1213 !
  1226 
  1214