FilenameEditFieldV2.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 14 Jun 2018 22:19:39 +0100
branchjv
changeset 18227 d25a407ba86d
parent 16869 2ecababdd4c0
child 18532 cccb41254edf
permissions -rw-r--r--
Mini testrunner: show "green" if there's at least one pass and rest is pass or skip This is more meaningfull result then showing "gray" if there's at least one skip.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16862
ce13c7c3716a #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 13956
diff changeset
     1
"{ Encoding: utf8 }"
ce13c7c3716a #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 13956
diff changeset
     2
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
     3
"
5140
36c7da05d814 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5012
diff changeset
     4
 COPYRIGHT (c) 2002 by eXept Software AG
36c7da05d814 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5012
diff changeset
     5
              All Rights Reserved
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
     6
1112dd91c97e initial checkin
penk
parents:
diff changeset
     7
 This software is furnished under a license and may be used
1112dd91c97e initial checkin
penk
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
1112dd91c97e initial checkin
penk
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
1112dd91c97e initial checkin
penk
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
1112dd91c97e initial checkin
penk
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
1112dd91c97e initial checkin
penk
parents:
diff changeset
    12
 hereby transferred.
1112dd91c97e initial checkin
penk
parents:
diff changeset
    13
"
1112dd91c97e initial checkin
penk
parents:
diff changeset
    14
"{ Package: 'stx:libtool' }"
1112dd91c97e initial checkin
penk
parents:
diff changeset
    15
16862
ce13c7c3716a #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 13956
diff changeset
    16
"{ NameSpace: Smalltalk }"
ce13c7c3716a #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 13956
diff changeset
    17
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
    18
ComboBoxView subclass:#FilenameEditFieldV2
1112dd91c97e initial checkin
penk
parents:
diff changeset
    19
	instanceVariableNames:'directoriesOnly filesOnly directory acceptOnExpand activeMenu
1112dd91c97e initial checkin
penk
parents:
diff changeset
    20
		completitionList'
1112dd91c97e initial checkin
penk
parents:
diff changeset
    21
	classVariableNames:''
1112dd91c97e initial checkin
penk
parents:
diff changeset
    22
	poolDictionaries:''
1112dd91c97e initial checkin
penk
parents:
diff changeset
    23
	category:'Interface-Tools-File'
1112dd91c97e initial checkin
penk
parents:
diff changeset
    24
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
    25
1112dd91c97e initial checkin
penk
parents:
diff changeset
    26
!FilenameEditFieldV2 class methodsFor:'documentation'!
1112dd91c97e initial checkin
penk
parents:
diff changeset
    27
1112dd91c97e initial checkin
penk
parents:
diff changeset
    28
copyright
1112dd91c97e initial checkin
penk
parents:
diff changeset
    29
"
5140
36c7da05d814 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5012
diff changeset
    30
 COPYRIGHT (c) 2002 by eXept Software AG
36c7da05d814 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5012
diff changeset
    31
              All Rights Reserved
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
    32
1112dd91c97e initial checkin
penk
parents:
diff changeset
    33
 This software is furnished under a license and may be used
1112dd91c97e initial checkin
penk
parents:
diff changeset
    34
 only in accordance with the terms of that license and with the
1112dd91c97e initial checkin
penk
parents:
diff changeset
    35
 inclusion of the above copyright notice.   This software may not
1112dd91c97e initial checkin
penk
parents:
diff changeset
    36
 be provided or otherwise made available to, or used by, any
1112dd91c97e initial checkin
penk
parents:
diff changeset
    37
 other person.  No title to or ownership of the software is
1112dd91c97e initial checkin
penk
parents:
diff changeset
    38
 hereby transferred.
1112dd91c97e initial checkin
penk
parents:
diff changeset
    39
"
1112dd91c97e initial checkin
penk
parents:
diff changeset
    40
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
    41
1112dd91c97e initial checkin
penk
parents:
diff changeset
    42
documentation
1112dd91c97e initial checkin
penk
parents:
diff changeset
    43
"
1112dd91c97e initial checkin
penk
parents:
diff changeset
    44
    like a normal editField, but does filename-completion on the last word of
1112dd91c97e initial checkin
penk
parents:
diff changeset
    45
    the contents, when TAB is pressed.
