/*From: Smitha Prasad [smithap@slk-soft.com]
Sent: Monday, May 13, 2002 11:49 AM
To: Ravi Shankar Sathish (E-mail)*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.*;
import java.net.*;

public class Animation1 extends JApplet implements Runnable
{
	public void init()
	{
		addMouseListener(new MouseAdapter()
		{
			public void mousePressed(MouseEvent evt)
			{
				if (runner==null)
				start();
				else
				stop();
				System.out.println("inside listener");
			}
		});

		try
		{
			imageName= getParameter("imagename");
			if (imageName == null)imageName="/Sample.jpg";
			imageCount =1;
			String param = getParameter("imageCount");
			if (param !=null)
			imageCount=Integer.parseInt(param);
		}
		catch(Exception e)
		{
			showStatus("Error:"+e);
		}

		current =0;
		image=null;
		loadImage();
	}

	public void loadImage()
	{
		try
		{
			URL  url = new  URL(getDocumentBase(),imageName);
			image =getImage(url);
			MediaTracker tracker  = new MediaTracker(this);
			tracker.addImage(image,0);
			tracker.waitForID(0);
			imageWidth= image.getWidth(null);
			imageHeight= image.getHeight(null);
			resize(imageWidth,imageHeight/imageCount);
		}
		catch(InterruptedException e)
		//thrown by MediaTracker.wait for
		{
			showStatus("Loading Interrupted");
		}
		catch(MalformedURLException e)
		{
			showStatus("Bad URL");
		}
	}

		public void paintComponent(Graphics g)
		{
			if  (image== null) return;
			g.drawImage(image,0,-(imageHeight/imageCount)*current,null);
		}

		public  void start()
		{
			runner =new Thread(this);
			runner.start();
			showStatus("Click to stop");
		}

		public void stop()
		{
			runner.interrupt();
			runner = null;
			showStatus("Click to restart");
		}

		public void run()
		{
			try
			{
				while(!Thread.interrupted())
				{
					repaint();
					current=(current+1)%imageCount;
					Thread.sleep(200);
				}
			}
			catch(InterruptedException e){}
		}
		private Image image;
		private int current;
		private int imageCount;
		private int imageWidth;
		private int imageHeight;
		private String imageName;
		private Thread runner;
	}






