"
COPYRIGHT (c) 1994 by Claus Gittinger
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
'From Smalltalk/X, Version:3.1.9 on 8-sep-1997 at 12:45:57 am' !
EditField subclass:#FilenameEditField
instanceVariableNames:'directoriesOnly filesOnly directory'
classVariableNames:''
poolDictionaries:''
category:'Views-Text'
!
!FilenameEditField class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 1994 by Claus Gittinger
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
!
documentation
"
like a normal editField, but does filename-completion on the last word of
the contents, when TAB is pressed.
Filename completion ignores regular files if directoriesOnly is true,
and ignores directories, if filesOnly is true. Both default to false.
[author:]
Claus Gittinger
"
! !
!FilenameEditField methodsFor:'accessing'!
directoriesOnly
"set to expand names for directories only"
directoriesOnly := true.
!
directory
^ directory
"Modified: 7.9.1995 / 10:12:40 / claus"
!
directory:aFilename
aFilename isNil ifTrue:[
directory := Filename currentDirectory
] ifFalse:[
directory := aFilename asFilename
]
"Modified: 7.9.1995 / 10:12:55 / claus"
!
filesOnly
"set to expand names for files only"
filesOnly := true.
!
initialText:aString selected:aBoolean
"move the cursor to the end - thats the most interesting part of
a filename
"
super initialText:aString selected:aBoolean.
self cursorToEndOfLine.
!
showsDirectoriesOnly
"return if expanding names for directories only"
^ directoriesOnly
"Modified: 6.9.1995 / 20:35:30 / claus"
!
showsFilesOnly
"return if expanding names for files only"
^ filesOnly
"Modified: 6.9.1995 / 20:34:57 / claus"
! !
!FilenameEditField methodsFor:'event handling'!
keyPress:key x:x y:y
"handle tab for filename completion.
Bug: it completes the last word; it should complete the
word before the cursor."
<resource: #keyboard ( #Tab #FilenameCompletion ) >
|oldContents newContents|
enabled ifTrue:[
((key == entryCompletionCharacter)
or:[key == #FilenameCompletion]) ifTrue:[
oldContents := self contents.
oldContents isNil ifTrue:[
oldContents := ''
] ifFalse:[
oldContents := oldContents asString
].
entryCompletionBlock value:oldContents.
newContents := self contents.
newContents isNil ifTrue:[
newContents := ''
] ifFalse:[
newContents := newContents asString
].
newContents ~= oldContents ifTrue:[
self textChanged
].
^ self
]
].
^ super keyPress:key x:x y:y.
"Modified: 7.3.1996 / 13:16:49 / cg"
! !
!FilenameEditField methodsFor:'initialization'!
initialize
super initialize.
directoriesOnly := filesOnly := false.
directory := Filename currentDirectory.
entryCompletionBlock := [:contents |
|newString|
newString := Filename
filenameCompletionFor:contents
directory:directory
directoriesOnly:directoriesOnly
filesOnly:filesOnly
ifMultiple:[:dir |
dir asFilename isDirectory ifTrue:[
self changed:#directory with:dir.
].
self flash.
].
self contents:newString.
self cursorToEndOfLine.
].
"Modified: 7.9.1995 / 10:20:46 / claus"
"Modified: 7.9.1997 / 23:51:47 / cg"
!
realize
"move the cursor to the end - thats the most interesting part of
a filename
"
super realize.
self cursorToEndOfLine.
"Created: 24.7.1997 / 18:21:51 / cg"
! !
!FilenameEditField class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libwidg2/FilenameEditField.st,v 1.25 1997-09-08 18:46:14 cg Exp $'
! !