added #generateGetters functionality
authorClaus Gittinger <cg@exept.de>
Tue, 11 Sep 2001 22:33:07 +0200
changeset 3153 9ee01c93e441
parent 3152 9a751eb3f863
child 3154 859688212191
added #generateGetters functionality
NewSystemBrowser.st
Tools__NewSystemBrowser.st
--- a/NewSystemBrowser.st	Tue Sep 11 12:25:23 2001 +0200
+++ b/NewSystemBrowser.st	Tue Sep 11 22:33:07 2001 +0200
@@ -4866,6 +4866,12 @@
            #(#Menu
               #(
                #(#MenuItem
+                  #label: 'Getter methods'
+                  #translateLabel: true
+                  #value: #classMenuGenerateGetterMethods
+                  #enabled: #hasSingleLoadedClassSelectedHolder
+                )
+               #(#MenuItem
                   #label: 'Access Methods'
                   #translateLabel: true
                   #value: #classMenuGenerateAccessMethods
@@ -5507,6 +5513,12 @@
            #(#Menu
               #(
                #(#MenuItem
+                  #label: 'Getter methods'
+                  #translateLabel: true
+                  #value: #classMenuGenerateGetterMethods
+                  #enabled: #hasSingleLoadedClassSelectedHolder
+                )
+               #(#MenuItem
                   #label: 'Access methods'
                   #translateLabel: true
                   #value: #classMenuGenerateAccessMethods
@@ -8195,155 +8207,202 @@
      #(#Menu
         #(
          #(#MenuItem
-            #label: 'InstVar refs...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseInstVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'InstVar readers...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseInstVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'InstVar writers...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseInstVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All InstVar refs...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseAllInstVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All InstVar readers...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseAllInstVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All InstVar writers...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseAllInstVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'ClassInstVar refs...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseClassInstVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'ClassInstVar readers...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseClassInstVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'ClassInstVar writers...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseClassInstVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassInstVar refs...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseAllClassInstVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassInstVar readers...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseAllClassInstVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassInstVar writers...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseAllClassInstVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: '-'
-          )
-         #(#MenuItem
-            #label: 'ClassVar refs...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseClassVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'ClassVar readers...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseClassVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'ClassVar writers...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseClassVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassVar refs...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseAllClassVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassVar readers...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseAllClassVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassVar writers...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseAllClassVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: '-'
-          )
-         #(#MenuItem
-            #label: 'Generate access methods'
-            #translateLabel: true
-            #value: #variablesMenuGenerateAccessMethods
-            #enabled: #hasClassAndVariableSelectedHolder
-            #showBusyCursorWhilePerforming: true
+            #label: 'Instance Variables'
+            #translateLabel: true
+            #enabled: #hasNonMetaSelectedHolder
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'InstVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseInstVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'InstVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseInstVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'InstVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseInstVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'All InstVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllInstVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All InstVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllInstVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All InstVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllInstVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         #(#MenuItem
+            #label: 'Class Inst Variables'
+            #translateLabel: true
+            #enabled: #hasMetaSelectedHolder
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'ClassInstVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassInstVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'ClassInstVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassInstVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'ClassInstVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassInstVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'All ClassInstVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassInstVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All ClassInstVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassInstVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All ClassInstVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassInstVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         #(#MenuItem
+            #label: 'Class Variables'
+            #translateLabel: true
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'ClassVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'ClassVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'ClassVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'All ClassVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All ClassVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All ClassVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #label: 'Generate'
+            #translateLabel: true
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'Getter methods'
+                  #translateLabel: true
+                  #value: #variablesMenuGenerateGetterMethods
+                  #enabled: #hasClassAndVariableSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'Access methods'
+                  #translateLabel: true
+                  #value: #variablesMenuGenerateAccessMethods
+                  #enabled: #hasClassAndVariableSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
           )
          #(#MenuItem
             #label: '-'
@@ -14176,7 +14235,7 @@
      If no variable is selected, for all instvars;
      otherwise for that selected instvar."
 
