
package presentacion;

import java.awt.CardLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JSeparator;

public class Menu extends JFrame {

      private Componentes componentes;
      
    public Menu() {
        setSize(700,500);
        setTitle("Menu JMenuBar");
        componentes = new Componentes();
        componentes.setGestorEventos(new GestorEventos(componentes));
        ubicarComponentes();
        inicializar();
        setVisible(true);
    }
 
    
    private void ubicarComponentes() {
        
        addWindowListener(componentes.getGestorEventos());        // REGISTRO DE ESCUCHA DE EVENTOS DE VENTANA
        
        JMenuBar jMenuBar = new JMenuBar();
        
        //        OPCIONES CON FUNCIONALIDAD, EXISTE UN JPanel ASOCIADO A CADA UNA DE ELLAS
        JMenu jMenuOpciones = new JMenu("Opciones con funcionalidad");
        
        JMenuItem jMenuItemOPcion1 = new JMenuItem("Opcion 1");
        jMenuOpciones.add(jMenuItemOPcion1);
        jMenuItemOPcion1.addActionListener(componentes.getGestorEventos());
        
        JMenuItem jMenuItemOPcion2 = new JMenuItem("Opcion 2");
        jMenuOpciones.add(jMenuItemOPcion2);
        jMenuItemOPcion2.addActionListener(componentes.getGestorEventos());
        
        JMenuItem jMenuItemOPcion3 = new JMenuItem("Opcion 3");
        jMenuOpciones.add(jMenuItemOPcion3);
        jMenuItemOPcion3.addActionListener(componentes.getGestorEventos());
        
        jMenuBar.add(jMenuOpciones);
        
        //        OPCIONES SIN FUNCIONALIDAD,NO EXISTE UN JPanel ASOCIADO A CADA UNA DE ELLAS   
        //        Este grupo de opciones se ha implementado para disponer de un segundo grupo de opciones para el menú principal, y también permite ilustrar la utilización del JSeparator.                      
        JMenu jMenuOpcionesSinJPanel = new JMenu("Opciones sin funcionalidad");         
        jMenuOpcionesSinJPanel.add(new JMenuItem("Opcion A"));                
        jMenuOpcionesSinJPanel.add(new JMenuItem("Opcion B"));           
        jMenuOpcionesSinJPanel.add(new JSeparator());
        jMenuOpcionesSinJPanel.add(new JMenuItem("Opcion C"));
        jMenuOpcionesSinJPanel.add(new JMenuItem("Opcion D"));
        jMenuOpcionesSinJPanel.add(new JMenuItem("Opcion E"));        
        jMenuBar.add(jMenuOpcionesSinJPanel);
        
        setJMenuBar(jMenuBar);
        
        componentes.setjPanelPrincipal(new JPanel(new CardLayout()));
               
        componentes.setOpcion1(new Opcion1(componentes));
        componentes.getjPanelPrincipal().add("opcion1", componentes.getOpcion1());
        componentes.setOpcion2(new Opcion2(componentes));
        componentes.getjPanelPrincipal().add("opcion2", componentes.getOpcion2());
        componentes.setOpcion3(new Opcion3(componentes));
        componentes.getjPanelPrincipal().add("opcion3", componentes.getOpcion3());        
        
        add(componentes.getjPanelPrincipal());
        componentes.setCardLayout((CardLayout)componentes.getjPanelPrincipal().getLayout());    
    }
    
    
    private void inicializar() {           
      componentes.getOpcion1().iniciarPantalla();
      componentes.getCardLayout().show(componentes.getjPanelPrincipal(), "opcion1");
    }
    
    
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
              @Override
              public void run() {
                 new Menu();
              }
           });  
    }            
}
