package tc.samples.app.btchat; import totalcross.io.*; import totalcross.sys.*; import totalcross.ui.*; import totalcross.ui.event.*; public class ChatScreen extends Container { DataStream connection; ChatScreen(Stream connection) { this.connection = new DataStream(connection); } ListBox chatArea; Edit msgField; Button btSend; public void initUI() { btSend = new Button(" Send! "); add(btSend, RIGHT, BOTTOM,PREFERRED,PREFERRED+fmH); msgField = new Edit(); add(msgField, LEFT, SAME, FIT, PREFERRED); chatArea = new ListBox(); add(chatArea, LEFT, TOP, FILL, FIT, msgField); msgField.requestFocus(); new Thread(new Listener()).start(); } public void onEvent(Event event) { if (event.type == KeyEvent.SPECIAL_KEY_PRESS) { btSend.simulatePress(); btSend.postPressedEvent(); } else if (event.type == ControlEvent.PRESSED && event.target == btSend) { String msg = msgField.getText(); if (msg != null && msg.trim().length() > 0) { try { connection.writeString(msg); // send message chatArea.add(msg); chatArea.selectLast(); } catch (IOException e) { e.printStackTrace(); } } msgField.clear(); } } class Listener implements Runnable { public void run() { try { while (true) { String s = connection.readString(); if (s != null) { chatArea.add(s); chatArea.selectLast(); } Vm.sleep(50); } } catch (IOException e) { e.printStackTrace(); } } } }