-    self classMenuGenerateAccessMethodsWithChange:false asValueHolder:false
+    self classMenuGenerateAccessMethodsWithChange:false asValueHolder:false readersOnly:false
 !
 
 classMenuGenerateAccessMethodsForValueHolder
@@ -14184,7 +14243,7 @@
      If no variable is selected, for all instvars;
      otherwise for that selected instvar."
 
-    self classMenuGenerateAccessMethodsWithChange:false asValueHolder:true
+    self classMenuGenerateAccessMethodsWithChange:false asValueHolder:true readersOnly:false
 !
 
 classMenuGenerateAccessMethodsForValueHolderWithChange
@@ -14192,7 +14251,7 @@
      If no variable is selected, for all instvars;
      otherwise for that selected instvar."
 
-    self classMenuGenerateAccessMethodsWithChange:true asValueHolder:true
+    self classMenuGenerateAccessMethodsWithChange:true asValueHolder:true readersOnly:false
 !
 
 classMenuGenerateAccessMethodsWithChange
@@ -14200,10 +14259,10 @@
      If no variable is selected, for all instvars;
      otherwise for that selected instvar."
 
-    self classMenuGenerateAccessMethodsWithChange:true asValueHolder:false
-!
-
-classMenuGenerateAccessMethodsWithChange:aBoolean asValueHolder:asValueHolder 
+    self classMenuGenerateAccessMethodsWithChange:true asValueHolder:false readersOnly:false
+!
+
+classMenuGenerateAccessMethodsWithChange:aBoolean asValueHolder:asValueHolder readersOnly:readersOnly
     "create access methods for instvars.
      If no variable is selected, for all instvars;
      otherwise for that selected instvar."
@@ -14220,6 +14279,7 @@
                 in:eachClass
                 withChange:aBoolean
                 asValueHolder:asValueHolder
+                readersOnly:readersOnly
         ]
 
     "Modified: / 18.8.1997 / 15:44:10 / cg"
@@ -14245,6 +14305,14 @@
     "Created: / 7.8.1998 / 18:17:18 / cg"
 !
 
+classMenuGenerateGetterMethods
+    "create getter methods for instvars.
+     If no variable is selected, for all instvars;
+     otherwise for that selected instvar."
+
+    self classMenuGenerateAccessMethodsWithChange:false asValueHolder:false readersOnly:true
+!
+
 classMenuGenerateUpdateMethod
     "create a standard update method template"
 
@@ -23434,7 +23502,26 @@
                 createAccessMethodsFor:names 
                 in:eachClass
                 withChange:false
-                asValueHolder:false.
+                asValueHolder:false
+                readersOnly:false
+        ]
+    ]
+!
+
+variablesMenuGenerateGetterMethods
+    "create access methods for selected instvars."
+
+    self selectedClassesWithWaitCursorDo:[:eachClass |
+        |names|
+
+        names := self variableFilter value.
+        names size > 0 ifTrue:[
+            self 
+                createAccessMethodsFor:names 
+                in:eachClass
+                withChange:false
+                asValueHolder:false
+                readersOnly:true
         ]
     ]
 !
@@ -25151,7 +25238,7 @@
 
 !NewSystemBrowser methodsFor:'private-code generation'!
 
-createAccessMethodsFor:aCollectionOfVarNames in:aClass withChange:withChange asValueHolder:asValueHolder
+createAccessMethodsFor:aCollectionOfVarNames in:aClass withChange:withChange asValueHolder:asValueHolder readersOnly:readersOnly
     "workhorse for creating access methods for instvars."
 
     |classesClassVars|
