srecord noeq G22AutoStartPanel(G22Utils g22utils) { G22AutoStarter autoStarter; JButton btnCancel; JLabel lblStatus1, lblStatus2, lblCurrentScript, lblCancel; cachedVisualize { autoStarter = g22utils.autoStarter(); var vis = jCenteredSection("Auto Start", 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)"), jVerticalStrut(10), lblStatus1 = jCenteredLabel(), lblCurrentScript = jCenteredLabel(), lblStatus2 = jCenteredLabel(), ) ); bindListenerToComponent(lblStatus1, autoStarter, r update); componentPopupMenuItems(btnCancel, "Resume", rThread resume, /*"Update", rThread update*/); ret vis; } void update { bool done = autoStarter.done(); if (done) { setText(btnCancel, "Auto-start done"); setEnabled(lblCancel, false); } setEnabled(btnCancel, autoStarter.enabled() && !done); setText(lblStatus1, done ? "" : autoStarter.status()); setText(lblStatus2, autoStarter.scriptsRunStats()); setText(lblCurrentScript, autoStarter.currentScriptStats()); } void resume { autoStarter.resume(); } }