FilenameEditField.st
author ca
Tue, 28 Jan 1997 12:50:40 +0100
changeset 289 032b49184de6
parent 163 c9235372f589
child 473 b219215b326b
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12
30f48431927b Initial revision
claus
parents:
diff changeset
     1
"
30f48431927b Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1994 by Claus Gittinger
25
e07adf47d209 *** empty log message ***
claus
parents: 24
diff changeset
     3
	      All Rights Reserved
12
30f48431927b Initial revision
claus
parents:
diff changeset
     4
30f48431927b Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
30f48431927b Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
30f48431927b Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
30f48431927b Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
30f48431927b Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
30f48431927b Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
30f48431927b Initial revision
claus
parents:
diff changeset
    11
"
30f48431927b Initial revision
claus
parents:
diff changeset
    12
136
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    13
EditField subclass:#FilenameEditField
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    14
	instanceVariableNames:'directoriesOnly filesOnly directory'
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    15
	classVariableNames:''
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    16
	poolDictionaries:''
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    17
	category:'Views-Text'
12
30f48431927b Initial revision
claus
parents:
diff changeset
    18
!
30f48431927b Initial revision
claus
parents:
diff changeset
    19
30f48431927b Initial revision
claus
parents:
diff changeset
    20
!FilenameEditField class methodsFor:'documentation'!
30f48431927b Initial revision
claus
parents:
diff changeset
    21
30f48431927b Initial revision
claus
parents:
diff changeset
    22
copyright
30f48431927b Initial revision
claus
parents:
diff changeset
    23
"
30f48431927b Initial revision
claus
parents:
diff changeset
    24
 COPYRIGHT (c) 1994 by Claus Gittinger
25
e07adf47d209 *** empty log message ***
claus
parents: 24
diff changeset
    25
	      All Rights Reserved
12
30f48431927b Initial revision
claus
parents:
diff changeset
    26
30f48431927b Initial revision
claus
parents:
diff changeset
    27
 This software is furnished under a license and may be used
30f48431927b Initial revision
claus
parents:
diff changeset
    28
 only in accordance with the terms of that license and with the
30f48431927b Initial revision
claus
parents:
diff changeset
    29
 inclusion of the above copyright notice.   This software may not
30f48431927b Initial revision
claus
parents:
diff changeset
    30
 be provided or otherwise made available to, or used by, any
30f48431927b Initial revision
claus
parents:
diff changeset
    31
 other person.  No title to or ownership of the software is
30f48431927b Initial revision
claus
parents:
diff changeset
    32
 hereby transferred.
30f48431927b Initial revision
claus
parents:
diff changeset
    33
"
30f48431927b Initial revision
claus
parents:
diff changeset
    34
!
30f48431927b Initial revision
claus
parents:
diff changeset
    35
30f48431927b Initial revision
claus
parents:
diff changeset
    36
documentation
30f48431927b Initial revision
claus
parents:
diff changeset
    37
"
24
6704fad5eb7d *** empty log message ***
claus
parents: 16
diff changeset
    38
    like a normal editField, but does filename-completion on the last word of
6704fad5eb7d *** empty log message ***
claus
parents: 16
diff changeset
    39
    the contents, when TAB is pressed.
43
3bbd1b494273 *** empty log message ***
claus
parents: 34
diff changeset
    40
    Filename completion ignores regular files if directoriesOnly is true,
3bbd1b494273 *** empty log message ***
claus
parents: 34
diff changeset
    41
    and ignores directories, if filesOnly is true. Both default to false.
158
431e38dfc5ab documentation
Claus Gittinger <cg@exept.de>
parents: 152
diff changeset
    42
431e38dfc5ab documentation
Claus Gittinger <cg@exept.de>
parents: 152
diff changeset
    43
    [author:]
431e38dfc5ab documentation
Claus Gittinger <cg@exept.de>
parents: 152
diff changeset
    44
        Claus Gittinger
12
30f48431927b Initial revision
claus
parents:
diff changeset
    45
"
30f48431927b Initial revision
claus
parents:
diff changeset
    46
! !
30f48431927b Initial revision
claus
parents:
diff changeset
    47
136
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    48
!FilenameEditField methodsFor:'accessing'!
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    49
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    50
directoriesOnly
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    51
    "set to expand names for directories only"
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    52
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    53
    directoriesOnly := true.
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    54
!
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    55
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    56
directory
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    57
    ^ directory
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    58
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    59
    "Modified: 7.9.1995 / 10:12:40 / claus"
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    60
!
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    61
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    62
directory:aFilename
152
afffa460256a handle a nil directory
ca
parents: 136
diff changeset
    63
    aFilename isNil ifTrue:[
afffa460256a handle a nil directory
ca
parents: 136
diff changeset
    64
        directory := Filename currentDirectory
afffa460256a handle a nil directory
ca
parents: 136
diff changeset
    65
    ] ifFalse:[
afffa460256a handle a nil directory
ca
parents: 136
diff changeset
    66
        directory := aFilename asFilename
afffa460256a handle a nil directory
ca
parents: 136
diff changeset
    67
    ]