@@ -25196,48 +25283,50 @@
             Transcript showCR:'method ''', methodName , ''' already present'
         ].
 
-        (aClass includesSelector:((methodName , ':') asSymbol)) ifFalse:[
-            asValueHolder ifTrue:[
-                source := methodName
-                          , ':something\    "set the ''%2'' value holder'.
-                withChange ifTrue:[
-                    source := source
-                              , ' (automatically generated)"\\'
-                              , '    |oldValue|\\'
-                              , '    %2 notNil ifTrue:[\'
-                              , '        oldValue := %2 value.\'
-                              , '        %2 removeDependent:self.\'
-                              , '    ].\'
-                              , '    %2 := something.\'
-                              , '    %2 notNil ifTrue:[\'
-                              , '        %2 addDependent:self.\'
-                              , '    ].\'
-                              , '    oldValue ~= %2 value ifTrue:[\'
-                              , '        self update:#value with:nil from:%2.\'
-                              , '    ].\'
+        readersOnly ifFalse:[
+            (aClass includesSelector:((methodName , ':') asSymbol)) ifFalse:[
+                asValueHolder ifTrue:[
+                    source := methodName
+                              , ':something\    "set the ''%2'' value holder'.
+                    withChange ifTrue:[
+                        source := source
+                                  , ' (automatically generated)"\\'
+                                  , '    |oldValue|\\'
+                                  , '    %2 notNil ifTrue:[\'
+                                  , '        oldValue := %2 value.\'
+                                  , '        %2 removeDependent:self.\'
+                                  , '    ].\'
+                                  , '    %2 := something.\'
+                                  , '    %2 notNil ifTrue:[\'
+                                  , '        %2 addDependent:self.\'
+                                  , '    ].\'
+                                  , '    oldValue ~= %2 value ifTrue:[\'
+                                  , '        self update:#value with:nil from:%2.\'
+                                  , '    ].\'
+                    ] ifFalse:[
+                        source := source 
+                                  , ' (automatically generated)"\\'
+                                  , '    %2 := something.'.
+                    ].
                 ] ifFalse:[
-                    source := source 
-                              , ' (automatically generated)"\\'
-                              , '    %2 := something.'.
-                ].
-            ] ifFalse:[
-                source := methodName
-                          , ':something\    "set the value of the %1 variable ''%2'''.
-                withChange ifTrue:[
-                    source := source
-                              , ' and setup for a change notification (automatically generated)"\\'
-                              , '    %2 := something.\'
-                              , '    self changed:#%2.\'.
-                ] ifFalse:[
-                    source := source 
-                              , ' (automatically generated)"\\'
-                              , '    %2 := something.'.
-                ].
-            ].
-            source := (source bindWith:varType with:name) withCRs.
-            Compiler compile:source forClass:aClass inCategory:(asValueHolder ifTrue:['aspects'] ifFalse:['accessing']).
-        ] ifTrue:[
-            Transcript showCR:'method ''', methodName , ':'' already present'
+                    source := methodName
+                              , ':something\    "set the value of the %1 variable ''%2'''.
+                    withChange ifTrue:[
+                        source := source
+                                  , ' and setup for a change notification (automatically generated)"\\'
+                                  , '    %2 := something.\'
+                                  , '    self changed:#%2.\'.
+                    ] ifFalse:[
+                        source := source 
+                                  , ' (automatically generated)"\\'
+                                  , '    %2 := something.'.
+                    ].
+                ].
+                source := (source bindWith:varType with:name) withCRs.
+                Compiler compile:source forClass:aClass inCategory:(asValueHolder ifTrue:['aspects'] ifFalse:['accessing']).
+            ] ifTrue:[
+                Transcript showCR:'method ''', methodName , ':'' already present'
+            ].
         ].
     ]
 !
@@ -49256,6 +49345,6 @@
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Attic/NewSystemBrowser.st,v 1.150 2001-09-11 10:25:23 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Attic/NewSystemBrowser.st,v 1.151 2001-09-11 20:33:07 cg Exp $'
 ! !
 NewSystemBrowser initialize!
--- a/Tools__NewSystemBrowser.st	Tue Sep 11 12:25:23 2001 +0200
+++ b/Tools__NewSystemBrowser.st	Tue Sep 11 22:33:07 2001 +0200
@@ -4866,6 +4866,12 @@
            #(#Menu
               #(
                #(#MenuItem
