ExternalStreamMonitor.st
author Jan Vrany <jan.vrany@labware.com>
Wed, 05 Oct 2022 11:57:26 +0100
branchjv
changeset 19637 28f5bfaa093d
parent 17228 359e1996b557
child 17487 23f1dd7e6afb
permissions -rw-r--r--
`NewSystemBrowser`: avoid updating package info when changed class is not selected This speeds up loading of packages when browser is open as it does not (needlessly) update package info which may involve scm round-trip.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17227
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 1997 by Claus Gittinger
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
	      All Rights Reserved
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libtool' }"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ NameSpace: Smalltalk }"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
SystemStatusMonitor subclass:#ExternalStreamMonitor
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:'semaphores streams filterOpenStreamsOnlyHolder
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
		filterSocketsOnlyHolder filterConnectedSocketsOnlyHolder'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	classVariableNames:''
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	poolDictionaries:''
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	category:'Monitors-ST/X'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!ExternalStreamMonitor class methodsFor:'documentation'!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
copyright
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
 COPYRIGHT (c) 1997 by Claus Gittinger
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	      All Rights Reserved
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 This software is furnished under a license and may be used
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 only in accordance with the terms of that license and with the
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 inclusion of the above copyright notice.   This software may not
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 be provided or otherwise made available to, or used by, any
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 other person.  No title to or ownership of the software is
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
 hereby transferred.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
documentation
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
"
17228
359e1996b557 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 17227
diff changeset
    44
    This view shows smalltalk's external stream instances - a debugging tool.
17227
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    [disclaimer:]
17228
359e1996b557 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 17227
diff changeset
    47
        this is based on one of the oldest tools in the system, written in the early 90's.
17227
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
        It does in no way reflect the way GUIs are designed/written these days.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
        
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    [see also:]
17228
359e1996b557 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 17227
diff changeset
    51
        Stream ExternalStream
17227
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
        WindowGroup
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
        ProcessMonitor
17228
359e1996b557 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 17227
diff changeset
    54
        SemaphoreMonitor
17227
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    [author:]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
        Claus Gittinger
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    [start with:]
17228
359e1996b557 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 17227
diff changeset
    60
        ExternalStreamMonitor open
17227
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
! !
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
!ExternalStreamMonitor class methodsFor:'defaults'!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
defaultLabel
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    ^ 'External Streams Monitor'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    "Created: 23.1.1997 / 02:52:53 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
! !
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
!ExternalStreamMonitor class methodsFor:'menu specs'!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
filterMenu
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    "This resource specification was automatically generated
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
     by the MenuEditor of ST/X."
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    "Do not manually edit this!! If it is corrupted,
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
     the MenuEditor may not be able to read the specification."
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    "
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
     MenuEditor new openOnClass:ExternalStreamMonitor andSelector:#filterMenu
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
     (Menu new fromLiteralArrayEncoding:(ExternalStreamMonitor filterMenu)) startUp
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
    "
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
    <resource: #menu>
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    ^ 
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
     #(Menu
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
        (
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
         (MenuItem
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
            label: 'Open Streams Only'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
            hideMenuOnActivated: false
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
            indication: filterOpenStreamsOnlyHolder
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
          )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
         (MenuItem
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
            label: '-'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
          )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
         (MenuItem
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
            label: 'Sockets Only'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
            hideMenuOnActivated: false
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
            indication: filterSocketsOnlyHolder
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
          )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
         (MenuItem
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
            label: 'Connected Sockets Only'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
            hideMenuOnActivated: false
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
            indication: filterConnectedSocketsOnlyHolder
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
          )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
         )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
        nil
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
        nil
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
      )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
mainMenu
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    "This resource specification was automatically generated
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
     by the MenuEditor of ST/X."
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    "Do not manually edit this!! If it is corrupted,
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
     the MenuEditor may not be able to read the specification."
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    "
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
     MenuEditor new openOnClass:ExternalStreamMonitor andSelector:#mainMenu
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
     (Menu new fromLiteralArrayEncoding:(ExternalStreamMonitor mainMenu)) startUp
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
    "
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    <resource: #menu>
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    ^ 
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
     #(Menu
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
        (
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
         (MenuItem
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
            label: 'File'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
            submenu: 
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
           (Menu
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
              (
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
               (MenuItem
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
                  label: 'Exit'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
                  itemValue: closeRequestToTopView
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
                )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
               )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
              nil
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
              nil
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
            )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
          )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
         (MenuItem
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
            label: 'Filter'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
            submenuChannel: filterMenu
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
          )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
         )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
        nil
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
        nil
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
      )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
