--- a/ProjectBrowser.st Fri Sep 03 11:58:44 1999 +0200
+++ b/ProjectBrowser.st Mon Sep 06 16:57:03 1999 +0200
@@ -1,5 +1,5 @@
ToolApplicationModel subclass:#ProjectBrowser
- instanceVariableNames:'projectTree modifiedChannel'
+ instanceVariableNames:'projectTree modifiedChannel selectedTreeNodeHolder'
classVariableNames:'AlreadCheckedExistingModulesAndPackages'
poolDictionaries:''
category:'Interface-Smalltalk'
@@ -2540,12 +2540,10 @@
selectedTreeNodeHolder
"automatically generated by UIPainter ..."
- |holder|
-
- (holder := builder bindingAt:#selectedTreeNodeHolder) isNil ifTrue:[
- builder aspectAt:#selectedTreeNodeHolder put:(holder := ValueHolder new).
+ selectedTreeNodeHolder isNil ifTrue:[
+ selectedTreeNodeHolder := ValueHolder new.
].
- ^ holder.
+ ^ selectedTreeNodeHolder.
!
showWhat
@@ -3013,12 +3011,14 @@
!
updateProjectTree
- |tree root showWhat|
+ |tree moduleRoots root showWhat|
showWhat := self showWhat value.
+ moduleRoots := Dictionary new.
+
tree := SelectionInTree new.
- tree root:(root := TreeItem name:'invisibleRoot').
+ tree root:(root := ProjectTreeItem name:'invisibleRoot').
root hide:false.
showWhat == #current ifTrue:[
@@ -3027,13 +3027,28 @@
(Project knownProjects asOrderedCollection
sort:[:a :b | a packageName < b packageName])
do:[:aProject |
- |doShow|
+ |newNode nodeToAdd doShow childNode path|
(doShow := showWhat == #all) ifFalse:[
doShow := (aProject package startsWith:'stx:') not
].
+
doShow ifTrue:[
- root add:(self nodeFor:aProject).
+ newNode := self nodeFor:aProject.
+
+ "/ insert into tree ...
+ nodeToAdd := root.
+
+ path := aProject package asCollectionOfSubstringsSeparatedByAny:'/\:'.
+ path from:1 to:path size-1 do:[:part |
+ childNode := nodeToAdd children detect:[:child | child name = part] ifNone:nil.
+ childNode isNil ifTrue:[
+ nodeToAdd add:(childNode := ProjectTreeItem new name:part).
+ ].
+ nodeToAdd := childNode.
+ ].
+ newNode name:(path last).
+ nodeToAdd add:newNode.
]
].
].