import java.awt.*;

class PlayerFrame extends Frame
{
	int player;
	Board board;

	Label playerType;
	Choice playerTypeChoice;
	Label playerLookahead;
	TextField playerLookaheadField;
	Button okButton, cancelButton;

	GridBagLayout gbl;
	GridBagConstraints gbc;

	PlayerFrame(int p, Board b)
	{
		super("Setup for Player " + Integer.toString(p) + "...");

		player = p;
		board = b;
		boolean auto = board.getPlayerAuto(player);

		gbl = new GridBagLayout();
		gbc = new GridBagConstraints();
		gbc.fill = GridBagConstraints.NONE;
		gbc.insets = new Insets(5, 0, 5, 0);
		setLayout(gbl);

		gbc.gridx = 0;
		gbc.gridy = 0;
		gbc.anchor = GridBagConstraints.EAST;
		playerType = new Label("Player type: ");
		gbl.setConstraints(playerType, gbc);
		add(playerType);

		gbc.gridx = 1;
		gbc.gridy = 0;
		gbc.anchor = GridBagConstraints.WEST;
		playerTypeChoice = new Choice();
		playerTypeChoice.addItem("Human");
		playerTypeChoice.addItem("Computer");
		if(auto) playerTypeChoice.select(1);
		else playerTypeChoice.select(0);
		gbl.setConstraints(playerTypeChoice, gbc);
		add(playerTypeChoice);

		gbc.gridx = 0;
		gbc.gridy = 1;
		gbc.anchor = GridBagConstraints.EAST;
		playerLookahead = new Label("Lookahead level: ");
		gbl.setConstraints(playerLookahead, gbc);
		add(playerLookahead);

		gbc.gridx = 1;
		gbc.gridy = 1;
		gbc.anchor = GridBagConstraints.WEST;
		playerLookaheadField = new TextField(Integer.toString(board.getPlayerDepth(player)));
		if(!auto) playerLookaheadField.disable();
		gbl.setConstraints(playerLookaheadField, gbc);
		add(playerLookaheadField);

		gbc.gridx = 0;
		gbc.gridy = 2;
		gbc.anchor = GridBagConstraints.CENTER;
		okButton = new Button("OK");
		gbl.setConstraints(okButton, gbc);
		add(okButton);

		gbc.gridx = 1;
		gbc.gridy = 2;
		cancelButton = new Button("Cancel");
		gbl.setConstraints(cancelButton, gbc);
		add(cancelButton);
	}

	public boolean handleEvent(Event e)
	{
		if(e.id == Event.WINDOW_DESTROY)
		{
			this.dispose();
			return true;
		}
		else if(e.target == playerTypeChoice && e.id == Event.ACTION_EVENT)
		{
			if(playerTypeChoice.getSelectedIndex() == 0)
				playerLookaheadField.disable();
			else playerLookaheadField.enable();
			return true;
		}
		else if(e.target == okButton && e.id == Event.ACTION_EVENT)
		{
			board.setPlayerAuto(player,
				(playerTypeChoice.getSelectedIndex()==0?false:true));
			try
			{
				board.setPlayerDepth(player,
					Integer.parseInt(playerLookaheadField.getText()));
			} catch (Exception ex) { }
			this.dispose();
			return true;
		}
		else if(e.target == cancelButton && e.id == Event.ACTION_EVENT)
		{
			this.dispose();
			return true;
		}

		return false;
	}
}

