// (C) Copyright Jack Culpepper 1997 // This code may not be distributed without permission. package gestalt; import java.applet.*; import java.awt.*; import java.awt.image.*; import java.io.*; import java.net.*; import gestalt.Slave; public class SlaveApplet extends Applet implements Runnable { protected Font font; protected String hostname; protected Graphics graphics; protected Slave slave; protected URL codebase; protected Image[] images; protected Image error; protected Image disconnected; protected static final int num_images = 10; protected Thread runner; protected int frame = 0; // one-time initialization for the applet public void init() { // create a font to display text with font = new Font( "Helvetica", Font.BOLD, 24 ); // grab the codebase host's name codebase = this.getCodeBase(); hostname = codebase.getHost(); // grab and save off the graphics object graphics = getGraphics(); // read in error images error = this.getImage( codebase, "images/gpn-banner-error.jpg" ); disconnected = this.getImage( codebase, "images/gpn-banner-disconnected.jpg" ); // read in the images I want to show images = new Image[ num_images ]; System.out.print( "Loading: " ); for ( int i = 0 ; i < images.length ; i++ ) { images[ i ] = this.getImage( codebase, "images/gpn-bannerb" + i + ".jpg" ); System.out.print( "." ); System.out.flush(); } System.out.println( " Done." ); GridLayout grid = new GridLayout( 1, 1 ); this.setLayout( grid ); } // called when the applet needs to be drawn public void paint( Graphics g ) { if ( slave != null && slave.isAlive() ) { if ( slave.connected ) { g.drawImage( images[ frame ], 0, 0, this ); } else { g.drawImage( disconnected, 0, 0, this ); } } else { g.drawImage( error, 0, 0, this ); } } public void update( Graphics g ) { paint( g ); } public void run() { while ( true ) { if ( slave.isAlive() && slave.connected ) { try { for ( ; frame < images.length ; frame++ ) { update( graphics ); runner.sleep( 100 ); } for ( frame-- ; frame >= 0 ; frame-- ) { update( graphics ); runner.sleep( 100 ); } frame++; runner.sleep( 500 ); } catch ( InterruptedException e ) { } } else { frame = 0; update( graphics ); try { runner.sleep( 500 ); } catch ( InterruptedException e ) { } } } } public void start() { if ( slave == null ) { slave = new Slave( hostname ); } if ( runner == null ) { runner = new Thread( this ); runner.start(); } } public void stop() { if ( slave != null ) { slave.stop(); slave = null; } if ( runner != null ) { runner.stop(); runner = null; } } }