TextCollector.st
author claus
Sat, 11 Dec 1993 02:51:34 +0100
changeset 7 15a9291b9bd0
parent 5 7b4fb1b170e5
child 15 0dbce35d3c69
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     1
"
5
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1989 by Claus Gittinger
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     4
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    11
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    12
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    13
EditTextView subclass:#TextCollector
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'entryStream lineLimit destroyAction
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    15
                              outstandingLines outstandingLine
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
                              flushBlock flushPending collecting'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    17
       classVariableNames:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
       poolDictionaries:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
       category:'Views-Text'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    22
TextCollector comment:'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    23
5
claus
parents: 3
diff changeset
    24
COPYRIGHT (c) 1989 by Claus Gittinger
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    25
              All Rights Reserved
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    26
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    27
a view for editable text, which also understands some stream messages.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    28
Instances of this view can take the place of a stream and display the received
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    29
text; it is used especially for Transcript.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    30
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    31
$Header: /cvs/stx/stx/libwidg/TextCollector.st,v 1.4 1993-12-11 01:49:53 claus Exp $
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    32
written winter-89 by claus
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    33
'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    34
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    35
!TextCollector class methodsFor:'defaults'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    36
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    37
defaultLineLimit
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    38
    ^ nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    39
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    40
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    41
!TextCollector class methodsFor:'instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    42
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    43
newTranscript
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    44
    |topView transcript f v|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    45
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    46
    Display initialize.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    47
    topView := StandardSystemView label:'Transcript' minExtent:(100 @ 100).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    48
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    49
    v := ScrollableView for:self in:topView.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    50
    v origin:(0.0 @ 0.0) corner:(1.0 @ 1.0).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    51
    transcript := v scrolledView.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    52
    transcript lineLimit:600.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    53
    transcript collect:true.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    54
    "transcript partialLines:false."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    55
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    56
    f := transcript font.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    57
    topView extent:(((f widthOf:'x') * 70) @ (f height * 10)).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    58
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    59
    Smalltalk at:#Transcript put:transcript.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    60
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    61
    "fancy feature: whenever Transcript is closed, reset to StdError"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    62
    transcript destroyAction:[Smalltalk at:#Transcript put:Stderr].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    63
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    64
    topView realize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    65
    ^ transcript
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    66
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    67
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    68
!TextCollector methodsFor:'initialize / release'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    69
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    70
initialize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    71
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    72
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    73
    outstandingLines := OrderedCollection new.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    74
    flushBlock := [self endEntry].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    75
    flushPending := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    76
    collecting := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    77
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    78
    lineLimit := self class defaultLineLimit.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    79
    entryStream := ActorStream new.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    80
    entryStream nextPutBlock:[:something | self nextPut:something].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    81
    entryStream nextPutAllBlock:[:something | self nextPutAll:something]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    82
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    83
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    84
destroy
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    85
    destroyAction notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    86
        destroyAction value
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    87
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    88
    flushBlock notNil ifTrue:[
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
    89
        Processor removeTimedBlock:flushBlock
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    90
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    91
    super destroy
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    92
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    93
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    94
!TextCollector methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    95
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    96
collect:aBoolean
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    97
    "turn on collecting - i.e. do not output immediately
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    98
     but collect text and output en-bloque after some time
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    99
     delta"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   100
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   101
    collecting := aBoolean
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   102
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   103
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   104
lineLimit:aNumber
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   105
    "define the number of text-lines I am supposed to hold"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   106
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   107
    lineLimit := aNumber
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   108
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   109
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   110
destroyAction:aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   111
    "define the action to be performed when I get destroyed"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   112
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   113
    destroyAction := aBlock
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   114
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   115
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
endEntry
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   117
    "flush collected output"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   118
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   119
    |nLines|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   120
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   121
    "insert the bunch of lines - if any"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   122
    nLines := outstandingLines size.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   123
    (nLines ~~ 0) ifTrue:[
3
claus
parents: 0
diff changeset
   124
"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   125
        outstandingLines do:[:line |
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   126
            self insertStringAtCursor:line.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   127
            self insertCharAtCursor:(Character cr)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   128
        ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   129
"
3
claus
parents: 0
diff changeset
   130
" "
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   131
        self insertLines:outstandingLines withCr:true.
3
claus
parents: 0
diff changeset
   132
" "
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   133
        self withCursorOffDo:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   134
            (cursorLine >= (firstLineShown + nFullLinesShown)) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   135
                self scrollDown:nLines
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   136
            ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   137
        ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   138
        outstandingLines grow:0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   139
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   140
    "and the last partial line - if any"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   141
    outstandingLine notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   142
        flushPending := false.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   143
        self nextPut:outstandingLine.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   144
        outstandingLine := nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   145
    ].
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   146
    Processor removeTimedBlock:flushBlock.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   147
    flushPending := false
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   148
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   149
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   150
!TextCollector methodsFor:'private'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   151
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   152
checkLineLimit
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   153
    "this method checks if the text has become too large (> lineLimit)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   154
     and cuts off some lines at the top if so; it must be called whenever lines
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   155
     have been added to the bottom"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   156
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
    |nDel|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
    lineLimit notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
        (cursorLine > lineLimit) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
            nDel := list size - lineLimit.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
            list removeFromIndex:1 toIndex:nDel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
            cursorLine := cursorLine - nDel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
            firstLineShown := firstLineShown - nDel.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   165
            (firstLineShown < 1) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
                cursorLine := cursorLine - firstLineShown + 1.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
                firstLineShown := 1
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   168
            ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
            self contentsChanged
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   170
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   171
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   172
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   173
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
!TextCollector methodsFor:'stream messages'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   175
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
lineLength
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   177
    ^ width // (font width)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   178
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   179
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   180
nextPut:something
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   181
    "this allows TextCollectors to be used Stream-wise"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   182
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   183
    flushPending ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   184
        self endEntry
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   185
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   186
    (something isMemberOf:Character) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   187
        ((something == Character cr) or:[something == Character nl]) ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   188
            ^ self cr
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   189
        ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   190
        self insertCharAtCursor:something
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   191
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   192
        self insertStringAtCursor:(something printString).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   193
        self checkLineLimit
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   194
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   195
    device synchronizeOutput
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   196
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   197
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   198
nextPutAll:something
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   199
    "this allows TextCollectors to be used Stream-wise"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   200
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   201
    ^ self nextPut:something
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   202
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   203
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   204
cr
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   205
    collecting ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   206
        outstandingLines add:outstandingLine.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   207
        outstandingLine := nil.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   208
        flushPending ifFalse:[
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   209
            Processor addTimedBlock:flushBlock after:0.2.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   210
            flushPending := true
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   211
        ] ifTrue:[
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   212
            Processor evaluateTimeouts
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   213
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   214
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   215
        self cursorReturn.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   216
        self checkLineLimit
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   217
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   218
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   219
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   220
show:anObject
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   221
    "insert the argument aString at current cursor position"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   222
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   223
    |aString|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   224
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   225
    aString := anObject printString.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   226
    collecting ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   227
        outstandingLine notNil ifTrue:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   228
            outstandingLine := outstandingLine , aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   229
        ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   230
            outstandingLine := aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   231
        ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   232
        flushPending ifFalse:[
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   233
            Processor addTimedBlock:flushBlock after:0.2.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   234
            flushPending := true
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   235
        ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   236
    ] ifFalse:[
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   237
        self nextPut:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   238
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   239
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   240
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   241
showCr:aString
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   242
    "insert the argument aString followed by a newline
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   243
     at current cursor position"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   244
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   245
    self show:aString.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   246
    self cr
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   247
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   248
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   249
doesNotUnderstand:aMessage
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   250
    "this is funny: all message we do not understand, are passed
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   251
     on to the stream which will send the characters via nextPut:
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   252
     This way, we understand all Stream messages - great isn't it !!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   253
    "
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   254
     ^ entryStream perform:(aMessage selector)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   255
             withArguments:(aMessage arguments)
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   256
! !