Tools_ProjectList.st
changeset 8749 23db847d3259
parent 8730 b767db0f53a3
child 8966 8387f26335a9
--- a/Tools_ProjectList.st	Mon Sep 21 23:46:51 2009 +0200
+++ b/Tools_ProjectList.st	Tue Sep 22 10:23:57 2009 +0200
@@ -477,7 +477,7 @@
 makeGenerator
     "return a generator which enumerates the classes from the selected project(s)."
 
-    |selectedPackages thePackage hideUnloadedClasses|
+    |selectedPackages thePackage hideUnloadedClasses showChangedClasses|
 
     selectedPackages := self selectedProjects value.
     selectedPackages size == 0 ifTrue:[
@@ -485,6 +485,7 @@
     ].
     selectedPackages := selectedPackages collect:[:p | p string withoutSeparators].
 
+    showChangedClasses := selectedPackages includes:(self class nameListEntryForChanged).
     hideUnloadedClasses := self hideUnloadedClasses value.
 
     (selectedPackages includes:(self class nameListEntryForALL)) ifTrue:[
@@ -512,8 +513,14 @@
         "/ faster common case
         thePackage := selectedPackages first.
 
-        ^ Iterator on:[:whatToDo | |doInclude|
+        ^ Iterator on:[:whatToDo | 
+                           |changedClasses|
+
+                           showChangedClasses ifTrue:[ changedClasses := ChangeSet current changedClasses ].
+
                            Smalltalk allClassesDo:[:cls |
+                               |doInclude|
+
                                (hideUnloadedClasses not or:[cls isLoaded])
                                ifTrue:[
                                    (cls isRealNameSpace not) ifTrue:[
@@ -522,7 +529,13 @@
                                             cls isJavaClass ifFalse:[
                                                doInclude := (cls methodDictionary contains:[:mthd | thePackage = mthd package])
                                                             or:[ cls class methodDictionary contains:[:mthd | thePackage = mthd package]].
-                                            ]
+                                            ].
+                                            doInclude ifFalse:[
+                                                (showChangedClasses and:[ (changedClasses includes:cls theNonMetaclass)
+                                                                        or:[(changedClasses includes:cls theMetaclass)] ]) ifTrue:[
+                                                    doInclude := true
+                                                ].
+                                            ].
                                        ].
                                        doInclude ifTrue:[
                                            whatToDo value:cls
@@ -533,8 +546,14 @@
                       ]
     ].
 
-    ^ Iterator on:[:whatToDo |  |doInclude|
+    ^ Iterator on:[:whatToDo | 
+                       |changedClasses|
+
+                       showChangedClasses ifTrue:[ changedClasses := ChangeSet current changedClasses ].
+
                        Smalltalk allClassesDo:[:cls |
+                           |doInclude|
+
                            (hideUnloadedClasses not or:[cls isLoaded])
                            ifTrue:[
                                (cls isRealNameSpace not) ifTrue:[
@@ -543,6 +562,13 @@
                                         cls isJavaClass ifFalse:[
                                            doInclude := (cls methodDictionary contains:[:mthd | selectedPackages includes:mthd package])
                                                         or:[ cls class methodDictionary contains:[:mthd | selectedPackages includes:mthd package]].
+                                           doInclude ifFalse:[
+                                               (showChangedClasses and:[ (changedClasses includes:cls theNonMetaclass)
+                                                                       or:[(changedClasses includes:cls theMetaclass)] ]) ifTrue:[
+                                                   doInclude := true
+                                               ].
+                                           ].
+
                                         ]
                                    ].
                                    doInclude ifTrue:[
@@ -660,7 +686,7 @@
 !
 
 listOfProjects
-    |allProjects|
+    |allProjects numClassesInChangeSet|
 
     allProjects := self allShownProjects.
 
@@ -669,6 +695,13 @@
         "/ self projectLabelHolder value:(allProjects first , ' [Project]').
         self projectLabelHolder value:(LabelAndIcon icon:(self class packageIcon) string:allProjects first).
     ].
+
+    numClassesInChangeSet := ChangeSet current changedClasses size.
+    numClassesInChangeSet > 0 ifTrue:[
+        "/ dont include count - makeGenerator compares against the un-expanded nameListEntry (sigh - need two lists)
+        allProjects addFirst:((self class nameListEntryForChanged "bindWith:numClassesInChangeSet") allItalic).
+    ].
+
     allProjects size > 1 ifTrue:[
         allProjects addFirst:(self class nameListEntryForALL asText allItalic).
     ].
@@ -837,5 +870,5 @@
 !ProjectList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_ProjectList.st,v 1.39 2009-09-21 08:19:52 fm Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_ProjectList.st,v 1.40 2009-09-22 08:23:57 cg Exp $'
 ! !