/*
 * Copyright (c) 1997 John Jensen. All rights reserved.
 *
 * This software is FREE FOR COMMERCIAL AND NON-COMMERCIAL USE,
 * provided the following condition is met.
 *
 * Permission to use, copy, modify, and distribute this software and
 * its documentation for any purpose and without fee is hereby granted,
 * provided that any copy or derivative of this software or documentation
 * retaining the name "John Jensen" also retains this condition and the
 * following disclaimer.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * CopyrightVersion 1.0
 */

import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;

public class DateBean implements Test01FilterInterface
{
	DateDialog dd;
	String dateString;
	String menuString = new String("Insert Date");

    public String getMenuString()
	{
		return menuString;
	}
	
	public String filterText(Frame f, String t)
	{
		dateString = null;
		dd = new DateDialog(f,this);
		dd.show();
		return dateString;	// return date string, or null to cancel
	}

	public void setText(String t)
	{
		dateString = t;
	}
}

class DateDialog extends Dialog implements WindowListener, ActionListener
{
	private Button			button;
	private CheckboxGroup	cbg;
	private Date			date;
	private DateBean		dateBean;

	public DateDialog(Frame parent, DateBean bean)
	{
		super(parent,"Insert Date",true);

		date = new Date();
		dateBean = bean;

		Panel p1 = new Panel();
		p1.setLayout(new GridLayout(8,1));

		cbg = new CheckboxGroup();
		p1.add(makeCheckbox("EEEE, MMMM dd, yyyy hh:mm:ss a"));
		p1.add(makeCheckbox("EEEE, MMMM dd, yyyy"));
		p1.add(makeCheckbox("MMMM dd, yyyy hh:mm a"));
		p1.add(makeCheckbox("MMMM dd, yyyy"));
		p1.add(makeCheckbox("MM/dd/yy  hh:mm a"));
		p1.add(makeCheckbox("MM/dd/yy"));
		p1.add(makeCheckbox("hh:mm a"));
		p1.add(makeCheckbox("kk:mm:ss z"));
		add("Center", p1);

		Panel p2 = new Panel();
		button = new Button("Ok");
		button.addActionListener(this);
		p2.add(button);
		button = new Button("Cancel");
		button.addActionListener(this);
		p2.add(button);
		add("South",p2);
		setSize(300,400);

		addWindowListener(this);
	}
	
	private int count = 0;

	private Checkbox makeCheckbox(String s)
	{
		count++;
		SimpleDateFormat f = new SimpleDateFormat(s);
		return new Checkbox(f.format(date), (count == 1), cbg);
	}

	// add the 1.1 WindowListener stuff

    public void windowDeiconified(WindowEvent event) {}
    public void windowIconified(WindowEvent event) {}
    public void windowActivated(WindowEvent event) {}
    public void windowDeactivated(WindowEvent event) {}
    public void windowOpened(WindowEvent event) {}
    public void windowClosed(WindowEvent event) {}

    public void windowClosing(WindowEvent event)
	{
		dispose();
    }

    public void actionPerformed(ActionEvent evt)
	{
		boolean success = true;
		
        String cmd = evt.getActionCommand();
		
		if (cmd.equals("Ok"))
			dateBean.setText(cbg.getSelectedCheckbox().getLabel());

		dispose();
	}
}
