ProcessMonitor.st
author Claus Gittinger <cg@exept.de>
Mon, 20 Jan 2020 21:02:47 +0100
changeset 19422 c6ca1c3e0fd7
parent 19061 53b0c3c67e51
permissions -rw-r--r--
#REFACTORING by exept class: MultiViewToolApplication added: #askForFile:default:forSave:thenDo: changed: #askForFile:default:thenDo: #askForFile:thenDo: #menuSaveAllAs #menuSaveAs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
     1
"
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
     2
 COPYRIGHT (c) 1993 by Claus Gittinger
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
     3
	      All Rights Reserved
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
     4
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
     5
 This software is furnished under a license and may be used
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
     6
 only in accordance with the terms of that license and with the
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
     8
 be provided or otherwise made available to, or used by, any
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
     9
 other person.  No title to or ownership of the software is
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    10
 hereby transferred.
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    11
"
2768
539b96324cdf use #abort
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
    12
"{ Package: 'stx:libtool' }"
539b96324cdf use #abort
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
    13
19061
53b0c3c67e51 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 7857
diff changeset
    14
"{ NameSpace: Smalltalk }"
53b0c3c67e51 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 7857
diff changeset
    15
982
ed5de0e2fb24 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 979
diff changeset
    16
SystemStatusMonitor subclass:#ProcessMonitor
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    17
	instanceVariableNames:'processes hideDead runColor suspendedColor waitColor cpuUsages
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    18
		showDetail'
315
8a86faf847d1 create a new updateProcess when restarted
Claus Gittinger <cg@exept.de>
parents: 314
diff changeset
    19
	classVariableNames:''
8a86faf847d1 create a new updateProcess when restarted
Claus Gittinger <cg@exept.de>
parents: 314
diff changeset
    20
	poolDictionaries:''
1053
9b1b15ef1e34 category change
Claus Gittinger <cg@exept.de>
parents: 1052
diff changeset
    21
	category:'Monitors-ST/X'
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
    22
!
4cde336c0794 Initial revision
claus
parents:
diff changeset
    23
771
5cd10b4845f3 oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 682
diff changeset
    24
!ProcessMonitor class methodsFor:'documentation'!
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    25
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    26
copyright
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    27
"
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    28
 COPYRIGHT (c) 1993 by Claus Gittinger
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    29
	      All Rights Reserved
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    30
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    31
 This software is furnished under a license and may be used
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    32
 only in accordance with the terms of that license and with the
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    33
 inclusion of the above copyright notice.   This software may not
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    34
 be provided or otherwise made available to, or used by, any
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    35
 other person.  No title to or ownership of the software is
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    36
 hereby transferred.
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    37
"
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    38
!
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    39
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    40
documentation
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    41
"
7857
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    42
    >>> This class has been obsoleted by ProcessMonitorV2 <<<
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    43
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    44
    This view shows smalltalks (light-weight) processes, and also offers
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    45
    a popup menu for various useful operations on them.
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    46
    Especially 'debug' is useful, to see what a process is currently
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    47
    doing.
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
    48
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    49
    The information shown is:
7857
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    50
        id         - the numeric id of the process
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    51
        name       - the name (if any) of the process
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    52
                     (the name has no semantic meaning; it exists for the processMonitor only)
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    53
        state      - what is it doing;
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    54
                        wait      - waiting on a semaphore
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    55
                        eventWait - waiting on a view-event semaphore
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    56
                        ioWait    - waiting on an io-semaphore
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    57
                        timeWait  - waiting for a time-semaphore
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    58
                        run       - run, but currently not scheduled
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    59
                        active    - really running (this info is useless, since at
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    60
                                    update time, its always the update process which is
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    61
                                    running)
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    62
                        suspended - suspended; not waiting on a semaphore
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    63
                        light     - not yet started (i.e. has no stack yet)
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    64
        
7857
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    65
        prio       - the processes priority (1..30)
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    66
        usedStack  - the current stack use
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    67
        totalStack - the stack currently allocated (i.e. the maximum ever needed)
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    68
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    69
    [see also:]
7857
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    70
        Process ProcessorScheduler
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    71
        WindowGroup
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    72
        SemaphoreMonitor
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    73
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    74
    [author:]
7857
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    75
        Claus Gittinger
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    76
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    77
    [start with:]
7857
5d26e5e6352c comment
Claus Gittinger <cg@exept.de>
parents: 5783
diff changeset
    78
        ProcessMonitor open
52
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    79
"
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    80
! !
7b48409ae088 *** empty log message ***
claus
parents: 49
diff changeset
    81
771
5cd10b4845f3 oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 682
diff changeset
    82
!ProcessMonitor class methodsFor:'defaults'!
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
    83
56
d0cb937cbcaa *** empty log message ***
claus
parents: 52
diff changeset
    84
defaultIcon
d0cb937cbcaa *** empty log message ***
claus
parents: 52
diff changeset
    85
    |i|
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
    86
93
claus
parents: 92
diff changeset
    87
    i := Image fromFile:'ProcMon.xbm'.
