import java.awt.*;
import java.io.ByteArrayOutputStream;

public class ParaDialogTest extends Frame
{
    cam.dataxchg.ParameterList L;
	cam.visuals.dialogs.ParameterDialog pDialog;
    	
	public ParaDialogTest()
	{

		//{{INIT_CONTROLS
		setLayout(null);
		setVisible(false);
		setSize(281,283);
		TestButton = new java.awt.Button();
		TestButton.setActionCommand("button");
		TestButton.setLabel("Test Parameter Dialog");
		TestButton.setBounds(60,36,152,40);
		TestButton.setBackground(new Color(-2286012));
		add(TestButton);
		TextDisplay = new java.awt.TextArea();
		TextDisplay.setBounds(28,104,232,160);
		add(TextDisplay);
		setTitle("A Basic Application");
		//}}

		//{{REGISTER_LISTENERS
		SymWindow aSymWindow = new SymWindow();
		this.addWindowListener(aSymWindow);
		SymAction lSymAction = new SymAction();
		TestButton.addActionListener(lSymAction);
		//}}
}

	public ParaDialogTest(String title)
	{
		this();
		setTitle(title);
	}

	public synchronized void show()
	{
		move(50, 50);
		super.show();
	}

	static public void main(String args[])
	{
		(new ParaDialogTest()).show();
	}

	public void addNotify()
	{
	    // Record the size of the window prior to calling parents addNotify.
	    Dimension d = getSize();

		super.addNotify();

		if (fComponentsAdjusted)
			return;

		// Adjust components according to the insets
		setSize(insets().left + insets().right + d.width, insets().top + insets().bottom + d.height);
		Component components[] = getComponents();
		for (int i = 0; i < components.length; i++)
		{
			Point p = components[i].getLocation();
			p.translate(insets().left, insets().top);
			components[i].setLocation(p);
		}
		fComponentsAdjusted = true;
	}

    // Used for addNotify check.
	boolean fComponentsAdjusted = false;

	//{{DECLARE_CONTROLS
	java.awt.Button TestButton;
	java.awt.TextArea TextDisplay;
	//}}

	class DWindow extends java.awt.event.WindowAdapter
	{
		public void windowClosed(java.awt.event.WindowEvent event)
		{
			Object object = event.getSource();
	        if (object == pDialog)
			{
			    if((pDialog.getExitState()).equals("OK"))
			    {
			    ByteArrayOutputStream S = new ByteArrayOutputStream();
			    L.output(S);
			    TextDisplay.append(S.toString());
			    }
			    else
			    {
			     TextDisplay.append("Cancel Hit"); 
			    }
			}
		}
	}
	
	class SymWindow extends java.awt.event.WindowAdapter
	{
		public void windowClosing(java.awt.event.WindowEvent event)
		{
			Object object = event.getSource();
			if (object == ParaDialogTest.this)
				ParaDialogTest_WindowClosing(event);
		}
	}

	void ParaDialogTest_WindowClosing(java.awt.event.WindowEvent event)
	{
		hide();		 // hide the Frame
		dispose();	  // free the system resources
		System.exit(0); // close the application
	}

	class SymAction implements java.awt.event.ActionListener
	{
		public void actionPerformed(java.awt.event.ActionEvent event)
		{
			Object object = event.getSource();
			if (object == TestButton)
			{
			    TestButton_Action(event);
			}
			 
		}
	}

	void TestButton_Action(java.awt.event.ActionEvent event)
	{
		L = new cam.dataxchg.ParameterList("Runtime Parameters");
    	L.addDouble("diffusivity",.05);
    	L.addDouble("a",0);
    	L.addDouble("b",1);
    	L.addDouble("dt",.01);
   
        
    	pDialog 
    	= new cam.visuals.dialogs.ParameterDialog(this,L,true);
    	DWindow dWindow = new  DWindow();
    	pDialog.addWindowListener(dWindow);
		pDialog.show();
	}

}