typeinfo also for classVariables
authorClaus Gittinger <cg@exept.de>
Wed, 13 Dec 1995 13:11:53 +0100
changeset 285 8a64105d4ba0
parent 284 def16ab8c75f
child 286 96d31200b0c1
typeinfo also for classVariables
BrowserView.st
BrwsrView.st
--- a/BrowserView.st	Wed Dec 13 11:05:15 1995 +0100
+++ b/BrowserView.st	Wed Dec 13 13:11:53 1995 +0100
@@ -5941,153 +5941,170 @@
     "show typical usage of a variable"
 
     |name idx classes values value msg cut names instCount subInstCount box
-     searchClass|
+     searchClass s|
 
     name := variableListView selectionValue.
     name isNil ifTrue:[^ self].
 
-    searchClass := actualClass whichClassDefinesInstVar:name.
-
-    idx := searchClass instVarOffsetOf:name.
-    idx isNil ifTrue:[^ self].
-
-    classes := IdentitySet new.
-    values := IdentitySet new.
-    instCount := 0.
-    subInstCount := 0.
-    searchClass allSubInstancesDo:[:i |
-	|val|
-
-	val := i instVarAt:idx.
-	val notNil ifTrue:[values add:val].
-	classes add:val class.
-	(i isMemberOf:searchClass) ifTrue:[
-	    instCount := instCount + 1.
-	] ifFalse:[
-	    subInstCount := subInstCount + 1
-	]
-    ].
-    (instCount == 0 and:[subInstCount == 0]) ifTrue:[
-	self warn:'there are currently no instances of ' , currentClass name.
-	^ self
-    ].
-
-    instCount ~~ 0 ifTrue:[
-	msg := 'in (currently: ' , instCount printString,') instances '.
-	subInstCount ~~ 0 ifTrue:[
-	    msg := msg , 'and '
-	]
-    ] ifFalse:[
-	msg := 'in '.
-    ].
-    subInstCount ~~ 0 ifTrue:[
-	msg := msg , '(currently: ' , subInstCount printString, ') derived instances '
-    ].
-    msg := msg, 'of ' , searchClass name , ',\'.
-    msg := msg , name , ' '.
-    ((values size == 1) 
-    or:[classes size == 1 and:[classes first == UndefinedObject]]) ifTrue:[
-	values size == 1 ifTrue:[value := values first].
-	(value isNumber or:[value isString]) ifTrue:[
-	    msg := msg , 'is always the same:\\      ' , 
-			 value class name , ' (' , value storeString , ')'.
-	] ifFalse:[
-	    (value isNil or:[value == true or:[value == false]]) ifTrue:[
-		msg := msg , 'is always:\\      ' , 
-			     value printString.
-	    ] ifFalse:[
-		msg := msg , 'is always the same:\\'.
-		msg := msg , '      ' , value class name.
-		value isLiteral ifTrue:[
-		    msg := msg , ' (' , value storeString , ')'
-		]
-	    ]
-	]
-    ] ifFalse:[
-	classes size == 1 ifTrue:[
-	    msg := msg , 'is always:\\'.
-	    msg := msg , '      ' , classes first name , '\'.
-	] ifFalse:[
-	    msg := msg , 'is one of:\\'.
-	    classes := classes asOrderedCollection.
-	    classes size > 20 ifTrue:[
-		classes := classes copyFrom:1 to:20.
-		cut := true
-	    ] ifFalse:[
-		cut := false.
-	    ].
-	    names := classes collect:[:cls |
-		|nm|
-		cls == UndefinedObject ifTrue:[
-		    'nil'
-		] ifFalse:[
-		    cls == True ifTrue:[
-			'true'
-		    ] ifFalse:[
-			cls == False ifTrue:[
-			    'false'
-			] ifFalse:[
-			    cls name
-			]
-		    ]
-		].
-	    ].
-	    names sort.
-	    names do:[:nm |
-		msg := msg , '      ' , nm , '\'.
-	    ].
-	]
+    showInstance ifFalse:[
+        searchClass := currentClass whichClassDefinesClassVar:name.
+        value := searchClass classVarAt:(name asSymbol).
+        s := value displayString.
+        s size > 60 ifTrue:[
+            s := (s copyTo:60) , ' ...'
+        ].
+        msg := name , ' is (currently):\\' , s.
+        s ~= value classNameWithArticle ifTrue:[
+            msg := msg , '\\(' , value class name , ')'
+        ]
+    ] ifTrue:[
+        searchClass := actualClass whichClassDefinesInstVar:name.
+
+        idx := searchClass instVarOffsetOf:name.
+        idx isNil ifTrue:[^ self].
+
+        classes := IdentitySet new.
+        values := IdentitySet new.
+        instCount := 0.
+        subInstCount := 0.
+        searchClass allSubInstancesDo:[:i |
+            |val|
+
+            val := i instVarAt:idx.
+            val notNil ifTrue:[values add:val].
+            classes add:val class.
+            (i isMemberOf:searchClass) ifTrue:[
+                instCount := instCount + 1.
+            ] ifFalse:[
+                subInstCount := subInstCount + 1
+            ]
+        ].
+        (instCount == 0 and:[subInstCount == 0]) ifTrue:[
+            self warn:'there are currently no instances of ' , currentClass name.
+            ^ self
+        ].
+
+        instCount ~~ 0 ifTrue:[
+            msg := 'in (currently: ' , instCount printString,') instances '.
+            subInstCount ~~ 0 ifTrue:[
+                msg := msg , 'and '
+            ]
+        ] ifFalse:[
+            msg := 'in '.
+        ].
+        subInstCount ~~ 0 ifTrue:[
+            msg := msg , '(currently: ' , subInstCount printString, ') derived instances '
+        ].
+        msg := msg, 'of ' , searchClass name , ',\'.
+        msg := msg , name , ' '.
+        ((values size == 1) 
+        or:[classes size == 1 and:[classes first == UndefinedObject]]) ifTrue:[
+            values size == 1 ifTrue:[value := values first].
+            (value isNumber or:[value isString]) ifTrue:[
+                msg := msg , 'is always the same:\\      ' , 
+                             value class name , ' (' , value storeString , ')'.
+            ] ifFalse:[
+                (value isNil or:[value == true or:[value == false]]) ifTrue:[
+                    msg := msg , 'is always:\\      ' , 
+                                 value printString.
+                ] ifFalse:[
+                    msg := msg , 'is always the same:\\'.
+                    msg := msg , '      ' , value class name.
+                    value isLiteral ifTrue:[
+                        msg := msg , ' (' , value storeString , ')'
+                    ]
+                ]
+            ]
+        ] ifFalse:[
+            classes size == 1 ifTrue:[
+                msg := msg , 'is always:\\'.
+                msg := msg , '      ' , classes first name , '\'.
+            ] ifFalse:[
+                msg := msg , 'is one of:\\'.
+                classes := classes asOrderedCollection.
+                classes size > 20 ifTrue:[
+                    classes := classes copyFrom:1 to:20.
+                    cut := true
+                ] ifFalse:[
+                    cut := false.
+                ].
+                names := classes collect:[:cls |
+                    |nm|
+                    cls == UndefinedObject ifTrue:[
+                        'nil'
+                    ] ifFalse:[
+                        cls == True ifTrue:[
+                            'true'
+                        ] ifFalse:[
+                            cls == False ifTrue:[
+                                'false'
+                            ] ifFalse:[
+                                cls name
+                            ]
+                        ]
+                    ].
+                ].
+                names sort.
+                names do:[:nm |
+                    msg := msg , '      ' , nm , '\'.
+                ].
+            ]
+        ].
     ].
 
     box := InfoBox title:msg withCRs.
     box label:'variable type information'.
     box showAtPointer
+
+    "Modified: 13.12.1995 / 12:59:03 / cg"
 !
 
 variableListMenu
     |labels selectors|
 
     currentClass isNil ifTrue:[
-	variableListView flash.
-	^ nil
+        variableListView flash.
+        ^ nil
     ].
 
     labels := #(
-		    'instvar refs ...'
-		    'classvar refs ...'
-		    'all instvar refs ...'
-		    'all classvar refs ...'
-		    '-'
-		    'instvar mods ...'
-		    'classvar mods ...'
-		    'all instvar mods ...'
-		    'all classvar mods ...'
-	       ).
+                    'instvar refs ...'
+                    'classvar refs ...'
+                    'all instvar refs ...'
+                    'all classvar refs ...'
+                    '-'
+                    'instvar mods ...'
+                    'classvar mods ...'
+                    'all instvar mods ...'
+                    'all classvar mods ...'
+               ).
     selectors := #(
