import java.awt.*; import java.util.*; public class GameWindow extends Frame { private GameClient javaChat; private TextField tf; private TextArea ta; GameWindow(GameClient jc) { setTitle("Chat Window"); javaChat = jc; tf = new TextField(60); ta = new TextArea(12,80); resize(400,300); setLayout(new BorderLayout()); Panel p1 = new Panel(); p1.setLayout(new BorderLayout()); p1.add("West",new Label("Message:")); p1.add("Center",tf); add("North",p1); Panel p2 = new Panel(); p2.setLayout(new BorderLayout()); p2.add("North",new Label("Messages Window")); p2.add("Center",ta); add("Center",p2); add("South",new Button("Quit")); ta.setEditable(false); pack(); show(); } public void displayMessage(String msg) { ta.appendText(Wrap.wrapString(msg, ta.getColumns()-1, true)+"\n"); } public boolean handleEvent(Event evt) { // System.out.println("**** handleEvent ****"); // System.out.println(evt.toString()); // System.out.println("*********************"); return super.handleEvent(evt); } private void sendChatMessage(String message) { javaChat.sendMessage("MSG\t"+message); } public boolean action(Event evt, Object arg) { if(evt.target instanceof TextField && ((TextField)evt.target) == tf) { if(arg instanceof String) { sendChatMessage((String) arg); ((TextField)evt.target).setText(""); return true; } } else if(evt.target instanceof Button && "Quit".equals(arg.toString())) { javaChat.sendMessage("BYE!"); return true; } return super.action(evt,arg); } } class Wrap { public static final String wrapString(String s) { return wrapString(s,80,false); } public static final String wrapString(String s, int col) { return wrapString(s,col,false); } public static final String wrapString(String s, int col, boolean indent) { if(s == null) return null; StringTokenizer tok = new StringTokenizer(s); int len = 0; int wordlen = 0; String ret = ""; while(tok.hasMoreTokens()) { String word = tok.nextToken(); if((len + word.length() + 1) >= col) { len = word.length() + (indent ? 5 : 0); ret += "\n" + (indent ? " " : "") + word; } else { len += word.length() + 1; ret += " " + word; } } return ret; } }