import java.awt.*;

public class CPTableController extends TableController
{
	public CPTableController(TableRepresentation t, TableView v, Label m)
	{
		super(t, v, m);
	}
	
	public CPTableController(Label m)
	{
		super(m);
	}
	
    public void cellChanged(int x, int y, Relation r)
    {
    	if (r.equals(table.cell[x][y]))
    		return;
    	else if (!table.isConsistent())
    	{
    		super.cellChanged(x, y, r);
    		message.setText("Table was inconsistent. Start afresh.");
    	}
    	else if (!table.cell[x][y].includes(r))
    	{
    		message.setText(r.toString() + 
    			" is not included in " + table.cell[x][y].toString() +
    			". Old value restored.");
    		super.cellChanged(x, y, table.cell[x][y]);
    	}
    	else
    	{
    		super.cellChanged(x, y, r);
    		try
    		{
    			message.setText("Propagating constraints");
    			table.propagate(x, y);
    			message.setText("Constraints propagated.");
    		}
    		catch(ConsistencyException e)
    		{
    			message.setText("Table is inconsistent.");
    		}
    		view.update();
    	}
    }

}