+                  #label: 'Getter methods'
+                  #translateLabel: true
+                  #value: #classMenuGenerateGetterMethods
+                  #enabled: #hasSingleLoadedClassSelectedHolder
+                )
+               #(#MenuItem
                   #label: 'Access Methods'
                   #translateLabel: true
                   #value: #classMenuGenerateAccessMethods
@@ -5507,6 +5513,12 @@
            #(#Menu
               #(
                #(#MenuItem
+                  #label: 'Getter methods'
+                  #translateLabel: true
+                  #value: #classMenuGenerateGetterMethods
+                  #enabled: #hasSingleLoadedClassSelectedHolder
+                )
+               #(#MenuItem
                   #label: 'Access methods'
                   #translateLabel: true
                   #value: #classMenuGenerateAccessMethods
@@ -8195,155 +8207,202 @@
      #(#Menu
         #(
          #(#MenuItem
-            #label: 'InstVar refs...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseInstVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'InstVar readers...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseInstVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'InstVar writers...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseInstVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All InstVar refs...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseAllInstVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All InstVar readers...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseAllInstVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All InstVar writers...'
-            #translateLabel: true
-            #isVisible: #hasNonMetaSelectedHolder
-            #value: #variablesMenuBrowseAllInstVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'ClassInstVar refs...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseClassInstVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'ClassInstVar readers...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseClassInstVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'ClassInstVar writers...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseClassInstVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassInstVar refs...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseAllClassInstVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassInstVar readers...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseAllClassInstVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassInstVar writers...'
-            #translateLabel: true
-            #isVisible: #hasMetaSelectedHolder
-            #value: #variablesMenuBrowseAllClassInstVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: '-'
-          )
-         #(#MenuItem
-            #label: 'ClassVar refs...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseClassVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'ClassVar readers...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseClassVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'ClassVar writers...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseClassVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassVar refs...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseAllClassVarRefs
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassVar readers...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseAllClassVarReads
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: 'All ClassVar writers...'
-            #translateLabel: true
-            #value: #variablesMenuBrowseAllClassVarMods
-            #enabled: #hasClassSelectedHolder
-            #showBusyCursorWhilePerforming: true
-          )
-         #(#MenuItem
-            #label: '-'
-          )
-         #(#MenuItem
-            #label: 'Generate access methods'
-            #translateLabel: true
-            #value: #variablesMenuGenerateAccessMethods
-            #enabled: #hasClassAndVariableSelectedHolder
-            #showBusyCursorWhilePerforming: true
+            #label: 'Instance Variables'
+            #translateLabel: true
+            #enabled: #hasNonMetaSelectedHolder
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'InstVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseInstVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'InstVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseInstVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'InstVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseInstVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'All InstVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllInstVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All InstVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllInstVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All InstVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllInstVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         #(#MenuItem
+            #label: 'Class Inst Variables'
+            #translateLabel: true
+            #enabled: #hasMetaSelectedHolder
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'ClassInstVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassInstVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'ClassInstVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassInstVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'ClassInstVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassInstVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'All ClassInstVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassInstVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All ClassInstVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassInstVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All ClassInstVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassInstVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         #(#MenuItem
+            #label: 'Class Variables'
+            #translateLabel: true
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'ClassVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'ClassVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'ClassVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseClassVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: '-'
+                )
+               #(#MenuItem
+                  #label: 'All ClassVar refs...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassVarRefs
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All ClassVar readers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassVarReads
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'All ClassVar writers...'
+                  #translateLabel: true
+                  #value: #variablesMenuBrowseAllClassVarMods
+                  #enabled: #hasClassSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #label: 'Generate'
+            #translateLabel: true
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'Getter methods'
+                  #translateLabel: true
+                  #value: #variablesMenuGenerateGetterMethods
+                  #enabled: #hasClassAndVariableSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               #(#MenuItem
+                  #label: 'Access methods'
+                  #translateLabel: true
+                  #value: #variablesMenuGenerateAccessMethods
+                  #enabled: #hasClassAndVariableSelectedHolder
+                  #showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
           )
          #(#MenuItem
             #label: '-'
