sclass G22AnalyzerIDE extends G22LAScriptIDE { *(G22Utils g22utils) { super(g22utils); } settable double timeoutToRecognizeAnImage = 10.0; swappable BufferedImage exampleExampleImage() { ret loadImage2(#1101126); } transient ConceptsComboBox cbExampleImage; BufferedImage exampleImage() { var selected = script.exampleImage!; try object selected?.load(); ret exampleExampleImage(); } { onSettingUpIDE(ide -> { ide.runScript = -> { G22Analyzer.CompiledAnalyzer analyzer = cast ide.freshCompileResult(); if (!analyzer.runnable()) ret; var image = exampleImage(); var bg = g22utils.backgroundProcessesUI(); temp bg?.tempAdd("Run recognizer on example image"); var result = runResultWithTimestamps(-> analyzer.get(image)); ide.showScriptResult(result); }; }); } public JComponent visualize_impl() { cbExampleImage = new ConceptsComboBox<>(g22utils.concepts, G22GalleryImage).allowNull(true); var varExampleImage = new FieldVar(script, "exampleImage", -> script.exampleImage!, img -> cset(script, exampleImage := img) ); bindComboBoxToVar_withUserChangeListener(cbExampleImage, varExampleImage, rThread { visibleIDE().runScript() }); ret centerAndSouthWithMargin( super.visualize_impl(), rightAlignedLine(withLabel("Image to analyze:", cbExampleImage))); } }