/* * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved. * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL purposes and without * fee is hereby granted provided that this copyright notice * appears in all copies. Please refer to the file "copyright.html" * for further important copyright and licensing information. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. */ import java.awt.Graphics; public class Good extends java.applet.Applet implements Runnable { static final int NUMLOOPS = 2000000; int loop = 0; boolean doneInitializing = false; String message = null; Thread loopThread = null; public void init() { resize(500, 20); } public void start() { if (loopThread == null) { loopThread = new Thread(this, "Good thread"); } else { //reset and do it again loop = 0; doneInitializing = false; message = null; } loopThread.start(); } public void stop() { loopThread.stop(); loopThread = null; } public void run() { while (loop < NUMLOOPS) { if ((++loop%50000)==0) { message = "Good: Initialization loop #" + loop + " of " + NUMLOOPS; getAppletContext().showStatus(message); repaint(); Thread.yield(); } } doneInitializing = true; repaint(); } /* The paint() method can't be called until init() has exited. */ public void paint(Graphics g) { g.drawRect(0, 0, size().width - 1, size().height - 1); if (message == null) g.drawString("Good: ", 5, 15); else if (!doneInitializing) g.drawString(message, 5, 15); else g.drawString("Good: Done initializing.", 5, 15); } }