HierarchicalList.st
changeset 3832 602c293b4300
parent 3070 c08536fb052f
child 3848 cf7b2e22806d
equal deleted inserted replaced
3831:05c49d4b6f3b 3832:602c293b4300
     7  inclusion of the above copyright notice.   This software may not
     7  inclusion of the above copyright notice.   This software may not
     8  be provided or otherwise made available to, or used by, any
     8  be provided or otherwise made available to, or used by, any
     9  other person.  No title to or ownership of the software is
     9  other person.  No title to or ownership of the software is
    10  hereby transferred.
    10  hereby transferred.
    11 "
    11 "
    12 
       
    13 
       
    14 "{ Package: 'stx:libwidg2' }"
    12 "{ Package: 'stx:libwidg2' }"
    15 
    13 
    16 List subclass:#HierarchicalList
    14 List subclass:#HierarchicalList
    17 	instanceVariableNames:'recursionLock root showRoot application monitoringTask
    15 	instanceVariableNames:'recursionLock root showRoot application monitoringTask
    18 		monitoringTaskDelay additionalItemsToMonitorSemaphore'
    16 		monitoringTaskDelay additionalItemsToMonitorSemaphore'
   297 
   295 
   298     (monitoringTask isNil
   296     (monitoringTask isNil
   299         and:[self monitoringTaskDelay notNil
   297         and:[self monitoringTaskDelay notNil
   300         and:[(dependents size ~~ 0) or:[additionalItemsToMonitorSemaphore notNil]]]
   298         and:[(dependents size ~~ 0) or:[additionalItemsToMonitorSemaphore notNil]]]
   301     ) ifTrue:[
   299     ) ifTrue:[
   302         monitoringTask := [
   300         monitoringTask := 
   303             [(dependents size ~~ 0) or:[additionalItemsToMonitorSemaphore notNil]] whileTrue:[
   301             [
   304                 self monitoringCycle.
   302                 [(dependents size ~~ 0) or:[additionalItemsToMonitorSemaphore notNil]] whileTrue:[
   305                 additionalItemsToMonitorSemaphore isNil ifTrue:[
   303                     self monitoringCycle.
   306                     Delay waitForSeconds:self monitoringTaskDelay
   304                     additionalItemsToMonitorSemaphore isNil ifTrue:[
   307                 ] ifFalse:[
   305                         Delay waitForSeconds:self monitoringTaskDelay
   308                     additionalItemsToMonitorSemaphore waitWithTimeout:self monitoringTaskDelay.
   306                     ] ifFalse:[
   309                 ]
   307                         additionalItemsToMonitorSemaphore waitWithTimeout:self monitoringTaskDelay.
   310             ].
   308                     ]
   311         ] newProcess.
   309                 ].
       
   310             ] newProcess.
   312 
   311 
   313         monitoringTask priorityRange:(Processor userBackgroundPriority to:Processor activePriority).
   312         monitoringTask priorityRange:(Processor userBackgroundPriority to:Processor activePriority).
   314         monitoringTask restartable:true.
   313         monitoringTask restartable:true.
   315         monitoringTask resume.
   314         monitoringTask resume.
   316 
   315 
   326     |task|
   325     |task|
   327 
   326 
   328     (task := monitoringTask) notNil ifTrue:[
   327     (task := monitoringTask) notNil ifTrue:[
   329         monitoringTask := nil.
   328         monitoringTask := nil.
   330 
   329 
   331         Error handle:[:ex| ] do:[
   330         Error 
   332             task terminateWithAllSubprocessesInGroup.
   331             handle:[:ex| ] 
   333             task waitUntilTerminated.
   332             do:[
   334         ]
   333                 task terminateWithAllSubprocessesInGroup.
       
   334                 task waitUntilTerminated.
       
   335             ]
   335     ]
   336     ]
   336 !
   337 !
   337 
   338 
   338 triggerUpdateCycle
   339 triggerUpdateCycle
   339     additionalItemsToMonitorSemaphore isNil ifTrue:[
   340     additionalItemsToMonitorSemaphore isNil ifTrue:[
   383 ! !
   384 ! !
   384 
   385 
   385 !HierarchicalList class methodsFor:'documentation'!
   386 !HierarchicalList class methodsFor:'documentation'!
   386 
   387 
   387 version
   388 version
   388     ^ '$Header: /cvs/stx/stx/libwidg2/HierarchicalList.st,v 1.23 2006-09-12 16:26:43 cg Exp $'
   389     ^ '$Header: /cvs/stx/stx/libwidg2/HierarchicalList.st,v 1.24 2009-10-28 15:40:22 cg Exp $'
   389 ! !
   390 !
       
   391 
       
   392 version_CVS
       
   393     ^ '$Header: /cvs/stx/stx/libwidg2/HierarchicalList.st,v 1.24 2009-10-28 15:40:22 cg Exp $'
       
   394 ! !