Tools__FullMethodCategoryList.st
author Claus Gittinger <cg@exept.de>
Fri, 15 Jun 2018 04:00:37 +0200
changeset 18220 d1ebaddf1100
parent 10038 0e8e88c0e51c
child 12123 4bde08cebd48
permissions -rw-r--r--
#UI_ENHANCEMENT by cg class: Tools::CheckinInfoDialog class changed: #windowSpec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10006
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
10038
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
     2
 Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
     3
 Copyright (c) 2009-2010 eXept Software AG
10006
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
10038
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
     5
 Permission is hereby granted, free of charge, to any person
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
     6
 obtaining a copy of this software and associated documentation
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
     7
 files (the 'Software'), to deal in the Software without
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
     8
 restriction, including without limitation the rights to use,
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
     9
 copy, modify, merge, publish, distribute, sublicense, and/or sell
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    10
 copies of the Software, and to permit persons to whom the
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    11
 Software is furnished to do so, subject to the following
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    12
 conditions:
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    13
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    14
 The above copyright notice and this permission notice shall be
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    15
 included in all copies or substantial portions of the Software.
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    16
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    17
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    18
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    19
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    20
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    21
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    22
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    23
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    24
 OTHER DEALINGS IN THE SOFTWARE.
10006
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
"
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"{ Package: 'stx:libtool' }"
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
"{ NameSpace: Tools }"
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
MethodCategoryList subclass:#FullMethodCategoryList
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	instanceVariableNames:''
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	classVariableNames:''
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	poolDictionaries:''
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	category:'Interface-Browsers-New'
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!FullMethodCategoryList class methodsFor:'documentation'!
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
copyright
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
"
10038
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    41
 Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    42
 Copyright (c) 2009-2010 eXept Software AG
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    43
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    44
 Permission is hereby granted, free of charge, to any person
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    45
 obtaining a copy of this software and associated documentation
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    46
 files (the 'Software'), to deal in the Software without
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    47
 restriction, including without limitation the rights to use,
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    48
 copy, modify, merge, publish, distribute, sublicense, and/or sell
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    49
 copies of the Software, and to permit persons to whom the
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    50
 Software is furnished to do so, subject to the following
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    51
 conditions:
10006
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
10038
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    53
 The above copyright notice and this permission notice shall be
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    54
 included in all copies or substantial portions of the Software.
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    55
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    56
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    57
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    58
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    59
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    60
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    61
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    62
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
    63
 OTHER DEALINGS IN THE SOFTWARE.
10006
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
"
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
documentation
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
"
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    embeddable application displaying the classes as listed by
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    the inputGenerator.
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    Provides an outputGenerator, which enumerates the classes and
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    their protocols (method-categories) in the selected classes.
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    [author:]
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
	Claus Gittinger (cg@exept.de)
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
"
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
! !
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
!FullMethodCategoryList methodsFor:'generators'!
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
makeGenerator
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    "return a generator which enumerates the methods from the selected protocol;
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
     that generator generates 4-element elements (includes the class and protocol), 
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
     in order to make the consumers only depend on one input 
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
     (i.e. to pass multiple-class and multiple-protocol info
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
      without a need for another classHolder/protocolHolder in the methodList)."
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    ^ Iterator on:[:whatToDo |
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
                        |protocols all packages theProtocol|
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
                        protocols := self selectedProtocols value ? #().
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
                        all := protocols includes:(self class nameListEntryForALL).
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
                        packages := packageFilter value value.
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
                        protocols size > 0 ifTrue:[
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
                            protocols size == 1 ifTrue:[
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
                                theProtocol := protocols first.
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
                                Smalltalk allClassesDo:[:eachClass |
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
                                    eachClass instAndClassSelectorsAndMethodsDo:[:sel :eachMethod |
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
                                        |cat|
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
                                        cat := eachMethod category.
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
                                        (all 
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
                                        or:[theProtocol = cat]) ifTrue:[
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
                                            (packages isNil
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
                                            or:[packages includes:eachMethod package])
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
                                            ifTrue:[
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
                                                whatToDo value:eachClass value:cat value:sel value:eachMethod.
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
                                            ].
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
                                        ].
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
                                    ].
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
                                ]
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
                            ] ifFalse:[
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
                                Smalltalk allClassesDo:[:eachClass |
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
                                    eachClass instAndClassSelectorsAndMethodsDo:[:sel :eachMethod |
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
                                        |cat|
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
                                        cat := eachMethod category.
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
                                        (all 
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
                                        or:[protocols includes:cat]) ifTrue:[
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
                                            (packages isNil
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
                                            or:[packages includes:eachMethod package])
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
                                            ifTrue:[
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
                                                whatToDo value:eachClass value:cat value:sel value:eachMethod.
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
                                            ].
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
                                        ].
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
                                    ].
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
                                ]
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
                            ]
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
                        ]
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
                  ]
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
! !
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
!FullMethodCategoryList methodsFor:'private'!
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
listOfMethodCategories
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    |categories|
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    categories := Set new.
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    categories addAll:MethodCategoryCache new allMethodCategories.    
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
    categories := categories asOrderedCollection sort.
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    categories addFirst:(self class nameListEntryForALL).
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    ^ categories
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
! !
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
!FullMethodCategoryList class methodsFor:'documentation'!
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
version_CVS
10038
0e8e88c0e51c changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 10037
diff changeset
   154
    ^ '$Header: /cvs/stx/stx/libtool/Tools__FullMethodCategoryList.st,v 1.3 2011-07-03 13:36:22 cg Exp $'
10006
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
!
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
version_SVN
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    ^ '§Id: Tools__FullMethodCategoryList.st 7796 2011-06-23 16:01:32Z vranyj1 §'
a2c0bba204fb initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
! !