@@ -14176,7 +14235,7 @@
      If no variable is selected, for all instvars;
      otherwise for that selected instvar."
 
-    self classMenuGenerateAccessMethodsWithChange:false asValueHolder:false
+    self classMenuGenerateAccessMethodsWithChange:false asValueHolder:false readersOnly:false
 !
 
 classMenuGenerateAccessMethodsForValueHolder
@@ -14184,7 +14243,7 @@
      If no variable is selected, for all instvars;
      otherwise for that selected instvar."
 
-    self classMenuGenerateAccessMethodsWithChange:false asValueHolder:true
+    self classMenuGenerateAccessMethodsWithChange:false asValueHolder:true readersOnly:false
 !
 
 classMenuGenerateAccessMethodsForValueHolderWithChange
@@ -14192,7 +14251,7 @@
      If no variable is selected, for all instvars;
      otherwise for that selected instvar."
 
-    self classMenuGenerateAccessMethodsWithChange:true asValueHolder:true
+    self classMenuGenerateAccessMethodsWithChange:true asValueHolder:true readersOnly:false
 !
 
 classMenuGenerateAccessMethodsWithChange
@@ -14200,10 +14259,10 @@
      If no variable is selected, for all instvars;
      otherwise for that selected instvar."
 
-    self classMenuGenerateAccessMethodsWithChange:true asValueHolder:false
-!
-
-classMenuGenerateAccessMethodsWithChange:aBoolean asValueHolder:asValueHolder 
+    self classMenuGenerateAccessMethodsWithChange:true asValueHolder:false readersOnly:false
+!
+
+classMenuGenerateAccessMethodsWithChange:aBoolean asValueHolder:asValueHolder readersOnly:readersOnly
     "create access methods for instvars.
      If no variable is selected, for all instvars;
      otherwise for that selected instvar."
@@ -14220,6 +14279,7 @@
                 in:eachClass
                 withChange:aBoolean
                 asValueHolder:asValueHolder
+                readersOnly:readersOnly
         ]
 
     "Modified: / 18.8.1997 / 15:44:10 / cg"
@@ -14245,6 +14305,14 @@
     "Created: / 7.8.1998 / 18:17:18 / cg"
 !
 
+classMenuGenerateGetterMethods
+    "create getter methods for instvars.
+     If no variable is selected, for all instvars;
+     otherwise for that selected instvar."
+
+    self classMenuGenerateAccessMethodsWithChange:false asValueHolder:false readersOnly:true
+!
+
 classMenuGenerateUpdateMethod
     "create a standard update method template"
 
@@ -23434,7 +23502,26 @@
                 createAccessMethodsFor:names 
                 in:eachClass
                 withChange:false
-                asValueHolder:false.
+                asValueHolder:false
+                readersOnly:false
+        ]
+    ]
+!
+
+variablesMenuGenerateGetterMethods
+    "create access methods for selected instvars."
+
+    self selectedClassesWithWaitCursorDo:[:eachClass |
+        |names|
+
+        names := self variableFilter value.
+        names size > 0 ifTrue:[
+            self 
+                createAccessMethodsFor:names 
+                in:eachClass
+                withChange:false
+                asValueHolder:false
+                readersOnly:true
         ]
     ]
 !
@@ -25151,7 +25238,7 @@
 
 !NewSystemBrowser methodsFor:'private-code generation'!
 
-createAccessMethodsFor:aCollectionOfVarNames in:aClass withChange:withChange asValueHolder:asValueHolder
+createAccessMethodsFor:aCollectionOfVarNames in:aClass withChange:withChange asValueHolder:asValueHolder readersOnly:readersOnly
     "workhorse for creating access methods for instvars."
 
     |classesClassVars|
