//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.*;

public class IntUsuario2 extends Frame{// extendiende de Frame para una aplicacion local
	// defino e instancio los componentes a utilizar
	//etiquetas
	private Label lbl1=new Label("Nombre");
	private Label lbl2=new Label("Clave");
	private Label lbl3=new Label("Tipo");
	//cajas de texto
	private TextField txt1=new TextField(20);
	private TextField txt2=new TextField(10);
	//combo
	private Choice ch1;
	//caja de chequeo
	private Checkbox cb1=new Checkbox("Esta en un equipo publico?"); 
	//botones
	private Button btn1 =new Button("Aceptar");
	private Button btn2 =new Button("Cancelar");
	
	//Constructor de la clase
	public IntUsuario2(){
		super("Primera Aplicación GUI");
		//instancia el objeto Choice
		ch1= new Choice();
		//cargar las opciones de la lista para el objeto Choice
		ch1.addItem("Administrador");
		ch1.addItem("Usuario");
		ch1.addItem("Invitado");
		//establecer el caracter mascara para la caja de texto de clave
		txt2.setEchoChar('*');
		//asociar los manejadores de eventos a los componentes
		//colocar el manejador de evetos para la ventana
		CerVentana cv =new CerVentana();
   		addWindowListener(cv);
   		//colocar el manejador de eventos para la caja de chequeo
   		EveCheckbox ecb=new EveCheckbox();
   		cb1.addItemListener(ecb);
   		//colocar el manejador de eventos para el choice
   		EveChoice ech=new EveChoice(this);
   		ch1.addItemListener(ech);
		
		// 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(ch1); 
		add(cb1);
		add(btn1);
		add(btn2);
	}
	
	//metodo main para ejecutar la clase GUI
	public static void main (String args[]){
		//crear un objeto IntUsuario
		IntUsuario2 app = new IntUsuario2();
		//establecer el tamaño para la aplicacion
		app.setSize(400,400);
		//Crear un administrador de diseño FlowLayout
		FlowLayout fl= new FlowLayout();
		//establecer el layout para la aplicacion app
		app.setLayout(fl);
		//hacer que la aplicacion sea visible
		app.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 instanceof Button){
			if(e.arg.equals("Aceptar")){
				//recuperar la informacion de los componentes
    			//e imprimirla por pantalla
				String aux= txt1.getText()+" ";
				aux=aux+txt2.getText()+" ";
				aux=aux+ch1.getSelectedItem()+" ";
				//validacion ? :
				aux=aux+(cb1.getState()?"Equipo Publico":"Equipo no Publico");				
				System.out.println(aux);
			}
			else{
				//limpiar los componetes
				txt1.setText("");
				txt2.setText("");
				cb1.setState(true);
				ch1.select(0);				
			}
			return true;
		}
		else{
			System.out.println("evento en otro componente");
			return false;
		}
	}
}

//clase para manejar los eventos de la ventana
class CerVentana extends WindowAdapter{
	//metodo que se llama al intentar cerrar la ventana
	public void windowClosing(WindowEvent e){
		System.exit(0);
	}
}

//clase para manejar los eventos de Choice
class EveCheckbox implements ItemListener{
	//metodo para manejar el evento de cambiar la opcion en el Choice
	//imprime el estado de la caja por la consola
	public void itemStateChanged(ItemEvent ie){
		String aux=""+((Checkbox)ie.getSource()).getState();
		System.out.println(aux);
	}
}

//clase para manejar los eventos de Choice
class EveChoice implements ItemListener{
	private IntUsuario2 app;
	// costructor de la clase
	public EveChoice(IntUsuario2 a){
		app=a;
	}
	//metodo para manejar el evento de cambiar la opcion en el Choice
	//coloca la opcion seleccionada en el titulo de la ventana
	public void itemStateChanged(ItemEvent ie){
		String aux=((Choice)ie.getSource()).getSelectedItem();
		app.setTitle("Mi Primera Aplicación GUI : "+aux);
	}
}