1112dd91c97e initial checkin
penk
parents:
diff changeset
    46
    Filename completion ignores regular files if directoriesOnly is true,
1112dd91c97e initial checkin
penk
parents:
diff changeset
    47
    and ignores directories, if filesOnly is true. Both default to false.
1112dd91c97e initial checkin
penk
parents:
diff changeset
    48
1112dd91c97e initial checkin
penk
parents:
diff changeset
    49
    [author:]
1112dd91c97e initial checkin
penk
parents:
diff changeset
    50
        Claus Gittinger
1112dd91c97e initial checkin
penk
parents:
diff changeset
    51
"
1112dd91c97e initial checkin
penk
parents:
diff changeset
    52
! !
1112dd91c97e initial checkin
penk
parents:
diff changeset
    53
1112dd91c97e initial checkin
penk
parents:
diff changeset
    54
!FilenameEditFieldV2 methodsFor:'accessing'!
1112dd91c97e initial checkin
penk
parents:
diff changeset
    55
1112dd91c97e initial checkin
penk
parents:
diff changeset
    56
acceptOnExpand
1112dd91c97e initial checkin
penk
parents:
diff changeset
    57
    "return the autoAccept on filename expansion flag.
1112dd91c97e initial checkin
penk
parents:
diff changeset
    58
     The default is true, which means that an expand accepts"
1112dd91c97e initial checkin
penk
parents:
diff changeset
    59
1112dd91c97e initial checkin
penk
parents:
diff changeset
    60
    ^ acceptOnExpand
1112dd91c97e initial checkin
penk
parents:
diff changeset
    61
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
    62
1112dd91c97e initial checkin
penk
parents:
diff changeset
    63
acceptOnExpand:aBoolean
1112dd91c97e initial checkin
penk
parents:
diff changeset
    64
    "set/clear autoAccept on filename expansion.
1112dd91c97e initial checkin
penk
parents:
diff changeset
    65
     The default is true, which means that an expand accepts"
1112dd91c97e initial checkin
penk
parents:
diff changeset
    66
1112dd91c97e initial checkin
penk
parents:
diff changeset
    67
    acceptOnExpand := aBoolean
1112dd91c97e initial checkin
penk
parents:
diff changeset
    68
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
    69
1112dd91c97e initial checkin
penk
parents:
diff changeset
    70
contents:someText
1112dd91c97e initial checkin
penk
parents:
diff changeset
    71
    "redefined to add a trailing file-separator if the displayed
1112dd91c97e initial checkin
penk
parents:
diff changeset
    72
     filename is a directory"
1112dd91c97e initial checkin
penk
parents:
diff changeset
    73
1112dd91c97e initial checkin
penk
parents:
diff changeset
    74
    ^ self
1112dd91c97e initial checkin
penk
parents:
diff changeset
    75
        contents:someText 
1112dd91c97e initial checkin
penk
parents:
diff changeset
    76
        addSeparatorToDirectories:true
1112dd91c97e initial checkin
penk
parents:
diff changeset
    77
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
    78
1112dd91c97e initial checkin
penk
parents:
diff changeset
    79
contents:someText addSeparatorToDirectories:doAddSeparator
1112dd91c97e initial checkin
penk
parents:
diff changeset
    80
    "optionally add a trailing file-separator if the displayed
1112dd91c97e initial checkin
penk
parents:
diff changeset
    81
     filename is a directory."
1112dd91c97e initial checkin
penk
parents:
diff changeset
    82
1112dd91c97e initial checkin
penk
parents:
diff changeset
    83
    |f n|
1112dd91c97e initial checkin
penk
parents:
diff changeset
    84
1112dd91c97e initial checkin
penk
parents:
diff changeset
    85
    n := someText.
1112dd91c97e initial checkin
penk
parents:
diff changeset
    86
    doAddSeparator ifTrue:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
    87
        directoriesOnly ifFalse:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
    88
            someText notNil ifTrue:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
    89
                f := someText asFilename.
1112dd91c97e initial checkin
penk
parents:
diff changeset
    90
                (f exists and:[f isDirectory]) ifTrue:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
    91
                    (f name endsWith:f separator) ifFalse:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
    92
                        n := f name copyWith:f separator
1112dd91c97e initial checkin
penk
parents:
diff changeset
    93
                    ]
