CustomCodeGenerator.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 24 Aug 2014 01:49:18 +0100
changeset 635 9edd6a278835
parent 627 c23d5ce2090c
parent 634 d77d9a7561be
child 647 83c6c207a7f1
permissions -rw-r--r--
Merged 6f639016753b and d77d9a7561be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
464
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     1
"{ Package: 'jn:refactoring_custom' }"
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     2
500
8c2b58d6b2d5 Code reogranization, Defined CustomContext & basic API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 480
diff changeset
     3
CustomCodeGeneratorOrRefactoring subclass:#CustomCodeGenerator
626
a32e9bcc436e work in progress on first refactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 606
diff changeset
     4
	instanceVariableNames:'builder'
464
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     5
	classVariableNames:''
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     6
	poolDictionaries:''
559
ba4af98f41c5 Code generators and refactorings moved to their own class category.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 557
diff changeset
     7
	category:'Interface-Refactoring-Custom-Generators'
464
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     8
!
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
     9
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    10
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    11
!CustomCodeGenerator class methodsFor:'instance creation'!
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    12
531
0f5089968f96 generator which generates a code generator class made with usage of subclassResponsibilityGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    13
subGeneratorOf: aCodeGenerator
544
4d9dfb9b35a1 add CustomDialogMock for testing purposes
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 543
diff changeset
    14
    | codeGenerator nestingCount |
531
0f5089968f96 generator which generates a code generator class made with usage of subclassResponsibilityGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    15
0f5089968f96 generator which generates a code generator class made with usage of subclassResponsibilityGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    16
    codeGenerator := self new.
634
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 633
diff changeset
    17
    codeGenerator codeBuilder: aCodeGenerator codeBuilder.
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 633
diff changeset
    18
    codeGenerator refactoryBuilder: aCodeGenerator refactoryBuilder.
600
aef422847d6a fix creation of subgenerators - add missing shared instance variables
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 561
diff changeset
    19
    codeGenerator userPreferences: aCodeGenerator userPreferences.
aef422847d6a fix creation of subgenerators - add missing shared instance variables
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 561
diff changeset
    20
    codeGenerator dialog: aCodeGenerator dialog.
aef422847d6a fix creation of subgenerators - add missing shared instance variables
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 561
diff changeset
    21
    codeGenerator changeManager: aCodeGenerator changeManager.
531
0f5089968f96 generator which generates a code generator class made with usage of subclassResponsibilityGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    22
    codeGenerator compositeChangeCollector: aCodeGenerator compositeChangeCollector.
544
4d9dfb9b35a1 add CustomDialogMock for testing purposes
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 543
diff changeset
    23
    nestingCount := aCodeGenerator compositeChangeNesting.
4d9dfb9b35a1 add CustomDialogMock for testing purposes
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 543
diff changeset
    24
    nestingCount isNil ifTrue: [ 
4d9dfb9b35a1 add CustomDialogMock for testing purposes
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 543
diff changeset
    25
        nestingCount := 0 
4d9dfb9b35a1 add CustomDialogMock for testing purposes
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 543
diff changeset
    26
    ].  
4d9dfb9b35a1 add CustomDialogMock for testing purposes
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 543
diff changeset
    27
    codeGenerator compositeChangeNesting: (1 + nestingCount).
531
0f5089968f96 generator which generates a code generator class made with usage of subclassResponsibilityGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    28
    ^ codeGenerator
0f5089968f96 generator which generates a code generator class made with usage of subclassResponsibilityGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    29
0f5089968f96 generator which generates a code generator class made with usage of subclassResponsibilityGenerator
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 525
diff changeset
    30
    "Created: / 19-04-2014 / 10:15:21 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
634
d77d9a7561be move refactoryBuilder and codeBuilder to CustomCodeGeneratorOrRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 633
diff changeset
    31
    "Modified: / 23-08-2014 / 00:10:17 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
464
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    32
! !
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    33
506
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 504
diff changeset
    34
!CustomCodeGenerator class methodsFor:'testing'!
464
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    35
506
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 504
diff changeset
    36
isAbstract
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 504
diff changeset
    37
    ^ self == CustomCodeGenerator
464
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    38
506
b611cc119554 Added support for custom menu building and injecting into class browser's menus.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 504
diff changeset
    39
    "Created: / 26-01-2014 / 21:38:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
464
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    40
! !
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    41
514
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    42
!CustomCodeGenerator methodsFor:'executing'!
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    43
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    44
buildInContext: aCustomContext
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    45
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    46
    self subclassResponsibility
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    47
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    48
    "Created: / 18-03-2014 / 22:52:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    49
!
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    50
606
492cbd7bfe4b add method to simplify execution of composed code generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 600
diff changeset
    51
executeSubGeneratorClasses: aSubGeneratorClasses inContext: aCustomContext
492cbd7bfe4b add method to simplify execution of composed code generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 600
diff changeset
    52
492cbd7bfe4b add method to simplify execution of composed code generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 600
diff changeset
    53
     aSubGeneratorClasses do: [ :aSubGeneratorClass | 
492cbd7bfe4b add method to simplify execution of composed code generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 600
diff changeset
    54
         | subGenerator |
492cbd7bfe4b add method to simplify execution of composed code generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 600
diff changeset
    55
492cbd7bfe4b add method to simplify execution of composed code generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 600
diff changeset
    56
         subGenerator := aSubGeneratorClass subGeneratorOf: self.
492cbd7bfe4b add method to simplify execution of composed code generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 600
diff changeset
    57
         subGenerator executeInContext: aCustomContext  
492cbd7bfe4b add method to simplify execution of composed code generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 600
diff changeset
    58
     ]
492cbd7bfe4b add method to simplify execution of composed code generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 600
diff changeset
    59
492cbd7bfe4b add method to simplify execution of composed code generators
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 600
diff changeset
    60
    "Created: / 08-07-2014 / 18:31:10 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
514
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    61
! !
6e7758b695c5 work in progress - remove duplicate code in code generation methods
Jakub Nesveda <jakubnesveda@seznam.cz>
parents: 512
diff changeset
    62
464
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    63
!CustomCodeGenerator class methodsFor:'documentation'!
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    64
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    65
version_HG
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    66
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    67
    ^ '$Changeset: <not expanded> $'
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    68
! !
2f2f44408f2c - CustomRefactoring
Jakub Nesveda <jakubnesveda@seznam.cz>
parents:
diff changeset
    69