1 | sclass ButtonIconLoader {
|
2 | DynamicStack stack; |
3 | Set<JButton> loadedButtons = weakIdentityHashSet(); |
4 | DeQ loadQ; |
5 | JScrollPane scrollPane; |
6 | ChangeListener changeListener; |
7 | |
8 | *(final DynamicStack *stack) {
|
9 | bindToComponent(stack, r {
|
10 | scrollPane = enclosingScrollPane(stack); |
11 | changeListener = scrollPaneOnScroll(scrollPane, r { update() });
|
12 | update(); |
13 | }, r {
|
14 | if (scrollPane != null) {
|
15 | scrollPane.getViewport().removeChangeListener(changeListener); |
16 | scrollPane = null; |
17 | changeListener = null; |
18 | } |
19 | }); |
20 | } |
21 | |
22 | void update() swing {
|
23 | for (final JButton b : reversed((L<JButton>) (L) stackElementsShowing(stack))) {
|
24 | if (add_byContains(loadedButtons, b)) pcall {
|
25 | TextImageAction tia = cast metaGet(TextImageAction.class, b); |
26 | fS imageID = (S) mapGet(tia.more, 'lazyImageID); |
27 | if (empty(imageID)) continue; |
28 | qAdd(r {
|
29 | setButtonImage(b, |
30 | scaleBufferedImageToMaxWidthOrHeight(loadImage2(imageID), niceButtons_maxImageSize()); |
31 | }); |
32 | } |
33 | } |
34 | } |
35 | |
36 | void qAdd(Runnable r) {
|
37 | if (loadQ == null) loadQ = startDeQ(); |
38 | loadQ.addFirst(r); |
39 | } |
40 | } |
Began life as a copy of #1015389
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1016105 |
| Snippet name: | ButtonIconLoader - load the "lazy" icon from network or disk |
| Eternal ID of this version: | #1016105/5 |
| Text MD5: | 030f9527c8385aedd23e4195b37cc264 |
| Author: | stefan |
| Category: | javax / gui |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2022-02-12 22:08:13 |
| Source code size: | 1209 bytes / 40 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 607 / 1189 |
| Version history: | 4 change(s) |
| Referenced in: | [show references] |