@@ -25196,48 +25283,50 @@
             Transcript showCR:'method ''', methodName , ''' already present'
         ].
 
-        (aClass includesSelector:((methodName , ':') asSymbol)) ifFalse:[
-            asValueHolder ifTrue:[
-                source := methodName
-                          , ':something\    "set the ''%2'' value holder'.
-                withChange ifTrue:[
-                    source := source
-                              , ' (automatically generated)"\\'
-                              , '    |oldValue|\\'
-                              , '    %2 notNil ifTrue:[\'
-                              , '        oldValue := %2 value.\'
-                              , '        %2 removeDependent:self.\'
-                              , '    ].\'
-                              , '    %2 := something.\'
-                              , '    %2 notNil ifTrue:[\'
-                              , '        %2 addDependent:self.\'
-                              , '    ].\'
-                              , '    oldValue ~= %2 value ifTrue:[\'
-                              , '        self update:#value with:nil from:%2.\'
-                              , '    ].\'
+        readersOnly ifFalse:[
+            (aClass includesSelector:((methodName , ':') asSymbol)) ifFalse:[
+                asValueHolder ifTrue:[
+                    source := methodName
+                              , ':something\    "set the ''%2'' value holder'.
+                    withChange ifTrue:[
+                        source := source
+                                  , ' (automatically generated)"\\'
+                                  , '    |oldValue|\\'
+                                  , '    %2 notNil ifTrue:[\'
+                                  , '        oldValue := %2 value.\'
+                                  , '        %2 removeDependent:self.\'
+                                  , '    ].\'
+                                  , '    %2 := something.\'
+                                  , '    %2 notNil ifTrue:[\'
+                                  , '        %2 addDependent:self.\'
+                                  , '    ].\'
+                                  , '    oldValue ~= %2 value ifTrue:[\'
+                                  , '        self update:#value with:nil from:%2.\'
+                                  , '    ].\'
+                    ] ifFalse:[
+                        source := source 
+                                  , ' (automatically generated)"\\'
+                                  , '    %2 := something.'.
+                    ].
                 ] ifFalse:[
-                    source := source 
-                              , ' (automatically generated)"\\'
-                              , '    %2 := something.'.
-                ].
-            ] ifFalse:[
-                source := methodName
-                          , ':something\    "set the value of the %1 variable ''%2'''.
-                withChange ifTrue:[
-                    source := source
-                              , ' and setup for a change notification (automatically generated)"\\'
-                              , '    %2 := something.\'
-                              , '    self changed:#%2.\'.
-                ] ifFalse:[
-                    source := source 
-                              , ' (automatically generated)"\\'
-                              , '    %2 := something.'.
-                ].
-            ].
-            source := (source bindWith:varType with:name) withCRs.
-            Compiler compile:source forClass:aClass inCategory:(asValueHolder ifTrue:['aspects'] ifFalse:['accessing']).
-        ] ifTrue:[
-            Transcript showCR:'method ''', methodName , ':'' already present'
+                    source := methodName
+                              , ':something\    "set the value of the %1 variable ''%2'''.
+                    withChange ifTrue:[
+                        source := source
+                                  , ' and setup for a change notification (automatically generated)"\\'
+                                  , '    %2 := something.\'
+                                  , '    self changed:#%2.\'.
+                    ] ifFalse:[
+                        source := source 
+                                  , ' (automatically generated)"\\'
+                                  , '    %2 := something.'.
+                    ].
+                ].
+                source := (source bindWith:varType with:name) withCRs.
+                Compiler compile:source forClass:aClass inCategory:(asValueHolder ifTrue:['aspects'] ifFalse:['accessing']).
+            ] ifTrue:[
+                Transcript showCR:'method ''', methodName , ':'' already present'
+            ].
         ].
     ]
 !
@@ -49256,6 +49345,6 @@
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.150 2001-09-11 10:25:23 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.151 2001-09-11 20:33:07 cg Exp $'
 ! !
 NewSystemBrowser initialize!