// $Id: PromptAuthenticator.java,v 1.4 2001/11/08 00:33:29 mdean Exp $
// adapted from http://dblab.ce.cnu.ac.kr/~bart/private/sun_java_tips/magazine99-9.htm


package org.daml;


/**
 * prompt for username and password when accessing protected web sites
 */
public class PromptAuthenticator
    extends java.net.Authenticator
{
    java.awt.Frame frame;

    public PromptAuthenticator()
    {
	frame = new java.awt.Frame(); // dummy
    }

    public PromptAuthenticator(java.awt.Frame frame)
    {
	this.frame = frame;
    }
    
    protected java.net.PasswordAuthentication getPasswordAuthentication()
    {
	java.awt.Frame dummyFrame = new java.awt.Frame();
	final java.awt.Dialog jd = new java.awt.Dialog (dummyFrame, "Enter Network Password", true);
	jd.setLayout (new java.awt.GridLayout (0, 1));
	String host = getRequestingHost(); // requires JDK 1.4
	if (host != null)
	    jd.add(new java.awt.Label ("Site:  " + host));
	java.awt.Label jl = new java.awt.Label ("Realm:  " + getRequestingPrompt());
	jd.add (jl);
	jd.add(new java.awt.Label("User Name:"));
	java.awt.TextField username = new java.awt.TextField();
	username.setBackground (java.awt.Color.lightGray);
	jd.add (username);
	jd.add(new java.awt.Label("Password:"));
	java.awt.TextField password = new java.awt.TextField();
	password.setEchoChar ('*');
	password.setBackground (java.awt.Color.lightGray);
	jd.add (password);
	java.awt.Button jb = new java.awt.Button ("OK");
	jd.add (jb);
	java.awt.event.ActionListener actionListener = 
	    new java.awt.event.ActionListener()
		{
		    public void actionPerformed(java.awt.event.ActionEvent e) { 
			jd.dispose(); 
		    }
		}; 
	jb.addActionListener(actionListener);
	password.addActionListener(actionListener);
	jd.pack();
	jd.setVisible(true);
	return new java.net.PasswordAuthentication (username.getText(), password.getText().toCharArray());
    }
}