56
d0cb937cbcaa *** empty log message ***
claus
parents: 52
diff changeset
    88
    i notNil ifTrue:[^ i].
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    89
    ^ super defaultIcon
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    90
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
    91
    "Modified: 23.1.1997 / 02:52:31 / cg"
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
    92
!
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
    93
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
    94
defaultLabel
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
    95
    ^ 'Process Monitor'
1300
fd0f774f6090 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1299
diff changeset
    96
!
fd0f774f6090 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1299
diff changeset
    97
fd0f774f6090 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1299
diff changeset
    98
nameLengthInList
fd0f774f6090 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1299
diff changeset
    99
    ^ 30
fd0f774f6090 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1299
diff changeset
   100
fd0f774f6090 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1299
diff changeset
   101
    "Created: 21.8.1997 / 15:42:05 / cg"
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   102
! !
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   103
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   104
!ProcessMonitor methodsFor:'drawing'!
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   105
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   106
titleLine
109
claus
parents: 107
diff changeset
   107
    showDetail ifTrue:[
3000
e794a357d7cb 7 cols for pids
Claus Gittinger <cg@exept.de>
parents: 2981
diff changeset
   108
        Processor supportDynamicPriorities ifTrue:[
e794a357d7cb 7 cols for pids
Claus Gittinger <cg@exept.de>
parents: 2981
diff changeset
   109
            ^ 
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 3655
diff changeset
   110
'Id     Group  Name                            State     Prio       UsedStack    TotalStack  Current-Segment      Switch  Where'.
3000
e794a357d7cb 7 cols for pids
Claus Gittinger <cg@exept.de>
parents: 2981
diff changeset
   111
        ].
e794a357d7cb 7 cols for pids
Claus Gittinger <cg@exept.de>
parents: 2981
diff changeset
   112
        ^ 
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 3655
diff changeset
   113
'Id     Group  Name                            State    Prio UsedStack    TotalStack  Current-Segment      Switch  Where'.
109
claus
parents: 107
diff changeset
   114
    ].
3000
e794a357d7cb 7 cols for pids
Claus Gittinger <cg@exept.de>
parents: 2981
diff changeset
   115
    ^ 
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 3655
diff changeset
   116
'Id     Group  Name                            State    Prio Where                                           '.
656
3a625e4aa73f Use a Stream to construct lines.
Stefan Vogel <sv@exept.de>
parents: 619
diff changeset
   117
1504
ca559ae2710a allow for 5-digit ids
Claus Gittinger <cg@exept.de>
parents: 1349
diff changeset
   118
    "Modified: / 3.7.1996 / 13:57:38 / stefan"
1792
0c15080a584a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1791
diff changeset
   119
    "Modified: / 3.8.1998 / 23:20:24 / cg"
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   120
!
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   121
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   122
updateList
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   123
    "update list of processes"
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   124
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   125
    |newList|
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   126
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   127
    shown ifTrue:[
2084
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   128
        newList := self getProcessList.
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   129
2084
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   130
        "sort by id - take care of nil ids of dead processes"
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   131
        newList sort:[:p1 :p2 |
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   132
                         |id1 id2|
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   133
2084
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   134
                         (p1 isNil or:[(id1 := p1 id) isNil])
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   135
                             ifTrue:[true]
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   136
                             ifFalse:[
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   137
                                 (p2 isNil or:[(id2 := p2 id) isNil])
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   138
                                     ifTrue:[false]
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   139
                                     ifFalse:[id1 < id2]
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   140
                         ]
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   141
                     ].
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   142
        newList ~= processes ifTrue:[
2487
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   143
            self updateStatus:newList
2084
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   144
        ].
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   145
    ].
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   146
    updateBlock notNil ifTrue:[
2084
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   147
        Processor removeTimedBlock:listUpdateBlock.
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   148
        Processor addTimedBlock:listUpdateBlock afterSeconds:listUpdateDelay
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   149
    ].
656
3a625e4aa73f Use a Stream to construct lines.
Stefan Vogel <sv@exept.de>
parents: 619
diff changeset
   150
2487
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   151
    "Modified: / 3.7.1996 / 13:37:29 / stefan"
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   152
    "Modified: / 14.12.1999 / 20:50:14 / cg"
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   153
!
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   154
2487
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   155
updateStatus:newProcessList
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   156
    "update status display of processes"
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   157
1009
389ee01be263 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1007
diff changeset
   158
    |oldList list line dIndex interrupted contextCount 
19061
53b0c3c67e51 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 7857
diff changeset
   159
     aProcess nm st n found running sel oldSelection
1301
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   160
     newSelection numHeaderLines nameLength index
5783
5ce97d85326d Rename AbsoluteTime to Timestamp
Stefan Vogel <sv@exept.de>
parents: 5308
diff changeset
   161
     con c sender id gId r skipping startTime endTime deltaT|
3023
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   162
5783
5ce97d85326d Rename AbsoluteTime to Timestamp
Stefan Vogel <sv@exept.de>
parents: 5308
diff changeset
   163
    startTime := Timestamp now.
656
3a625e4aa73f Use a Stream to construct lines.
Stefan Vogel <sv@exept.de>
parents: 619
diff changeset
   164
1103
c70ece0e331a keep selection when list changes
Claus Gittinger <cg@exept.de>
parents: 1053
diff changeset
   165
    numHeaderLines := 2.
