/* Copy Right Mark Qian 1998, All rights reserved */ import java.awt.*; import java.applet.*; import coopro; import cootank; public class coochat extends Applet { public void init() { // This code is automatically generated by Visual Cafe when you add // components to the visual environment. It instantiates and initializes // the components. To modify the code, only use code syntax that matches // what Visual Cafe can generate, or Visual Cafe may be unable to back // parse your Java file into its visual environment. //{{INIT_CONTROLS setLayout(null); setSize(547,451); setBackground(new Color(12632256)); try { ClassLoader cl = Class.forName("coopro").getClassLoader(); coopro1 = (coopro) java.beans.Beans.instantiate(cl, "coopro"); coopro1.setDataDir("/users/u2/markqian/data/coopro"); coopro1.setPopup(false); coopro1.setLoginTitle("CooChat"); coopro1.setLayout(null); coopro1.setBounds(0,0,528,384); coopro1.setBackground(new Color(12632256)); add(coopro1); coopro1.start(); } catch (Exception e) { } try { ClassLoader cl = Class.forName("cootank").getClassLoader(); cootank1 = (cootank) java.beans.Beans.instantiate(cl, "cootank"); cootank1.setOpenButtonText("Chat as Fishes"); cootank1.setScreenW(400); cootank1.setScreenH(500); cootank1.setLinkPeriod(-1); cootank1.setImageFile("/users/u2/markqian/data/cootank/imagefile2"); cootank1.setTankCGI("http://www.coolshare.com/my-cgi-bin/cootank.cgi"); cootank1.setLinkFile("/users/u2/markqian/data/cootank/linkfile"); cootank1.setSoundFile("sound/bubble.au"); cootank1.setLayout(null); cootank1.setBounds(312,384,180,48); cootank1.setBackground(new Color(12632256)); add(cootank1); cootank1.start(); } catch (Exception e) { } label1 = new java.awt.Label("To see how you and others chat in an "); label1.setBounds(36,384,240,24); label1.setFont(new Font("Dialog", Font.BOLD, 13)); add(label1); label2 = new java.awt.Label("aquarium tank, click at this button:"); label2.setBounds(48,408,240,24); label2.setFont(new Font("Dialog", Font.BOLD, 13)); add(label2); //}} //{{REGISTER_LISTENERS SymCPActionEvent aSymCPActionEvent = new SymCPActionEvent(); coopro1.addCPActionEventListener(aSymCPActionEvent); SymCTActionEvent aSymCTActionEvent = new SymCTActionEvent(); cootank1.addCTActionEventListener(aSymCTActionEvent); //}} } //{{DECLARE_CONTROLS coopro coopro1; cootank cootank1; java.awt.Label label1; java.awt.Label label2; //}} //Also allow CooChat to be run as an application static public void main(String args[]) { int w = 550; int h = 450; coochat applet = new coochat(); applet.init(); Frame appFrame = new Frame("CooCoo Pro"); appFrame.setLayout(null); appFrame.setBackground(new Color(12632256)); java.awt.Panel panel1 = new java.awt.Panel(); panel1.setLayout(null); panel1.add(applet); applet.move(0,0); appFrame.add(panel1); appFrame.pack(); appFrame.show(); panel1.reshape(0, 5, w+5,h+35); appFrame.reshape(50, 50, w+15,h+50); } class SymCPActionEvent extends CPActionEventAdapter { public void noticeUserLogin(java.util.EventObject event) { Object object = event.getSource(); if (object == coopro1) coopro1_noticeUserLogin(event); } public void noticeUserSwitchRoom(java.util.EventObject event) { Object object = event.getSource(); if (object == coopro1) coopro1_noticeUserSwitchRoom(event); } public void noticeUserLogout(java.util.EventObject event) { Object object = event.getSource(); if (object == coopro1) coopro1_noticeUserLogout(event); } public void noticeUpdateUser(java.util.EventObject event) { Object object = event.getSource(); if (object == coopro1) coopro1_noticeUpdateUser(event); } public void noticeChatIn(java.util.EventObject event) { Object object = event.getSource(); if (object == coopro1) coopro1_noticeChatIn(event); } } //Perform talking void coopro1_noticeChatIn(java.util.EventObject event) { coopevt e = (coopevt) event; int id = cootank1.getInt(e.textField[1], -1); int r = -1; if (id>-1) //Talk. Please see doc of tank bean for more info about its interface r = cootank1.talk(id, e.textField[3], ""); } //Update user info void coopro1_noticeUpdateUser(java.util.EventObject event) { coopevt e = (coopevt) event; updateTank(e.textField[1]); } //Update tank void updateTank(String tt) { String name, email, id; //Calling tank bean to remove all objects. -2 means "all". //Please see doc of tank bean for more info about its interface cootank1.deleteObject(-2); int i=0; String s = ""; for (; s!=null; i++) { s = getField(tt, "^!^", i); if (s==null || s.equals("")) continue; if ((name =getField(s, "^#^", 0))==null) { System.err.println("Fail to parse name of "+ i); continue; } if ((email =getField(s, "^#^", 1))==null) { System.err.println("Fail to parse email of "+ i); continue; } if ((id =getField(s, "^#^", 2))==null) { System.err.println("Fail to parse id of "+ i); continue; } String tmp; if ((tmp =getField(s, "^#^", 3))==null) { System.err.println("Fail to parse type of "+ i); continue; } int type = cootank1.getInt(tmp, 0); //Add a tank object. Please see doc of tank bean for more info about its interface int r = cootank1.addObject(type+cootank1.IMG_SHELL, i, name, "mailto:"+email); } } //Get field for a tank object String getField(String s, String d, int whichField) { int p = s.indexOf(d); int i; for (i=0; p>-1 && i-1) return s.substring(0,p); else return null; } class SymCTActionEvent extends CTActionEventAdapter { public void noticeEnter(java.util.EventObject event) { Object object = event.getSource(); if (object == cootank1) cootank1_noticeEnter(event); } } void cootank1_noticeEnter(java.util.EventObject event) { coopro1.updateList(); } void coopro1_noticeUserLogout(java.util.EventObject event) { coopro1.updateList(); } void coopro1_noticeUserSwitchRoom(java.util.EventObject event) { coopro1.updateList(); } void coopro1_noticeUserLogin(java.util.EventObject event) { coopro1.updateList(); } }