!7 compact module AutoGoogleImage > DynImageSurface { transient Q q; transient JTextField tf; transient S text; start { q = startQ(); q.rst.enter = dm_rEnter(this); } visualize { tf = jcenteredtextfield(); onEnter(tf, r { show(gtt(tf)) }); ret northAndCenter(tf, centerAndSouth(super.visualize(), centeredLiveValueLabel(dm_fieldLiveValue('text)))); } void show(fS query) { q.add(r { _show(query) }); } void _show(S query) { temp enter(); BufferedImage img = quickVisualize(query); if (img == null) ret; setImage(img); setField(text := query); } }