1112dd91c97e initial checkin
penk
parents:
diff changeset
    94
                ]
1112dd91c97e initial checkin
penk
parents:
diff changeset
    95
            ].
1112dd91c97e initial checkin
penk
parents:
diff changeset
    96
        ].
1112dd91c97e initial checkin
penk
parents:
diff changeset
    97
    ].
1112dd91c97e initial checkin
penk
parents:
diff changeset
    98
    super contents:n
1112dd91c97e initial checkin
penk
parents:
diff changeset
    99
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   100
1112dd91c97e initial checkin
penk
parents:
diff changeset
   101
directoriesOnly
1112dd91c97e initial checkin
penk
parents:
diff changeset
   102
    "set to expand names for directories only"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   103
1112dd91c97e initial checkin
penk
parents:
diff changeset
   104
    directoriesOnly := true.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   105
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   106
1112dd91c97e initial checkin
penk
parents:
diff changeset
   107
directory
1112dd91c97e initial checkin
penk
parents:
diff changeset
   108
    ^ directory
1112dd91c97e initial checkin
penk
parents:
diff changeset
   109
1112dd91c97e initial checkin
penk
parents:
diff changeset
   110
    "Modified: 7.9.1995 / 10:12:40 / claus"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   111
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   112
1112dd91c97e initial checkin
penk
parents:
diff changeset
   113
directory:aFilename
1112dd91c97e initial checkin
penk
parents:
diff changeset
   114
    aFilename isNil ifTrue:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
   115
        directory := Filename currentDirectory
1112dd91c97e initial checkin
penk
parents:
diff changeset
   116
    ] ifFalse:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
   117
        directory := aFilename asFilename
1112dd91c97e initial checkin
penk
parents:
diff changeset
   118
    ]
1112dd91c97e initial checkin
penk
parents:
diff changeset
   119
    "Modified: 7.9.1995 / 10:12:55 / claus"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   120
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   121
1112dd91c97e initial checkin
penk
parents:
diff changeset
   122
filesOnly
1112dd91c97e initial checkin
penk
parents:
diff changeset
   123
    "set to expand names for files only"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   124
1112dd91c97e initial checkin
penk
parents:
diff changeset
   125
    filesOnly := true.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   126
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   127
1112dd91c97e initial checkin
penk
parents:
diff changeset
   128
initialText:aString selected:aBoolean
16862
ce13c7c3716a #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 13956
diff changeset
   129
    "redefined to move the cursor to the end 
ce13c7c3716a #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 13956
diff changeset
   130
     - that's the most interesting part of a filename
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   131
    "
1112dd91c97e initial checkin
penk
parents:
diff changeset
   132
1112dd91c97e initial checkin
penk
parents:
diff changeset
   133
    super initialText:aString selected:aBoolean.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   134
    self cursorToEndOfLine.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   135
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   136
1112dd91c97e initial checkin
penk
parents:
diff changeset
   137
showsDirectoriesOnly
1112dd91c97e initial checkin
penk
parents:
diff changeset
   138
    "return if expanding names for directories only"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   139
1112dd91c97e initial checkin
penk
parents:
diff changeset
   140
    ^ directoriesOnly
1112dd91c97e initial checkin
penk
parents:
diff changeset
   141
1112dd91c97e initial checkin
penk
parents:
diff changeset
   142
    "Modified: 6.9.1995 / 20:35:30 / claus"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   143
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   144
1112dd91c97e initial checkin
penk
parents:
diff changeset
   145
showsFilesOnly
1112dd91c97e initial checkin
penk
parents:
diff changeset
   146
    "return if expanding names for files only"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   147
1112dd91c97e initial checkin
penk
parents:
diff changeset
   148
    ^ filesOnly
1112dd91c97e initial checkin
penk
parents:
diff changeset
   149
1112dd91c97e initial checkin
penk
parents:
diff changeset
   150
    "Modified: 6.9.1995 / 20:34:57 / claus"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   151
! !
1112dd91c97e initial checkin
penk
parents:
diff changeset
   152
1112dd91c97e initial checkin
penk
parents:
diff changeset
   153
!FilenameEditFieldV2 methodsFor:'initialization'!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   154
1112dd91c97e initial checkin
penk
parents:
diff changeset
   155
initialize
4743
4236ffd981fc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4628
diff changeset
   156
    |myEditor|
