srecord noeq G22AutoStartPanel(G22Utils g22utils) is Swingable { G22AutoStarter autoStarter; JButton btnCancel, btnResume; JLabel lblStatus1, lblStatus2, lblCurrentScript, lblCtrl; JPanel stack; cachedVisualize { autoStarter = g22utils.autoStarter(); btnResume = jbutton("Resume", r resume); var vis = jCenteredSection("Auto Start", stack = vstack2( centerAndEastWithMargin( btnCancel = jThreadedButton("CANCEL", r { autoStarter.cancel() }), jimageButtonScaledToWidth(16, editImageID(), "Edit auto-run scripts", rThread { g22utils.projectActions().editScripts() }) ), lblCtrl = jCenteredLabel(autoStarter.cancelOnCtrl() ? "(Hammer Ctrl to cancel)" : ""), jVerticalStrut(10), lblStatus1 = jCenteredLabel(), lblCurrentScript = jCenteredLabel(), lblStatus2 = jCenteredLabel(), ) ); bindListenerToComponent(lblStatus1, autoStarter, r update); /*componentPopupMenuItems(btnCancel, "Resume", rThread resume);*/ ret vis; } void update { bool done = autoStarter.waitedAndDone(); if (done) setText(btnCancel, "Auto-start done"); setEnabled(lblCtrl, autoStarter.ctrlEnabled()); setEnabled(btnCancel, autoStarter.enabled() && !done); setText(lblStatus1, autoStarter.scriptsRunStats()); setText(lblStatus2, done ? "" : autoStarter.status()); setText(lblCurrentScript, autoStarter.currentScriptStats()); addOrRemoveComponent(autoStarter.canResume(), stack, btnResume); } void resume { autoStarter.resume(); } }