Libraryless. Click here for Pure Java version (17364L/125K).
1 | !7 |
2 | |
3 | sclass SFAutoComplete extends DynObjectTable<S> {
|
4 | transient WeakReference<JTextComponent> tc; |
5 | int maxEntries = 100; |
6 | |
7 | start {
|
8 | dontPersist(); |
9 | doEveryAndNow(1000, r {
|
10 | if (!isVisible()) ret; |
11 | JTextComponent c = optCast(JTextComponent, getFocusOwner()); |
12 | if (c == null) ret; |
13 | tc = weakRef(c); |
14 | int i = getCaretPosition(c); |
15 | S word = tok_lastTokenIfNoSpaceAfter(takeFirst(getText(c), i)); |
16 | new LS list; |
17 | if (nempty(word)) {
|
18 | list.addAll(containingIC(standardClassNames_sorted(), word)); |
19 | list.addAll(containingIC(standardFunctionNames_sorted(), word)); |
20 | list = takeFirst(maxEntries, list); |
21 | } |
22 | setData(list); |
23 | }); |
24 | } |
25 | |
26 | void onDoubleClick(S s) ctex {
|
27 | final JTextComponent c = getWeakRef(tc); |
28 | if (c != null) {
|
29 | int i = getCaretPosition(c); |
30 | Document doc = c.getDocument(); |
31 | S word = tok_lastTokenIfNoSpaceAfter(takeFirst(getText(c), i)); |
32 | if (swic(s, word)) |
33 | doc.remove(i -= l(word), l(word)); |
34 | doc.insertString(i, s, null); |
35 | awt { focusComponent(c); } // TODO: doesn't work?
|
36 | } |
37 | } |
38 | } |
Began life as a copy of #1017235
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, irmadwmeruwu, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1017780 |
| Snippet name: | Standard Function/Class Name Auto-Complete [operates on focused component] |
| Eternal ID of this version: | #1017780/17 |
| Text MD5: | f6b20e940d9ecd02c2d2469b80752bd4 |
| Transpilation MD5: | 35498e7fe885271cdc366dee34a6c618 |
| Author: | stefan |
| Category: | javax / stefan's os |
| Type: | JavaX source code (Dynamic Module) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2019-04-14 18:40:47 |
| Source code size: | 1160 bytes / 38 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 770 / 23882 |
| Version history: | 16 change(s) |
| Referenced in: | [show references] |