CustomMultiSetterMethodsCodeGenerator.st
author Jakub Nesveda <jakubnesveda@seznam.cz>
Thu, 21 Aug 2014 21:28:39 +0200
changeset 632 7a0f27afd9e0
parent 614 66a50b63a877
child 634 d77d9a7561be
permissions -rw-r--r--
change CustomRefactoryBuilder to work with CustomSourceCodeSelection
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
614
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     1
"{ Package: 'jn:refactoring_custom' }"
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     2
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     3
CustomAccessMethodsCodeGenerator subclass:#CustomMultiSetterMethodsCodeGenerator
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     4
	instanceVariableNames:''
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     5
	classVariableNames:''
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     6
	poolDictionaries:''
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     7
	category:'Interface-Refactoring-Custom'
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     8
!
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     9
632
7a0f27afd9e0 change CustomRefactoryBuilder to work with CustomSourceCodeSelection
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 614
diff changeset
    10
614
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    11
!CustomMultiSetterMethodsCodeGenerator class methodsFor:'accessing-presentation'!
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    12
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    13
description
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    14
    "Returns more detailed description of the receiver"
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    15
    
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    16
    ^ 'Multi-Setter Method(s) for selected instance variables'
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    17
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    18
    "Modified: / 13-07-2014 / 19:06:56 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    19
!
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    20
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    21
label
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    22
    "Returns show label describing the receiver. This label
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    23
     is used in UI as menu item/tree item label."
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    24
    
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    25
    ^ 'Multi-Setter Method(s)'
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    26
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    27
    "Modified: / 13-07-2014 / 19:06:16 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    28
! !
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    29
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    30
!CustomMultiSetterMethodsCodeGenerator class methodsFor:'queries'!
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    31
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    32
availableInContext:aCustomContext
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    33
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    34
    ^ aCustomContext selectedClasses notEmptyOrNil and: [ 
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    35
        aCustomContext selectedVariables notEmptyOrNil and: [ 
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    36
            aCustomContext selectedVariables size >= 2
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    37
        ]
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    38
    ]
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    39
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    40
    "Created: / 13-07-2014 / 19:14:36 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    41
! !
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    42
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    43
!CustomMultiSetterMethodsCodeGenerator methodsFor:'code generation'!
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    44
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    45
createMultiSetterMethodForVariables: aVariableNames inClass: aClass
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    46
    "Creates multi-setter access method for given variable names and class"
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    47
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    48
    | setterSelector comment assignVariablesCode method |
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    49
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    50
    setterSelector := ''.
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    51
    comment := ''.
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    52
    assignVariablesCode := ''.
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    53
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    54
    userPreferences generateCommentsForSetters ifTrue: [ 
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    55
        comment := '"set instance variables"'.
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    56
    ].
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    57
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    58
    aVariableNames do: [ :variableName |
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    59
        | argumentName |
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    60
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    61
        argumentName := variableName asString, 'Arg'.
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    62
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    63
        setterSelector := setterSelector, variableName asString, ': ', argumentName, ' '.
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    64
        assignVariablesCode := assignVariablesCode, variableName asString, ' := ', argumentName, '. '.
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    65
    ].
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    66
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    67
    method := builder createMethod.
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    68
    method
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    69
        class: aClass;
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    70
        protocol: 'accessing';
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    71
        source: '`@setterSelector
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    72
            `"comment
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    73
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    74
            `@assignVariablesCode
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    75
        ';
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    76
        replace: '`@setterSelector' with: setterSelector asSymbol;
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    77
        replace: '`"comment' with: comment;
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    78
        replace: '`@assignVariablesCode' with: assignVariablesCode.
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    79
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    80
    "Created: / 13-07-2014 / 20:45:41 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    81
! !
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    82
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    83
!CustomMultiSetterMethodsCodeGenerator methodsFor:'executing'!
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    84
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    85
buildInContext: aCustomContext
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    86
    "Creates multi-setter access methods for given context"
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    87
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    88
    aCustomContext selectedClasses do:[ :class | 
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    89
        self
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    90
            createMultiSetterMethodForVariables: aCustomContext selectedVariables
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    91
            inClass: class 
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    92
    ].
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    93
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    94
    "Modified: / 13-07-2014 / 20:45:41 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    95
! !
66a50b63a877 add context templates for generator testing (two and three instance variables)
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    96
632
7a0f27afd9e0 change CustomRefactoryBuilder to work with CustomSourceCodeSelection
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 614
diff changeset
    97
!CustomMultiSetterMethodsCodeGenerator class methodsFor:'documentation'!
7a0f27afd9e0 change CustomRefactoryBuilder to work with CustomSourceCodeSelection
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 614
diff changeset
    98
7a0f27afd9e0 change CustomRefactoryBuilder to work with CustomSourceCodeSelection
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 614
diff changeset
    99
version_HG
7a0f27afd9e0 change CustomRefactoryBuilder to work with CustomSourceCodeSelection
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 614
diff changeset
   100
7a0f27afd9e0 change CustomRefactoryBuilder to work with CustomSourceCodeSelection
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 614
diff changeset
   101
    ^ '$Changeset: <not expanded> $'
7a0f27afd9e0 change CustomRefactoryBuilder to work with CustomSourceCodeSelection
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 614
diff changeset
   102
! !
7a0f27afd9e0 change CustomRefactoryBuilder to work with CustomSourceCodeSelection
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 614
diff changeset
   103