1300
fd0f774f6090 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1299
diff changeset
   166
    nameLength := self class nameLengthInList.
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   167
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   168
    shown ifTrue:[
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   169
        oldList := listView list.
2487
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   170
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   171
        oldSelection := listView selection.
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   172
        oldSelection notNil ifTrue:[
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   173
            oldSelection := oldSelection collect:[:idx | |pI|
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   174
                                            pI := idx-numHeaderLines.
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   175
                                            (pI > processes size or:[pI < 1]) ifTrue:[
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   176
                                                nil
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   177
                                            ] ifFalse:[
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   178
                                                processes at:pI
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   179
                                            ]
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   180
                                         ].
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   181
            newSelection := OrderedCollection new.
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   182
        ].
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   183
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   184
        newProcessList notNil ifTrue:[
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   185
            processes := WeakArray withAll:newProcessList.
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   186
        ].
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   187
        processes notNil ifTrue:[
1103
c70ece0e331a keep selection when list changes
Claus Gittinger <cg@exept.de>
parents: 1053
diff changeset
   188
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   189
            list := OrderedCollection new:(processes size + numHeaderLines).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   190
            list add:self titleLine.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   191
            list add:(String new:self titleLine size withAll:$-).
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   192
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   193
            interrupted := Processor interruptedProcess.
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   194
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   195
            dIndex := 1.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   196
            index := 1.
1301
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   197
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   198
            "/ use while-loop;
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   199
            "/ processList may change size ....
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   200
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   201
            [index <= processes size] whileTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   202
                aProcess := processes at:index.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   203
                index := index + 1.
1301
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   204
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   205
                (aProcess notNil 
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   206
                and:[aProcess ~~ 0]) ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   207
                    ((id := aProcess id) notNil or:[hideDead not]) ifTrue:[
5308
bd378231dd21 String new -> uninitializedNew: / basicNew:
Claus Gittinger <cg@exept.de>
parents: 4253
diff changeset
   208
                        line := WriteStream on:(String uninitializedNew:200).
656
3a625e4aa73f Use a Stream to construct lines.
Stefan Vogel <sv@exept.de>
parents: 619
diff changeset
   209
3000
e794a357d7cb 7 cols for pids
Claus Gittinger <cg@exept.de>
parents: 2981
diff changeset
   210
                        id printOn:line paddedTo:7.
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   211
                        gId := aProcess processGroupId.
2473
8108513bbfd1 avoid flicker
ca
parents: 2176
diff changeset
   212
                        ((gId == id) or:[gId isNil]) ifTrue:[
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   213
                            "/ a group leader
3000
e794a357d7cb 7 cols for pids
Claus Gittinger <cg@exept.de>
parents: 2981
diff changeset
   214
                            '-      ' printOn:line.
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   215
                        ] ifFalse:[
3000
e794a357d7cb 7 cols for pids
Claus Gittinger <cg@exept.de>
parents: 2981
diff changeset
   216
                            gId printOn:line paddedTo:7.
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   217
                        ].
663
befe6a1d886f show process group & added menu item to terminate a complete group
Claus Gittinger <cg@exept.de>
parents: 656
diff changeset
   218
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   219
                        (nm := aProcess name) isNil ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   220
                            nm := nm printStringPaddedTo:(nameLength-1).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   221
                            nm size >= nameLength ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   222
                                nm := (nm contractTo:(nameLength-1)).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   223
                            ].
19061
53b0c3c67e51 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 7857
diff changeset
   224
                            line nextPutAll:nm; nextPut:Character space.
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   225
                        ] ifTrue:[
19061
53b0c3c67e51 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 7857
diff changeset
   226
                            line spaces:(nameLength).
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   227
                        ].
680
c17630142bab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 663
diff changeset
   228
"/                        n := cpuUsages at:(id) ifAbsent:[0].
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   229
"/                        n ~~ 0 ifTrue:[
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   230
"/                            line := line , ((n * 4) printStringLeftPaddedTo:3)
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   231
"/                        ] ifFalse:[
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   232
"/                            line := line , '   '
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   233
"/                        ].
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   234
                        st := aProcess state.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   235
                        (st == #run
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   236
                         and:[aProcess == interrupted]) ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   237
                            c := ' *'.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   238
                            running := true.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   239
                        ] ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   240
                            [
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   241
                                (Processor scheduledProcesses includes:aProcess) ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   242
                                    c := ' +'
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   243
                                ] ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   244
                                    c := '  '.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   245
                                ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   246
                            ] valueUninterruptably.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   247
                            running := false.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   248
                        ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   249
                        line nextPutAll:c; nextPutAll:(st printStringPaddedTo:9).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   250
                        line nextPutAll:(aProcess priority printStringLeftPaddedTo:3).
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   251
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   252
                        (showDetail 
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   253
                        and:[Processor supportDynamicPriorities]) ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   254
                            (r := aProcess priorityRange) isNil ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   255
                                line nextPutAll:'       '.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   256
                            ] ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   257
                                line nextPutAll:((
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   258
                                    ' ['  
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   259
                                    , (r start printString)
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   260
                                    , '..'
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   261
                                    , (r stop printString)
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   262
                                    , ']') paddedTo:7).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   263
                            ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   264
                        ].
