//Clase ejemplo de gestion de eventos
//con los dos esquemas.
//1) awt --> metodo handleEvent o action
//2) java 1.1 Listener`s

//importo las clases del paquete awt y awt.event
import java.awt.*; // con * trae todas las clases
import java.awt.event.*;

//Declaramos la clase ClaGUI 
public class IntGraUsuario2 extends Frame {// extendiende de Frame para una aplicacion local
	//Atributos: los objetos que llevará la interfaz
	//etiquetas
	private Label lbl1 = new Label("Nombre");
	private Label lbl2 = new Label("Correo");
	private Label lbl3 = new Label("Genero");
	//campos de texto
	private TextField txt1 = new TextField(30);
	private TextField txt2 = new TextField(20);
	//combo
	private Choice cho1;
	//caja de chequeo
	private Checkbox cbx1 = new Checkbox("Aceptar",true);
	//botones
	private Button bnt1 = new Button("Aceptar");
	private Button bnt2 = new Button("Cancelar");
	
	// constructor
	public IntGraUsuario2(){
		//llama el constructor de Frame
		super("Interfaz Grafica de Usuario");
		//instancia el objeto Choice
		cho1=new Choice();
		//adiciona la lista de opciones
		cho1.add("Femenino");
		cho1.add("Masculino");
		
		//colocar el manejador de eventos para la ventana
		//para que responda al evento de cerrar
		CerVentana cv = new CerVentana();
		addWindowListener(cv);
		
		//colocar el manejador de eventos para el objeto choice	
		EveChoice ec = new EveChoice(lbl1);
		cho1.addItemListener(ec);
				
		// colocar los elementos dentro del contenedor (en la interface)
		// en el orden que deben aparecer
		add(lbl1);
		add(txt1);
		add(lbl2);
		add(txt2);
		add(lbl3);
		add(cho1);
		add(cbx1);
		add(bnt1);
		add(bnt2);  
		
	}
	
	//metodo main para ejecutar la clase GUI
	public static void main(String arg[]){
		//crear un objeto IntGraUsuario
		IntGraUsuario2 gui = new IntGraUsuario2();
		//Crear un administrador de diseño FlowLayout
		FlowLayout f1 = new FlowLayout();
		//establecer el layout para la aplicacoin IntGraUsuario
		gui.setLayout(f1);
		//establecer el tamaño para la aplicacion
		gui.setSize(300,300);
		//hacer que la aplicacion IntGraUsuario sea visible
		gui.setVisible(true);

	}	
	
	//redefinicion del metodo action para el manejo de eventos con
	//el esquema antiguo
	public boolean action (Event e, Object o) {
		if (e.target == bnt1) {
			//recuperar la informacion de los componentes
		//e imprimirla por pantalla
			String aux= txt1. getText() + " ";
			aux= aux + txt1.getText() + " " ;
			aux= aux + cho1.getSelectedItem();
			aux= aux + (cbx1.getState()?" Aceptar":" No Acepta");
			System.out.println(aux);
		}
		if (e.target == bnt2) {
			//limpiar los componetes
			txt1. setText( " " );
			txt2. setText( " " );
			cho1.select (0);
			cbx1.setState(true);
			lbl1.setText("Nombre");
		}
		else
			System.out.println("Click en Otro Componente");
		return true;				
	}
}

//clase para manejar los eventos de la ventana
class CerVentana extends WindowAdapter  { //extendiendo de otra clase
		public void windowClosing (WindowEvent we) {
			System.exit (0);
		}
}	

//clase para manejar los eventos de Choice
class EveChoice implements ItemListener { //Implementando la interfaz asociada
	private Label lbl;
	// costructor de la clase
	public EveChoice (Label l) {
		lbl=l;
	}
	//metodo para manejar el evento de cambiar la opcion en el Choice	
	//y cambiar el texto del objeto Label asociado
	public void itemStateChanged (ItemEvent ie) {
		int i= ((Choice)ie.getSource()).getSelectedIndex();
		if(i==0)
			lbl.setText("Señorita");
		else
			lbl.setText("Señor");
	}
}