-		    instVarRefs
-		    classVarRefs
-		    allInstVarRefs
-		    allClassVarRefs
-		    nil
-		    instVarMods
-		    classVarMods
-		    allInstVarMods
-		    allClassVarMods
-		 ).
-
-    (showInstance and:[variableListView hasSelection]) ifTrue:[
-	labels := labels , #(
-				'-'
-				'type information'
-			   ).
-	selectors := selectors , #(
-				nil
-				varTypeInfo
-				).
+                    instVarRefs
+                    classVarRefs
+                    allInstVarRefs
+                    allClassVarRefs
+                    nil
+                    instVarMods
+                    classVarMods
+                    allInstVarMods
+                    allClassVarMods
+                 ).
+
+    ("showInstance and:[" variableListView hasSelection "]" ) ifTrue:[
+        labels := labels , #(
+                                '-'
+                                'type information'
+                           ).
+        selectors := selectors , #(
+                                nil
+                                varTypeInfo
+                                ).
     ].
 
     ^ PopUpMenu labels:(resources array:labels)
-		selectors:selectors
+                selectors:selectors
+
+    "Modified: 13.12.1995 / 12:49:49 / cg"
 !
 
 variableSelection:lineNr
@@ -6315,6 +6332,6 @@
 !BrowserView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.69 1995-12-13 10:05:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.70 1995-12-13 12:11:53 cg Exp $'
 ! !
 BrowserView initialize!
