import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
import java.io.*;

public class ShowImage
{
	private BufferedImage bufferedImage;

	private JFileChooser	chooser		= new JFileChooser(new File("./"));
	private ImageFileFilter	imageFilter	= new ImageFileFilter();

	public ShowImage(String s)
	{
		bufferedImage = loadImage(s, new Container());
	}

	public ShowImage(int n)
	{
		int xsize = 320;
		int ysize = 200;

		BufferedImage bimage = new BufferedImage(xsize,ysize,BufferedImage.TYPE_INT_ARGB);
		Graphics2D g2d = bimage.createGraphics();

		g2d.setColor(new Color(0,0,0));
		g2d.fill(new Rectangle2D.Double(0,0,xsize,ysize));

		if (n<0)
		{
			n = n*-1;
			System.out.println("Only +'ve n allowed, n = "+n);
		}
		if (n!=0)
		{
			Random rnd = new Random();
			for (int i=0; i<n; i++)
			{
				int xpos = rnd.nextInt(xsize)+1;
				int ypos = rnd.nextInt(ysize)+1;
				int rad = rnd.nextInt(30)+1;
				g2d.setColor(new Color(rnd.nextInt(255),rnd.nextInt(255),rnd.nextInt(255)));
				g2d.fill(new Ellipse2D.Double(xpos-rad,ypos-rad,rad*2,rad*2));
			}
		}
		bufferedImage = bimage;
	}

	public ShowImage()
	{
		String fileName = "";

		imageFilter.addType("gif");
		imageFilter.addType("jpg");
		imageFilter.addType("png");

		chooser.setFileFilter(imageFilter);

		int returnVal = chooser.showOpenDialog(null);

		if(returnVal == JFileChooser.APPROVE_OPTION)
		{
			fileName = chooser.getSelectedFile().toString();
		}

		if (!fileName.equals(""))
		{
			bufferedImage = loadImage(fileName, new Container());
		}
	}

	public Image getImage()
	{
		return bufferedImage;
	}

	/**
	*	@param s the filename of the image to load
	*	@param comp The component on which the images will eventually be drawn.
	*				(see MediaTracker constructor)
	*/
	public static BufferedImage loadImage(String s, Component comp)
	{
		Toolkit tk = Toolkit.getDefaultToolkit();
		Image loadedImage = tk.getImage(s);

		MediaTracker tracker = new MediaTracker(comp);
		tracker.addImage(loadedImage, 0);

		try
		{
			System.out.print("Loading " + s + " ...  ");
			tracker.waitForAll();
			System.out.println("Done");
		}
		catch(Exception ex)
		{
			System.out.println("Couldn't load " + s + "\7");
			System.out.println(ex.getMessage());
			System.exit(-1);
		}

		BufferedImage image = new BufferedImage(loadedImage.getWidth(null), loadedImage.getHeight(null), BufferedImage.TYPE_INT_RGB);
		Graphics2D g2 = image.createGraphics();
		g2.drawImage(loadedImage, 0, 0, null);

		return image;
	}
}