! !
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
!ExternalStreamMonitor methodsFor:'aspects'!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
filterConnectedSocketsOnlyHolder
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    filterConnectedSocketsOnlyHolder isNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
        filterConnectedSocketsOnlyHolder := false asValue.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
        filterConnectedSocketsOnlyHolder onChangeSend:#filterConnectedSocketsOnlyHolderChanged to:self.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    ].    
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    ^ filterConnectedSocketsOnlyHolder
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
filterOpenStreamsOnlyHolder 
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
    filterOpenStreamsOnlyHolder isNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
        filterOpenStreamsOnlyHolder := false asValue.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
        filterSocketsOnlyHolder onChangeSend:#filterOpenStreamsOnlyHolder to:self.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    ].    
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    ^ filterOpenStreamsOnlyHolder
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
filterSocketsOnlyHolder
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
    filterSocketsOnlyHolder isNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
        filterSocketsOnlyHolder := false asValue.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
        filterSocketsOnlyHolder onChangeSend:#filterSocketsOnlyHolderChanged to:self.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    ].    
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    ^ filterSocketsOnlyHolder
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
! !
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
!ExternalStreamMonitor methodsFor:'drawing'!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
titleLine
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    OperatingSystem isMSWINDOWSlike ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
        ^ 'Type                 Global                     Handle Detail'.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    ] ifFalse:[    
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
        ^ 'Type                 Global                     FD Detail'.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    "
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
     ExternalStreamMonitor open
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    "
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    "Modified: / 17.6.1998 / 14:52:48 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
updateList
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
    "update list of semaphores"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    |newList|
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
    shown ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
        newList := ExternalStream allSubInstances.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
        self filterSocketsOnlyHolder value ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
            newList := newList select:[:eachStream | eachStream isSocket].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
        ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
        self filterOpenStreamsOnlyHolder value ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
            newList := newList select:[:eachStream | eachStream isOpen].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
        ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
        self filterConnectedSocketsOnlyHolder value ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
            newList := newList select:[:eachStream | eachStream isSocket and:[eachStream isConnected]].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
        ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
        
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
        "sort by hashKey - will not always generate unique numbers,
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
         but most of the time, this works ... for now"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
        newList sort:[:s1 :s2 | 
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
                    s1 className < s2 className
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
                    or:[ s1 className = s2 className
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
                         and:[false]]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
                ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
        newList ~= streams ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
            self updateStatus:newList
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
        ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
    self installDelayedUpdate.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
updateStatus:newStreamsList
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    "update status display of semaphores"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
    |oldList list oldSelection newSelection|
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
    shown ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
        oldList := listView list.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
        oldSelection := listView selection.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
        oldSelection notNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
            oldSelection := oldSelection collect:[:lineNr | streams at:(lineNr - self numberOfHeadlines) ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
            newSelection := OrderedCollection new.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
        ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
        newStreamsList notNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
            streams := WeakArray withAll:newStreamsList.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
        ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
        streams notNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
            list := OrderedCollection new:(streams size + self numberOfHeadlines).
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
            list add:self titleLine.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
            list add:(String new:self titleLine size withAll:$-).
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
            streams validElementsDo:[:aStream |
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
                |waiters waitersNames type globalNameOrNil handleString
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
                 isOpen handle detail color line|
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
"/                "/ need a copy - it may change while being enumerated
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
"/                [
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
"/                    count := aSemaphore count.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
"/                    waiters := aSemaphore waitingProcesses copy.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
"/                ] valueUninterruptably.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
"/                str := '' writeStream.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
"/                [
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
"/                    waiters notNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
"/                        waiters do:[:aProcess |
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
"/                            str nextPut:$[.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
"/                            aProcess id printOn:str.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
"/                            str nextPutAll:' '''.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
"/                            str nextPutAll:(aProcess name contractTo:40).
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
"/                            str nextPutAll:'''<'.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
"/                            aProcess priority printOn:str.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
"/                            str nextPutAll:'>]'.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
"/                            str space.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
"/                        ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
"/                    ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
"/                ] valueUninterruptably.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
"/                waitersNames := str contents.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
"/                (aSemaphore respondsTo:#name) ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
"/                    nm := aSemaphore name.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
"/                    nm isNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
"/                        nm := ''
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
"/                    ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
"/                ] ifFalse:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
"/                    nm := ''
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
"/                ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
                type := aStream className.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
                globalNameOrNil := Smalltalk keyAtValue:aStream.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
                
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
                aStream isFileStream ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
                    detail := aStream pathName.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
                ] ifFalse:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
                    aStream isSocket ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
                        aStream getPeer notNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
                            detail := aStream getPeerName printString,aStream getPeer printString.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
                        ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
                    ] ifFalse:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
                    ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
                ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
                
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
                OperatingSystem isMSWINDOWSlike ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
                    aStream isOpen ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
                        handle := aStream fileHandle.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
                        handleString := handle address hexPrintString
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
                    ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
                    handleString := (handleString ? '') leftPaddedTo:7
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
                ] ifFalse:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
                    aStream isOpen ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
                        handleString := aStream fileDescriptor printString
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
                    ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
                    handleString := (handleString ? '') leftPaddedTo:3
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
                ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
                line := (type contractTo:20) paddedTo:20.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
                line := line , ' ' , (((globalNameOrNil ? '') contractTo:25) paddedTo:25).
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
                line := line , ' ' , handleString.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
                line := line , ' ' , (detail ? '').
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
                isOpen := aStream isOpen.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
                
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
"/                line := line
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
"/                          , ' '
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
"/                          , ((nm contractTo:25) paddedTo:25)
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
"/                          , ' '
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
"/                          , (count printStringLeftPaddedTo:3)
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
"/                          , ' '
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
"/                          , owner printString
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
"/                          , ' '
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
"/                          , (waiters size printStringLeftPaddedTo:3)
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
"/                          , ' '
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
"/                          , waitersNames.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
                isOpen ifFalse:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
                    color := Color red.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
                ] ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
                    color := Color blue.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
                ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
                line := line colorizeAllWith:color.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
                list add:line.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
                oldSelection notNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
                    (oldSelection includesIdentical:aStream) ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
                        newSelection add:list size.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
                    ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
                ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
            ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
        ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
        "avoid flicker"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
        (oldList notNil and:[oldList size == list size]) ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
            list keysAndValuesDo:[:idx :entry |
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
                (oldList at:idx) ~= entry ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
                    listView at:idx put:entry
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
                ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
            ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
        ] ifFalse:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
            listView setList:list.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
            "the first two entries cannot be selected"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
            listView attributeAt:1 put:#disabled.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
            listView attributeAt:2 put:#disabled.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
        ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
        newSelection notNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
            listView selectWithoutScroll:newSelection
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
        ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
        listView flush
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
    ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
    self installDelayedUpdate.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
