/*
	A basic extension of the java.applet.Applet class
 */

import java.awt.*;
import java.applet.*;

public class Algorithm1 extends Applet
{
	private PointRelation rel1 = new PointRelation();
	private PointRelation rel2 = new PointRelation();
	private PointRelation rel3;

	public void init()
	{
		// Take out this line if you don't use symantec.itools.net.RelativeURL or symantec.itools.awt.util.StatusScroller
		symantec.itools.lang.Context.setApplet(this);
	
		// This code is automatically generated by Visual Cafe when you add
		// components to the visual environment. It instantiates and initializes
		// the components. To modify the code, only use code syntax that matches
		// what Visual Cafe can generate, or Visual Cafe may be unable to back
		// parse your Java file into its visual environment.
		//{{INIT_CONTROLS
		setLayout(null);
		setSize(480,240);
		header.setText("1. Union of point relations");
		header.setAlignment(java.awt.Label.CENTER);
		add(header);
		header.setFont(new Font("Dialog", Font.PLAIN, 14));
		header.setBounds(0,48,480,24);
		activePanel.setLayout(new GridLayout(1,5,0,0));
		add(activePanel);
		activePanel.setBounds(60,108,360,24);
		activePanel.add(relation1);
		relation1.setBounds(0,0,72,24);
		label2.setText("union");
		label2.setAlignment(java.awt.Label.CENTER);
		activePanel.add(label2);
		label2.setFont(new Font("Dialog", Font.BOLD, 12));
		label2.setBounds(72,0,72,24);
		activePanel.add(relation2);
		relation2.setBounds(144,0,72,24);
		label3.setText("is");
		label3.setAlignment(java.awt.Label.CENTER);
		activePanel.add(label3);
		label3.setFont(new Font("Dialog", Font.BOLD, 12));
		label3.setBounds(216,0,72,24);
		activePanel.add(result);
		result.setBounds(288,0,72,24);
		message.setText("Enter point relations in the text boxes.");
		message.setAlignment(java.awt.Label.CENTER);
		add(message);
		message.setFont(new Font("Dialog", Font.PLAIN, 12));
		message.setBounds(0,168,480,24);
		//}}
	
		//{{REGISTER_LISTENERS
		SymText lSymText = new SymText();
		relation1.addTextListener(lSymText);
		relation2.addTextListener(lSymText);
		//}}
	}
	
	//{{DECLARE_CONTROLS
	java.awt.Label header = new java.awt.Label();
	java.awt.Panel activePanel = new java.awt.Panel();
	java.awt.TextField relation1 = new java.awt.TextField();
	java.awt.Label label2 = new java.awt.Label();
	java.awt.TextField relation2 = new java.awt.TextField();
	java.awt.Label label3 = new java.awt.Label();
	java.awt.Label result = new java.awt.Label();
	java.awt.Label message = new java.awt.Label();
	//}}

	class SymText implements java.awt.event.TextListener
	{
		public void textValueChanged(java.awt.event.TextEvent event)
		{
			Object object = event.getSource();
			if (object == relation1)
				relation1_TextValueChanged(event);
			else if (object == relation2)
				relation2_TextValueChanged(event);
		}
	}

	void relation1_TextValueChanged(java.awt.event.TextEvent event)
	{
		message.setText("");
		if (relation1.getText().equals(""))
		{
			result.setText("");
		}
		else
		{
			try
			{
				rel1.set(relation1.getText());
				if (!relation2.getText().equals(""))
				{
					if (rel2.isNull())
					{
						result.setText("");
						message.setText(relation2.getText()
							+ " is not a valid point relation");
					}
					else
					{
						rel3 = (PointRelation)rel1.union(rel2);
						result.setText(rel3.toString());
					}
				}
			}
			catch (FormatException e)
			{
				result.setText("");
				rel1 = new PointRelation();
				message.setText(relation1.getText()
					+ " is not a valid point relation");
			}
		}
	}

	void relation2_TextValueChanged(java.awt.event.TextEvent event)
	{
		message.setText("");
		if (relation2.getText().equals(""))
		{
			result.setText("");
		}
		else
		{
			try
			{
				rel2.set(relation2.getText());
				if (!relation1.getText().equals(""))
				{
					if (rel1.isNull())
					{
						result.setText("");
						message.setText(relation1.getText()
							+ " is not a valid point relation");
					}
					else
					{
						rel3 = (PointRelation)rel1.union(rel2);
						result.setText(rel3.toString());
					}
				}
			}
			catch (FormatException e)
			{
				result.setText("");
				rel2 = new PointRelation();
				message.setText(relation2.getText()
					+ " is not a valid point relation");
			}
		}
	}
}