1896
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   265
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   266
                        con := aProcess suspendedContext.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   267
                        con isNil ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   268
                            aProcess == Processor activeProcess ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   269
                                con := thisContext
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   270
                            ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   271
                        ].
1896
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   272
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   273
                        showDetail ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   274
                            line nextPutAll:(aProcess usedStackSize printStringLeftPaddedTo:11).
1791
023931383895 show dynamicPrio-ranges
Claus Gittinger <cg@exept.de>
parents: 1620
diff changeset
   275
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   276
                            id == 0 ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   277
                                line nextPutAll:('unlimited' leftPaddedTo:14).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   278
                            ] ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   279
                                n := aProcess numberOfStackSegments.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   280
                                line nextPutAll:(aProcess totalStackSize printStringLeftPaddedTo:10).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   281
                                line nextPutAll:(('(' , n printString , ')') paddedTo:4).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   282
                            ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   283
                            con notNil ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   284
                                line nextPutAll:'  '.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   285
                                line nextPutAll:(((ObjectMemory addressOf:con) printStringRadix:16) leftPaddedTo:8 with:$0).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   286
                                line nextPutAll:' .. '.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   287
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   288
                                contextCount := 1.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   289
                                c := con.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   290
                                [(sender := c sender) notNil] whileTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   291
                                    c := sender.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   292
                                    contextCount := contextCount + 1.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   293
                                ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   294
                                line nextPutAll:(((ObjectMemory addressOf:c) printStringRadix:16) leftPaddedTo:8 with:$0).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   295
                            ] ifFalse:[
19061
53b0c3c67e51 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 7857
diff changeset
   296
                                line spaces:20.
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   297
                            ].
19061
53b0c3c67e51 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 7857
diff changeset
   298
                            line nextPut:Character space.
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   299
                            line nextPutAll:(aProcess numberOfStackBoundaryHits printStringLeftPaddedTo:6).
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   300
                        ].
1103
c70ece0e331a keep selection when list changes
Claus Gittinger <cg@exept.de>
parents: 1053
diff changeset
   301
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   302
                        con notNil ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   303
                            c := con.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   304
                            found := false.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   305
                            running ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   306
                                "/ search for a semaphore-wait in the top 10 contexts
1009
389ee01be263 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1007
diff changeset
   307
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   308
                                1 to:10 do:[:n |
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   309
                                    found ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   310
                                        c notNil ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   311
                                            (c receiver class == Semaphore) ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   312
                                                c selector == #wait ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   313
                                                    found := true.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   314
                                                ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   315
                                            ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   316
                                            c := c sender.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   317
                                        ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   318
                                    ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   319
                                ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   320
                            ].    
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   321
                            found ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   322
                                "/ search for a non-processor, non-process
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   323
                                "/ receiver in the top 10 contexts
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   324
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   325
                                c := con.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   326
                                1 to:10 do:[:n |
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   327
                                    |r|
322
e3ccd5e431df fixed context display (dont search for suspending context in running processes)
Claus Gittinger <cg@exept.de>
parents: 315
diff changeset
   328
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   329
                                    found ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   330
                                        c notNil ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   331
                                            ((r := c receiver) ~~ Processor 
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   332
                                             and:[r class ~~ Process]) ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   333
                                                found := true.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   334
                                            ] ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   335
                                                c := c sender.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   336
                                            ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   337
                                        ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   338
                                    ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   339
                                ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   340
                            ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   341
                            found ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   342
                                c := con
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   343
                            ].
413
715a6a18f825 better display of running processes context
Claus Gittinger <cg@exept.de>
parents: 409
diff changeset
   344
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   345
                            "/ skip, until an interesting context is
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   346
                            "/ found.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   347
                            "/ this skips intermediate contexts, which lead
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   348
                            "/ to the sema-wait (for example, unwind blocks,
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   349
                            "/ delay-stuff etc.)
428
1c7406f57591 skip Process contexts in display
Claus Gittinger <cg@exept.de>
parents: 423
diff changeset
   350
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   351
                            skipping := true.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   352
                            [skipping] whileTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   353
                                skipping := false.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   354
                                (c notNil
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   355
                                and:[c receiver == Delay
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   356
                                     or:[c receiver class == Delay]]) ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   357
                                    c := c sender.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   358
                                    skipping := true.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   359
                                ].
322
e3ccd5e431df fixed context display (dont search for suspending context in running processes)
Claus Gittinger <cg@exept.de>
parents: 315
diff changeset
   360
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   361
                                [c notNil
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   362
                                and:[c receiver isBlock 
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   363
                                and:[c selector startsWith:'value']]] whileTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   364
                                    c := c sender.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   365
                                    skipping := true.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   366
                                ].
1896
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   367
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   368
                                [c notNil
3640
1265390b64e9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3379
diff changeset
   369
                                and:[c receiver isBlock 
1265390b64e9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3379
diff changeset
   370
                                and:[c selector = 'ensure:']]] whileTrue:[
1265390b64e9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3379
diff changeset
   371
                                    c := c sender.
1265390b64e9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3379
diff changeset
   372
                                    skipping := true.
1265390b64e9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3379
diff changeset
   373
                                ].
