/*
 * Copyright (c) 1995-1997 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Permission to use, copy, modify, and distribute this software
 * and its documentation for NON-COMMERCIAL purposes and without
 * fee is hereby granted provided that this copyright notice
 * appears in all copies. Please refer to the file "copyright.html"
 * for further important copyright and licensing information.
 *
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 */
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import com.sun.java.swing.AbstractButton;
import com.sun.java.swing.JButton;
import com.sun.java.swing.JPanel;
import com.sun.java.swing.JComponent;
import com.sun.java.swing.JApplet;
import com.sun.java.swing.ImageIcon;

public class AppletDemo extends JApplet
                        implements java.awt.event.ActionListener {

    protected JButton b1, b2, b3;
    protected String leftButtonFilename = "right.gif";
    protected String middleButtonFilename = "middle.gif";
    protected String rightButtonFilename = "left.gif";

    private static boolean inAnApplet = true;

    public void init() {
	ImageIcon leftButtonIcon;
	ImageIcon middleButtonIcon;
	ImageIcon rightButtonIcon;

	if (inAnApplet) {
	    //JComponent.setApplet(this); //no longer necessary
	    URL leftButtonURL = getURL(leftButtonFilename);
	    URL middleButtonURL = getURL(middleButtonFilename);
	    URL rightButtonURL = getURL(rightButtonFilename);

	    leftButtonIcon = new ImageIcon(leftButtonURL);
	    middleButtonIcon = new ImageIcon(middleButtonURL);
	    rightButtonIcon = new ImageIcon(rightButtonURL);
	} else {
	    leftButtonIcon = new ImageIcon(leftButtonFilename);
	    middleButtonIcon = new ImageIcon(middleButtonFilename);
	    rightButtonIcon = new ImageIcon(rightButtonFilename);
	}

	System.out.println("JApplet layout manager is " 
			   + getLayout());
	System.out.println("Content pane layout manager is " 
			   + getContentPane().getLayout());
        b1 = new JButton("Disable middle button", leftButtonIcon);
	b1.setVerticalTextPosition(AbstractButton.CENTER);
	b1.setHorizontalTextPosition(AbstractButton.LEFT);
	b1.setKeyAccelerator('d');
	b1.setActionCommand("disable");

        b2 = new JButton("Middle button", middleButtonIcon);
	b2.setVerticalTextPosition(AbstractButton.BOTTOM);
	b2.setHorizontalTextPosition(AbstractButton.CENTER);
	b2.setKeyAccelerator('m');

        b3 = new JButton("Enable middle button", rightButtonIcon);
	//Use the default text position of CENTER, RIGHT.
	b3.setKeyAccelerator('e');
	b3.setActionCommand("enable");
        b3.setEnabled(false);

	//Listen for actions on buttons 1 and 3.
	b1.addActionListener(this);
	b3.addActionListener(this);

        //Add Components to a JPanel, using the default FlowLayout. 
	JPanel pane = new JPanel();
        pane.add(b1);
        pane.add(b2);
        pane.add(b3);

	getContentPane().add("Center", pane);
    }

    public void actionPerformed(java.awt.event.ActionEvent e) {
        if (e.getActionCommand().equals("disable")) {
            b2.setEnabled(false);
            b1.setEnabled(false);
            b3.setEnabled(true);
        } else { 
            b2.setEnabled(true);
            b1.setEnabled(true);
            b3.setEnabled(false);
        }
    }
    
    /*
     * XXX: This method should be made obsolete by a new ImageIcon
     * XXX: constructor: ImageIcon(URL, String, String).
     */
    protected URL getURL(String filename) {
        URL codeBase = getCodeBase();
	URL url = null;

	try {
	    url = new URL(codeBase, filename);
	} catch (java.net.MalformedURLException e) {
	    System.out.println("Couldn't create image: badly specified URL");
	    return null;
	}

	return url;
    }
    
    public static void main(String[] args) {
	Frame frame = new Frame("Application: AppletDemo");

	WindowListener l = new WindowAdapter() {
	    public void windowClosing(WindowEvent e) {System.exit(0);}
	};
	frame.addWindowListener(l);

	inAnApplet = false;
	AppletDemo applet = new AppletDemo();
	applet.init();
	frame.add("Center", applet);
	frame.pack();
	frame.show();
    }
}
