/*
	A basic extension of the java.applet.Applet class
 */

import java.awt.*;
import java.applet.*;
import java.io.*;
import java.util.Vector;
import java.net.URL;

public class Misfort extends Applet
{
    Vector fortunes;
    ImageCanvas cookie;

	public void init()
	{
		// Take out this line if you don't use symantec.itools.net.RelativeURL or symantec.itools.awt.util.StatusScroller
		// symantec.itools.lang.Context.setApplet(this);
	
		// This code is automatically generated by Visual Cafe when you add
		// components to the visual environment. It instantiates and initializes
		// the components. To modify the code, only use code syntax that matches
		// what Visual Cafe can generate, or Visual Cafe may be unable to back
		// parse your Java file into its visual environment.
		//{{INIT_CONTROLS
		setLayout(null);
		setBackground(java.awt.Color.white);
		setSize(400,100);
		namelabel.setText("Misfortune Cookie V 1.0");
		add(namelabel);
		namelabel.setFont(new Font("Dialog", Font.BOLD, 12));
		namelabel.setBounds(120,5,230,19);
		genlabel.setText("(click somewhere to re-generate)");
		add(genlabel);
		genlabel.setFont(new Font("Dialog", Font.ITALIC, 12));
		genlabel.setBounds(164,24,228,17);
		fortune.setAlignment(java.awt.Label.CENTER);
		add(fortune);
		fortune.setBounds(88,68,303,24);
		//}}
		
		cookie = new ImageCanvas(getCodeBase().toString() + "cookie.jpg");
		add(cookie);
		cookie.setBounds(0, 0, 100, 100);
	
		//{{REGISTER_LISTENERS
		SymMouse aSymMouse = new SymMouse();
		this.addMouseListener(aSymMouse);
		fortune.addMouseListener(aSymMouse);
		cookie.addMouseListener(aSymMouse);
		namelabel.addMouseListener(aSymMouse);
		genlabel.addMouseListener(aSymMouse);
		//}}
		
		try {
		    URL data_url =
		        new URL(getCodeBase().toString() + "Misfort.txt");
		    InputStream data_stream = data_url.openStream();
		    BufferedReader reader =
		        new BufferedReader(new InputStreamReader(data_stream));
            String line_data;
            fortunes = new Vector();
            while ((line_data = reader.readLine()) != null) {
                fortunes.addElement(line_data);
            }
        } catch (Exception e) {
            fortunes.addElement(new String("Something is dreadfully wrong."));
        }
        
        this.Misfort_SetFortune();
	}
	
	//{{DECLARE_CONTROLS
	java.awt.Label namelabel = new java.awt.Label();
	java.awt.Label genlabel = new java.awt.Label();
	java.awt.Label fortune = new java.awt.Label();
	//}}

	public void Misfort_SetFortune()
	{
	    int i;
	    
	    i = (int)(java.lang.Math.random() * (float)fortunes.size());
	    fortune.setText((String)fortunes.elementAt(i));
		fortune.repaint();
	}

	class SymMouse extends java.awt.event.MouseAdapter
	{
		public void mousePressed(java.awt.event.MouseEvent event)
		{
    		Misfort_MousePressed(event);
		}
	}

	class ImageCanvas extends java.awt.Component
	{
	    Image image;
	    
	    ImageCanvas(String new_image)
	    {
	        try {
	            image = getToolkit().getImage(new URL(new_image));
	        } catch (java.net.MalformedURLException e) { }
	        MediaTracker tracker = new MediaTracker(this);
	        try {
	            tracker.addImage(image, 0);
	            tracker.waitForAll(0);
	        } catch (Exception e) { }
	    }
	    
	    public Dimension getPreferredSize() {
	        return new Dimension(100, 100);
	    }
	    
	    public void paint(Graphics g) {
	        g.drawImage(image, 0, 0, this);
	    }
	}
	
	void Misfort_MousePressed(java.awt.event.MouseEvent event)
	{
		this.Misfort_SetFortune();
	}
	
	public void paint(Graphics g) {
	    super.paint(g);
	    g.setColor(getBackground().darker().darker());
	    g.draw3DRect(87, 67, 305, 26, true);
	}
}