! !
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
!ExternalStreamMonitor methodsFor:'menu'!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
debugWaiters
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
    "open a debugger on the selected semaphores waiting processes"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
    self selectedSemaphoresDo:[:aSema |
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
	aSema waitingProcesses do:[:aProcess |
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
	    DebugView openOn:aProcess
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
	]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
    ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
    "Modified: / 23.1.1997 / 03:12:06 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
    "Created: / 17.6.1998 / 14:56:55 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
inspectSemaphore
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
    "open an inspector on the selected semaphores"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
    self selectedSemaphoresDo:[:aSema | aSema inspect]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
    "Modified: 23.1.1997 / 03:12:06 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
    "Created: 24.1.1997 / 23:11:50 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
inspectStream
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
    "open an inspector on the selected stream(s)"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
    self selectedStreamsDo:[:aSema | aSema inspect]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
inspectWaiters
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
    "open an inspector on the selected semaphores waiting processes"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
    self selectedSemaphoresDo:[:aSema |
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
	aSema waitingProcesses do:[:aProcess |
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
	    aProcess inspect
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
	]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
    ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
    "Modified: / 23.1.1997 / 03:12:06 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   413
    "Created: / 17.6.1998 / 14:17:41 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
selectedStreamsDo:aBlock
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
    "evaluate aBlock on all selected streams"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
    self selectionIndicesDo:[:n |
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
        |nr stream|
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
        
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
        nr := n - self numberOfHeadlines.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
        nr notNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
            nr > 0 ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
                stream := streams at:nr.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
                (stream notNil and:[stream ~~ 0]) ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
                   aBlock value:stream
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
                ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
            ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
        ]
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
    ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
statusMenu
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
    "return a popUpMenu"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
    <resource: #programMenu>
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
    |labels selectors m|
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
    labels := resources array:#(
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
                         'Inspect'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
                         'Inspect Waiters'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
                         'Debug Waiters'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
                        ).
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
    selectors := #(
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
                         inspectStream
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
                         inspectWaiters
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
                         debugWaiters
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   450
                        ).
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
    updateProcess isNil ifTrue:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
        labels := (resources array:#('Update' '-')) , labels.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
        selectors := #(updateView nil) , selectors
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
    ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
    m := PopUpMenu labels:labels
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
                   selectors:selectors.
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
    listView hasSelection ifFalse:[
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
        m disableAll:#(
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
                         inspectStream
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
                         inspectWaiters
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   465
                         debugWaiters
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
                      )
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
    ].
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
    ^ m
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
    "Modified: / 17.6.1998 / 14:17:05 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
! !
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
!ExternalStreamMonitor methodsFor:'queries'!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
numberOfHeadlines
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
    ^ 2
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   477
! !
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   478
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
!ExternalStreamMonitor methodsFor:'user actions'!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
doubleClicked
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
    "open an inspector on the selected semaphore"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
    self inspectStream
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
    "Created: 23.1.1997 / 03:22:04 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
    "Modified: 31.1.1997 / 22:33:27 / cg"
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
filterConnectedSocketsOnlyHolderChanged
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
    self sensor pushUserEvent:#updateList for:self
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
filterOpenStreamsOnlyHolderChanged
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
    self sensor pushUserEvent:#updateList for:self
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
filterSocketsOnlyHolderChanged
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
    self sensor pushUserEvent:#updateList for:self
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
! !
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
!ExternalStreamMonitor class methodsFor:'documentation'!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
version
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
    ^ '$Header$'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
!
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
version_CVS
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
    ^ '$Header$'
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
! !
1cdacb64232c initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511