Tools__MethodList.st
changeset 17780 1b645a397968
parent 17740 91ed2b065441
child 17782 ee0d1bfafb04
equal deleted inserted replaced
17779:ca9754553cca 17780:1b645a397968
    20 		lastShowClassFirst showMethodInheritance lastMethodClass
    20 		lastShowClassFirst showMethodInheritance lastMethodClass
    21 		lastMethodClassesSubclasses
    21 		lastMethodClassesSubclasses
    22 		classAndSelectorsRedefinedBySubclassesOfClass showClass
    22 		classAndSelectorsRedefinedBySubclassesOfClass showClass
    23 		showMethodComplexity showMethodTypeIcon
    23 		showMethodComplexity showMethodTypeIcon
    24 		showImageResourceMethodsImages showSyntheticMethods
    24 		showImageResourceMethodsImages showSyntheticMethods
    25 		showNameFilterHolder nameFilterPatternHolder'
    25 		showNameFilterHolder nameFilterPatternHolder nameFilterTypeHolder'
    26 	classVariableNames:'ShowComplexityValue'
    26 	classVariableNames:'ShowComplexityValue'
    27 	poolDictionaries:''
    27 	poolDictionaries:''
    28 	category:'Interface-Browsers-New'
    28 	category:'Interface-Browsers-New'
    29 !
    29 !
    30 
    30 
   120     <resource: #canvas>
   120     <resource: #canvas>
   121 
   121 
   122     ^ 
   122     ^ 
   123     #(FullSpec
   123     #(FullSpec
   124        name: windowSpec
   124        name: windowSpec
       
   125        uuid: '0ad3c35c-d1ce-11e7-900e-c42c033b4871'
   125        window: 
   126        window: 
   126       (WindowSpec
   127       (WindowSpec
   127          label: 'SelectorList'
   128          label: 'SelectorList'
   128          name: 'SelectorList'
   129          name: 'SelectorList'
       
   130          uuid: '0ad3c6f4-d1ce-11e7-900e-c42c033b4871'
   129          min: (Point 0 0)
   131          min: (Point 0 0)
   130          bounds: (Rectangle 0 0 300 300)
   132          bounds: (Rectangle 0 0 300 300)
   131        )
   133        )
   132        component: 
   134        component: 
   133       (SpecCollection
   135       (SpecCollection
   134          collection: (
   136          collection: (
   135           (VerticalPanelViewSpec
   137           (VerticalPanelViewSpec
   136              name: 'VerticalPanel1'
   138              name: 'VerticalPanel1'
   137              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
   139              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
       
   140              uuid: '0ad3c974-d1ce-11e7-900e-c42c033b4871'
   138              horizontalLayout: fit
   141              horizontalLayout: fit
   139              verticalLayout: topFit
   142              verticalLayout: topFit
   140              horizontalSpace: 3
   143              horizontalSpace: 3
   141              verticalSpace: 3
   144              verticalSpace: 3
   142              component: 
   145              component: 
   143             (SpecCollection
   146             (SpecCollection
   144                collection: (
   147                collection: (
   145                 (HorizontalPanelViewSpec
   148                 (HorizontalPanelViewSpec
   146                    name: 'HorizontalPanel1'
   149                    name: 'HorizontalPanel1'
   147                    activeHelpKey: selectorNameFilter
   150                    activeHelpKey: selectorNameFilter
       
   151                    uuid: '0ad3ccb2-d1ce-11e7-900e-c42c033b4871'
   148                    visibilityChannel: showSelectorNameFilter
   152                    visibilityChannel: showSelectorNameFilter
   149                    horizontalLayout: leftFit
   153                    horizontalLayout: leftFit
   150                    verticalLayout: center
   154                    verticalLayout: center
   151                    component: 
   155                    component: 
   152                   (SpecCollection
   156                   (SpecCollection
   153                      collection: (
   157                      collection: (
   154                       (ActionButtonSpec
   158                       (ActionButtonSpec
   155                          label: 'hideNameFilterIcon'
   159                          label: 'hideNameFilterIcon'
   156                          name: 'Button1'
   160                          name: 'Button1'
   157                          activeHelpKey: hideSelectorNameFilter
   161                          activeHelpKey: hideSelectorNameFilter
       
   162                          uuid: '0ad3ce6a-d1ce-11e7-900e-c42c033b4871'
   158                          hasCharacterOrientedLabel: false
   163                          hasCharacterOrientedLabel: false
   159                          translateLabel: false
   164                          translateLabel: false
   160                          model: hideSelectorNameFilter
   165                          model: hideSelectorNameFilter
   161                          extent: (Point 16 22)
   166                          extent: (Point 16 22)
   162                          usePreferredWidth: true
   167                          usePreferredWidth: true
   163                        )
   168                        )
   164                       (LabelSpec
   169                       (LabelSpec
   165                          label: 'Filter:'
   170                          label: 'Filter:'
   166                          name: 'Label1'
   171                          name: 'Label1'
       
   172                          uuid: '0ad3d0cc-d1ce-11e7-900e-c42c033b4871'
   167                          translateLabel: true
   173                          translateLabel: true
   168                          adjust: right
   174                          adjust: right
   169                          extent: (Point 46 24)
   175                          extent: (Point 51 24)
   170                          usePreferredWidth: true
   176                          usePreferredWidth: true
   171                        )
   177                        )
   172                       (InputFieldSpec
   178                       (HorizontalPanelViewSpec
   173                          name: 'EntryField1'
   179                          name: 'HorizontalPanel2'
   174                          model: nameFilterPatternHolder
   180                          uuid: '0ad3d25c-d1ce-11e7-900e-c42c033b4871'
   175                          immediateAccept: true
   181                          horizontalLayout: rightFit
   176                          acceptOnReturn: true
   182                          verticalLayout: center
   177                          acceptOnTab: true
   183                          horizontalSpace: 3
   178                          acceptOnPointerLeave: true
   184                          verticalSpace: 3
   179                          extent: (Point 228 25)
   185                          component: 
       
   186                         (SpecCollection
       
   187                            collection: (
       
   188                             (InputFieldSpec
       
   189                                name: 'EntryField1'
       
   190                                uuid: '0ad3d374-d1ce-11e7-900e-c42c033b4871'
       
   191                                model: nameFilterPatternHolder
       
   192                                immediateAccept: true
       
   193                                acceptOnReturn: true
       
   194                                acceptOnTab: true
       
   195                                acceptOnPointerLeave: true
       
   196                                extent: (Point 180 26)
       
   197                              )
       
   198                             (ComboListSpec
       
   199                                name: 'ComboList1'
       
   200                                uuid: '0ad3d608-d1ce-11e7-900e-c42c033b4871'
       
   201                                model: nameFilterTypeHolder
       
   202                                activeHelpKey: nameFilterType
       
   203                                comboList: 
       
   204                               (ImmutableArray
       
   205                                  'T' 'S'
       
   206                                )
       
   207                                useIndex: false
       
   208                                extent: (Point 40 20)
       
   209                              )
       
   210                             )
       
   211                           
       
   212                          )
       
   213                          extent: (Point 225 30)
   180                        )
   214                        )
   181                       )
   215                       )
   182                     
   216                     
   183                    )
   217                    )
   184                    extent: (Point 300 30)
   218                    extent: (Point 300 30)
   185                  )
   219                  )
   186                 (SequenceViewSpec
   220                 (SequenceViewSpec
   187                    name: 'List'
   221                    name: 'List'
       
   222                    uuid: '0ad3d842-d1ce-11e7-900e-c42c033b4871'
   188                    tabable: true
   223                    tabable: true
   189                    model: selectedMethodNameIndices
   224                    model: selectedMethodNameIndices
   190                    menu: menuHolder
   225                    menu: menuHolder
   191                    hasHorizontalScrollBar: true
   226                    hasHorizontalScrollBar: true
   192                    hasVerticalScrollBar: true
   227                    hasVerticalScrollBar: true
   211            )
   246            )
   212           )
   247           )
   213         
   248         
   214        )
   249        )
   215      )
   250      )
       
   251 
       
   252     "Modified: / 25-11-2017 / 11:54:32 / cg"
   216 ! !
   253 ! !
   217 
   254 
   218 !MethodList class methodsFor:'plugIn spec'!
   255 !MethodList class methodsFor:'plugIn spec'!
   219 
   256 
   220 aspectSelectors
   257 aspectSelectors
   304         nameFilterPatternHolder addDependent:self
   341         nameFilterPatternHolder addDependent:self
   305     ].
   342     ].
   306     ^  nameFilterPatternHolder
   343     ^  nameFilterPatternHolder
   307 
   344 
   308     "Created: / 09-11-2017 / 20:51:04 / cg"
   345     "Created: / 09-11-2017 / 20:51:04 / cg"
       
   346 !
       
   347 
       
   348 nameFilterTypeHolder
       
   349     nameFilterTypeHolder isNil ifTrue:[
       
   350         nameFilterTypeHolder := 'S' asValue.
       
   351         nameFilterTypeHolder addDependent:self
       
   352     ].
       
   353     ^  nameFilterTypeHolder
       
   354 
       
   355     "Created: / 25-11-2017 / 11:51:08 / cg"
   309 !
   356 !
   310 
   357 
   311 selectedMethodNameIndices
   358 selectedMethodNameIndices
   312     selectedMethodNameIndices isNil ifTrue:[
   359     selectedMethodNameIndices isNil ifTrue:[
   313 	selectedMethodNameIndices := ValueHolder new.
   360 	selectedMethodNameIndices := ValueHolder new.
  1041     ].
  1088     ].
  1042     changedObject == nameFilterPatternHolder ifTrue:[
  1089     changedObject == nameFilterPatternHolder ifTrue:[
  1043         self nameFilter:(nameFilterPatternHolder value).
  1090         self nameFilter:(nameFilterPatternHolder value).
  1044         ^ self.
  1091         ^ self.
  1045     ].
  1092     ].
       
  1093     changedObject == nameFilterTypeHolder ifTrue:[
       
  1094         self enqueueDelayedUpdateList. 
       
  1095         ^ self.
       
  1096     ].
  1046     
  1097     
  1047     super update:something with:aParameter from:changedObject
  1098     super update:something with:aParameter from:changedObject
  1048 
  1099 
  1049     "Modified: / 17-04-2014 / 21:48:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1100     "Modified: / 17-04-2014 / 21:48:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1050     "Modified (comment): / 09-11-2017 / 21:05:27 / cg"
  1101     "Modified: / 25-11-2017 / 11:58:58 / cg"
  1051 ! !
  1102 ! !
  1052 
  1103 
  1053 !MethodList methodsFor:'drag & drop'!
  1104 !MethodList methodsFor:'drag & drop'!
  1054 
  1105 
  1055 canDropContext:aDropContext
  1106 canDropContext:aDropContext
  1147     ^ false
  1198     ^ false
  1148 
  1199 
  1149     "Created: / 17-08-2011 / 15:03:34 / cg"
  1200     "Created: / 17-08-2011 / 15:03:34 / cg"
  1150 !
  1201 !
  1151 
  1202 
       
  1203 isNameFilterMatchingSelector:sel method:mthd
       
  1204     sel isNil ifTrue:[^ true].
       
  1205     nameFilter isEmptyOrNil ifTrue:[^ true].   
       
  1206     nameFilter = '*' ifTrue:[^ true].   
       
  1207 
       
  1208     nameFilterTypeHolder value = 'S' ifTrue:[
       
  1209         ^ (nameFilter includesMatchCharacters not and:[sel includesString:nameFilter caseSensitive:false]) 
       
  1210           or:[ nameFilter match:sel caseSensitive:false]
       
  1211     ].
       
  1212     nameFilter includesMatchCharacters ifTrue:[
       
  1213         ^ mthd source asCollectionOfWords contains:[:word | nameFilter match:word caseSensitive:false]
       
  1214     ] ifFalse:[
       
  1215         ^ mthd source includesString:nameFilter
       
  1216     ].
       
  1217 
       
  1218     "Created: / 25-11-2017 / 12:04:21 / cg"
       
  1219 !
       
  1220 
  1152 listOfMethodNames
  1221 listOfMethodNames
  1153     |methods entries selectorBag newNameList allClasses newClasses
  1222     |methods entries selectorBag newNameList allClasses newClasses
  1154      allCategories                 "allSelectors"
  1223      allCategories                 "allSelectors"
  1155      generator doShowClass doShowClassFirst doShowCategory enforceClassAndProtocolInList
  1224      generator doShowClass doShowClassFirst doShowCategory enforceClassAndProtocolInList
  1156      theMethod sortByClass anyMethodToWatch mclass
  1225      theMethod sortByClass anyMethodToWatch mclass
  1194         |categoryIsExtensionsPseudoCategory|
  1263         |categoryIsExtensionsPseudoCategory|
  1195 
  1264 
  1196         (sel isNil 
  1265         (sel isNil 
  1197         or:[ nameFilter isEmptyOrNil
  1266         or:[ nameFilter isEmptyOrNil
  1198         or:[ nameFilter = '*'
  1267         or:[ nameFilter = '*'
  1199         or:[ (nameFilter includesMatchCharacters not and:[sel includesString:nameFilter caseSensitive:false]) 
  1268         or:[ self isNameFilterMatchingSelector:sel method:mthd]]]) ifTrue:[
  1200         or:[ nameFilter match:sel caseSensitive:false]]]]) ifTrue:[
       
  1201             
  1269             
  1202             categoryIsExtensionsPseudoCategory := (cat = nameListEntryForExtensions).
  1270             categoryIsExtensionsPseudoCategory := (cat = nameListEntryForExtensions).
  1203             (cls isNil and:[ cat isNil and:[ sel isNil ] ]) ifTrue:[
  1271             (cls isNil and:[ cat isNil and:[ sel isNil ] ]) ifTrue:[
  1204                 enforceClassAndProtocolInList := true
  1272                 enforceClassAndProtocolInList := true
  1205             ] ifFalse:[
  1273             ] ifFalse:[
  1421     ^ newNameList.
  1489     ^ newNameList.
  1422 
  1490 
  1423     "Created: / 05-02-2000 / 22:43:40 / cg"
  1491     "Created: / 05-02-2000 / 22:43:40 / cg"
  1424     "Modified: / 24-08-2010 / 20:34:09 / Jan Vrany"
  1492     "Modified: / 24-08-2010 / 20:34:09 / Jan Vrany"
  1425     "Modified (comment): / 17-09-2013 / 10:31:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1493     "Modified (comment): / 17-09-2013 / 10:31:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1426     "Modified: / 09-11-2017 / 21:11:06 / cg"
  1494     "Modified: / 25-11-2017 / 12:04:50 / cg"
  1427 !
  1495 !
  1428 
  1496 
  1429 makeDependent
  1497 makeDependent
  1430     environment addDependent:self.
  1498     environment addDependent:self.
  1431 "/    ChangeSet addDependent:self.
  1499 "/    ChangeSet addDependent:self.
  1723 ! !
  1791 ! !
  1724 
  1792 
  1725 !MethodList methodsFor:'private-presentation'!
  1793 !MethodList methodsFor:'private-presentation'!
  1726 
  1794 
  1727 colorForCoverageInformationOfMethod:aMethod
  1795 colorForCoverageInformationOfMethod:aMethod
       
  1796     |prefs|
       
  1797     
  1728     aMethod isInstrumented ifFalse:[^ nil].
  1798     aMethod isInstrumented ifFalse:[^ nil].
  1729     aMethod category = 'documentation' ifTrue:[^ nil].
  1799     aMethod category = 'documentation' ifTrue:[^ nil].
  1730 
  1800 
       
  1801     prefs := UserPreferences current.
       
  1802     
  1731     aMethod hasBeenCalled ifTrue:[
  1803     aMethod hasBeenCalled ifTrue:[
  1732 	aMethod haveAllBlocksBeenExecuted ifTrue:[
  1804         aMethod haveAllBlocksBeenExecuted ifTrue:[
  1733 	    ^ UserPreferences current colorForInstrumentedFullyCoveredCode
  1805             ^ prefs colorForInstrumentedFullyCoveredCode
  1734 	].
  1806         ].
  1735 	^ UserPreferences current colorForInstrumentedPartiallyCoveredCode
  1807         ^ prefs colorForInstrumentedPartiallyCoveredCode
  1736     ].
  1808     ].
  1737     ^ UserPreferences current colorForInstrumentedNeverCalledCode
  1809     ^ prefs colorForInstrumentedNeverCalledCode
  1738 
  1810 
  1739     "Created: / 30-04-2010 / 11:53:38 / cg"
  1811     "Created: / 30-04-2010 / 11:53:38 / cg"
       
  1812     "Modified: / 25-11-2017 / 12:07:10 / cg"
  1740 !
  1813 !
  1741 
  1814 
  1742 listEntryForMethod:aMethod selector:selector class:cls showClass:showClass showCategory:showCategory classFirst:showClassFirst
  1815 listEntryForMethod:aMethod selector:selector class:cls showClass:showClass showCategory:showCategory classFirst:showClassFirst
  1743     "answer a method list entry
  1816     "answer a method list entry
  1744      gimmics:
  1817      gimmics:
  2018 
  2091 
  2019     super postBuildWith:aBuilder.
  2092     super postBuildWith:aBuilder.
  2020 
  2093 
  2021     methodListView := aBuilder componentAt:'List'.
  2094     methodListView := aBuilder componentAt:'List'.
  2022     methodListView notNil ifTrue:[
  2095     methodListView notNil ifTrue:[
  2023 	methodListView allowDrag:true.
  2096         methodListView allowDrag:true.
  2024 	methodListView dragObjectConverter:[:obj |
  2097         methodListView 
  2025 					    |nm method idx|
  2098             dragObjectConverter:[:obj |
  2026 
  2099                 |nm method idx|
  2027 					    nm := obj theObject asString string string.
  2100 
  2028 					    idx := browserNameList value findFirst:[:item | item string string = nm].
  2101                 nm := obj theObject asString string string.
  2029 					    method := methodList value at:idx.
  2102                 idx := browserNameList value findFirst:[:item | item string string = nm].
  2030 					    DropObject newMethod:method.
  2103                 method := methodList value at:idx.
  2031 					 ].
  2104                 DropObject newMethod:method.
       
  2105             ].
  2032     ]
  2106     ]
       
  2107 
       
  2108     "Modified (format): / 25-11-2017 / 12:08:30 / cg"
  2033 ! !
  2109 ! !
  2034 
  2110 
  2035 !MethodList class methodsFor:'documentation'!
  2111 !MethodList class methodsFor:'documentation'!
  2036 
  2112 
  2037 version
  2113 version