4236ffd981fc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4628
diff changeset
   157
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   158
    super initialize.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   159
1112dd91c97e initial checkin
penk
parents:
diff changeset
   160
    acceptOnExpand := true.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   161
    directoriesOnly := filesOnly := false.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   162
    directory := Filename currentDirectory.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   163
"/    self menuButton visibilityChannel:(false asValue).
4743
4236ffd981fc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4628
diff changeset
   164
    myEditor := self editor.
4236ffd981fc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4628
diff changeset
   165
4236ffd981fc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4628
diff changeset
   166
    myEditor entryCompletionBlock: [:contents |
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   167
        |newString isMultiMatch canonContents|
1112dd91c97e initial checkin
penk
parents:
diff changeset
   168
1112dd91c97e initial checkin
penk
parents:
diff changeset
   169
        isMultiMatch := false.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   170
        canonContents := Filename canonicalize:contents.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   171
        newString := Filename 
1112dd91c97e initial checkin
penk
parents:
diff changeset
   172
                        filenameCompletionFor:canonContents 
1112dd91c97e initial checkin
penk
parents:
diff changeset
   173
                        directory:directory 
1112dd91c97e initial checkin
penk
parents:
diff changeset
   174
                        directoriesOnly:directoriesOnly 
1112dd91c97e initial checkin
penk
parents:
diff changeset
   175
                        filesOnly:filesOnly 
1112dd91c97e initial checkin
penk
parents:
diff changeset
   176
                        ifMultiple:[:dir | ]
4373
7db8da324742 checkin from browser
penk
parents: 4364
diff changeset
   177
                        forMultipleDo:[:dir :matchSet |
7db8da324742 checkin from browser
penk
parents: 4364
diff changeset
   178
                            matchSet notEmpty ifTrue:[
4743
4236ffd981fc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 4628
diff changeset
   179
                                myEditor contents:dir name.
4373
7db8da324742 checkin from browser
penk
parents: 4364
diff changeset
   180
                                completitionList := matchSet asList.
7db8da324742 checkin from browser
penk
parents: 4364
diff changeset
   181
                                self action:[: string |  | newFile |
4530
d44a82caf67e error on enter in ComboBoxList gets the items from the upper menues
penk
parents: 4373
diff changeset
   182
                                    string isString ifTrue:[
d44a82caf67e error on enter in ComboBoxList gets the items from the upper menues
penk
parents: 4373
diff changeset
   183
                                        newFile := string asFilename.
5012
47e675b8c9fe removed unused keyPress method
Claus Gittinger <cg@exept.de>
parents: 4743
diff changeset
   184
                                        (newFile exists and:[newFile isDirectory]) ifTrue:[
47e675b8c9fe removed unused keyPress method
Claus Gittinger <cg@exept.de>
parents: 4743
diff changeset
   185
                                            (newFile name endsWith:newFile separator) ifFalse:[
47e675b8c9fe removed unused keyPress method
Claus Gittinger <cg@exept.de>
parents: 4743
diff changeset
   186
                                                 myEditor contents:(newFile name copyWith:newFile separator)
47e675b8c9fe removed unused keyPress method
Claus Gittinger <cg@exept.de>
parents: 4743
diff changeset
   187
                                            ].
4530
d44a82caf67e error on enter in ComboBoxList gets the items from the upper menues
penk
parents: 4373
diff changeset
   188
                                        ].
d44a82caf67e error on enter in ComboBoxList gets the items from the upper menues
penk
parents: 4373
diff changeset
   189
                                    ]
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   190
                                ].
4373
7db8da324742 checkin from browser
penk
parents: 4364
diff changeset
   191
                                self pullMenu.
7db8da324742 checkin from browser
penk
parents: 4364
diff changeset
   192
                                completitionList := nil.
7db8da324742 checkin from browser
penk
parents: 4364
diff changeset
   193
                                isMultiMatch := true.
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   194
                            ].
1112dd91c97e initial checkin
penk
parents:
diff changeset
   195
                        ].
6250
5b0673ccff1c refactored intention revealing code:
Claus Gittinger <cg@exept.de>
parents: 6128
diff changeset
   196
        isMultiMatch ifFalse:[
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   197
            newString asFilename pathName = canonContents ifTrue:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
   198
                [self flash] fork.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   199
            ].
1112dd91c97e initial checkin
penk
parents:
diff changeset
   200
1112dd91c97e initial checkin
penk
parents:
diff changeset
   201
            self contents:newString addSeparatorToDirectories:isMultiMatch not.
6446
5d2119be7b34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
   202
            myEditor cursorToEndOfLine.
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   203
        ]
