ShellView.st
author tz
Thu, 19 Feb 1998 19:25:20 +0100
changeset 652 75644c11d619
parent 643 d6e1a9fced34
child 757 d28fb65967a9
permissions -rw-r--r--
label 'Filter:' added to avoid using as file name input field
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
643
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
     1
"
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
     2
 COPYRIGHT (c) 1997 by eXept Software AG
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
     3
              All Rights Reserved
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
     4
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
     5
 This software is furnished under a license and may be used
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
     7
 inclusion of the above copyright notice. This software may not
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
     9
 other person. No title to or ownership of the software is
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    10
 hereby transferred.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    11
"
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    12
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    13
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    14
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    15
ApplicationModel subclass:#ShellView
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    16
	instanceVariableNames:'task directory commands currentCommand numberOfMaxLines'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    17
	classVariableNames:''
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    18
	poolDictionaries:''
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    19
	category:'Interface-Support'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    20
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    21
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    22
!ShellView class methodsFor:'documentation'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    23
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    24
copyright
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    25
"
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    26
 COPYRIGHT (c) 1997 by eXept Software AG
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    27
              All Rights Reserved
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    28
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    29
 This software is furnished under a license and may be used
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    30
 only in accordance with the terms of that license and with the
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    31
 inclusion of the above copyright notice. This software may not
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    32
 be provided or otherwise made available to, or used by, any
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    33
 other person. No title to or ownership of the software is
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    34
 hereby transferred.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    35
