/*
 * Created on Jan 18, 2005
 *
 */
package op;

import java.applet.*;
import java.awt.*;
import tabua.*;
import java.util.Vector;
/**
 * @author paulo
 *
 */
public class UI extends Applet{
	private List lstPalavras;
	private Button btnAdiciona;
	private Button btnGera;
	private Button btnLimpa;
	private Label lblLista;
	private Label lblPalavra;
	private Label lblWidth;
	private Label lblHeight;
	private Label lblTabua;
	private TextField txtWidth;
	private TextField txtHeight;
	private TextField txtPalavra;
	private TextArea txtTabua;
	private Panel pnlWidth;
	private Panel pnlPalavras;	
	private Panel pnlBotoes;
	private Panel pnlTopo;
	
	public void init(){
		inicializaControles();
	}
	
	private void inicializaControles(){
		this.setSize(400,300);
		
		lstPalavras = new List(5,false);
		btnAdiciona = new Button("Adicionar");
		btnGera     = new Button("Gerar Caça Palavra");
		btnLimpa    = new Button("Limpar");
		txtWidth    = new TextField();
		txtHeight   = new TextField();
		txtPalavra  = new TextField();
		txtTabua    = new TextArea();
		pnlWidth    = new Panel();
		pnlPalavras = new Panel();
		pnlBotoes   = new Panel();
		pnlTopo     = new Panel();
		lblLista    = new Label("Lista de Palavras:");
		lblWidth    = new Label("Largura:");
		lblHeight   = new Label("Altura:");
		lblTabua    = new Label("Caça Palavra");
		lblPalavra  = new Label("Palavra:");
		
		GridLayout grd1 = new GridLayout(2,2,4,4);
		pnlWidth.setLayout(grd1);
		pnlWidth.add(lblWidth);
		pnlWidth.add(txtWidth);
		pnlWidth.add(lblHeight);
		pnlWidth.add(txtHeight);

		pnlPalavras.setLayout(grd1);
		pnlPalavras.add(lblPalavra);
		pnlPalavras.add(txtPalavra);
		pnlPalavras.add(btnAdiciona);

		GridLayout grd2 = new GridLayout(2,1,4,4);
		pnlBotoes.add(btnGera);
		pnlBotoes.add(btnLimpa);

		pnlTopo.add(pnlWidth);
		pnlTopo.add(pnlPalavras);
		pnlTopo.add(lstPalavras);
 
		
		BorderLayout b = new BorderLayout();
		setLayout(b);
		add("North",pnlTopo);
		add("West",pnlBotoes);
		add("Center",txtTabua);
		
		txtTabua.setFont(new Font("Courier",Font.PLAIN,12));
	}

	
	public boolean action(Event evt, Object arg){
		if (evt.target instanceof Button){
			if (((String)arg).equals("Adicionar")){
				if (!txtPalavra.getText().equals(""))
					lstPalavras.add(txtPalavra.getText());
				txtPalavra.setText("");
			}
			if (((String)arg).equals("Gerar Caça Palavra")){
				geraTabua();
			}			
			if (((String)arg).equals("Limpar")){
				txtWidth.setText("");
				txtHeight.setText("");
				txtPalavra.setText("");
				txtTabua.setText("");
				lstPalavras.clear();
			}			
		}
		return false;
	}
	
	private void geraTabua(){
		//try{
			txtTabua.setText("");
			int w = new Integer(txtWidth.getText()).intValue();
			int h = new Integer(txtHeight.getText()).intValue();
			Vector v = new Vector();
			for (int i=0; i<lstPalavras.countItems(); i++){
				v.addElement(lstPalavras.getItem(i));
			}
			Tabua tabua = new Tabua(v,w,h);
			char t[][] = tabua.getTabua();
			for(int i=0; i<h; i++){
				for(int j=0; j<w; j++){
					txtTabua.setText(txtTabua.getText().concat(new Character(t[i][j]).toString()));
					txtTabua.setText(txtTabua.getText().concat(" "));
				}
				txtTabua.setText(txtTabua.getText().concat("\n"));		
			}
		//}
		//catch(Exception e){
		//	e.printStackTrace();
		//}
	}
}
