more generators;
authorClaus Gittinger <cg@exept.de>
Mon, 20 Mar 2006 09:40:58 +0100
changeset 6717 34a0a1b14989
parent 6716 4b255b8e6dfa
child 6718 d6e9cae51834
more generators; update fix when switching to class
NewSystemBrowser.st
Tools__NewSystemBrowser.st
--- a/NewSystemBrowser.st	Fri Mar 17 15:18:07 2006 +0100
+++ b/NewSystemBrowser.st	Mon Mar 20 09:40:58 2006 +0100
@@ -5093,7 +5093,13 @@
          (MenuItem
             enabled: hasSingleLoadedClassSelectedHolder
             label: 'Initialized Instance Creation'
-            itemValue: classMenuGenerateStandardInitializationMethods
+            itemValue: classMenuGenerateInitializedInstanceCreationMethods
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasSingleLoadedClassSelectedHolder
+            label: 'Parametrized Instance Creation'
+            itemValue: classMenuGenerateParametrizedInstanceCreationMethods
             translateLabel: true
           )
          (MenuItem
@@ -7836,6 +7842,12 @@
                   translateLabel: true
                 )
                (MenuItem
+                  "/ enabled: singleSelectedMethodIsSubclassResponsibility
+                  label: 'Templates in all Subclasses'
+                  itemValue: selectorMenuGenerateTemplateInAllSubclasses
+                  translateLabel: true
+                )
+               (MenuItem
                   label: '-'
                 )
                (MenuItem
@@ -17683,6 +17695,16 @@
         lazyInitialization:false
 !
 
+classMenuGenerateInitializedInstanceCreationMethods
+    "create new and initialize methods"
+
+    self 
+        generateUndoableChangeOverSelectedClasses:'Initialized Instance Creation Code for %(singleClassNameOrNumberOfClasses)' 
+        via:[:generator :eachClass |
+            generator createInitializedInstanceCreationMethodsIn:eachClass theNonMetaclass
+        ].
+!
+
 classMenuGenerateMultiSetterMethod
     "create a multi setter method for selected instvars."
 
@@ -17695,6 +17717,24 @@
     CodeGeneratorTool createMultiSetterMethodFor:vars in:cls
 !
 
+classMenuGenerateParametrizedInstanceCreationMethods
+    "create for: instance creation and initialize methods"
+
+    |selector|
+
+    selector := Dialog 
+                    requestSelector:'Name of Instance Creation Method:'         
+                    initialAnswer:'for:'.
+    selector isEmptyOrNil ifTrue:[^ self].
+    selector := selector asSymbol.
+
+    self 
+        generateUndoableChangeOverSelectedClasses:'Parametrized Instance Creation Code for %(singleClassNameOrNumberOfClasses)' 
+        via:[:generator :eachClass |
+            generator createParametrizedInstanceCreationMethodsNamed:selector in:eachClass theNonMetaclass
+        ].
+!
+
 classMenuGenerateRequiredProtocol
     "create required protocol (all inherited subclassResponsibility methods)"
 
@@ -17718,16 +17758,6 @@
         lazyInitialization:false
 !
 
-classMenuGenerateStandardInitializationMethods
-    "create new and initialize methods"
-
-    self 
-        generateUndoableChangeOverSelectedClasses:'Generate Initialization Code for %(singleClassNameOrNumberOfClasses)' 
-        via:[:generator :eachClass |
-            generator createStandardInitializationMethodsIn:eachClass theNonMetaclass
-        ].
-!
-
 classMenuGenerateStandardPrintOnMethod
     self 
         generateUndoableChangeOverSelectedClasses:'Generate PrintOn Method for %(singleClassNameOrNumberOfClasses)' 
@@ -27348,8 +27378,14 @@
         ]
 !
 
-selectorMenuGenerateTemplateInSubclasses
-    "generate a template in every subclass for each subclassResponsibility method"
+selectorMenuGenerateTemplateInAllSubclasses
+    "generate a template in all subclasses (recursive) for each subclassResponsibility method"
+
+    self selectorMenuGenerateTemplateInClassesEnumeratedWith:#allSubclasses
+!
+
+selectorMenuGenerateTemplateInClassesEnumeratedWith:aSubclassEnumeratingSelector
+    "generate a template in some subclass for each subclassResponsibility method"
 
     self 
         generateUndoableChangeOverSelectedMethods:'Generate Responsibility for %(singleMethodNameOrNumberOfMethods)'
@@ -27364,7 +27400,7 @@
             parser parseMethod.
             spec := Parser methodSpecificationForSelector:selector argNames:parser methodArgs.
 
