srecord noeq G22AutoStartPanel(G22Utils g22utils) { G22AutoStarter autoStarter; JButton btnCancel; JLabel lblStatus1, lblStatus2, lblCancel; cachedVisualize { autoStarter = g22utils.autoStarter(); var vis = jCenteredSection("Auto Start Scripts", northAndCenterWithMargin( vstack( centerAndEastWithMargin( btnCancel = jThreadedButton("Cancel", r { autoStarter.cancel() }), jimageButtonScaledToWidth(16, editImageID(), "Edit auto-run scripts", rThread { g22utils.projectActions().editScripts() }) ), lblCancel = jCenteredLabel("(Hammer Ctrl to cancel)") ), vstackWithSpacing( lblStatus1 = jCenteredLabel(), lblStatus2 = jCenteredLabel(), ) )); bindListenerToComponent(lblStatus1, autoStarter, r update); componentPopupMenuItem(btnCancel, "Update", rThread update); ret vis; } void update { if (autoStarter.done()) { setText(btnCancel, "Done"); setEnabled(lblCancel, false); } setEnabled(btnCancel, autoStarter.enabled() && !autoStarter.done()); setText(lblStatus1, "Auto-start " + firstToLower(autoStarter.stats())); setText(lblStatus2, autoStarter.scriptsRunStats()); } }