HierarchicalList.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 02 Sep 2022 11:25:39 +0100
branchjv
changeset 6261 9b7eb7159d29
parent 5373 772578cec4f7
child 5498 797c3e694be7
permissions -rw-r--r--
Fix loong standing bug with some menus not being translated / resolved This has happened with browser "View" menu when sometimes it had the slice resolved and sometimes not. It turned out that it was because the code disabled resources (and therefore slices) resolution when processing shortcuts, so the menu was created and cached unresolved. This fixes the issue. eXept apparently run into the same problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     1
"
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     2
 COPYRIGHT (c) 1999 by eXept Software AG
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     3
              All Rights Reserved
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     4
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     5
 This software is furnished under a license and may be used
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     6
 only in accordance with the terms of that license and with the
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     8
 be provided or otherwise made available to, or used by, any
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     9
 other person.  No title to or ownership of the software is
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    10
 hereby transferred.
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    11
"
1751
bcba7dd03cbd move isHierarchicalItem to Object
ca
parents: 1733
diff changeset
    12
"{ Package: 'stx:libwidg2' }"
bcba7dd03cbd move isHierarchicalItem to Object
ca
parents: 1733
diff changeset
    13
5216
50b4b75edc7b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4676
diff changeset
    14
"{ NameSpace: Smalltalk }"
50b4b75edc7b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4676
diff changeset
    15
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
List subclass:#HierarchicalList
1733
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
    17
	instanceVariableNames:'recursionLock root showRoot application monitoringTask
2223
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
    18
		monitoringTaskDelay additionalItemsToMonitorSemaphore'
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	classVariableNames:''
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	poolDictionaries:''
1430
ae9e48cc7b9d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1390
diff changeset
    21
	category:'Views-Support'
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!HierarchicalList class methodsFor:'documentation'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    26
copyright
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    27
"
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    28
 COPYRIGHT (c) 1999 by eXept Software AG
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    29
              All Rights Reserved
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    30
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    31
 This software is furnished under a license and may be used
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    32
 only in accordance with the terms of that license and with the
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    33
 inclusion of the above copyright notice.   This software may not
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    34
 be provided or otherwise made available to, or used by, any
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    35
 other person.  No title to or ownership of the software is
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    36
 hereby transferred.
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    37
"
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    38
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    39
!
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    40
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
documentation
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    Hierarchical Lists are mostly like List, but adding and removing
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    elements are handled by the items itself.
5289
4c068297c990 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5216
diff changeset
    45
    Special change notifications are emitted, 
4c068297c990 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5216
diff changeset
    46
    whenever the list is changed.
4c068297c990 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5216
diff changeset
    47
    I am used mostly by the HierarchicalListView widget;
4c068297c990 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5216
diff changeset
    48
    see comments there.    
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    [Instance variables:]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
        root        <HierarchicalItem>  first item into list
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
        showRoot    <Boolean>           show or hide root item
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
        application <Application>       the user is able to set an application
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
                                        which can be accessed by an item.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    [author:]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
        Claus Atzkern
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    [see also:]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
        HierarchicalItem
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
        HierarchicalListView
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1751
diff changeset
    64
!HierarchicalList methodsFor:'accessing-look'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
showRoot
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    "show or hide root item
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    "
2430
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
    69
    showRoot isNil ifTrue:[
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
    70
        showRoot := true
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
    71
    ].
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
    72
    ^ showRoot
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
showRoot:aBoolean
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    "show or hide root item
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    aBoolean ~~ self showRoot ifTrue:[
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
        showRoot := aBoolean.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
        root notNil ifTrue:[
1869
2d7fbc8d5429 expand root if not visible
ca
parents: 1818
diff changeset
    82
            showRoot ifTrue:[
2d7fbc8d5429 expand root if not visible
ca
parents: 1818
diff changeset
    83
                super addFirst:root
2d7fbc8d5429 expand root if not visible
ca
parents: 1818
diff changeset
    84
            ] ifFalse:[
2d7fbc8d5429 expand root if not visible
ca
parents: 1818
diff changeset
    85
                super removeFirst.
2d7fbc8d5429 expand root if not visible
ca
parents: 1818
diff changeset
    86
                root expand
2d7fbc8d5429 expand root if not visible
ca
parents: 1818
diff changeset
    87
            ]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
        ]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    ]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1751
diff changeset
    93