1112dd91c97e initial checkin
penk
parents:
diff changeset
   204
    ].
1112dd91c97e initial checkin
penk
parents:
diff changeset
   205
1112dd91c97e initial checkin
penk
parents:
diff changeset
   206
    "Modified: 7.9.1995 / 10:20:46 / claus"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   207
    "Modified: 7.9.1997 / 23:51:47 / cg"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   208
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   209
1112dd91c97e initial checkin
penk
parents:
diff changeset
   210
realize
16862
ce13c7c3716a #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 13956
diff changeset
   211
    "redefined to move the cursor to the end 
ce13c7c3716a #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 13956
diff changeset
   212
     - that's the most interesting part of a filename
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   213
    "
1112dd91c97e initial checkin
penk
parents:
diff changeset
   214
    super realize.
6446
5d2119be7b34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6250
diff changeset
   215
    self editor cursorToEndOfLine.
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   216
1112dd91c97e initial checkin
penk
parents:
diff changeset
   217
    "Created: 24.7.1997 / 18:21:51 / cg"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   218
! !
1112dd91c97e initial checkin
penk
parents:
diff changeset
   219
1112dd91c97e initial checkin
penk
parents:
diff changeset
   220
!FilenameEditFieldV2 methodsFor:'menu'!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   221
1112dd91c97e initial checkin
penk
parents:
diff changeset
   222
processEvent:anEvent
6128
14b9f89c457f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6104
diff changeset
   223
    "catch keyEvents in pulled menu (see redefined pullMenu-method).
14b9f89c457f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6104
diff changeset
   224
     Return true, if I have eaten the event"
14b9f89c457f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6104
diff changeset
   225
12117
d12665ccf213 changed: #processEvent:
Claus Gittinger <cg@exept.de>
parents: 8798
diff changeset
   226
    <resource: #keyboard (#BackSpace )>
d12665ccf213 changed: #processEvent:
Claus Gittinger <cg@exept.de>
parents: 8798
diff changeset
   227
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   228
    activeMenu notNil ifTrue:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
   229
        anEvent isKeyPressEvent ifTrue:[
8798
7c48ce02da90 added: #handlesKeyPress:inView:
Claus Gittinger <cg@exept.de>
parents: 6446
diff changeset
   230
            "/ typing into the pulled menu behaves like typing into the field
7c48ce02da90 added: #handlesKeyPress:inView:
Claus Gittinger <cg@exept.de>
parents: 6446
diff changeset
   231
            "/ followed by a TAB (to reopen the menu)
7c48ce02da90 added: #handlesKeyPress:inView:
Claus Gittinger <cg@exept.de>
parents: 6446
diff changeset
   232
            (anEvent key isCharacter 
7c48ce02da90 added: #handlesKeyPress:inView:
Claus Gittinger <cg@exept.de>
parents: 6446
diff changeset
   233
            or:[ anEvent key == #BackSpace]) ifTrue:[
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   234
                "/ activeMenu windowGroup removePreEventHook:self.
8798
7c48ce02da90 added: #handlesKeyPress:inView:
Claus Gittinger <cg@exept.de>
parents: 6446
diff changeset
   235
                field dispatchEvent:anEvent.
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   236
1112dd91c97e initial checkin
penk
parents:
diff changeset
   237
                WindowGroup leaveSignal raiseRequest.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   238
                self error:'should not be reached'.
8798
7c48ce02da90 added: #handlesKeyPress:inView:
Claus Gittinger <cg@exept.de>
parents: 6446
diff changeset
   239
            ].
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   240
        ].
1112dd91c97e initial checkin
penk
parents:
diff changeset
   241
    ].
1112dd91c97e initial checkin
penk
parents:
diff changeset
   242
    ^ false.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   243
!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   244
1112dd91c97e initial checkin
penk
parents:
diff changeset
   245
pullMenu
1112dd91c97e initial checkin
penk
parents:
diff changeset
   246
    "pull the menu - triggered from the button"
