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"; event analyzerResult(G22Recognizer.CompiledAnalyzer analyzer, O result); event analyzerError(G22Recognizer.CompiledAnalyzer analyzer, Throwable error); 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")); G22Recognizer.CompiledAnalyzer 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...")); try { long time = nanoTime(); O result = compiled.get(image); time = nanoTime()-time; analyzerResult(compiled, result); var visualizer = new G22JavaObjectVisualizer(g22utils, result) .horizontal(true); visualizer.nanos(time); scp.set(visualizer); } catch e { scp.set(jErrorView(e)); analyzerError(compiled, e); } } }