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) {}
}
}