changed #newAsTreeFromSmalltalk to handle nil-superclass tree
authorClaus Gittinger <cg@exept.de>
Thu, 03 Jul 1997 12:59:08 +0200
changeset 447 705b618eb324
parent 446 b6ac0f279b2f
child 448 7f9f3531660c
changed #newAsTreeFromSmalltalk to handle nil-superclass tree
HierNode.st
HierarchyNode.st
--- a/HierNode.st	Thu Jul 03 12:17:04 1997 +0200
+++ b/HierNode.st	Thu Jul 03 12:59:08 1997 +0200
@@ -75,21 +75,38 @@
     "create a tree of nodes with aClass and all its
      subclasses as contents. Set the initial level as given."
 
-    |newInst|
+    |newInst clsName|
+
+    aClass isNil ifTrue:[
+        "/ nil subclasses requested
+        clsName := 'nil'
+    ] ifFalse:[
+        "/ regular tree requested
+        clsName := aClass name
+    ].
 
     newInst := super new initialize.
-    newInst name:aClass name.
+    newInst name:clsName.
     newInst contents:aClass.
     newInst level:level.
     newInst childCollectionClass:OrderedCollection.
-    (aClass subclasses asSortedCollection:[:a :b | a name < b name])
-    do:[:aSubClass |
-        newInst addChild:(self newAsTreeFromSmalltalkClass:aSubClass level:level+1).
+
+    aClass isNil ifTrue:[
+        ((Smalltalk allClasses select:[:cls | cls superclass isNil])
+            asSortedCollection:[:a :b | a name < b name])
+        do:[:aSubClass |
+            newInst addChild:(self newAsTreeFromSmalltalkClass:aSubClass level:level+1).
+        ]
+    ] ifFalse:[
+        (aClass subclasses asSortedCollection:[:a :b | a name < b name])
+        do:[:aSubClass |
+            newInst addChild:(self newAsTreeFromSmalltalkClass:aSubClass level:level+1).
+        ]
     ].
     ^newInst
 
     "Created: 15.4.1997 / 16:33:52 / cg"
-    "Modified: 1.7.1997 / 11:57:15 / cg"
+    "Modified: 3.7.1997 / 12:25:03 / cg"
 !
 
 newWithName:aString
@@ -582,5 +599,5 @@
 !HierarchyNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/Attic/HierNode.st,v 1.9 1997-07-03 07:17:16 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/Attic/HierNode.st,v 1.10 1997-07-03 10:59:08 cg Exp $'
 ! !
--- a/HierarchyNode.st	Thu Jul 03 12:17:04 1997 +0200
+++ b/HierarchyNode.st	Thu Jul 03 12:59:08 1997 +0200
@@ -75,21 +75,38 @@
     "create a tree of nodes with aClass and all its
      subclasses as contents. Set the initial level as given."
 
-    |newInst|
+    |newInst clsName|
+
+    aClass isNil ifTrue:[
+        "/ nil subclasses requested
+        clsName := 'nil'
+    ] ifFalse:[
+        "/ regular tree requested
+        clsName := aClass name
+    ].
 
     newInst := super new initialize.
-    newInst name:aClass name.
+    newInst name:clsName.
     newInst contents:aClass.
     newInst level:level.
     newInst childCollectionClass:OrderedCollection.
-    (aClass subclasses asSortedCollection:[:a :b | a name < b name])
-    do:[:aSubClass |
-        newInst addChild:(self newAsTreeFromSmalltalkClass:aSubClass level:level+1).
+
+    aClass isNil ifTrue:[
+        ((Smalltalk allClasses select:[:cls | cls superclass isNil])
+            asSortedCollection:[:a :b | a name < b name])
+        do:[:aSubClass |
+            newInst addChild:(self newAsTreeFromSmalltalkClass:aSubClass level:level+1).
+        ]
+    ] ifFalse:[
+        (aClass subclasses asSortedCollection:[:a :b | a name < b name])
+        do:[:aSubClass |
+            newInst addChild:(self newAsTreeFromSmalltalkClass:aSubClass level:level+1).
+        ]
     ].
     ^newInst
 
     "Created: 15.4.1997 / 16:33:52 / cg"
-    "Modified: 1.7.1997 / 11:57:15 / cg"
+    "Modified: 3.7.1997 / 12:25:03 / cg"
 !
 
 newWithName:aString
@@ -582,5 +599,5 @@
 !HierarchyNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/HierarchyNode.st,v 1.9 1997-07-03 07:17:16 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/HierarchyNode.st,v 1.10 1997-07-03 10:59:08 cg Exp $'
 ! !