Tools__ViewTreeApplication.st
changeset 3209 c13a1f4f4ccb
parent 3186 80a20e5881a5
child 3210 d74ece5bbce1
equal deleted inserted replaced
3208:1ce6db31fcdf 3209:c13a1f4f4ccb
       
     1 "{ Encoding: utf8 }"
       
     2 
     1 "
     3 "
     2  COPYRIGHT (c) 2007 by eXept Software AG
     4  COPYRIGHT (c) 2007 by eXept Software AG
     3               All Rights Reserved
     5               All Rights Reserved
     4 
     6 
     5  This software is furnished under a license and may be used
     7  This software is furnished under a license and may be used
  2898 ! !
  2900 ! !
  2899 
  2901 
  2900 !ViewTreeInspectorApplication::ViewTreeItem methodsFor:'operations update'!
  2902 !ViewTreeInspectorApplication::ViewTreeItem methodsFor:'operations update'!
  2901 
  2903 
  2902 updateChildren
  2904 updateChildren
  2903     |list|
  2905     |queue|
  2904 
  2906 
  2905     self do:[:el|
  2907     queue := OrderedCollection new.
  2906         el exists ifTrue:[
  2908     queue add:self.
  2907             el updateChildren.
  2909 
  2908         ] ifFalse:[
  2910     self criticalDo:[
  2909             list isNil ifTrue:[list := OrderedCollection new].
  2911         [queue notEmpty] whileTrue:[
  2910             list add:el.
  2912             |toRemove  elProcessed|
  2911         ]
  2913 
  2912     ].
  2914             elProcessed := queue removeFirst.
  2913     list notNil ifTrue:[
  2915             toRemove := nil.
  2914         list do:[:el| self remove:el ].
  2916             elProcessed nonCriticalDo:[:el|
       
  2917                 el exists ifTrue:[
       
  2918                     queue add:el.
       
  2919                 ] ifFalse:[
       
  2920                     toRemove isNil ifTrue:[toRemove := OrderedCollection new].
       
  2921                     toRemove add:el.
       
  2922                 ]
       
  2923             ].
       
  2924             toRemove notNil ifTrue:[
       
  2925                 toRemove do:[:el| self remove:el ].
       
  2926             ].
       
  2927         ].
  2915     ].
  2928     ].
  2916 !
  2929 !
  2917 
  2930 
  2918 updateFromChildren:mergedList
  2931 updateFromChildren:mergedList
  2919     "update my children against the list of items derived from
  2932     "update my children against the list of items derived from