1265390b64e9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3379
diff changeset
   374
1265390b64e9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3379
diff changeset
   375
                                [c notNil
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   376
                                and:[c receiver == OperatingSystem 
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   377
                                and:[c selector == #unblockInterrupts]]] whileTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   378
                                    c := c sender.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   379
                                    skipping := true.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   380
                                ].
1807
b98ad1474686 skip uninterresting contexts in the where list;
Claus Gittinger <cg@exept.de>
parents: 1792
diff changeset
   381
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   382
                                [c notNil and:[c isBlockContext]] whileTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   383
                                    c := c home.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   384
                                    skipping := true.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   385
                                ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   386
                            ].
1807
b98ad1474686 skip uninterresting contexts in the where list;
Claus Gittinger <cg@exept.de>
parents: 1792
diff changeset
   387
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   388
                            c notNil ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   389
                                sel := c selector.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   390
                                sel isNil ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   391
                                    sel := '* unknown *'
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   392
                                ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   393
                                line nextPutAll:'  '.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   394
                                line nextPutAll:c receiver class name.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   395
                                line nextPutAll:'>>'; nextPutAll:sel.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   396
                            ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   397
                        ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   398
                        list add:line contents.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   399
                        processes at:dIndex put:aProcess.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   400
                        (oldSelection notNil and:[oldSelection includesIdentical:aProcess]) ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   401
                            newSelection add:dIndex+numHeaderLines.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   402
                        ].
1807
b98ad1474686 skip uninterresting contexts in the where list;
Claus Gittinger <cg@exept.de>
parents: 1792
diff changeset
   403
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   404
                        dIndex := dIndex + 1
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   405
                    ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   406
                ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   407
            ].
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   408
            dIndex to:processes size do:[:index |
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   409
                processes at:index put:nil
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   410
            ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   411
        ].
1103
c70ece0e331a keep selection when list changes
Claus Gittinger <cg@exept.de>
parents: 1053
diff changeset
   412
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   413
        "avoid flicker"
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   414
        (oldList notNil and:[oldList size == list size]) ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   415
            list keysAndValuesDo:[:idx :entry |
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   416
                (oldList at:idx) ~= entry ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   417
                    listView at:idx put:entry
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   418
                ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   419
            ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   420
        ] ifFalse:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   421
            listView setList:list.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   422
            "the first two entries cannot be selected"
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   423
            listView attributeAt:1 put:#disabled.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   424
            listView attributeAt:2 put:#disabled.
1103
c70ece0e331a keep selection when list changes
Claus Gittinger <cg@exept.de>
parents: 1053
diff changeset
   425
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   426
            oldSelection notNil ifTrue:[
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   427
                listView selection:newSelection.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   428
            ]
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   429
        ].
2473
8108513bbfd1 avoid flicker
ca
parents: 2176
diff changeset
   430
        "/ cg: must flush here - drawing is done by a background process;
8108513bbfd1 avoid flicker
ca
parents: 2176
diff changeset
   431
        "/ without the flush, the output may look ugly (delayed)
8108513bbfd1 avoid flicker
ca
parents: 2176
diff changeset
   432
        listView flush
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   433
    ].
3023
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   434
5783
5ce97d85326d Rename AbsoluteTime to Timestamp
Stefan Vogel <sv@exept.de>
parents: 5308
diff changeset
   435
    endTime := Timestamp now.
3023
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   436
    deltaT := (endTime millisecondDeltaFrom:startTime) / 1000.0.
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   437
    "/ Transcript show:deltaT; show:' ' ; showCR:(updateDelay / 10.0).
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   438
    deltaT > (updateDelay / 5) ifTrue:[
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   439
        "/ the update took longer than 20% - make delay longer, to reduce cpu load.
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   440
        updateDelay := updateDelay * 2.
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   441
        "/ Transcript show:'+++ '; showCR:updateDelay.
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   442
    ] ifFalse:[
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   443
        updateDelay > 0.5 ifTrue:[
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   444
            deltaT < (updateDelay / 20) ifTrue:[
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   445
                "/ the update took less than 5% - make delay smaller for better animation.
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   446
                updateDelay := (updateDelay / 2) max:0.5.
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   447
                "/ Transcript show:'--- ';showCR:updateDelay.
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   448
            ].
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   449
        ].
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   450
    ].
abe1daf204c3 reduce cpu load
Claus Gittinger <cg@exept.de>
parents: 3000
diff changeset
   451
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   452
    updateBlock notNil ifTrue:[
2176
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   453
        Processor removeTimedBlock:updateBlock.
e082c898f678 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2084
diff changeset
   454
        Processor addTimedBlock:updateBlock afterSeconds:updateDelay
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   455
    ]
322
e3ccd5e431df fixed context display (dont search for suspending context in running processes)
Claus Gittinger <cg@exept.de>
parents: 315
diff changeset
   456
1504
ca559ae2710a allow for 5-digit ids
Claus Gittinger <cg@exept.de>
parents: 1349
diff changeset
   457
    "Modified: / 3.7.1996 / 13:56:01 / stefan"