!HierarchicalList methodsFor:'accessing-monitoring task'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
monitoringTaskDelay
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    "get the delay time of the monitoring task measured  in seconds
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
     or nil( monitoring disabled ). The task runs through all items 
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
     of the list performing #monitoringCycle and than at end of the
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
     list the task is suspended for monitoringTaskDelay seconds.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    ^ monitoringTaskDelay
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
monitoringTaskDelay:inSecondsOrNil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    "set the delay time of the monitoring task measured  in seconds
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
     or nil( monitoring disabled ). The task runs through all items 
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
     of the list performing #monitoringCycle and than at end of the
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
     list the task is suspended for monitoringTaskDelay seconds.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
    inSecondsOrNil isNil ifTrue:[
1439
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   111
        self stopMonitoringTask.
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   112
        monitoringTaskDelay := nil.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    ] ifFalse:[
1439
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   114
        monitoringTaskDelay := inSecondsOrNil.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
        self startMonitoringTask
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1751
diff changeset
   119
!HierarchicalList methodsFor:'accessing-mvc'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
1439
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   121
addDependent:anObject
5373
772578cec4f7 #OTHER by mawalch
mawalch
parents: 5289
diff changeset
   122
    "restart the monitoringTask if necessary
1439
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   123
    "
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   124
    super addDependent:anObject.
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   125
    self  startMonitoringTask.
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   126
!
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   127
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
application
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    "returns the responsible application; if no application is defined,
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
     nil is returned
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
    ^ application
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
application:anApplication
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
    "set the responsible application
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
    "
1733
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
   138
    application := anApplication.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
applicationsDo:aOneArgBlock
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    "evaluate the block on each dependent application
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    |appl|
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
    dependents notNil ifTrue:[
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
        dependents do:[:aDep|
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
            appl := aDep perform:#application ifNotUnderstood:nil.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
            appl notNil ifTrue:[
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
                aOneArgBlock value:appl
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
            ]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
        ]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    ]
1439
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   155
!
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   156
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   157
removeDependent:anObject
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   158
    "stop the monitoringTask if no more dependencies exists
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   159
    "
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   160
    super removeDependent:anObject.
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   161
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   162
    dependents size == 0 ifTrue:[
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   163
        self stopMonitoringTask
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   164
    ].
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   165
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1751
diff changeset
   168
!HierarchicalList methodsFor:'accessing-root'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
root
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
    "get the root item
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    ^ root
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
5216
50b4b75edc7b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4676
diff changeset
   177
root:aRootItem
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    "set the root item
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    "
4676
d793a43a8860 class: HierarchicalList
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   180
    |children|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    self stopMonitoringTask.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
5216
50b4b75edc7b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4676
diff changeset
   184
    "/ inlink the previous root
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    root notNil ifTrue:[
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
        root parent:nil.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
        root := nil.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
5216
50b4b75edc7b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4676
diff changeset
   190
    (root := aRootItem) isEmptyOrNil ifTrue:[
4676
d793a43a8860 class: HierarchicalList
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   191
        self removeAll.
d793a43a8860 class: HierarchicalList
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   192
    ] ifFalse:[
1869
2d7fbc8d5429 expand root if not visible
ca
parents: 1818
diff changeset
   193
        self showRoot ifFalse:[root expand].
2d7fbc8d5429 expand root if not visible
ca
parents: 1818
diff changeset
   194
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
        root parent:self.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
        children := OrderedCollection new.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
        self showRoot ifTrue:[children add:root].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
        root addVisibleChildrenTo:children.
4676
d793a43a8860 class: HierarchicalList
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   199
        "/ self removeAll.
d793a43a8860 class: HierarchicalList
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   200
        "/ self addAll:children beforeIndex:1.
d793a43a8860 class: HierarchicalList
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   201
        self contents:children.    
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    self startMonitoringTask.
3070
c08536fb052f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2902
diff changeset
   204
c08536fb052f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2902
diff changeset
   205
    "Modified: / 12-09-2006 / 18:22:42 / cg"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
!HierarchicalList methodsFor:'private'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
2258
a3e78fb530eb add criticalDo:
ca
parents: 2231
diff changeset
   210
criticalDo:aBlock
a3e78fb530eb add criticalDo:
ca
parents: 2231
diff changeset
   211
    "evaluate the block in a critical region
a3e78fb530eb add criticalDo:
ca
parents: 2231
diff changeset
   212
    "
a3e78fb530eb add criticalDo:
ca
parents: 2231
diff changeset
   213
    ^ recursionLock critical:aBlock
a3e78fb530eb add criticalDo:
ca
parents: 2231
diff changeset
   214
!
a3e78fb530eb add criticalDo:
ca
parents: 2231
diff changeset
   215
1733
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
   216
initContents:aSize
2430
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   217
    "setup defaults
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   218
    "
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   219
    showRoot      isNil ifTrue:[ showRoot      := true ].
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   220
    recursionLock isNil ifTrue:[ recursionLock := RecursionLock new ].
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   221
1733
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
   222
    ^ super initContents:aSize.
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
   223
!
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
   224
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
itemAddAll:aListOfItems beforeIndex:anIndex
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    "insert all items before an index
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    super addAll:aListOfItems beforeIndex:anIndex
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
itemChanged:what with:aPara from:anItem
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
    "catch notification from item; throw changeNotifications
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
     to dependencies;
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
     **** don't know what to do with a parameter and argument what
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
     **** list protocol ****
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
    |index arrIdx "{ Class: SmallInteger }"|
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
    (index := super identityIndexOf:anItem) ~~ 0 ifTrue:[
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
        arrIdx := index + firstIndex - 1.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
        contentsArray basicAt:arrIdx put:anItem.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
        dependents size ~~ 0 ifTrue:[
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
            what isNil ifTrue:[self changed:#at: with:index]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
                      ifFalse:[self changed:#at: with:(Array with:index with:what)]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
        ]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
    ]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
itemRemoveFromIndex:start toIndex:stop
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    "remove the items stored under startIndex up to and including
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
     the items under stopIndex.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
    ^ super removeFromIndex:start toIndex:stop
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
parentOrModel
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
    "always returns nil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
    ^ nil
1733
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
   261
!
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
   262
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
   263
recursionLock
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
   264
    ^ recursionLock
67c144581e63 add critical semaphore (RecursionLock)
ca
parents: 1616
diff changeset
   265
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
2493
8b70a26f1694 method category rename
Claus Gittinger <cg@exept.de>
parents: 2456
diff changeset
   268
!HierarchicalList methodsFor:'private-monitoring task'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
1437
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   270
monitoringCycle
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   271
    "the block evaluated
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   272
    "
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   273
    |index item|
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   274
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   275
    item  := root.
2430
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   276
    index := 1.                 "/ on default discard first entry the root
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   277
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   278
    root isNil ifTrue:[
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   279
        item := self at:index ifAbsent:nil.
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   280
    ] ifFalse:[
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   281
        self showRoot ifFalse:[
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   282
            index := 0          "/ read list from begin
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   283
        ]
e50f234bf3fe access showRoot by method
ca
parents: 2412
diff changeset
   284
    ].
1437
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   285
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   286
    [item notNil] whileTrue:[
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   287
        item monitoringCycle.
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   288
        Processor yield.
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   289
        index := index + 1.
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   290
        item  := self at:index ifAbsent:nil.
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   291
    ]
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   292
!
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   293
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
startMonitoringTask
2223
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   295
    "start the monitoring task; backgrund process finishes, when no (more) dependencies exist,
2743
0ddd4c24c02d Remove unused variables
Stefan Vogel <sv@exept.de>
parents: 2493
diff changeset
   296
     and the additionalItemsToMonitorSemaphore is not signalled 
0ddd4c24c02d Remove unused variables
Stefan Vogel <sv@exept.de>
parents: 2493
diff changeset
   297
     (aka: no more background children to read)"
0ddd4c24c02d Remove unused variables
Stefan Vogel <sv@exept.de>
parents: 2493
diff changeset
   298
1439
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   299
    |name|
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   300
2744
21b90562122b Fix monitoring task starting (bug introduced in last version)
Stefan Vogel <sv@exept.de>
parents: 2743
diff changeset
   301
    (monitoringTask isNil
21b90562122b Fix monitoring task starting (bug introduced in last version)
Stefan Vogel <sv@exept.de>
parents: 2743
diff changeset
   302
        and:[self monitoringTaskDelay notNil
2743
0ddd4c24c02d Remove unused variables
Stefan Vogel <sv@exept.de>
parents: 2493
diff changeset
   303
        and:[(dependents size ~~ 0) or:[additionalItemsToMonitorSemaphore notNil]]]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
    ) ifTrue:[
3832
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   305
        monitoringTask := 
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   306
            [
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   307
                [(dependents size ~~ 0) or:[additionalItemsToMonitorSemaphore notNil]] whileTrue:[
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   308
                    self monitoringCycle.
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   309
                    additionalItemsToMonitorSemaphore isNil ifTrue:[
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   310
                        Delay waitForSeconds:self monitoringTaskDelay
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   311
                    ] ifFalse:[
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   312
                        additionalItemsToMonitorSemaphore waitWithTimeout:self monitoringTaskDelay.
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   313
                    ]
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   314
                ].
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   315
            ] newProcess.
2273
1a7a91282d3f priority range for monitoring task
penk
parents: 2258
diff changeset
   316
1a7a91282d3f priority range for monitoring task
penk
parents: 2258
diff changeset
   317
        monitoringTask priorityRange:(Processor userBackgroundPriority to:Processor activePriority).
2412
8c3d2548998e restart process after restart from image
penk
parents: 2273
diff changeset
   318
        monitoringTask restartable:true.
2273
1a7a91282d3f priority range for monitoring task
penk
parents: 2258
diff changeset
   319
        monitoringTask resume.
1437
3ff0d67ec0af separate monitoringCycle from startMonitoringCycle
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   320
1439
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   321
        name := application notNil ifTrue:[application class name] ifFalse:['???'].
ddcd6e87e406 wait for termination monitoringTask before continue
Claus Gittinger <cg@exept.de>
parents: 1437
diff changeset
   322
        monitoringTask name:'HierarchicalList: ', name.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
    ^ true.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
stopMonitoringTask
2743
0ddd4c24c02d Remove unused variables
Stefan Vogel <sv@exept.de>
parents: 2493
diff changeset
   328
    "stop the monitoring task"
0ddd4c24c02d Remove unused variables
Stefan Vogel <sv@exept.de>
parents: 2493
diff changeset
   329
1616
be5eb8527f82 make stopMonitoring save
ca
parents: 1439
diff changeset
   330
    |task|
be5eb8527f82 make stopMonitoring save
ca
parents: 1439
diff changeset
   331
be5eb8527f82 make stopMonitoring save
ca
parents: 1439
diff changeset
   332
    (task := monitoringTask) notNil ifTrue:[
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
        monitoringTask := nil.
1616
be5eb8527f82 make stopMonitoring save
ca
parents: 1439
diff changeset
   334
3832
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   335
        Error 
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   336
            handle:[:ex| ] 
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   337
            do:[
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   338
                task terminateWithAllSubprocessesInGroup.
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   339
                task waitUntilTerminated.
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   340
            ]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
    ]
2223
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   342
!
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   343
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   344
triggerUpdateCycle
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   345
    additionalItemsToMonitorSemaphore isNil ifTrue:[
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   346
        [
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   347
            additionalItemsToMonitorSemaphore isNil ifTrue:[
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   348
                additionalItemsToMonitorSemaphore := Semaphore new.
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   349
            ].
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   350
        ] valueUninterruptably
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   351
    ].
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   352
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   353
    monitoringTaskDelay isNil ifTrue:[
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   354
        monitoringTaskDelay := 10
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   355
    ].
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   356
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   357
    additionalItemsToMonitorSemaphore signalOnce.
c34e7fd25e53 monitoring; delayed for directories; never for remoteDirectories
penk
parents: 1961
diff changeset
   358
    self startMonitoringTask.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
!HierarchicalList methodsFor:'protocol'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
childrenFor:anItem
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
    "returns the children for an item or an empty list
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
    ^ #()
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
iconFor:anItem
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
    "returns the icon for an item or nil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
    ^ nil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
labelFor:anItem
3848
cf7b2e22806d changed: #labelFor:
Claus Gittinger <cg@exept.de>
parents: 3832
diff changeset
   376
    "returns the label for an item or nil"
cf7b2e22806d changed: #labelFor:
Claus Gittinger <cg@exept.de>
parents: 3832
diff changeset
   377
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
    ^ nil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
middleButtonMenuFor:anItem
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
    "returns the middleButton menu for an item or nil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
    ^ nil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
!HierarchicalList class methodsFor:'documentation'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
version
5216
50b4b75edc7b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4676
diff changeset
   392
    ^ '$Header$'
3832
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   393
!
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   394
602c293b4300 code cleanup
Claus Gittinger <cg@exept.de>
parents: 3070
diff changeset
   395
version_CVS
5216
50b4b75edc7b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4676
diff changeset
   396
    ^ '$Header$'
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
! !
4676
d793a43a8860 class: HierarchicalList
Claus Gittinger <cg@exept.de>
parents: 3848
diff changeset
   398