SelectionInTree.st
changeset 1155 ff5b146ca277
parent 1145 3ee5513dff2a
child 1166 d062a52bc7cc
equal deleted inserted replaced
1154:41d487404200 1155:ff5b146ca277
   733     "add a node to list of updating indications
   733     "add a node to list of updating indications
   734     "
   734     "
   735     |index|
   735     |index|
   736 
   736 
   737     accessLock critical:[
   737     accessLock critical:[
       
   738         |prio|
       
   739 
   738         index := indicatorList identityIndexOf:aNode.
   740         index := indicatorList identityIndexOf:aNode.
   739 
   741 
   740         index ~~ 0 ifTrue:[
   742         index ~~ 0 ifTrue:[
   741             indicatorList removeIndex:index.    "/ reorganize list to be faster
   743             indicatorList removeIndex:index.    "/ reorganize list to be faster
   742         ].
   744         ].
   743         indicatorList addFirst:aNode.
   745         indicatorList addLast: "addFirst:" aNode.
   744 
   746 
   745         indicatorTask isNil ifTrue:[
   747         indicatorTask isNil ifTrue:[
       
   748             prio := Processor activePriority.
   746             indicatorTask := [
   749             indicatorTask := [
   747                 [ self taskCycle ] whileTrue:[ Processor yield ]
   750                 [ self taskCycle ] whileTrue:[ Processor yield ]
   748             ] forkAt:(Processor activePriority - 1)
   751             ] forkAt:(prio - 1).
   749         ]
   752             indicatorTask priorityRange:(prio-1 to:prio).
   750     ].
   753         ]
       
   754     ].
       
   755 
       
   756     "Modified: / 26.9.1998 / 15:20:44 / cg"
   751 !
   757 !
   752 
   758 
   753 stopIndicatorValidationFor:aNodeOrList
   759 stopIndicatorValidationFor:aNodeOrList
   754     "remove a node or list of nodes from list of updating indications
   760     "remove a node or list of nodes from list of updating indications
   755     "
   761     "
   772     accessLock critical:[ indicatorList removeAll ]
   778     accessLock critical:[ indicatorList removeAll ]
   773 
   779 
   774 !
   780 !
   775 
   781 
   776 taskCycle
   782 taskCycle
   777     "run one cycle
   783     "run one cycle fetching indicator state.
   778     "
   784      This is done in the background to avoid long startup
       
   785      delays, in case the indicator information takes long to
       
   786      gather (i.e. when reading directories)"
       
   787 
   779     |node|
   788     |node|
   780 
   789 
   781     accessLock critical:[
   790     accessLock critical:[
   782         indicatorList isEmpty ifTrue:[          "/ queue is empty; terminate task
   791         indicatorList isEmpty ifTrue:[          "/ queue is empty; terminate task
   783             indicatorTask := nil.
   792             indicatorTask := nil.
   796     ifTrue:[
   805     ifTrue:[
   797         node showIndicator:true
   806         node showIndicator:true
   798     ].
   807     ].
   799     ^ true
   808     ^ true
   800 
   809 
   801     "Modified: / 24.9.1998 / 21:13:24 / cg"
   810     "Modified: / 26.9.1998 / 15:11:16 / cg"
   802 ! !
   811 ! !
   803 
   812 
   804 !SelectionInTree class methodsFor:'documentation'!
   813 !SelectionInTree class methodsFor:'documentation'!
   805 
   814 
   806 version
   815 version
   807     ^ '$Header: /cvs/stx/stx/libwidg2/SelectionInTree.st,v 1.16 1998-09-24 20:09:24 cg Exp $'
   816     ^ '$Header: /cvs/stx/stx/libwidg2/SelectionInTree.st,v 1.17 1998-09-28 09:58:57 cg Exp $'
   808 ! !
   817 ! !