Fix in #listOfClasses - must check whether all superclasses are actually in environment.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Sun, 27 Apr 2014 21:49:17 +0200
changeset 14286 badb3e840d06
parent 14285 88a226e252bd
child 14287 25e0e7fd7c49
Fix in #listOfClasses - must check whether all superclasses are actually in environment.
Tools__HierarchicalClassList.st
--- a/Tools__HierarchicalClassList.st	Sun Apr 27 14:00:21 2014 +0200
+++ b/Tools__HierarchicalClassList.st	Sun Apr 27 21:49:17 2014 +0200
@@ -67,12 +67,11 @@
 
 aspectSelectors
     ^ super aspectSelectors ,
-       #(  
-	  topClassHolder
-	)
+       #(
+          topClassHolder
+        )
 
-
-
+    "Modified: / 24-02-2014 / 10:38:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HierarchicalClassList methodsFor:'accessing'!
@@ -160,7 +159,7 @@
     self updateList.
 
     selectedClassesHolder value ~= prevSelection ifTrue:[
-	newSelection := prevSelection collect:[:eachOldClass | Smalltalk classNamed:(eachOldClass name)].
+	newSelection := prevSelection collect:[:eachOldClass | environment classNamed:(eachOldClass name)].
 	selectedClassesHolder value:newSelection.
     ]
 
@@ -175,7 +174,7 @@
     prevTop notNil ifTrue:[
 	wasMeta := prevTop isMeta.
 	newTop := prevTop theNonMetaclass.
-	[newTop notNil and:[(Smalltalk at:newTop name) ~= newTop]] whileTrue:[
+	[newTop notNil and:[(environment at:newTop name) ~= newTop]] whileTrue:[
 	    newTop := newTop superclass.
 	].
 	wasMeta ifTrue:[
@@ -221,7 +220,7 @@
     |theClasses|
 
     aSuperclass isNil ifTrue:[
-	theClasses := Smalltalk allClasses select:[:cls | cls superclass isNil]
+	theClasses := environment allClasses select:[:cls | cls superclass isNil]
     ] ifFalse:[
 	theClasses := aSuperclass subclasses.
     ].
@@ -252,13 +251,22 @@
 
     classes := OrderedCollection new.
     (top := self topClassHolder value) notNil ifTrue:[
-	top := top theNonMetaclass.
-	classes addAll:(top withAllSuperclasses copy reverse).
+        top := top theNonMetaclass.
+        classes addAll:(top withAllSuperclasses copy reverse).
+
+        "/ Must check whether environment contains the class and filter it out,
+        "/ if not. Think of limited environment to Java classes which should not
+        "/ show Object & JavaObject even if they are real superclasses of any Java
+        "/ class.
+        "/ Q: Should we rather ignore all superclasses after first class which is not
+        "/ in environment?
+        classes := classes select:[:class | (environment at: class name ifAbsent:[nil]) notNil ].
     ].
     self addTo:classes whereSuperclassIs:top.
     ^ classes
 
-    "Modified: / 24.2.2000 / 13:27:43 / cg"
+    "Modified: / 24-02-2000 / 13:27:43 / cg"
+    "Modified (format): / 27-04-2014 / 20:47:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 nameListEntryFor:aClass withNameSpace:useFullName
@@ -267,11 +275,18 @@
     aClass == (self class nameListEntryForALL) ifTrue:[ ^ aClass ].
     aClass == InheritedEntry ifTrue:[ ^ aClass ].
 
-    nm := aClass name.
+    nm := aClass nameInBrowser.
     nm isNil ifTrue:[^ '???'].
 
+    aClass isLoaded ifFalse:[
+        "/ nm := nm,(' (?) ' colorizeAllWith:Color grey).
+    ] ifTrue:[
+        aClass isAbstract ifTrue:[ nm := nm allItalic ].
+        nm := nm,((' (%1+%2) ' bindWith:(aClass methodDictionary size) with:(aClass class methodDictionary size)) 
+                                colorizeAllWith:self class pseudoEntryForegroundColor).
+    ].
+
     indent := 0.
-
     superClass := aClass superclass.
     [superClass notNil] whileTrue:[
         indent := indent + 1.
@@ -307,12 +322,9 @@
 
 !HierarchicalClassList class methodsFor:'documentation'!
 
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__HierarchicalClassList.st,v 1.1 2011-07-01 13:34:16 cg Exp $'
-!
-
-version_SVN
-    ^ '§Id: Tools__HierarchicalClassList.st 7796 2011-06-23 16:01:32Z vranyj1 §'
+version
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__HierarchicalClassList.st,v 1.16 2014-04-27 19:49:17 vrany Exp $'
 ! !
 
+
 HierarchicalClassList initialize!