srecord noeq G22AnalysisPanel(G22Utils g22utils) > MetaWithChangeListeners is Swingable { transient SingleComponentPanel scp; settableWithVar BufferedImage image; settableWithVar G22Recognizer analyzer; cachedVisualize { scp = singleComponentPanel(); analyzer.onChange(r startAnalysis); image.onChangeAndNow(r startAnalysis); ret northAndCenterWithMargins( withLabel("Analyzer", jTypedComboBox(nullPlus(list(g22utils.concepts(), G22Recognizer))), analyzer), scp ); } void startAnalysis { scp.set(new G22RunSingleAnalyzerPanel(image, analyzer)); } }