2487
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   458
    "Created: / 14.12.1999 / 20:47:12 / cg"
4ac80975b91d avoid loosing the selection when the list is updated
Claus Gittinger <cg@exept.de>
parents: 2473
diff changeset
   459
    "Modified: / 14.12.1999 / 20:50:59 / cg"
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   460
! !
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   461
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   462
!ProcessMonitor methodsFor:'initialization'!
4cde336c0794 Initial revision
claus
parents:
diff changeset
   463
4cde336c0794 Initial revision
claus
parents:
diff changeset
   464
initialize
4cde336c0794 Initial revision
claus
parents:
diff changeset
   465
    super initialize.
4cde336c0794 Initial revision
claus
parents:
diff changeset
   466
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   467
    hideDead := true.
109
claus
parents: 107
diff changeset
   468
    showDetail := Smalltalk at:#SystemDebugging ifAbsent:false.
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   469
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   470
    device hasColors ifTrue:[
1896
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   471
	runColor := Color green.
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   472
	suspendedColor := Color yellow.
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   473
	waitColor := Color red.
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   474
    ] ifFalse:[
1896
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   475
	runColor := suspendedColor := waitColor := Color black
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   476
    ].
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   477
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   478
    "
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   479
     ProcessMonitor open
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   480
    "
315
8a86faf847d1 create a new updateProcess when restarted
Claus Gittinger <cg@exept.de>
parents: 314
diff changeset
   481
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   482
    "Modified: 23.1.1997 / 02:51:38 / cg"
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   483
!
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   484
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   485
realize
3655
55fddc8c32df on: -> onDevice:
Claus Gittinger <cg@exept.de>
parents: 3640
diff changeset
   486
    waitColor := waitColor onDevice:device.
55fddc8c32df on: -> onDevice:
Claus Gittinger <cg@exept.de>
parents: 3640
diff changeset
   487
    runColor := runColor onDevice:device.
55fddc8c32df on: -> onDevice:
Claus Gittinger <cg@exept.de>
parents: 3640
diff changeset
   488
    suspendedColor := suspendedColor onDevice:device.
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   489
    super realize.
56
d0cb937cbcaa *** empty log message ***
claus
parents: 52
diff changeset
   490
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   491
    "Modified: 23.1.1997 / 02:30:37 / cg"
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   492
! !
4cde336c0794 Initial revision
claus
parents:
diff changeset
   493
4cde336c0794 Initial revision
claus
parents:
diff changeset
   494
!ProcessMonitor methodsFor:'menu actions'!
4cde336c0794 Initial revision
claus
parents:
diff changeset
   495
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   496
abortProcess
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   497
    "abort (raise AbortSignal in) the selected process"
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   498
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   499
    self selectedProcessesDo:[:p |
2768
539b96324cdf use #abort
Claus Gittinger <cg@exept.de>
parents: 2487
diff changeset
   500
        p abort
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   501
    ]
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   502
!
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   503
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   504
debugProcess
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   505
    "open a debugger on the selected process"
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   506
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   507
    self selectedProcessesDo:[:p |
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   508
       Debugger openOn:p
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   509
    ]
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   510
!
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   511
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   512
debugProcessWhenResumed
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   513
    self selectedProcessesDo:[:p |
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   514
       p onResumeDo:[:con | Debugger enter:con]
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   515
    ]
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   516
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   517
    "Created: / 14.10.1998 / 15:50:07 / cg"
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   518
    "Modified: / 14.10.1998 / 16:06:08 / cg"
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   519
!
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   520
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   521
debugWhenResumed
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   522
    self selectedProcessesDo:[:p |
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   523
       p addInterruptAction:[Debugger enter]
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   524
    ]
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   525
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   526
    "Created: / 14.10.1998 / 15:48:04 / cg"
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   527
    "Modified: / 14.10.1998 / 15:48:40 / cg"
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   528
!
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   529
1301
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   530
hardTerminateProcess
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   531
    "hard terminate the selected process"
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   532
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   533
    self selectedProcessesSend:#terminateNoSignal
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   534
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   535
    "Created: 22.8.1997 / 02:06:51 / cg"
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   536
!
6c2fd40d502f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1300
diff changeset
   537
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   538
hideDead:aBoolean
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   539
    "turn on/off hiding of dead (already terminated) processes"
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   540
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   541
    hideDead := aBoolean
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   542
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   543
    "Modified: 23.1.1997 / 02:34:01 / cg"
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   544
!
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   545
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   546
inspectSelection
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   547
    "open an inspector on the selected process"
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   548
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   549
    self selectedProcessesSend:#inspect
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   550
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   551
    "Created: 23.1.1997 / 02:27:33 / cg"
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   552
!
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   553
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   554
lowerPrio
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   555
    "lower the selected processes priority"
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   556
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   557
    self selectedProcessesDo:[:p |
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   558
       p priority:(p priority - 1)
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   559
    ]
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   560
!
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   561
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   562
raisePrio
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   563
    "raise the selected processes priority"
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   564
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   565
    self selectedProcessesDo:[:p |
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   566
       p priority:(p priority + 1)
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   567
    ]
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   568
!
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   569
817
a2c25d3e8186 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   570
restartProcess
a2c25d3e8186 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   571
    "abort (raise AbortSignal in) the selected process"
