////////////////// /// To use: /// in riskaplt.java as a class variable: /// GameControl gc; /// in riskaplt.java in riskaplt class in function startgameclient() /// gc = new GameControl(this); /// in riskaplt.java in riskaplt class at the end of updateGame() add: /// if(gc != null) gc.updateGameList(); ///////////////// import java.awt.*; import java.util.*; public class GameControl extends Frame { private riskaplt risk; //private JavaChat risk; private List gameList = null; private Label status = null; private Label gstatus = null; private String gname = null; private Button j, a, s; private GameAdder ga = null; public void destroy() { if(ga != null) ga.destroy(); hide(); dispose(); } GameControl(riskaplt r) { super("Game Control"); risk = r; // resize(400,300); setLayout(new BorderLayout()); Panel p1 = new Panel(); Panel p1a = new Panel(); Panel p1b = new Panel(); p1.setLayout(new BorderLayout()); p1a.setLayout(new BorderLayout()); p1a.add("North",j = new Button("Join Game")); p1a.add("South",a = new Button("Add Game...")); p1b.setLayout(new BorderLayout()); p1b.add("North",s = new Button("Start Game")); p1.add("North",p1a); p1.add("Center",p1b); Panel p2 = new Panel(); p2.setLayout(new BorderLayout()); p2.add("North",new Label("Game List:")); p2.add("South",gstatus = new Label(" ")); gameList = new List(10,false); p2.add("Center",gameList); add("West",p2); add("East",p1); add("South",status = new Label(" ")); pack(); show(); updateGameList(); } public void setStatus(String s) { if(s == null) return; status.hide(); status.setText(s); status.show(); } public void updateGameList() { gameList.clear(); int i = risk.knownGames.size(); int n = 0; iGame g; while(i-- > 0) { g = (iGame) risk.knownGames.elementAt(i); if(g.started == true) continue; gameList.addItem(g.name+" ("+g.gid+")"); } n = gameList.countItems(); gstatus.setText(n+" game"+(n==1 ? "" : "s") + " available"); } private String getGID(String s) { if(s == null) return null; StringTokenizer st = new StringTokenizer(s,"()"); if(st.countTokens() >= 2) { gname = st.nextToken(); return st.nextToken(); } return null; } public boolean action(Event evt, Object arg) { System.out.println(evt.toString()); System.out.println(arg.toString()); if(evt.target instanceof List && ((List) evt.target) == gameList) { String gid = getGID((String) arg); joinGame(gid); return true; } if(evt.target instanceof Button) { Button b = (Button) evt.target; if(b == j) { String gid = getGID(gameList.getSelectedItem()); joinGame(gid); return true; } else if(b == a) { if(ga != null) ga.destroy(); ga = new GameAdder(this); return true; } else if(b == s) { risk.sendMessage("STARTGAME"); } } return super.action(evt,arg); } public void sendMessage(String msg) { risk.sendMessage(msg); } void joinGame(String gid) { if(gid != null) { sendMessage("JOIN\t"+gid); setStatus("Joining "+gname+"..."); } System.out.println("gid = null"); } }