SmallSense__ProtocolSelectDialog.st
author convert-repo
Thu, 27 Jun 2019 03:28:20 +0000
changeset 1089 f13772ffe08f
parent 1072 a44c741ee5ef
permissions -rw-r--r--
update tags
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
368
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Copyright (C) 2013-2014 Jan Vrany
1072
a44c741ee5ef Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 983
diff changeset
     4
Copyright (C) 2015-2016 Jan Vrany
368
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
This library is free software; you can redistribute it and/or
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
modify it under the terms of the GNU Lesser General Public
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
License as published by the Free Software Foundation; either
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
version 2.1 of the License.
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
This library is distributed in the hope that it will be useful,
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
but WITHOUT ANY WARRANTY; without even the implied warranty of
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
Lesser General Public License for more details.
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
You should have received a copy of the GNU Lesser General Public
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
License along with this library; if not, write to the Free Software
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
"
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
"{ Package: 'stx:goodies/smallsense' }"
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
"{ NameSpace: SmallSense }"
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
881
9a58acda666b Introduced CategorySelectDialog for selecting class category
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 370
diff changeset
    24
CetegoryOrProtocolSelectDialog subclass:#ProtocolSelectDialog
983
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    25
	instanceVariableNames:'protocolsToHighlight'
368
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	classVariableNames:''
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	poolDictionaries:''
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	category:'SmallSense-Core-Interface-Search'
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
!
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
!ProtocolSelectDialog class methodsFor:'documentation'!
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
copyright
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
"
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
Copyright (C) 2013-2014 Jan Vrany
1072
a44c741ee5ef Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 983
diff changeset
    37
Copyright (C) 2015-2016 Jan Vrany
368
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
This library is free software; you can redistribute it and/or
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
modify it under the terms of the GNU Lesser General Public
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
License as published by the Free Software Foundation; either
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
version 2.1 of the License.
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
This library is distributed in the hope that it will be useful,
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
but WITHOUT ANY WARRANTY; without even the implied warranty of
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
Lesser General Public License for more details.
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
You should have received a copy of the GNU Lesser General Public
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
License along with this library; if not, write to the Free Software
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
"
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
! !
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
983
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    55
!ProtocolSelectDialog methodsFor:'accessing'!
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    56
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    57
protocolsToHighlight
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    58
    ^ protocolsToHighlight
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    59
!
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    60
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    61
protocolsToHighlight:aCollection
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    62
    protocolsToHighlight := aCollection.
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    63
! !
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    64
368
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
!ProtocolSelectDialog methodsFor:'accessing-defaults'!
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
defaultTitle
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    ^ (resources string: 'Select Protocol...')
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    "Created: / 13-12-2014 / 12:57:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
! !
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
!ProtocolSelectDialog methodsFor:'searching'!
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
matchingObjectPOsForPattern:pattern relax: level
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    | environment protocols |
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    environment := self environment.
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    protocols := Set new.
983
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    80
    "/ Convert highlighted protocols to a Set because
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    81
    "/ (i)  Set>>includes: is faster O(1)
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    82
    "/ (ii) the collection passed in by client might be an iterator so
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    83
    "/      doing so actually caches the value. We want this for
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    84
    "/      performance reasons.
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    85
    protocolsToHighlight notNil ifTrue:[
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    86
        protocolsToHighlight := protocolsToHighlight asSet.
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
    87
    ].
368
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    environment allMethodsDo:[ :mth | 
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
        | protocol |
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
        protocol := mth category.
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
        (protocol notNil 
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
            and: [ (filter isNil or:[filter value: protocol]) 
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
            and: [ pattern isNil or:[pattern match: protocol relax: level] ] ]) ifTrue:[
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
                protocols add: mth category 
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
            ] 
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    ].
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    protocols := protocols asArray.
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    protocols sort: [ :a :b | a < b ].
983
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
   101
    ^ protocols collect:[ :each | 
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
   102
        | label |
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
   103
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
   104
        label := each.
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
   105
        (protocolsToHighlight notNil and:[protocolsToHighlight includes: each]) ifTrue:[  
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
   106
            label := label asText allBold.
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
   107
        ].
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
   108
        PluggablePO new label: label; subject: each 
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
   109
    ].
368
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    "Created: / 13-12-2014 / 08:42:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
983
7379ac82aade Highlight protocols already defined in a class or superclasses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 881
diff changeset
   112
    "Modified: / 17-08-2016 / 15:56:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
368
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
! !
a94d9afd766b Introduced a ProtocolSelectDialog...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114