package com.rzg.zombieland.cliente.interfaz; import java.awt.Desktop; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.net.URI; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import com.rzg.zombieland.cliente.comunicacion.ServicioCliente; import com.rzg.zombieland.cliente.comunicacion.peticion.PeticionCierreSesion; import com.rzg.zombieland.comunes.misc.ZombielandException; /** * Menu Completo. * * @author Nicolas * */ public class MenuZombieland extends JMenuBar { private static final long serialVersionUID = -2766617470499185657L; // Interfaces secundarias. private InterfazEstadisticaJugador estadisticas; private InterfazCambioDeDatosUsuario cambioDatos; /** * Atributos necesarios para poder modificar el bloqueo de los botones. * @inicio se inicializa en false los botones estan desabilitados */ public static boolean inicio = false; private static JMenuItem iniciarSesion; private static JMenuItem mntmRegistrarse; private static JMenuItem mntmDatos; private static JMenuItem mntmEstadsticas; private static JMenuItem mntmEstadsticasGlob; public MenuZombieland() { JMenu mnArchivo = new JMenu("Archivo"); add(mnArchivo); iniciarSesion = new JMenuItem("Iniciar Sesion"); iniciarSesion.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { cerrarSesion(); } }); mnArchivo.add(iniciarSesion); mntmRegistrarse = new JMenuItem("Registrarse"); mntmRegistrarse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Main.irA(Main.REGISTRO); } }); mnArchivo.add(mntmRegistrarse); JMenuItem mntmSalir = new JMenuItem("Salir"); mntmSalir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); mnArchivo.add(mntmSalir); JMenu mnCuenta = new JMenu("Cuenta"); add(mnCuenta); mntmDatos = new JMenuItem("Datos"); mntmDatos.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (cambioDatos == null) cambioDatos = new InterfazCambioDeDatosUsuario(); cambioDatos.setVisible(true); } }); mnCuenta.add(mntmDatos); final JMenu mnEstadsticas = new JMenu("Estad\u00EDsticas"); mntmEstadsticas = new JMenuItem("Mis Estad\u00EDsticas"); mntmEstadsticas.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (estadisticas == null) estadisticas = new InterfazEstadisticaJugador(); estadisticas.actualizar(); estadisticas.setVisible(true); } }); mntmEstadsticasGlob = new JMenuItem( "Estad\u00EDsticas Globales"); mntmEstadsticasGlob.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Main.irA(Main.RANKING_GENERAL); // TODO VER cuando se actualiza el ranking general } }); mnEstadsticas.add(mntmEstadsticas); mnEstadsticas.add(mntmEstadsticasGlob); mnCuenta.add(mnEstadsticas); JMenu mnAyuda = new JMenu("Ayuda"); add(mnAyuda); JMenuItem mntmCmoJugar = new JMenuItem("C\u00F3mo Jugar"); mntmCmoJugar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Desktop desktop = Desktop.isDesktopSupported() ? Desktop .getDesktop() : null; if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) { try { desktop.open(new File("ZOMBIELAND-README.pdf")); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } }); mnAyuda.add(mntmCmoJugar); JMenuItem mntmGoogleame = new JMenuItem("Googleame"); mntmGoogleame.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Desktop desktop = Desktop.isDesktopSupported() ? Desktop .getDesktop() : null; if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) { try { desktop.browse(new URI("http://lmgtfy.com/?q=Como+jugar+Zombieland")); } catch (Exception ex) { System.err.println(ex.getMessage()); } } } }); mnAyuda.add(mntmGoogleame); iniciarSesion.setEnabled(inicio); mntmRegistrarse.setEnabled(inicio); mntmDatos.setEnabled(inicio); mntmEstadsticas.setEnabled(inicio); mntmEstadsticasGlob.setEnabled(inicio); } /** * * @param inicio ->true, la casilla esta habilitada */ public static void setInicioSesion(boolean estado) { inicio = estado; iniciarSesion.setText(estado ? "Cerrar sesi�n" : "Iniciar sesi�n"); mntmRegistrarse.setEnabled(!inicio); mntmDatos.setEnabled(inicio); mntmEstadsticas.setEnabled(inicio); } /** * @param estado - se habilitan los botones despues de * iniciar el servidor correctamente */ public static void setConexcionServidor(boolean estado){ inicio = estado; iniciarSesion.setEnabled(inicio); mntmRegistrarse.setEnabled(inicio); mntmEstadsticasGlob.setEnabled(inicio); } /** * Env�a a la pantalla de inicio de sesi�n y cierra la existente si estaba abierta. */ public void cerrarSesion() { if (inicio) { try { ServicioCliente.enviarPeticion(new PeticionCierreSesion()); } catch (ZombielandException e) { JOptionPane.showMessageDialog(this, e.getMessage()); } setInicioSesion(false); } Main.irA(Main.INICIO_SESION); } }