Interfaces Sistema de Reservaciones InterfaceUsuario.java class InterfaceUsuario extends Frame implements WindowListener, ActionListener { private Pagina pagina; // pagina a desplegar public InterfazUsuario() { setSize(800,600); setBackground(Color.lightGray); addWindowListener(this); pagina = new PaginaPrincipal(); desplegarPagina(pagina); } public void desplegarPagina(Pagina p) { if (p != null) { pagina = p; p.desplegarPagina(this); } else pagina.desplegarPagina(this); } show(); } public void setPagina (Pagina p) { pagina = p; } public void actionPerformed(ActionEvent event) { System.out.println("Action: "+event.getActionCommand()); Pagina p = pagina.manejarEvento(event.getActionCommand()); pagina.resetPagina(this); desplegarPagina(p); } public void windowClosed(WindowEvent event) { } public void windowDeiconified(WindowEvent event) { } public void windowIconified(WindowEvent event) { } public void windowActivated(WindowEvent event) { } public void windowDeactivated(WindowEvent event) { } public void windowOpened(WindowEvent event) { } public void windowClosing(WindowEvent event) { System.exit(0); } public static void main(String[] args) { System.out.println("Starting System..."); InterfazUsuario iu = new InterfazUsuario(); } } Pagina.java abstract class Pagina { protected Pagina return_p; // pagina de retorno protected Vector paneles,botones,textos; 1 Interfaces Sistema de Reservaciones protected Panel panel; protected Button boton; protected TextField texto; public Pagina() { resetPagina(); createPagina(); } public Pagina(Pagina p) { this(); return_p = p; } public abstract void createPagina(); public void agregarBotonesRegresarSalir(Panel panel){ boton = new Button ("Regresar"); botones.addElement(boton); panel.add(boton); boton = new Button ("Salir"); panel.add(boton); botones.addElement(boton); paneles.addElement(panel); } public Pagina manejarEventosRegresarSalir(String str) { Pagina p = this; if (str.equals("Regresar")) p = getPaginaRegresar(); else if (str.equals("Salir")) System.exit(0); return p; } public Pagina getPaginaRegresar() { return return_p; } public void desplegarPagina(InterfazUsuario ui) { System.out.println("Desplegando: "+ this); int ps = paneles.size(); ui.setLayout(new GridLayout(ps,1)); for (int i = 0; i < ps; i++) ui.add((Panel)paneles.elementAt(i)); int bs = botones.size(); for (int i = 0; i < bs; i++) if ((boton = (Button)botones.elementAt(i)) != null) boton.addActionListener(ui); } public void resetPagina() { paneles = new Vector(); botones = new Vector(); textos = new Vector(); } public void resetPagina(InterfazUsuario ui) { ui.removeAll(); int bs = botones.size(); for (int i = 0; i < bs; i++) if ((boton = (Button)botones.elementAt(i)) != null) boton.removeActionListener(ui); } public abstract Pagina manejarEvento(String str); } 2 Interfaces Sistema de Reservaciones PaginaPrincipal.java class PaginaPrincipal extends Pagina { private Pagina paginaCrearRegUsuario; private Pagina paginaServicio; public void createPagina() { panel = new Panel(); panel.setLayout(new GridLayout(1,1)); panel.add(new Label("SISTEMA DE RESERVACIONES DE VUELO", Label.CENTER)); paneles.addElement(panel); panel = new Panel(); panel.setLayout(new GridLayout(4,1));//5 fila, 1 cols panel.add(new Label("Servicios Ofrecidos:", Label.CENTER)); panel.add(new Label("* Consulta de Vuelos, Tarifas y Horarios", Label.CENTER)); panel.add(new Label("* Reserva de Vuelos", Label.CENTER)); panel.add(new Label("* Compra de Boletos", Label.CENTER)); paneles.addElement(panel); panel = new Panel(); panel.setLayout(new GridLayout(1,1)); panel.add(new Label("Para registrarse por primera vez oprima:", Label.CENTER)); paneles.addElement(panel); panel = new Panel(); boton = new Button ("Registrarse por Primera Vez"); botones.addElement(boton); panel.add(boton); paneles.addElement(panel); panel = new Panel(); panel.setLayout(new GridLayout(1,1)); panel.add(new Label("Para accesar todos los servicios de vuelo (consulta, reserva, compra) o modificar su registro, oprima:", Label.CENTER)); paneles.addElement(panel); panel = new Panel(); panel.add(new Label("Login:", Label.LEFT)); panel.add(new TextField (20)); paneles.addElement(panel); panel = new Panel(); panel.add(new Label("Password:")); texto = new TextField(20); texto.setEchoChar('#'); panel.add(texto); paneles.addElement(panel); panel = new Panel(); boton = new Button("OK"); botones.addElement(boton); 3 Interfaces Sistema de Reservaciones panel.add(boton); boton = new Button("Salir"); botones.addElement(boton); panel.add(boton); paneles.addElement(panel); } public Pagina manejarEvento(String str) { if (str.equals("Registrarse por Primera Vez")) { if (paginaCrearRegUsuario == null) paginaCrearRegUsuario = new PaginaCrearRegUsuario(this); return paginaCrearRegUsuario; } else if (str.equals("OK")) { if (paginaServicio == null) paginaServicio = new PaginaServicio(this); return paginaServicio; } else if (str.equals("Salir")) { System.exit(0); } else System.out.println("Error en PaginaPrincipal: "+str); return this; } } PaginaRegUsuario.java abstract class PaginaRegUsuario extends Pagina { protected Pagina paginaRegTarjeta; public PaginaRegUsuario(Pagina p) { super(p); } public void createPagina() { panel = new Panel(); panel.setLayout(new GridLayout(2,1)); panel.add(new Label("SISTEMA DE RESERVACIONES DE VUELO", Label.CENTER)); panel.add(new Label("Registro de Usuario", Label.CENTER)); paneles.addElement(panel); panel = new Panel(); panel.add(new Label("Nombre:")); texto = new TextField(20); textos.addElement(texto); panel.add(texto); panel.add(new Label("Apellido:")); texto = new TextField(20); textos.addElement(texto); panel.add(texto); paneles.addElement(panel); panel = new Panel(); 4 Interfaces Sistema de Reservaciones panel.add(new Label("Calle:")); texto = new TextField(20); textos.addElement(texto); panel.add(texto); panel.add(new Label("Colonia:")); texto = new TextField(20); textos.addElement(texto); panel.add(texto); paneles.addElement(panel); panel = new Panel(); panel.add(new Label("Ciudad:")); texto = new TextField(20); textos.addElement(texto); panel.add(texto); panel.add(new Label("Pais:")); texto = new TextField(10); textos.addElement(texto); panel.add(texto); panel.add(new Label("Codigo Postal:")); texto = new TextField(5); textos.addElement(texto); panel.add(texto); paneles.addElement(panel); panel = new Panel(); panel.add(new Label("Tel Casa:")); texto = new TextField(15); textos.addElement(texto); panel.add(texto); panel.add(new Label("Tel Of.:")); texto = new TextField(15); textos.addElement(texto); panel.add(texto); panel.add(new Label("Fax:")); texto = new TextField(15); textos.addElement(texto); panel.add(texto); paneles.addElement(panel); panel = new Panel(); panel.add(new Label("Login:")); texto = new TextField(10); textos.addElement(texto); panel.add(texto); panel.add(new Label("E-Mail:")); texto = new TextField(40); textos.addElement(texto); panel.add(texto); paneles.addElement(panel); 5 Interfaces Sistema de Reservaciones panel = new Panel(); panel.add(new Label("Password")); texto = new TextField(20); texto.setEchoChar('#'); textos.addElement(texto); panel.add(texto); panel.add(new Label("Repetir Password")); texto = new TextField(20); texto.setEchoChar('#'); textos.addElement(texto); panel.add(texto); paneles.addElement(panel); } } PaginaCrearRegUsuario.java class PaginaCrearRegUsuario extends PaginaRegUsuario { private Pagina paginaCrearRegTarjeta; public PaginaCrearRegUsuario(Pagina p) { super (p); } public void createPagina() { super.createPagina(); panel = new Panel(); boton = new Button("Registrar"); botones.addElement(boton); panel.add(boton); boton = new Button("Registrar Tarjeta"); botones.addElement(boton); panel.add(boton); agregarBotonesRegresarSalir(panel); } public Pagina manejarEvento(String str) { if (str.equals("Registrar")) return this; else if (str.equals("Registrar Tarjeta")) { if (paginaRegTarjeta == null) paginaRegTarjeta = new PaginaCrearRegTarjeta(this); return paginaRegTarjeta; } else return manejarEventosRegresarSalir(str); } } 6