--- a/BrwsrView.st	Wed Dec 13 11:05:15 1995 +0100
+++ b/BrwsrView.st	Wed Dec 13 13:11:53 1995 +0100
@@ -5941,153 +5941,170 @@
     "show typical usage of a variable"
 
     |name idx classes values value msg cut names instCount subInstCount box
-     searchClass|
+     searchClass s|
 
     name := variableListView selectionValue.
     name isNil ifTrue:[^ self].
 
-    searchClass := actualClass whichClassDefinesInstVar:name.
-
-    idx := searchClass instVarOffsetOf:name.
-    idx isNil ifTrue:[^ self].
-
-    classes := IdentitySet new.
-    values := IdentitySet new.
-    instCount := 0.
-    subInstCount := 0.
-    searchClass allSubInstancesDo:[:i |
-	|val|
-
-	val := i instVarAt:idx.
-	val notNil ifTrue:[values add:val].
-	classes add:val class.
-	(i isMemberOf:searchClass) ifTrue:[
-	    instCount := instCount + 1.
-	] ifFalse:[
-	    subInstCount := subInstCount + 1
-	]
-    ].
-    (instCount == 0 and:[subInstCount == 0]) ifTrue:[
-	self warn:'there are currently no instances of ' , currentClass name.
-	^ self
-    ].
-
-    instCount ~~ 0 ifTrue:[
-	msg := 'in (currently: ' , instCount printString,') instances '.
-	subInstCount ~~ 0 ifTrue:[
-	    msg := msg , 'and '
-	]
-    ] ifFalse:[
-	msg := 'in '.
-    ].
-    subInstCount ~~ 0 ifTrue:[
-	msg := msg , '(currently: ' , subInstCount printString, ') derived instances '
-    ].
-    msg := msg, 'of ' , searchClass name , ',\'.
-    msg := msg , name , ' '.
-    ((values size == 1) 
-    or:[classes size == 1 and:[classes first == UndefinedObject]]) ifTrue:[
-	values size == 1 ifTrue:[value := values first].
-	(value isNumber or:[value isString]) ifTrue:[
-	    msg := msg , 'is always the same:\\      ' , 
-			 value class name , ' (' , value storeString , ')'.
-	] ifFalse:[
-	    (value isNil or:[value == true or:[value == false]]) ifTrue:[
-		msg := msg , 'is always:\\      ' , 
-			     value printString.
-	    ] ifFalse:[
-		msg := msg , 'is always the same:\\'.
-		msg := msg , '      ' , value class name.
-		value isLiteral ifTrue:[
-		    msg := msg , ' (' , value storeString , ')'
-		]
-	    ]
-	]
-    ] ifFalse:[
-	classes size == 1 ifTrue:[
-	    msg := msg , 'is always:\\'.
-	    msg := msg , '      ' , classes first name , '\'.
-	] ifFalse:[
-	    msg := msg , 'is one of:\\'.
-	    classes := classes asOrderedCollection.
-	    classes size > 20 ifTrue:[
-		classes := classes copyFrom:1 to:20.
-		cut := true
-	    ] ifFalse:[
-		cut := false.
-	    ].
-	    names := classes collect:[:cls |
-		|nm|
-		cls == UndefinedObject ifTrue:[
-		    'nil'
-		] ifFalse:[
-		    cls == True ifTrue:[
-			'true'
-		    ] ifFalse:[
-			cls == False ifTrue:[
-			    'false'
-			] ifFalse:[
-			    cls name
-			]
-		    ]
-		].
-	    ].
-	    names sort.
-	    names do:[:nm |
-		msg := msg , '      ' , nm , '\'.
-	    ].
-	]
+    showInstance ifFalse:[
+        searchClass := currentClass whichClassDefinesClassVar:name.
+        value := searchClass classVarAt:(name asSymbol).
+        s := value displayString.
+        s size > 60 ifTrue:[
+            s := (s copyTo:60) , ' ...'
+        ].
+        msg := name , ' is (currently):\\' , s.
+        s ~= value classNameWithArticle ifTrue:[
+            msg := msg , '\\(' , value class name , ')'
+        ]
+    ] ifTrue:[
+        searchClass := actualClass whichClassDefinesInstVar:name.
+
+        idx := searchClass instVarOffsetOf:name.
+        idx isNil ifTrue:[^ self].
+
+        classes := IdentitySet new.
+        values := IdentitySet new.
+        instCount := 0.
+        subInstCount := 0.
+        searchClass allSubInstancesDo:[:i |
+            |val|
+
+            val := i instVarAt:idx.
+            val notNil ifTrue:[values add:val].
+            classes add:val class.
+            (i isMemberOf:searchClass) ifTrue:[
+                instCount := instCount + 1.
+            ] ifFalse:[
+                subInstCount := subInstCount + 1
+            ]
+        ].
+        (instCount == 0 and:[subInstCount == 0]) ifTrue:[
+            self warn:'there are currently no instances of ' , currentClass name.
+            ^ self
+        ].
+
+        instCount ~~ 0 ifTrue:[
+            msg := 'in (currently: ' , instCount printString,') instances '.
+            subInstCount ~~ 0 ifTrue:[
+                msg := msg , 'and '
+            ]
+        ] ifFalse:[
+            msg := 'in '.
+        ].
+        subInstCount ~~ 0 ifTrue:[
+            msg := msg , '(currently: ' , subInstCount printString, ') derived instances '
+        ].
+        msg := msg, 'of ' , searchClass name , ',\'.
+        msg := msg , name , ' '.
+        ((values size == 1) 
+        or:[classes size == 1 and:[classes first == UndefinedObject]]) ifTrue:[
+            values size == 1 ifTrue:[value := values first].
+            (value isNumber or:[value isString]) ifTrue:[
+                msg := msg , 'is always the same:\\      ' , 
+                             value class name , ' (' , value storeString , ')'.
+            ] ifFalse:[
+                (value isNil or:[value == true or:[value == false]]) ifTrue:[
+                    msg := msg , 'is always:\\      ' , 
+                                 value printString.
+                ] ifFalse:[
+                    msg := msg , 'is always the same:\\'.
+                    msg := msg , '      ' , value class name.
+                    value isLiteral ifTrue:[
+                        msg := msg , ' (' , value storeString , ')'
+                    ]
+                ]
+            ]
+        ] ifFalse:[
+            classes size == 1 ifTrue:[
+                msg := msg , 'is always:\\'.
+                msg := msg , '      ' , classes first name , '\'.
+            ] ifFalse:[
+                msg := msg , 'is one of:\\'.
+                classes := classes asOrderedCollection.
+                classes size > 20 ifTrue:[
+                    classes := classes copyFrom:1 to:20.
+                    cut := true
+                ] ifFalse:[
+                    cut := false.
+                ].
+                names := classes collect:[:cls |
+                    |nm|
+                    cls == UndefinedObject ifTrue:[
+                        'nil'
+                    ] ifFalse:[
+                        cls == True ifTrue:[
+                            'true'
+                        ] ifFalse:[
+                            cls == False ifTrue:[
+                                'false'
+                            ] ifFalse:[
+                                cls name
+                            ]
+                        ]
+                    ].
+                ].
+                names sort.
+                names do:[:nm |
+                    msg := msg , '      ' , nm , '\'.
+                ].
+            ]
+        ].
     ].
 
     box := InfoBox title:msg withCRs.
     box label:'variable type information'.
     box showAtPointer
+
+    "Modified: 13.12.1995 / 12:59:03 / cg"
 !
 
 variableListMenu
     |labels selectors|
 
     currentClass isNil ifTrue:[
-	variableListView flash.
-	^ nil
+        variableListView flash.
+        ^ nil
     ].
 
     labels := #(
-		    'instvar refs ...'
-		    'classvar refs ...'
-		    'all instvar refs ...'
-		    'all classvar refs ...'
-		    '-'
-		    'instvar mods ...'
-		    'classvar mods ...'
-		    'all instvar mods ...'
-		    'all classvar mods ...'
-	       ).
+                    'instvar refs ...'
+                    'classvar refs ...'
+                    'all instvar refs ...'
+                    'all classvar refs ...'
+                    '-'
+                    'instvar mods ...'
+                    'classvar mods ...'
+                    'all instvar mods ...'
+                    'all classvar mods ...'
+               ).
     selectors := #(
