EditFieldWithCompletion.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 14 Jun 2018 22:19:39 +0100
branchjv
changeset 18227 d25a407ba86d
parent 18226 346376844040
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:
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
18226
346376844040 Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17379
diff changeset
     3
 COPYRIGHT (c) 2016 Jan Vrany
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	      All Rights Reserved
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 This software is furnished under a license and may be used
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 only in accordance with the terms of that license and with the
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 inclusion of the above copyright notice.   This software may not
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 be provided or otherwise made available to, or used by, any
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 other person.  No title to or ownership of the software is
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 hereby transferred.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"{ Package: 'stx:libtool' }"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
    15
"{ NameSpace: Smalltalk }"
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
    16
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
EditField subclass:#EditFieldWithCompletion
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
    18
	instanceVariableNames:'showOptions optionsHolder optionsView optionsWindow completionJob
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
    19
		tabCompletionJob'
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	category:'Views-Text'
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!EditFieldWithCompletion class methodsFor:'documentation'!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
copyright
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 COPYRIGHT (c) 2006 by eXept Software AG
18226
346376844040 Copyright updates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17379
diff changeset
    30
 COPYRIGHT (c) 2016 Jan Vrany
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	      All Rights Reserved
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 This software is furnished under a license and may be used
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 only in accordance with the terms of that license and with the
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 inclusion of the above copyright notice.   This software may not
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
 be provided or otherwise made available to, or used by, any
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
 other person.  No title to or ownership of the software is
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
 hereby transferred.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
documentation
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
"
17280
021d529b0397 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 17206
diff changeset
    44
    an editfield, which does some completion on the Tab key.
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    [author:]
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
        Jan Vrany (janfrog@bruxa)
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    [instance variables:]
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    [class variables:]
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    [see also:]
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
example_1
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    |top field label value|
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    top := StandardSystemView new.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    top
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
        extent:300 @ 300;
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
        label:'Live class completion field'.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    value := '' asValue.
17206
9ecd8e75182f #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 16982
diff changeset
    66
    field := self new
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
                origin:10 @ 135 corner:280 @ 165;
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
                entryCompletionBlock:[:content | Smalltalk classnameCompletion:content ];
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
                model:value.
17206
9ecd8e75182f #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 16982
diff changeset
    70
    label := Label new
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
                origin:10 @ 95 corner:280 @ 115;
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
                labelChannel:value.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    top
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
        add:field;
17206
9ecd8e75182f #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 16982
diff changeset
    75
        add:label;
9ecd8e75182f #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 16982
diff changeset
    76
        open
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
examples
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    Opens a LiveCompletionEditField on a class name
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
                                                        [exBegin]
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    LiveCompletionEditField example_1
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
                                                        [exEnd]
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
! !
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
!EditFieldWithCompletion methodsFor:'accepting'!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
accept
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    self unselect.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    super accept.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    "Created: / 27-07-2009 / 09:38:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    "Modified: / 12-02-2010 / 11:56:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
! !
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
!EditFieldWithCompletion methodsFor:'accessing-behavior'!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
showOptions
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    ^ showOptions
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
showOptions:aBoolean
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    showOptions := aBoolean.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
! !
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
!EditFieldWithCompletion methodsFor:'accessing-dimensions'!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
absoluteLeft
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
    | absoluteLeft view |
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    absoluteLeft := 1.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
    view := self.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
    [ view notNil ] whileTrue:
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
        [absoluteLeft := absoluteLeft + view left - 1.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
        view := view superView].
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
    ^absoluteLeft
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
    "Created: / 08-08-2009 / 22:30:07 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
absoluteTop
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    | absoluteTop view |
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
    absoluteTop := 1.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    view := self.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
    [ view notNil ] whileTrue:
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
        [absoluteTop := absoluteTop + view top - 1.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
        view := view superView].
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
    ^absoluteTop
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
    "Created: / 08-08-2009 / 22:30:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
! !
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
!EditFieldWithCompletion methodsFor:'accessing-mvc'!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
optionsHolder
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    ^ optionsHolder
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    "Created: / 09-08-2009 / 08:14:02 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
optionsHolder:aValueHolder
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    "set the 'options' value holder (automatically generated)"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    optionsHolder := aValueHolder.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    "Created: / 09-08-2009 / 08:14:24 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
! !
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
!EditFieldWithCompletion methodsFor:'event handling'!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
completion:best options:options 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    |newContent oldContent|
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    "
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    oldContent := ((self contents ? '') asString).
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    newContent := ((best isNil or:[ best = oldContent ]) 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
                and:[ options isNilOrEmptyCollection not ]) 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
                    ifTrue:[
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
                        options first
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
                        ""options inject:options anyOne
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
                            into:[:shortest :each | 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
                                shortest asString size > each asString size ifTrue:[
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
                                    each
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
                                ] ifFalse:[ shortest ]
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
                            ]""
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
                    ]
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
                    ifFalse:[ best ].
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    self contents:newContent asString.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    self cursorCol:oldContent size + 1.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    oldContent size < newContent size ifTrue:[
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
        self 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
            selectFromLine:1
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
            col:oldContent size + 1
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
            toLine:1
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
            col:newContent size
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    ].
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    "
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   182
    true "options size > 1" ifTrue:[
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
        optionsHolder value:options.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
        self showOptionsWindow
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
    ]
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    "Created: / 08-08-2009 / 22:02:29 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
    "Modified: / 09-08-2009 / 08:16:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    "Modified: / 13-02-2010 / 09:51:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