136
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    68
    "Modified: 7.9.1995 / 10:12:55 / claus"
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    69
!
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    70
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    71
filesOnly
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    72
    "set to expand names for files only"
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    73
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    74
    filesOnly := true.
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    75
!
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    76
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    77
initialText:aString selected:aBoolean
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    78
    "move the cursor to the end - thats the most interesting part of
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    79
     a filename
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    80
    "
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    81
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    82
    super initialText:aString selected:aBoolean.
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    83
    self cursorToEndOfLine.
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    84
!
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    85
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    86
showsDirectoriesOnly
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    87
    "return if expanding names for directories only"
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    88
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    89
    ^ directoriesOnly
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    90
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    91
    "Modified: 6.9.1995 / 20:35:30 / claus"
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    92
!
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    93
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    94
showsFilesOnly
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    95
    "return if expanding names for files only"
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    96
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    97
    ^ filesOnly
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    98
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
    99
    "Modified: 6.9.1995 / 20:34:57 / claus"
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   100
! !
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   101
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   102
!FilenameEditField methodsFor:'event handling'!
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   103
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   104
keyPress:key x:x y:y
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   105
    "handle tab for filename completion.
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   106
     Bug: it completes the last word; it should complete the
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   107
          word before the cursor."
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   108
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   109
    <resource: #keyboard ( #Tab #FilenameCompletion ) >
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   110
289
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   111
    |oldContents newContents|
136
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   112
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   113
    enabled ifTrue:[
289
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   114
        ((key == entryCompletionCharacter)
136
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   115
        or:[key == #FilenameCompletion]) ifTrue:[
289
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   116
            oldContents := self contents.
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   117
            oldContents isNil ifTrue:[
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   118
                oldContents := ''
136
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   119
            ] ifFalse:[
289
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   120
                oldContents := oldContents asString
136
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   121
            ].
289
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   122
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   123
            entryCompletionBlock value:oldContents.
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   124
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   125
            newContents := self contents.
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   126
            newContents isNil ifTrue:[
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   127
                newContents := ''
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   128
            ] ifFalse:[
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   129
                newContents := newContents asString
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   130
            ].
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   131
            newContents ~= oldContents ifTrue:[
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   132
                self textChanged
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   133
            ].
136
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   134
            ^ self
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   135
        ]
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   136
    ].
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   137
    ^ super keyPress:key x:x y:y.
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   138
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   139
    "Modified: 7.3.1996 / 13:16:49 / cg"
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   140
! !
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   141
72
claus
parents: 71
diff changeset
   142
!FilenameEditField methodsFor:'initialization'!
claus
parents: 71
diff changeset
   143
claus
parents: 71
diff changeset
   144
initialize
claus
parents: 71
diff changeset
   145
    super initialize.
claus
parents: 71
diff changeset
   146
    directoriesOnly := filesOnly := false.
claus
parents: 71
diff changeset
   147
    directory := '.' asFilename.
claus
parents: 71
diff changeset
   148
78
claus
parents: 75
diff changeset
   149
    entryCompletionBlock := [:contents |
163
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   150
        |newString|
78
claus
parents: 75
diff changeset
   151
163
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   152
        newString := Filename 
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   153
                        filenameCompletionFor:contents 
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   154
                        directory:directory 
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   155
                        directoriesOnly:directoriesOnly 
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   156
                        filesOnly:filesOnly 
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   157
                        ifMultiple:[:dir |
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   158
                            dir asFilename isDirectory ifTrue:[
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   159
                                self changed:#directory with:dir.
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   160
                            ].
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   161
                            self flash.
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   162
                        ].
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   163
        self contents:newString.
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   164
        self cursorToEndOfLine.
72
claus
parents: 71
diff changeset
   165
    ].
claus
parents: 71
diff changeset
   166
claus
parents: 71
diff changeset
   167
    "Modified: 7.9.1995 / 10:20:46 / claus"
163
c9235372f589 oops - directoryChange was send even if not a directory
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   168
    "Modified: 30.4.1996 / 10:45:38 / cg"
43
3bbd1b494273 *** empty log message ***
claus
parents: 34
diff changeset
   169
!
3bbd1b494273 *** empty log message ***
claus
parents: 34
diff changeset
   170
34
159147b254e1 *** empty log message ***
claus
parents: 32
diff changeset
   171
realize
113
984d84d796c8 interest is written with one 'r' (shame on me)
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   172
    "move the cursor to the end - thats the most interesting part of
34
159147b254e1 *** empty log message ***
claus
parents: 32
diff changeset
   173
     a filename
159147b254e1 *** empty log message ***
claus
parents: 32
diff changeset
   174
    "
159147b254e1 *** empty log message ***
claus
parents: 32
diff changeset
   175
    super realize.
159147b254e1 *** empty log message ***
claus
parents: 32
diff changeset
   176
    self cursorToEndOfLine.
159147b254e1 *** empty log message ***
claus
parents: 32
diff changeset
   177
! !
159147b254e1 *** empty log message ***
claus
parents: 32
diff changeset
   178
136
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   179
!FilenameEditField class methodsFor:'documentation'!
43
3bbd1b494273 *** empty log message ***
claus
parents: 34
diff changeset
   180
136
e1a32c55876a resources
Claus Gittinger <cg@exept.de>
parents: 113
diff changeset
   181
version
289
032b49184de6 *** empty log message ***
ca
parents: 163
diff changeset
   182
    ^ '$Header: /cvs/stx/stx/libwidg2/FilenameEditField.st,v 1.23 1997-01-28 11:50:40 ca Exp $'
34
159147b254e1 *** empty log message ***
claus
parents: 32
diff changeset
   183
! !