import java.awt.*; import java.applet.Applet; // allows Java to talk to JavaScript, ie. the Browser import netscape.javascript.JSObject; public class Talker extends Applet { private int me = -1, speaker = -2; // ie. unknown initially private int count = 0; // number of messages received private boolean spoke = false; public boolean mouseDown(Event e, int x, int y) { talk(); return true; } public void talk() { // Remember that in the browser and in JavaScript: // a `document' is in a `window' and has `applets' etc. JSObject window = JSObject.getWindow(this); JSObject document = (JSObject)window.getMember("document"); JSObject applets = (JSObject)document.getMember("applets"); for( int i = 0; i < ((Number) applets.getMember("length")).intValue(); i++ ) { // ie. for every applet do... Talker other = null; try{ other = (Talker)applets.getSlot(i); } catch( Exception e ){ continue; } // could be another kind of Applet if( other == this ) me = i; // madness to talk to yourself else other.listen(me); } spoke = true; repaint(); }//talk public void listen(int who) { spoke = false; speaker = who; count++; repaint(); }//listen public void paint(Graphics g) { g.drawRect(0, 0, 299, 99); g.drawString( me + " last heard from " + speaker + " (" + count + ")", 10, 20); if( spoke ) g.drawString("I had the last word", 10, 40); g.drawString("www.cs.monash.edu.au", 10, 90); } }//Talker // L.Allison, Department of Computer Science, Monash University, Australia 3168