/* AlgAnimApp.java */
import java.awt.*;
import java.applet.*;
import java.io.*;
import java.net.*;
/**
 * This class creates an applet on a java compliant web browser. There
 * is a single button on the applet, which will bring up a frame,
 * performing the corresponding algorithm animation.
 * <p>
 * This class is normally <b>NOT TO BE CHANGED</b> and is reuseable for any
 * animation algorithm.
 * <p>
 * The filename of the source code and the button label are 
 * passed into this class from the
 * <code>applet</code> tag in the HTML file.
 */
public class AlgAnimApp extends Applet {
    static String fn_label = "filename";
    static String button_label = "buttonname";
    URL homeURL, sourceURL;
    /**
     * A awt button to bring up a frame. This button will be disabled once
     * the frame is created and will be enabled again when the frame is
     * destroy.
     * @see AlgAnimFrame
     */
    public Button start_button;
    /**
     * This constructor is not to be manually called. It inherits completely
     * the properties of the Applet class.
     */
    public AlgAnimApp() {}
    /**
     * Applet initialization method, which creates the button attribute.
     */
    public void init() {
	setBackground( Color.white );
        String file_name = this.getParameter(fn_label); 
        homeURL = getCodeBase();
        try {
            sourceURL = new URL( homeURL, file_name );
        } catch( IOException e ) {
            System.out.println("URL error " + file_name );
        }
        start_button = new Button(getParameter(button_label));
        add(start_button);
        validate();
	
    } // init()
    /**
     * The <code>start_button</code> action handling method, which is
     * automatically invoked when the button is pressed.
     */
    public boolean action(Event e, Object arg) {
        Object target = e.target;
 
        if (target == start_button) {
            start_button.disable();
            new AlgAnimFrame(this, sourceURL);
            return true;
	    //setVisible(true);
        }
        return false;
    } // action()
} // class AlgAnimApp