Warning: session_start(): open(/var/lib/php/sessions/sess_1bccrdomir5bk0mip7atos3lmq, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass ButtonImageLoader {
DynamicStack stack;
Set loadedButtons = weakIdentityHashSet();
DeQ loadQ;
JScrollPane scrollPane;
ChangeListener changeListener;
int imageHeight = 128;
*(final DynamicStack *stack) {
bindToComponent(stack, r {
scrollPane = enclosingScrollPane(stack);
changeListener = scrollPaneOnScroll(scrollPane, r { update() });
update();
}, r {
if (scrollPane != null) {
scrollPane.getViewport().removeChangeListener(changeListener);
scrollPane = null;
changeListener = null;
}
});
}
void update() swing {
//new L l;
for (JButton b : reversed((L) (L) stackElementsShowing(stack))) {
//if (add(loadedButtons, b)) pcall { // will strangely not work
if (add_byContains(loadedButtons, b)) pcall {
TextImageAction tia = cast metaGet(b, TextImageAction.class);
if (tia == null) continue with print("no tia");
File f = cast metaGet(b, File.class);
if (f == null) continue with print("no file");
qAdd(r { setAButtonsImage(b, f) });
}
}
//if (nempty(l)) qAdd(chainRunnables_pcall(l));
}
void qAdd(Runnable r) {
if (loadQ == null) loadQ = startDeQ();
loadQ.addFirst(r);
}
// overridable
void setAButtonsImage(JButton b, File f) {
setButtonImage(b, loadPreviewImage(f));
//print("Loaded: " + f);
}
// overridable
BufferedImage loadPreviewImage(File f) {
ret loadPreviewImageWithExactHeight(imageHeight, f);
}
}