"
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    36
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    37
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    38
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    39
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    40
documentation
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    41
"
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    42
    [author:]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    43
        Thomas Zwick
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    44
"
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    45
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    46
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    47
! !
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    48
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    49
!ShellView class methodsFor:'interface specs'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    50
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    51
windowSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    52
    "this window spec was automatically generated by the ST/X UIPainter"
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    53
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    54
    "do not manually edit this - the painter/builder may not be able to
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    55
     handle the specification if its corrupted."
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    56
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    57
    "
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    58
     UIPainter new openOnClass:ShellView andSelector:#windowSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    59
     ShellView new openInterface:#windowSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    60
    "
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    61
    "ShellView open"
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    62
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    63
    <resource: #canvas>
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    64
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    65
    ^
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    66
     
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    67
       #(#FullSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    68
          #'window:' 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    69
           #(#WindowSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    70
              #'name:' 'unnamed canvas'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    71
              #'layout:' #(#LayoutFrame 197 0 172 0 496 0 440 0)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    72
              #'label:' 'unnamed canvas'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    73
              #'min:' #(#Point 10 10)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    74
              #'max:' #(#Point 1152 864)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    75
              #'bounds:' #(#Rectangle 197 172 497 441)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    76
              #'usePreferredExtent:' false
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    77
          )
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    78
          #'component:' 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    79
           #(#SpecCollection
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    80
              #'collection:' 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    81
               #(
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    82
                 #(#TextEditorSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    83
                    #'name:' 'fileContentsView'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    84
                    #'layout:' #(#LayoutFrame 0 0 0 0.0 0 1 -22 1)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    85
                    #'model:' #valueOfFileContents
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    86
                    #'hasHorizontalScrollBar:' true
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    87
                    #'hasVerticalScrollBar:' true
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    88
                    #'miniScrollerHorizontal:' true
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    89
                )
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    90
                 #(#SequenceViewSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    91
                    #'name:' 'shellOutputView'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    92
                    #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -22 1.0)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    93
                    #'model:' #selectionOfShellOutput
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    94
                    #'style:' #(#FontDescription #courier #medium #roman 12)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    95
                    #'hasHorizontalScrollBar:' true
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    96
                    #'hasVerticalScrollBar:' true
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    97
                    #'miniScrollerHorizontal:' true
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    98
                    #'doubleClickSelector:' #'listDoubleClicked:'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
    99
                    #'useIndex:' true
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   100
                    #'sequenceList:' #listOfShellOutput
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   101
                )
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   102
                 #(#ActionButtonSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   103
                    #'name:' 'fileNameButton'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   104
                    #'layout:' #(#LayoutFrame 0 0.0 -22 1 -60 1.0 0 1.0)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   105
                    #'model:' #toggleViews
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   106
                )
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   107
                 #(#ActionButtonSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   108
                    #'name:' 'saveButton'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   109
                    #'layout:' #(#LayoutFrame -60 1 -22 1 0 1.0 0 1.0)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   110
                    #'label:' 'Save'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   111
                    #'model:' #saveFileContents
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   112
                )
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   113
                 #(#ActionButtonSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   114
                    #'name:' 'stopButton'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   115
                    #'layout:' #(#LayoutFrame 0 0 -22 1 0 1.0 0 1)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   116
                    #'label:' 'Stop'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   117
                    #'model:' #terminateTask
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   118
                )
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   119
                 #(#InputFieldSpec
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   120
                    #'name:' 'commandInputField'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   121
                    #'layout:' #(#LayoutFrame 0 0 -22 1 0 1.0 0 1)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   122
                    #'model:' #valueOfCommand
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   123
                    #'type:' #string
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   124
                    #'acceptOnReturn:' false
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   125
                    #'acceptOnTab:' false
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   126
                )
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   127
              )
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   128
          )
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   129
      )
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   130
! !
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   131
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   132
!ShellView methodsFor:'accessing'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   133
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   134
directory
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   135
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   136
    ^directory ? (directory := Filename currentDirectory asAbsoluteFilename name) 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   137
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   138
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   139
directory: aDirectory
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   140
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   141
    directory := aDirectory asFilename asAbsoluteFilename name
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   142
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   143
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   144
numberOfMaxLines
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   145
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   146
    ^numberOfMaxLines ? (numberOfMaxLines := 500)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   147
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   148
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   149
numberOfMaxLines: anInteger
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   150
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   151
    numberOfMaxLines := anInteger
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   152
! !
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   153
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   154
!ShellView methodsFor:'accessing - views'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   155
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   156
commandInputField
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   157
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   158
    ^builder componentAt: #commandInputField
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   159
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   160
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   161
fileContentsView
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   162
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   163
    ^builder componentAt: #fileContentsView
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   164
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   165
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   166
fileNameButton
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   167
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   168
    ^builder componentAt: #fileNameButton
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   169
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   170
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   171
saveButton
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   172
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   173
    ^builder componentAt: #saveButton
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   174
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   175
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   176
shellOutputView
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   177
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   178
    ^builder componentAt: #shellOutputView
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   179
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   180
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   181
stopButton
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   182
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   183
    ^builder componentAt: #stopButton
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   184
! !
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   185
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   186
!ShellView methodsFor:'actions'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   187
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   188
executeCommand: aCommand
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   189
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   190
    |s|       
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   191
    aCommand isNil | task notNil | directory isNil ifTrue: [^nil].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   192
    aCommand key size = 0 ifTrue: [^aCommand key: ''].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   193
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   194
    self valueOfCommand value: ''.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   195
    self listOfShellOutput
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   196
        at: self listOfShellOutput size
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   197
        put: self getDirectoryTextString, (Text string: aCommand key color: Color blue).
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   198
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   199
    aCommand key trimBlanks = 'clear'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   200
    ifTrue: 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   201
    [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   202
        self shellOutputView raise.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   203
        ^self listOfShellOutput contents: (Array with: self getDirectoryTextString).
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   204
    ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   205
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   206
    (((s := aCommand key readStream) nextWord = 'cd') and: [(s next = Character space) | s atEnd])
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   207
    ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   208
    [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   209
        s := s upToEnd trimBlanks.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   210
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   211
        s size = 0
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   212
        ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   213
        [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   214
            s := Filename homeDirectory
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   215
        ]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   216
        ifFalse: 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   217
        [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   218
            s first = $/
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   219
                ifTrue: [s := s asFilename]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   220
                ifFalse: [s := self directory asFilename constructDirectory: s]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   221
        ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   222
        (s exists and: [s isDirectory])
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   223
        ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   224
        [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   225
            directory := s name.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   226
            ^self listOfShellOutput contents: (Array with: self getDirectoryTextString).
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   227
        ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   228
    ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   229
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   230
    self stopButton raise.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   231
    self shellOutputView raise.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   232
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   233
    self
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   234
        execute: aCommand key
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   235
        exit:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   236
        [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   237
            self commandInputField raise.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   238
            aCommand value: true. 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   239
            self executeNextCommand.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   240
            self append: self getDirectoryTextString
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   241
        ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   242
! !
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   243
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   244
!ShellView methodsFor:'aspects'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   245
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   246
listOfShellOutput
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   247
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   248
    |holder|
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   249
    (holder := builder bindingAt:#listOfShellOutput) isNil ifTrue:[
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   250
        builder aspectAt:#listOfShellOutput put:(holder :=  List new).
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   251
        holder add: self getDirectoryTextString
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   252
    ].  
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   253
    ^holder
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   254
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   255
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   256
selectionOfShellOutput
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   257
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   258
    |holder|              
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   259
    (holder := builder bindingAt:#selectionOfShellOutput) isNil ifTrue:[
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   260
        builder aspectAt:#selectionOfShellOutput put: (holder := 1 asValue)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   261
    ]. 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   262
    ^holder
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   263
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   264
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   265
valueOfCommand
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   266
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   267
    |holder|
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   268
    (holder := builder bindingAt:#valueOfCommand) isNil ifTrue:[
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   269
        builder aspectAt:#valueOfCommand put:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   270
            (holder :=  AspectAdaptor new subject: self; forAspect: #currentCommand).
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   271
    ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   272
    ^ holder       
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   273
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   274
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   275
valueOfFileContents
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   276
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   277
    |holder|
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   278
    (holder := builder bindingAt:#valueOfFileContents) isNil ifTrue:[
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   279
        builder aspectAt:#valueOfFileContents put:(holder :=  ValueHolder new).
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   280
    ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   281
    ^holder    
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   282
! !
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   283
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   284
!ShellView methodsFor:'callbacks'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   285
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   286
listDoubleClicked: anLineIndex
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   287
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   288
    |stream streamAtLine possibleFileName selectedFileName fileFound|
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   289
    possibleFileName := ''.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   290
    stream := (self listOfShellOutput at: anLineIndex) readStream.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   291
    fileFound := false.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   292
    [stream atEnd | fileFound]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   293
    whileFalse: 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   294
    [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   295
        possibleFileName := possibleFileName, stream next.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   296
        ((((selectedFileName := possibleFileName) asFilename exists) or:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   297
        [(selectedFileName := directory, Filename separator, possibleFileName) asFilename exists])
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   298
         and: [selectedFileName asFilename isDirectory not])
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   299
        ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   300
        [   
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   301
            |possibleLineIndex listSize lineNumber|
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   302
            fileFound := true.  
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   303
            self openFile: selectedFileName.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   304
            [stream atEnd | lineNumber notNil]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   305
            whileFalse: 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   306
            [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   307
                lineNumber := Integer readFrom: stream nextAlphaNumericWord onError: nil.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   308
            ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   309
            lineNumber := lineNumber ? 1.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   310
            listSize := self fileContentsView list size.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   311
            (lineNumber between: 1 and: listSize)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   312
            ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   313
            [          
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   314
                self fileContentsView selectLine: lineNumber
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   315
            ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   316
            lineNumber > listSize
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   317
            ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   318
            [          
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   319
                self fileContentsView selectLine: listSize
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   320
            ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   321
        ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   322
    ]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   323
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   324
! !
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   325
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   326
!ShellView methodsFor:'private'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   327
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   328
append:anElement
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   329
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   330
    anElement notNil
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   331
    ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   332
    [   
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   333
        self listOfShellOutput size > self numberOfMaxLines
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   334
        ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   335
        [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   336
            self listOfShellOutput contents: (self listOfShellOutput copyFrom:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   337
                self listOfShellOutput size - (self numberOfMaxLines//5)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   338
                to: self listOfShellOutput size)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   339
        ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   340
        self listOfShellOutput add: anElement.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   341
        self selectionOfShellOutput value: self listOfShellOutput size.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   342
    ]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   343
           
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   344
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   345
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   346
execute: cmd exit:exitAction
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   347
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   348
    |outStream|
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   349
    self terminateTask.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   350
    outStream:= PipeStream readingFrom: cmd errorDisposition:#inline inDirectory: directory.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   351
    task :=
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   352
    [          
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   353
        [      
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   354
            outStream canReadWithoutBlocking
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   355
            ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   356
            [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   357
                outStream readWait.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   358
                self append: (outStream upTo: Character cr).
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   359
            ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   360
        ] doWhile:[outStream atEnd not]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   361
    ] forkAt: Processor userBackgroundPriority.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   362
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   363
    task addExitAction:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   364
    [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   365
        task := nil.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   366
        outStream shutDown.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   367
        exitAction value
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   368
    ]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   369
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   370
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   371
executeNextCommand
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   372
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   373
    self executeCommand: (commands detect: [:str| str value = false] ifNone: nil)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   374
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   375
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   376
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   377
getDirectoryTextString
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   378
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   379
    ^Text string: ('[',self directory, '] > ') emphasis: #bold
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   380
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   381
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   382
listDirectory: dir
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   383
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   384
    |s match d|   
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   385
    match := (dir name copy reverse upTo: Filename separator) reverse.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   386
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   387
    s := dir name copy reverse readStream.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   388
    s through: Filename separator.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   389
    s := s upToEnd reverse.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   390
    dir name = Filename separator asString ifTrue: [s := Filename separator asString].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   391
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   392
    ((d := dir) isDirectory or:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   393
    [((d := s asFilename) isDirectory or:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   394
    [(d := directory asFilename construct: s) isDirectory])])
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   395
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   396
     ifTrue: [        
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   397
    d directoryContents do:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   398
    [:dirEntry|      
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   399
        ((match, '*') match: dirEntry) ifTrue: [self append:dirEntry]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   400
    ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   401
    self append: self getDirectoryTextString
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   402
    ]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   403
! !
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   404
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   405
!ShellView methodsFor:'selection'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   406
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   407
currentCommand
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   408
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   409
    ^currentCommand
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   410
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   411
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   412
currentCommand: aString
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   413
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   414
    self commandInputField crAction: [self executeCommands: (Array with: currentCommand)].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   415
    self commandInputField entryCompletionBlock:[:contents |
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   416
        |newString|
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   417
        newString := Filename 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   418
                        filenameCompletionFor:contents 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   419
                        directory:directory asFilename
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   420
                        directoriesOnly:false 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   421
                        filesOnly:false 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   422
                        ifMultiple:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   423
                            [:dir |
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   424
                                self listDirectory: dir.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   425
                                self commandInputField flash.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   426
                            ].            
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   427
        self commandInputField contents:newString.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   428
        self commandInputField cursorToEndOfLine.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   429
    ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   430
    currentCommand := aString.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   431
    self listOfShellOutput size > 0
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   432
    ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   433
    [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   434
        self listOfShellOutput
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   435
            at: self listOfShellOutput size
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   436
            put: self getDirectoryTextString, currentCommand
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   437
    ].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   438
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   439
! !
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   440
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   441
!ShellView methodsFor:'user actions'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   442
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   443
executeCommands: aStingCollection
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   444
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   445
    commands := aStingCollection collect: [:str| str->false].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   446
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   447
    self executeNextCommand
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   448
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   449
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   450
openFile: aFileName
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   451
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   452
    |fileName|
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   453
    task isNil & (((fileName := aFileName asFilename) exists)
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   454
    or: [(fileName := directory asFilename construct: fileName) exists])
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   455
    ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   456
    [        
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   457
        self fileNameButton raise; sizeFixed: true;label: fileName name.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   458
        self fileContentsView raise.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   459
        self saveButton raise.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   460
        Stream readErrorSignal
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   461
        handle:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   462
        [:ex|
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   463
            self warn: 'Reading file contents failed!!'.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   464
            self toggleViews.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   465
        ]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   466
        do:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   467
        [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   468
            self valueOfFileContents value: fileName contentsOfEntireFile
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   469
        ]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   470
    ]  
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   471
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   472
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   473
saveFileContents
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   474
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   475
    self fileContentsView saveAs: self fileNameButton label
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   476
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   477
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   478
terminateTask
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   479
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   480
    task notNil ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   481
    [ 
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   482
        task terminate.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   483
        task := nil
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   484
    ]   
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   485
!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   486
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   487
toggleViews
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   488
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   489
    self fileNameButton label isEmpty
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   490
    ifFalse:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   491
    [
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   492
        task notNil
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   493
            ifTrue: [self stopButton raise]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   494
            ifFalse: [self commandInputField raise].
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   495
        self shellOutputView raise.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   496
        self fileNameButton sizeFixed: true; label: ''.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   497
        self valueOfFileContents value: ''.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   498
    ]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   499
    ifTrue:
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   500
    [         
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   501
        self fileNameButton raise.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   502
        self infoLabel raise.
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   503
        self fileContentsView raise
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   504
    ]
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   505
! !
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   506
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   507
!ShellView class methodsFor:'documentation'!
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   508
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   509
version
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   510
    ^ '$Header$'
d6e1a9fced34 initial checkin
tz
parents:
diff changeset
   511
! !