a2c25d3e8186 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   572
a2c25d3e8186 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   573
    self selectedProcessesDo:[:p |
1896
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   574
	p restart.
817
a2c25d3e8186 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   575
    ]
a2c25d3e8186 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   576
!
a2c25d3e8186 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   577
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   578
resumeProcess
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   579
    "resume the selected process (i.e. let it run) "
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   580
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   581
    self selectedProcessesSend:#resume
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   582
!
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   583
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   584
statusMenu
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   585
    "return a popUpMenu"
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   586
1620
51341ec8360b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1505
diff changeset
   587
    <resource: #programMenu>
51341ec8360b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1505
diff changeset
   588
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 3655
diff changeset
   589
    |items m allRestartable|
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   590
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   591
    device ctrlDown ifTrue:[
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   592
        items := #( 
3233
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   593
                        ('\c Detail' toggleDetail)
2981
39df54f7d6b2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2768
diff changeset
   594
                        ('-')  
3233
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   595
                        ('Hard Terminate'        hardTerminateProcess)
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   596
                  ).
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   597
    ] ifFalse:[
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   598
        items := #(
3233
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   599
                             ('Inspect'               inspectSelection)
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   600
                             ('Debug'                 debugProcess)
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   601
"/                             ('Debug when resumed'    debugProcessWhenResumed)
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   602
                             ('-')  
3233
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   603
                             ('Resume'                resumeProcess)
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   604
                             ('Suspend'               suspendProcess)
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   605
                             ('Stop'                  stopProcess)
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   606
                             ('-')   
3233
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   607
                             ('Abort'                 abortProcess)
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   608
                             ('Terminate'             terminateProcess)
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 3655
diff changeset
   609
                             ('Terminate Group'       terminateProcessGroup)
3233
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   610
                             ('Restart'               restartProcess)
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   611
                             ('-')  
4253
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 3655
diff changeset
   612
                             ('Raise Prio'            raisePrio)
fb44beaa9aa1 menu labels
Claus Gittinger <cg@exept.de>
parents: 3655
diff changeset
   613
                             ('Lower Prio'            lowerPrio)
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   614
                            ).
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   615
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   616
        updateProcess isNil ifTrue:[
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   617
            items := #( 
3233
7ee8f7099595 uppercase labels
Claus Gittinger <cg@exept.de>
parents: 3023
diff changeset
   618
                        ('Update' updateView) 
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   619
                        ('-')
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   620
                      ) , items.
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   621
        ].
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   622
    ].
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   623
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   624
    m := PopUpMenu 
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   625
                itemList:items
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   626
                resources:resources
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   627
                performer:self.
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   628
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   629
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   630
    listView hasSelection ifFalse:[
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   631
        m disableAll:#(
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   632
                             inspectSelection
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   633
                             debugProcess
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   634
                             debugProcessWhenResumed
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   635
                             resumeProcess  
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   636
                             suspendProcess  
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   637
                             stopProcess  
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   638
                             restartProcess
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   639
                             abortProcess
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   640
                             terminateProcess
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   641
                             terminateProcessGroup
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   642
                             raisePrio
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   643
                             lowerPrio
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   644
                      )
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   645
    ] ifTrue:[
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   646
        allRestartable := true.
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   647
        self selectedProcessesDo:[:p |
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   648
            p isRestartable ifFalse:[
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   649
                allRestartable := false
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   650
            ].
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   651
        ].
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   652
        allRestartable ifFalse:[
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   653
            m disable:#restartProcess
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   654
        ].
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   655
    ].
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   656
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   657
    m checkToggleAt:#toggleDetail put:showDetail.
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   658
    ^ m
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   659
1932
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   660
    "Created: / 23.1.1997 / 03:05:54 / cg"
5eff508ce300 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
   661
    "Modified: / 14.10.1998 / 17:15:43 / cg"
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   662
!
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   663
92
claus
parents: 90
diff changeset
   664
stopProcess
claus
parents: 90
diff changeset
   665
    "stop the selected process - not even interrupts will wake it up"
claus
parents: 90
diff changeset
   666
claus
parents: 90
diff changeset
   667
    self selectedProcessesSend:#stop
claus
parents: 90
diff changeset
   668
!
claus
parents: 90
diff changeset
   669
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   670
suspendProcess
92
claus
parents: 90
diff changeset
   671
    "suspend the selected process - interrupts will let it run again"
claus
parents: 90
diff changeset
   672
58
43b7d463a7e5 *** empty log message ***
claus
parents: 57
diff changeset
   673
    self selectedProcessesSend:#suspend
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   674
!
45
950b84ba89e6 *** empty log message ***
claus
parents: 19
diff changeset
   675
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   676
terminateProcess
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   677
    "terminate the selected process"
92
claus
parents: 90
diff changeset
   678
3379
ee3921d762e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   679
    self selectedProcessesSend:#terminate.
ee3921d762e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   680
    self updateList.
ee3921d762e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   681
ee3921d762e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   682
    "Modified: / 9.11.2001 / 01:09:24 / cg"
