!7 p-subst { final JComboBox cbBot = currentBotsComboBox(); final JTextField tfMsg = jtextfield(); final JTextField tfResult = juneditabletextfield(); final JLabel lblTiming = jlabel(); final JLabel lblBot = jlabel(); final JLabel lblMessageSent = jlabel(); showFormTitled("Send message to bot", "Bot", cbBot, "Message", tfMsg, "", lblMessageSent, "", lblBot, "Result", tfResult, "", lblTiming, func { S bot = getText(cbBot); print("Bot: " + bot); fS address = botSelector_getAddress(cbBot); print("Address: " + bot); if (empty(address)) false; fS msg = getText(tfMsg); setText(lblMessageSent, "Sent message: " + msg); setText(lblBot, "To bot: " + bot); setText(tfResult, "Sending..."); thread "Send" { long time = sysNow(); try { S answer = send(address, msg); S a = shorten(answer, 10000); setText(tfResult, eq(answer, a) ? answer : "(shortened) " + a); } catch e { setText(tfResult, "(Error) " + getInnerMessage(e)); } setText(lblTiming, (sysNow()-time) + " ms"); } false; }); //swing { addActionListener(cbBot, r { print("sel=" + cbBot.getSelectedItem()) }); } }