srecord noeq G22RunSingleAnalyzerPanel(G22Utils g22utils, BufferedImage image, G22Recognizer analyzer) is Swingable { transient ReliableSingleThread rst = new(r _run); transient SingleComponentPanel scp = singleComponentPanel(); transient S pleaseSelectMsg = "" //"Please select an analyzer"; visual { reRun(); ret scp; } void reRun() { rst.trigger(); } void setImage(BufferedImage image) { this.image = image; reRun(); } void _run { if (analyzer == null) ret with scp.set(jcenteredlabel(pleaseSelectMsg)); if (image == null) ret with scp.set(jcenteredlabel("No image")); var compiled = analyzer.compileForAutoRun(); if (compiled == null) ret with scp.set(jcenteredlabel(analyzer + " is not cleared for auto-run")); if (compiled.compileError != null) ret with scp.set(jErrorView(compiled.compileError)); if (scp.isEmpty()) scp.set(jcenteredlabel("Running analyzer...")); var visualizer = new G22ResultVisualizer(g22utils); try { var result = compiled.get(image); scp.set(visualizer.visualize(result)); } catch e { scp.set(jErrorView(e)); } } }