-            mclass subclasses do:[:eachSubClass |
+            (mclass perform:aSubclassEnumeratingSelector) do:[:eachSubClass |
                 |code|
 
                 (eachSubClass implements:selector) ifFalse:[
@@ -27378,6 +27414,12 @@
         ]
 !
 
+selectorMenuGenerateTemplateInSubclasses
+    "generate a template in every subclass for each subclassResponsibility method"
+
+    self selectorMenuGenerateTemplateInClassesEnumeratedWith:#subclasses
+!
+
 selectorMenuInspect
     "open an inspector on the single selected method"
 
@@ -29018,9 +29060,9 @@
 !
 
 variablesMenuAdd:asClassVariableBoolean asValueHolder:asValueHolder
-    "add a new variable."
-
-    |words variableToAdd initial selectedClass boxTitle msg|
+    "add new variable(s)."
+
+    |words variablesToAdd initial selectedClass boxTitle msg|
 
 "/    (self askIfModified) ~~ true ifTrue:[ ^ self ].
 
@@ -29040,33 +29082,35 @@
     msg := msg 
             bindWith:
                 (asClassVariableBoolean 
-                    ifTrue:['class'] 
+                    ifTrue:['Class'] 
                     ifFalse:[
                         self meta value
-                            ifTrue:['class instance']
-                            ifFalse:['instance']
+                            ifTrue:['Class Instance']
+                            ifFalse:['Instance']
                     ])
             with:
                 (asValueHolder 
-                    ifTrue:['valueHolder'] 
-                    ifFalse:['variable']).
-
-    variableToAdd := 
+                    ifTrue:['ValueHolder(s)'] 
+                    ifFalse:['Variable(s)']).
+
+    variablesToAdd := 
         Dialog 
             request:(resources string:msg)
             title:(resources string:boxTitle)
             initialAnswer:initial.
 
-    variableToAdd size == 0 ifTrue:[^ self].
+    variablesToAdd size == 0 ifTrue:[^ self].
 
     selectedClass := self theSingleSelectedClass.
-    asClassVariableBoolean 
-        ifTrue:[
+
+    variablesToAdd := variablesToAdd asCollectionOfWords.
+    variablesToAdd do:[:variableToAdd |
+        asClassVariableBoolean ifTrue:[
             self codeMenuAddClassVariable:variableToAdd inClass:selectedClass asValueHolder:asValueHolder
-        ] 
-        ifFalse:[
+        ] ifFalse:[
             self codeMenuAddInstanceVariable:variableToAdd inClass:selectedClass asValueHolder:asValueHolder
         ]
+    ]
 !
 
 variablesMenuAddClassVariable
@@ -31217,6 +31261,7 @@
     self class addToHistory:aClass selector:aSelector.
 
     self normalLabel.
+    self enqueueDelayedClassSelectionChange.
 
     "Modified: / 24.2.2000 / 13:25:28 / cg"
 !
@@ -37752,7 +37797,7 @@
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Attic/NewSystemBrowser.st,v 1.937 2006-03-17 14:17:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Attic/NewSystemBrowser.st,v 1.938 2006-03-20 08:40:58 cg Exp $'
 ! !
 
 NewSystemBrowser initialize!
--- a/Tools__NewSystemBrowser.st	Fri Mar 17 15:18:07 2006 +0100
+++ b/Tools__NewSystemBrowser.st	Mon Mar 20 09:40:58 2006 +0100
@@ -5093,7 +5093,13 @@
          (MenuItem
             enabled: hasSingleLoadedClassSelectedHolder
             label: 'Initialized Instance Creation'
-            itemValue: classMenuGenerateStandardInitializationMethods
+            itemValue: classMenuGenerateInitializedInstanceCreationMethods
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasSingleLoadedClassSelectedHolder
+            label: 'Parametrized Instance Creation'
+            itemValue: classMenuGenerateParametrizedInstanceCreationMethods
             translateLabel: true
           )
          (MenuItem
@@ -7836,6 +7842,12 @@
                   translateLabel: true
                 )
                (MenuItem
+                  "/ enabled: singleSelectedMethodIsSubclassResponsibility
+                  label: 'Templates in all Subclasses'
+                  itemValue: selectorMenuGenerateTemplateInAllSubclasses
+                  translateLabel: true
+                )
+               (MenuItem
                   label: '-'
                 )
                (MenuItem
@@ -17683,6 +17695,16 @@
         lazyInitialization:false
 !
 
+classMenuGenerateInitializedInstanceCreationMethods
+    "create new and initialize methods"
+
+    self 
+        generateUndoableChangeOverSelectedClasses:'Initialized Instance Creation Code for %(singleClassNameOrNumberOfClasses)' 
+        via:[:generator :eachClass |
+            generator createInitializedInstanceCreationMethodsIn:eachClass theNonMetaclass
+        ].
+!
+
 classMenuGenerateMultiSetterMethod
     "create a multi setter method for selected instvars."
 
@@ -17695,6 +17717,24 @@
     CodeGeneratorTool createMultiSetterMethodFor:vars in:cls
 !
 
+classMenuGenerateParametrizedInstanceCreationMethods
+    "create for: instance creation and initialize methods"
+
+    |selector|
+
+    selector := Dialog 
+                    requestSelector:'Name of Instance Creation Method:'         
+                    initialAnswer:'for:'.
+    selector isEmptyOrNil ifTrue:[^ self].
+    selector := selector asSymbol.
+
+    self 
+        generateUndoableChangeOverSelectedClasses:'Parametrized Instance Creation Code for %(singleClassNameOrNumberOfClasses)' 
+        via:[:generator :eachClass |
+            generator createParametrizedInstanceCreationMethodsNamed:selector in:eachClass theNonMetaclass
+        ].
+!
+
 classMenuGenerateRequiredProtocol
     "create required protocol (all inherited subclassResponsibility methods)"
 
@@ -17718,16 +17758,6 @@
         lazyInitialization:false
 !
 
-classMenuGenerateStandardInitializationMethods
-    "create new and initialize methods"
-
-    self 
-        generateUndoableChangeOverSelectedClasses:'Generate Initialization Code for %(singleClassNameOrNumberOfClasses)' 
-        via:[:generator :eachClass |
-            generator createStandardInitializationMethodsIn:eachClass theNonMetaclass
-        ].
-!
-
 classMenuGenerateStandardPrintOnMethod
     self 
         generateUndoableChangeOverSelectedClasses:'Generate PrintOn Method for %(singleClassNameOrNumberOfClasses)' 
@@ -27348,8 +27378,14 @@
         ]
 !
 
-selectorMenuGenerateTemplateInSubclasses
-    "generate a template in every subclass for each subclassResponsibility method"
+selectorMenuGenerateTemplateInAllSubclasses
+    "generate a template in all subclasses (recursive) for each subclassResponsibility method"
+
+    self selectorMenuGenerateTemplateInClassesEnumeratedWith:#allSubclasses
+!
+
+selectorMenuGenerateTemplateInClassesEnumeratedWith:aSubclassEnumeratingSelector
+    "generate a template in some subclass for each subclassResponsibility method"
 
     self 
         generateUndoableChangeOverSelectedMethods:'Generate Responsibility for %(singleMethodNameOrNumberOfMethods)'
@@ -27364,7 +27400,7 @@
             parser parseMethod.
             spec := Parser methodSpecificationForSelector:selector argNames:parser methodArgs.
 
-            mclass subclasses do:[:eachSubClass |
+            (mclass perform:aSubclassEnumeratingSelector) do:[:eachSubClass |
                 |code|
 
                 (eachSubClass implements:selector) ifFalse:[
@@ -27378,6 +27414,12 @@
         ]
 !
 
+selectorMenuGenerateTemplateInSubclasses
+    "generate a template in every subclass for each subclassResponsibility method"
+
+    self selectorMenuGenerateTemplateInClassesEnumeratedWith:#subclasses
+!
+
 selectorMenuInspect
     "open an inspector on the single selected method"
 
@@ -29018,9 +29060,9 @@
 !
 
 variablesMenuAdd:asClassVariableBoolean asValueHolder:asValueHolder
-    "add a new variable."
-
-    |words variableToAdd initial selectedClass boxTitle msg|
+    "add new variable(s)."
+
+    |words variablesToAdd initial selectedClass boxTitle msg|
 
 "/    (self askIfModified) ~~ true ifTrue:[ ^ self ].
 
@@ -29040,33 +29082,35 @@
     msg := msg 
             bindWith:
                 (asClassVariableBoolean 
-                    ifTrue:['class'] 
+                    ifTrue:['Class'] 
                     ifFalse:[
                         self meta value
-                            ifTrue:['class instance']
-                            ifFalse:['instance']
+                            ifTrue:['Class Instance']
+                            ifFalse:['Instance']
                     ])
             with:
                 (asValueHolder 
-                    ifTrue:['valueHolder'] 
-                    ifFalse:['variable']).
-
-    variableToAdd := 
+                    ifTrue:['ValueHolder(s)'] 
+                    ifFalse:['Variable(s)']).
+
+    variablesToAdd := 
         Dialog 
             request:(resources string:msg)
             title:(resources string:boxTitle)
             initialAnswer:initial.
 
-    variableToAdd size == 0 ifTrue:[^ self].
+    variablesToAdd size == 0 ifTrue:[^ self].
 
     selectedClass := self theSingleSelectedClass.
-    asClassVariableBoolean 
-        ifTrue:[
+
+    variablesToAdd := variablesToAdd asCollectionOfWords.
+    variablesToAdd do:[:variableToAdd |
+        asClassVariableBoolean ifTrue:[
             self codeMenuAddClassVariable:variableToAdd inClass:selectedClass asValueHolder:asValueHolder
-        ] 
-        ifFalse:[
+        ] ifFalse:[
             self codeMenuAddInstanceVariable:variableToAdd inClass:selectedClass asValueHolder:asValueHolder
         ]
+    ]
 !
 
 variablesMenuAddClassVariable
@@ -31217,6 +31261,7 @@
     self class addToHistory:aClass selector:aSelector.
 
     self normalLabel.
+    self enqueueDelayedClassSelectionChange.
 
     "Modified: / 24.2.2000 / 13:25:28 / cg"
 !
@@ -37752,7 +37797,7 @@
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.937 2006-03-17 14:17:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.938 2006-03-20 08:40:58 cg Exp $'
 ! !
 
 NewSystemBrowser initialize!