!7 cmodule TrainableBot > DynSockPuppetConvo { LS suggestions; S functions; transient SingleComponentPanel scpSuggestions; transient FunctionsLoader loader; transient Thread playThread; visual jvsplit(super, jhsplit( jCenteredSection("Suggestions", scpSuggestions = singleComponentPanel(renderSuggestions())), dm_textAreaAsSection functions())); JComponent renderSuggestions() { ret ele_renderSuggestions(null, suggestions); } void showSuggestions(LS suggestions) { setField(+suggestions); showSuggestions(); } void showSuggestions { scpSuggestions?.setComponent(renderSuggestions()); } void loadFunctions { dispose loader; loader = new FunctionsLoader(tlftj(functions)); loaded.onLoaded(play); loader.loadInBackground(); } void play enter { cancelThread(playThread); playThread = null; playThread = startThread(r play_impl); } void play_impl enter { showSuggestions(ll("test " + now())); } }