testagendapaso2.java

per admin darrera modificació 2020-04-06T13:06:41+02:00
/* * TestAgendaPaso2.java * * Una agenda con interfaz J2ME */ package vch.agenda2; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.List; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.Ticker; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.TextField; public class TestAgendaPaso2 extends MIDlet implements CommandListener { private Agenda agenda; // Soporte para nuestras fichas private Display display; // Pantalla del movil private List menuprincipalList; // Menú principal private Command salirCommand; // Terminar la aplicación private Command okCommand; // Respuesta afirmativa private Form addForm; // Formulario para añadir nuevas Fichas private Command backCommand; // Retroceder private TextField nombre; private TextField apellidos; private TextField correo; private TextField telefono; private List briefList; // Lista con el resumen de las Fichas (una por línea) private Form detallesForm; // Visualiza todas las propiedades de una ficha // Construimos e inicializamos nuestros objetos public TestAgendaPaso2() { // Creamos una agenda agenda = new Agenda(); // Obtenemos la pantalla de nuestro móvil display = Display.getDisplay(this); // Definimos la pantalla principal String opciones[] = {"Nueva ficha", "Listado"}; menuprincipalList = new List("Menu principal", List.IMPLICIT, opciones, null); menuprincipalList.setTicker(new Ticker("Aplicación didáctica con licencia GPL")); salirCommand = new Command("Salir", Command.EXIT, 1); menuprincipalList.addCommand(salirCommand); okCommand = new Command("Ok", Command.OK, 1); menuprincipalList.setSelectCommand(okCommand); menuprincipalList.setCommandListener(this); // Definimos el formulario que permite añadir una nueva Ficha addForm = new Form("Agregar una nueva Ficha"); nombre = new TextField("Nombre:", "", 20, TextField.ANY); apellidos = new TextField("Apellidos:", "", 20, TextField.ANY); correo = new TextField("Correo:", "", 20, TextField.EMAILADDR); telefono = new TextField("Telefono", "", 20, TextField.PHONENUMBER); addForm.append(nombre); addForm.append(apellidos); addForm.append(correo); addForm.append(telefono); addForm.addCommand(okCommand); backCommand = new Command("Retroceder", Command.BACK, 1); addForm.addCommand(backCommand); addForm.setCommandListener(this); // Formulario para mostrar los detalles de una ficha detallesForm = new Form("Detalles"); detallesForm.addCommand(backCommand); detallesForm.setCommandListener(this); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { // TODO Auto-generated method stub } protected void pauseApp() { // TODO Auto-generated method stub } protected void startApp() throws MIDletStateChangeException { // Colocamos en pantalla el menu principal display.setCurrent(menuprincipalList); } // Implementamos la interfaz CommandListener public void commandAction(Command c, Displayable d){ // Si han pulsado el comando salir, entonces terminamos if(c==salirCommand) { try {destroyApp(true);} catch(Exception e){} notifyDestroyed(); } // Si en la pantalla principal han seleccionado una opción, hacemos lo que // corresponda if(c == okCommand && d == menuprincipalList) { switch(menuprincipalList.getSelectedIndex()) { case 0: presentaAddForm(); break; case 1: presentaBriefList(); break; } } // Si en la pantalla addForm pulsan retroceder volvemos al menú principal if(c == backCommand && d == addForm) display.setCurrent(menuprincipalList); // Si en la pantalla addForm pulsan ok, agregamos la Ficha y nos quedamos preparados // para insertar una nueva if(c == okCommand && d == addForm) agregaFicha(); // Si en la pantalla briefList pulsamos back u ok hacemos lo que corresponda if(c == backCommand && d == briefList) display.setCurrent(menuprincipalList); if(c == okCommand && d == briefList) muestraDetalles(); // Si en la pantalla detallesForm pulsan el botón back if(c == backCommand && d == detallesForm) {presentaBriefList(); System.out.println("asdfasdf");} } // Presentamos el formulario de para agregar una nueva Ficha private void presentaAddForm() { // Limpiamos los TextFields y ponemos el formulario en la pantalla nombre.setString(""); apellidos.setString(""); correo.setString(""); telefono.setString(""); display.setCurrent(addForm); } // Presentamos la pantalla con el listado breve de Fichas private void presentaBriefList() { // Obtenemos los nombres a listar String nombres[] = new String[agenda.size()]; for(int i=0; i<agenda.size(); i++) { try{ Ficha f = agenda.fichaAt(i); nombres[i] = f.nombre; } catch(FichaFueraDeRangoAgendaException e) {} } // Construimos e inicializamos la lista briefList = new List("Listado", List.IMPLICIT, nombres, null); briefList.addCommand(backCommand); briefList.setSelectCommand(okCommand); briefList.setCommandListener(this); // Ponemos en pantalla la Lista display.setCurrent(briefList); } // Agrega una ficha y deja el formulario limpio para la siguiente private void agregaFicha() { Ficha f = new Ficha(); f.nombre = nombre.getString(); f.apellidos = apellidos.getString(); f.correo = correo.getString(); f.telefono = telefono.getString(); nombre.setString(""); apellidos.setString(""); correo.setString(""); telefono.setString(""); agenda.add(f); addForm.setTicker(new Ticker("Contacto: " + f.nombre + " " + f.apellidos + " agregado")); } // Presenta los detalles de la ficha seleccionada private void muestraDetalles() { try { Ficha f = agenda.fichaAt(briefList.getSelectedIndex()); detallesForm.deleteAll(); detallesForm.append("Nombre: " + f.nombre); detallesForm.append("Apellidos: " + f.apellidos); detallesForm.append("Correo: " + f.correo); detallesForm.append("Telefono: " + f.telefono); display.setCurrent(detallesForm); }catch(FichaFueraDeRangoAgendaException e) {} } }