# HG changeset patch # User Claus Gittinger # Date 936629823 -7200 # Node ID 30bd57bbe9ced89304191328414fd92926502755 # Parent f05c8a02553a85d8ca684cbfa893f0cfe80d5a13 better tree diff -r f05c8a02553a -r 30bd57bbe9ce ProjectBrowser.st --- 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. ] ]. ].