handleNonCommandKey: char
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    super handleNonCommandKey: char.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    self startCompletion
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
    "Modified: / 26-07-2009 / 17:41:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
handlesKeyPress:key inView:aView
12110
7231e996222a changed: #keyPress:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 10913
diff changeset
   200
    <resource: #keyboard (#CursorDown #CursorUp)>
7231e996222a changed: #keyPress:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 10913
diff changeset
   201
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   202
    ^ aView == optionsView and:[(#(CursorDown CursorUp) includes:key) not].
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    "Created: / 09-12-2010 / 21:31:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   207
hasKeyboardFocus:gotFocusBoolean
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   208
    hasKeyboardFocus == gotFocusBoolean ifTrue:[
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   209
        "no change"
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   210
        ^ self
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    ].
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   213
    gotFocusBoolean ifTrue:[
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   214
        "position cursor behind of already typed chars"
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   215
        self selectAll.
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   216
    ] ifFalse:[
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   217
        (self hasFocus not and:[optionsWindow notNil and:[optionsWindow hasFocus not]]) ifTrue:[
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   218
            self unselect.
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   219
            self hideOptionsWindow.
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   220
        ].
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   221
    ].
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   222
    ^ super hasKeyboardFocus:gotFocusBoolean
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
    "Created: / 08-08-2009 / 23:28:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
    "Modified: / 09-08-2009 / 10:14:25 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    "Modified: / 09-12-2010 / 22:05:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
keyPress:key x:x y:y 
12110
7231e996222a changed: #keyPress:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 10913
diff changeset
   230
    "Forward certain events to optionsView if any"
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
12389
83d4d24d847c class: EditFieldWithCompletion
Stefan Vogel <sv@exept.de>
parents: 12110
diff changeset
   232
    <resource: #keyboard (#CursorDown #CursorUp #Accept #Return #Escape #BackSpace #Delete)>
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   233
16982
4a80412feb9a #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 16728
diff changeset
   234
    (key isCharacter or:[#(Paste Copy Cut) includesIdentical:key]) ifTrue:[
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   235
        super keyPress:key x:x y:y.
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   236
        ^ self.
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   237
    ].
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   238
12389
83d4d24d847c class: EditFieldWithCompletion
Stefan Vogel <sv@exept.de>
parents: 12110
diff changeset
   239
    (optionsView notNil 
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   240
     and:[#(CursorDown CursorUp) includesIdentical:key]) ifTrue:[
12389
83d4d24d847c class: EditFieldWithCompletion
Stefan Vogel <sv@exept.de>
parents: 12110
diff changeset
   241
        optionsView keyPress:key x:x y:y.
83d4d24d847c class: EditFieldWithCompletion
Stefan Vogel <sv@exept.de>
parents: 12110
diff changeset
   242
        ^ self.
83d4d24d847c class: EditFieldWithCompletion
Stefan Vogel <sv@exept.de>
parents: 12110
diff changeset
   243
    ].
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   245
    key == #Accept ifTrue:[self hideOptionsWindow; accept].
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   246
    key == #Return ifTrue:[self hideOptionsWindow; accept].
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   247
    key == #Escape ifTrue:[self hideOptionsWindow].
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   248
    (key == #BackSpace or:[key == #Delete or:[key == #Tab]]) ifTrue:[
12389
83d4d24d847c class: EditFieldWithCompletion
Stefan Vogel <sv@exept.de>
parents: 12110
diff changeset
   249
        super keyPress:key x:x y:y.
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   250
        key == #Tab ifTrue:[
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   251
            self startTabCompletion
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   252
        ] ifFalse:[    
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   253
            self startCompletion.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   254
        ].
12389
83d4d24d847c class: EditFieldWithCompletion
Stefan Vogel <sv@exept.de>
parents: 12110
diff changeset
   255
        ^ self.
83d4d24d847c class: EditFieldWithCompletion
Stefan Vogel <sv@exept.de>
parents: 12110
diff changeset
   256
    ].
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    "Created: / 08-08-2009 / 22:02:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
    "Modified: / 09-08-2009 / 14:06:43 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
    "Modified: / 09-02-2010 / 20:47:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
keyPress:key x:x y:y view:aView
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
    self keyPress: key x:x y:y
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    "Created: / 09-12-2010 / 21:32:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   268
!
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   269
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   270
tabCompletion:best options:options 
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   271
    self updateContentsForLongest:best options:options.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   272
    
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   273
    true "options size > 1" ifTrue:[
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   274
        optionsHolder value:options.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   275
        self showOptionsWindow
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   276
    ].
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   277
    "/ start another job, to update the list
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   278
    self doCompletion.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   279
!
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   280
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   281
updateContentsForLongest:best options:options 
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   282
    |newContent oldContent|
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   283
    
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   284
    oldContent := ((self contents ? '') asString).
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   285
    newContent := best ? oldContent.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   286
    newContent ~= oldContent ifTrue:[
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   287
        self contents:newContent asString.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   288
        self cursorCol:oldContent size + 1.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   289
        oldContent size < newContent size ifTrue:[
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   290
            self 
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   291
                selectFromLine:1 col:oldContent size + 1
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   292
                toLine:1 col:newContent size.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   293
            typeOfSelection := #paste
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   294
        ].
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   295
    ].
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
! !
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
!EditFieldWithCompletion methodsFor:'initialization & release'!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
destroy
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
    self hideOptionsWindow.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
    super destroy.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
    "Created: / 08-08-2009 / 22:16:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
    "Modified: / 09-08-2009 / 08:50:04 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
initialize
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
    super initialize.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
    showOptions := true.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
    optionsHolder := ValueHolder new.
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   312
    
10443
eed0953d70a6 Use BackgroundJob to do the search in background
vrany
parents: 10025
diff changeset
   313
    completionJob := BackgroundJob 
eed0953d70a6 Use BackgroundJob to do the search in background
vrany
parents: 10025
diff changeset
   314
                        named: 'Edit Field Completion Job'
eed0953d70a6 Use BackgroundJob to do the search in background
vrany
parents: 10025
diff changeset
   315
                        on:[self doCompletion].
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   316
    tabCompletionJob := BackgroundJob 
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   317
                        named: 'Edit Field Tab Completion Job'
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   318
                        on:[self doTabCompletion].
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
    "Created: / 08-08-2009 / 20:24:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
    "Modified: / 09-08-2009 / 08:17:09 / Jan Vrany <vranyj1@fel.cvut.cz>"
10443
eed0953d70a6 Use BackgroundJob to do the search in background
vrany
parents: 10025
diff changeset
   322
    "Modified: / 03-08-2011 / 17:50:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
! !
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
!EditFieldWithCompletion methodsFor:'private'!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
doCompletion
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   328
    self doCompletionThenSend:#completion:options:
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   329
!
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   330
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   331
doCompletionThenSend:selector
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   332
    |oldContents completionInfo options best|
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
    oldContents := (self contents ? '') asString.
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   335
    completionInfo := self entryCompletionBlock 
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   336
                    valueWithOptionalArgument:oldContents
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   337
                    and:self.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   338
    completionInfo isNil ifTrue:[
10885
9509463c1702 changed: #doCompletion
Claus Gittinger <cg@exept.de>
parents: 10445
diff changeset
   339
        ^ self
9509463c1702 changed: #doCompletion
Claus Gittinger <cg@exept.de>
parents: 10445
diff changeset
   340
    ].
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   341
    
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   342
    best := completionInfo first.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   343
    options := completionInfo second.
16766
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   344
"/    best isNil ifTrue:[self halt ].
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   345
    (options includes:best) ifFalse:[
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   346
        best := options 
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   347
                    detect:[:e | e asString startsWith:best asString ]
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   348
                    ifNone:[ best ]
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   349
    ].
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   350
    options isSortedCollection ifFalse:[
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   351
        options := options asSortedCollection:[:a :b | a displayString < b displayString ]
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   352
    ].
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
    self sensor 
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   354
        pushUserEvent:selector
10885
9509463c1702 changed: #doCompletion
Claus Gittinger <cg@exept.de>
parents: 10445
diff changeset
   355
        for:self
9509463c1702 changed: #doCompletion
Claus Gittinger <cg@exept.de>
parents: 10445
diff changeset
   356
        withArguments:(Array with:best with:options).
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
    "Created: / 26-07-2009 / 17:45:09 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
    "Modified: / 09-08-2009 / 02:51:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
10885
9509463c1702 changed: #doCompletion
Claus Gittinger <cg@exept.de>
parents: 10445
diff changeset
   360
    "Modified: / 18-11-2011 / 14:33:56 / cg"
9509463c1702 changed: #doCompletion
Claus Gittinger <cg@exept.de>
parents: 10445
diff changeset
   361
    "Modified (format): / 20-11-2011 / 09:42:25 / cg"
16766
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   362
    "Modified: / 25-07-2016 / 07:55:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   365
doTabCompletion
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   366
    self doCompletionThenSend:#tabCompletion:options:
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   367
!
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   368
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
hideOptionsWindow
10913
f91715a29502 changed:
Claus Gittinger <cg@exept.de>
parents: 10885
diff changeset
   370
    optionsWindow notNil ifTrue:[
f91715a29502 changed:
Claus Gittinger <cg@exept.de>
parents: 10885
diff changeset
   371
        optionsWindow destroy.
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   372
        optionsView := optionsWindow := nil.
10913
f91715a29502 changed:
Claus Gittinger <cg@exept.de>
parents: 10885
diff changeset
   373
    ]
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
    "Created: / 08-08-2009 / 23:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
    "Modified: / 09-08-2009 / 09:00:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
10913
f91715a29502 changed:
Claus Gittinger <cg@exept.de>
parents: 10885
diff changeset
   377
    "Modified: / 29-11-2011 / 11:27:03 / cg"
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
showOptionsWindow
13871
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   381
    | x y w |
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   382
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
    showOptions ifFalse:[^ self].
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   384
    optionsWindow notNil ifTrue:[ 
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   385
        optionsWindow raise.
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   386
        ^ self 
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   387
    ].
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
    optionsView := SelectionInListModelView new
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
                    textStartLeft: textStartLeft - 2;
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
                    listHolder: optionsHolder;
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   392
                    action:[:value | value notNil ifTrue:[self contents:value asString]];
10445
70c71811bd97 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 10443
diff changeset
   393
                    doubleClickAction:[:index | 
70c71811bd97 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 10443
diff changeset
   394
                            self contents:(optionsView at:index) asString.
70c71811bd97 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 10443
diff changeset
   395
                            self hideOptionsWindow.
70c71811bd97 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 10443
diff changeset
   396
                            self accept
70c71811bd97 comment/format in:
Stefan Vogel <sv@exept.de>
parents: 10443
diff changeset
   397
                        ];
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
                    useIndex: false;
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
                    " JV: Looks good to me "
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
                    highlightMode: #line;
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
                    font:self font;
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
                    backgroundColor:self backgroundColor;
13871
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   403
                    delegate: self;
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   404
                    yourself.
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   405
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   406
    x := self absoluteLeft + 5" - optionsView textStartLeft".
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   407
    y := self absoluteTop + self height + 1 + 5.
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   408
    w := (width * 2) + 0"((optionsView textStartLeft) * 2)".
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
    optionsWindow := StandardSystemView new
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
        bePopUpView;
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
        beSlave;        
13871
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   413
        origin:x @ y
16728
90111a2e7304 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 16715
diff changeset
   414
        extent:(w min: ((Screen current monitorBoundsAt:(x@y)) corner x - x)) @ (fontHeight * 10);
13871
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   415
        yourself.
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
    ScrollableView   
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
        forView:optionsView 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
        hasHorizontalScrollBar:false 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
        hasVerticalScrollBar:true 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
        miniScrollerH:true 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
        miniScrollerV:false 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
        origin:0.0@0.0 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
        corner:1.0@1.0 
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
        in:optionsWindow.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
    optionsWindow open.
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
    "Created: / 09-08-2009 / 08:12:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
    "Modified: / 09-08-2009 / 09:28:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
10913
f91715a29502 changed:
Claus Gittinger <cg@exept.de>
parents: 10885
diff changeset
   431
    "Modified: / 29-11-2011 / 11:27:13 / cg"
13871
67bf2b738bb3 merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 12389
diff changeset
   432
    "Modified: / 04-04-2012 / 13:08:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
startCompletion
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
10443
eed0953d70a6 Use BackgroundJob to do the search in background
vrany
parents: 10025
diff changeset
   437
    completionJob restart.
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
    "Created: / 26-07-2009 / 17:41:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
10443
eed0953d70a6 Use BackgroundJob to do the search in background
vrany
parents: 10025
diff changeset
   440
    "Modified (format): / 03-08-2011 / 17:50:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   441
!
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   442
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   443
startTabCompletion
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   444
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   445
    tabCompletionJob restart.
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
! !
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
!EditFieldWithCompletion class methodsFor:'documentation'!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   450
version_CVS
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   451
    ^ '$Header$'
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
!
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
16766
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   454
version_HG
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   455
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   456
    ^ '$Changeset: <not expanded> $'
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   457
!
974c719caa4f Removed leftover halt in EditFieldWitnCompletion >> doCompletionThenSend:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16729
diff changeset
   458
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
version_SVN
16433
1d9bd92bc6a7 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 14985
diff changeset
   460
    ^ '$Id$'
10025
cdf041762f27 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
! !
12110
7231e996222a changed: #keyPress:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 10913
diff changeset
   462