-		    instVarRefs
-		    classVarRefs
-		    allInstVarRefs
-		    allClassVarRefs
-		    nil
-		    instVarMods
-		    classVarMods
-		    allInstVarMods
-		    allClassVarMods
-		 ).
-
-    (showInstance and:[variableListView hasSelection]) ifTrue:[
-	labels := labels , #(
-				'-'
-				'type information'
-			   ).
-	selectors := selectors , #(
-				nil
-				varTypeInfo
-				).
+                    instVarRefs
+                    classVarRefs
+                    allInstVarRefs
+                    allClassVarRefs
+                    nil
+                    instVarMods
+                    classVarMods
+                    allInstVarMods
+                    allClassVarMods
+                 ).
+
+    ("showInstance and:[" variableListView hasSelection "]" ) ifTrue:[
+        labels := labels , #(
+                                '-'
+                                'type information'
+                           ).
+        selectors := selectors , #(
+                                nil
+                                varTypeInfo
+                                ).
     ].
 
     ^ PopUpMenu labels:(resources array:labels)
-		selectors:selectors
+                selectors:selectors
+
+    "Modified: 13.12.1995 / 12:49:49 / cg"
 !
 
 variableSelection:lineNr
@@ -6315,6 +6332,6 @@
 !BrowserView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Attic/BrwsrView.st,v 1.69 1995-12-13 10:05:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Attic/BrwsrView.st,v 1.70 1995-12-13 12:11:53 cg Exp $'
 ! !
 BrowserView initialize!