1112dd91c97e initial checkin
penk
parents:
diff changeset
   247
6104
8159f0753b92 no acceptOnLostFocus for editfield while menue is open
penk
parents: 5140
diff changeset
   248
    |menu origin plug acceptOnLostFocus|
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   249
    
1112dd91c97e initial checkin
penk
parents:
diff changeset
   250
    completitionList notNil ifTrue:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
   251
        self list:completitionList
1112dd91c97e initial checkin
penk
parents:
diff changeset
   252
    ] ifFalse:[
1112dd91c97e initial checkin
penk
parents:
diff changeset
   253
        self list:(listHolder value collect:[:el| el path]).
1112dd91c97e initial checkin
penk
parents:
diff changeset
   254
    ].
1112dd91c97e initial checkin
penk
parents:
diff changeset
   255
    menu := self createPullDownMenuForList:list.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   256
1112dd91c97e initial checkin
penk
parents:
diff changeset
   257
    menu backgroundColor:self editor backgroundColor.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   258
13956
70b04e6814ba class: FilenameEditFieldV2
Stefan Vogel <sv@exept.de>
parents: 12117
diff changeset
   259
    origin := self graphicsDevice translatePoint:(0 @ self height) fromView:self toView:nil.
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   260
1112dd91c97e initial checkin
penk
parents:
diff changeset
   261
    "/ need a callBack when the menu becomes visible, to add an eventHook to
1112dd91c97e initial checkin
penk
parents:
diff changeset
   262
    "/ its windowGroup.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   263
    "/ cannot do this here, since the windowgroup is created later and there is no other
1112dd91c97e initial checkin
penk
parents:
diff changeset
   264
    "/ callback or hook from modal views.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   265
1112dd91c97e initial checkin
penk
parents:
diff changeset
   266
    menu addDependent:(plug := Plug new 
1112dd91c97e initial checkin
penk
parents:
diff changeset
   267
                        respondTo:#'update:with:from:' 
1112dd91c97e initial checkin
penk
parents:
diff changeset
   268
                        with:[:a :b :c | menu windowGroup notNil 
1112dd91c97e initial checkin
penk
parents:
diff changeset
   269
                                                ifTrue:[menu windowGroup addPreEventHook:self].
1112dd91c97e initial checkin
penk
parents:
diff changeset
   270
                                         menu removeDependent:plug]).
1112dd91c97e initial checkin
penk
parents:
diff changeset
   271
    activeMenu := menu.
6104
8159f0753b92 no acceptOnLostFocus for editfield while menue is open
penk
parents: 5140
diff changeset
   272
    "prevent editfield from acceptOnLostFocus events so no accept happen while menue is open"
8159f0753b92 no acceptOnLostFocus for editfield while menue is open
penk
parents: 5140
diff changeset
   273
    acceptOnLostFocus := field acceptOnLostFocus. 
8159f0753b92 no acceptOnLostFocus for editfield while menue is open
penk
parents: 5140
diff changeset
   274
    field acceptOnLostFocus:false.
8798
7c48ce02da90 added: #handlesKeyPress:inView:
Claus Gittinger <cg@exept.de>
parents: 6446
diff changeset
   275
    menu sensor addEventListener:self.
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   276
    menu showAt:origin.
6104
8159f0753b92 no acceptOnLostFocus for editfield while menue is open
penk
parents: 5140
diff changeset
   277
    field acceptOnLostFocus:acceptOnLostFocus.
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   278
    activeMenu := nil.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   279
    pullDownButton turnOff.
1112dd91c97e initial checkin
penk
parents:
diff changeset
   280
! !
1112dd91c97e initial checkin
penk
parents:
diff changeset
   281
1112dd91c97e initial checkin
penk
parents:
diff changeset
   282
!FilenameEditFieldV2 class methodsFor:'documentation'!
1112dd91c97e initial checkin
penk
parents:
diff changeset
   283
1112dd91c97e initial checkin
penk
parents:
diff changeset
   284
version
16862
ce13c7c3716a #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 13956
diff changeset
   285
    ^ '$Header$'
4363
1112dd91c97e initial checkin
penk
parents:
diff changeset
   286
! !
12117
d12665ccf213 changed: #processEvent:
Claus Gittinger <cg@exept.de>
parents: 8798
diff changeset
   287