663
befe6a1d886f show process group & added menu item to terminate a complete group
Claus Gittinger <cg@exept.de>
parents: 656
diff changeset
   683
!
befe6a1d886f show process group & added menu item to terminate a complete group
Claus Gittinger <cg@exept.de>
parents: 656
diff changeset
   684
befe6a1d886f show process group & added menu item to terminate a complete group
Claus Gittinger <cg@exept.de>
parents: 656
diff changeset
   685
terminateProcessGroup
817
a2c25d3e8186 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   686
    "terminate the selected process with all of its subprocesses"
663
befe6a1d886f show process group & added menu item to terminate a complete group
Claus Gittinger <cg@exept.de>
parents: 656
diff changeset
   687
3379
ee3921d762e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   688
    self selectedProcessesSend:#terminateGroup.
ee3921d762e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   689
    self updateList.
ee3921d762e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   690
ee3921d762e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3233
diff changeset
   691
    "Modified: / 9.11.2001 / 01:09:30 / cg"
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   692
!
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   693
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   694
toggleDetail
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   695
    "toggle detail"
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   696
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   697
    showDetail := showDetail not.
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   698
    self updateView
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   699
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   700
    "Modified: 23.1.1997 / 02:33:03 / cg"
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   701
    "Created: 23.1.1997 / 02:33:30 / cg"
19
4cde336c0794 Initial revision
claus
parents:
diff changeset
   702
! !
4cde336c0794 Initial revision
claus
parents:
diff changeset
   703
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   704
!ProcessMonitor methodsFor:'private'!
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   705
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   706
selectedProcessesDo:aBlock
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   707
    "evaluate aBlock on all selected processes"
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   708
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   709
    |p nr sel|
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   710
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   711
    sel := listView selection.
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   712
    sel isNil ifTrue:[^ self].
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   713
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   714
    (sel isKindOf:Collection) ifTrue:[
1896
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   715
	sel do:[:n |
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   716
	    nr := n - 2.   "for headlines"
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   717
	    nr notNil ifTrue:[
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   718
		nr > 0 ifTrue:[
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   719
		    p := processes at:nr.
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   720
		    (p notNil and:[p ~~ 0]) ifTrue:[
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   721
		       aBlock value:p
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   722
		    ]
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   723
		]
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   724
	    ]
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   725
	]
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   726
    ] ifFalse:[
1896
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   727
	nr := sel - 2.     "for headlines"
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   728
	nr notNil ifTrue:[
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   729
	    nr > 0 ifTrue:[
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   730
		p := processes at:nr.
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   731
		(p notNil and:[p ~~ 0]) ifTrue:[
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   732
		   aBlock value:p
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   733
		]
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   734
	    ]
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   735
	]
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   736
    ].
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   737
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   738
    "Modified: 23.1.1997 / 03:10:53 / cg"
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   739
!
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   740
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   741
selectedProcessesSend:aSelector
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   742
    "send a message to all selected processes"
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   743
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   744
    self selectedProcessesDo:[:p |
1896
e92534f5dfb7 fixed selection handling
Claus Gittinger <cg@exept.de>
parents: 1876
diff changeset
   745
	p perform:aSelector
143
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   746
    ].
95c177bc7678 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
   747
    self updateView.
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   748
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   749
    "Modified: 23.1.1997 / 02:34:49 / cg"
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   750
! !
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   751
2084
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   752
!ProcessMonitor methodsFor:'process selection'!
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   753
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   754
getProcessList
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   755
    "select processes to display.
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   756
     Subclasses may redefine this"
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   757
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   758
    |coll|
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   759
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   760
    showDetail ifTrue:[
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   761
        coll := Process allSubInstances asOrderedCollection.
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   762
    ] ifFalse:[
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   763
        coll := ProcessorScheduler knownProcesses asOrderedCollection.
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   764
    ].
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   765
    ^ coll
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   766
! !
0445a6a61d45 Extract #getProcessList to support easy subclasses.
Stefan Vogel <sv@exept.de>
parents: 2013
diff changeset
   767
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   768
!ProcessMonitor methodsFor:'user actions'!
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   769
979
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   770
doubleClicked
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   771
    "open a debugger on the selected process"
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   772
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   773
    self debugProcess
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   774
c1e318bee326 extracted common stuff into a superclass
Claus Gittinger <cg@exept.de>
parents: 817
diff changeset
   775
    "Created: 23.1.1997 / 03:21:30 / cg"
85
d9713a3ca092 *** empty log message ***
claus
parents: 58
diff changeset
   776
! !
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   777
771
5cd10b4845f3 oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 682
diff changeset
   778
!ProcessMonitor class methodsFor:'documentation'!
208
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   779
c79225d671c3 better detail info
Claus Gittinger <cg@exept.de>
parents: 166
diff changeset
   780
version
19061
53b0c3c67e51 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 7857
diff changeset
   781
    ^ '$Header$'
1053
9b1b15ef1e34 category change
Claus Gittinger <cg@exept.de>
parents: 1052
diff changeset
   782
! !
19061
53b0c3c67e51 #REFACTORING by exept
Claus Gittinger <cg@exept.de>
parents: 7857
diff changeset
   783