package SesameGUI;

import javax.swing.*;
import java.awt.*;

public class ValidatedField extends JTextField
	{
	public ValidatedField(String defaultValue, int size)
		{
		super(defaultValue, size);

		largerField = null;
		smallerField = null;

		setInputVerifier(new GenericVerifier());
		}

	public boolean isValid()
		{
		return false;
		}

	public boolean isBiggerThan(ValidatedField other)
		{
		return false;
		}

	public JTextField getLargerField()
		{
		return largerField;
		}

	public void setLargerField(JTextField largerField)
		{
		this.largerField = largerField;
		}

	public JTextField getSmallerField()
		{
		return smallerField;
		}

	public void setSmallerField(JTextField smallerField)
		{
		this.smallerField = smallerField;
		}

	public byte validateRelation()
		{
		byte ret;

		ret = 1;

		if (largerField != null)
			{
			if (isBiggerThan((ValidatedField)largerField) || (getText() == largerField.getText()))
				ret = 0;
			}

		if (smallerField != null)
			{
			if (!(isBiggerThan((ValidatedField)smallerField)))
				ret = 0;
			}

		if (ret == 0)
			{
			if (JOptionPane.showConfirmDialog(this, "There is an error in the relation between the fields.\nDo you want to ignore this situation?") == JOptionPane.YES_OPTION)
				ret = 2;
			}

		return ret;
		}

	private static class GenericVerifier extends InputVerifier
		{
		public boolean verify(JComponent component)
			{
			boolean ret;

			ret = ((ValidatedField)component).isValid();

			byte relation;

			relation = ((ValidatedField)component).validateRelation();

			if (ret && (relation == 1))
				{
				component.setBackground(Color.white);
				}
			else
				{
				component.setBackground(Color.red);
				}

			return ret;
			}
		}


	private JTextField largerField;
	private JTextField smallerField;
	}


