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