package VistaControlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.time.LocalDate;

import javax.swing.JOptionPane;

import Ficheros.Configuracion;
import loggin.Vista;

public class ControladorBarra implements ActionListener{
	private BarraOpciones barra;
	private Menu menu;
	
	/**
	 * Constructor del controlador
	 * 
	 * @param barra barra que usara el controlador
	 * @param menu	menu en el que se encuentra la barra
	 */
	public ControladorBarra(BarraOpciones barra, Menu menu) {
		this.barra = barra;
		this.menu = menu;
		this.aniadirListeners();
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		switch(e.getActionCommand()) {
			case "Cambiar ruta":{
				String ruta = JOptionPane.showInputDialog("Introduce la nuev a ruta");
				if(ruta == null) return;
				if(ruta.equals("")) {
					JOptionPane.showMessageDialog(null, "Debe introducir algo", "error", JOptionPane.WARNING_MESSAGE);
					return;
				}
				this.menu.rutaGuardado = ruta;
				Configuracion.guardarConfiguracion(this.menu);
				break;
			}
			case "Guardar instantanea":{
				String ruta = JOptionPane.showInputDialog("Introduce la ruta de la instantanea");
				if(ruta == null) return;
				if(ruta.equals("")) {
					JOptionPane.showMessageDialog(null, "Debe introducir algo", "error", JOptionPane.WARNING_MESSAGE);
					return;
				}
				try {
					this.menu.meses.guardarMeses(ruta);
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					System.out.println("Fichero invalido");
				}
				break;
			}
			case "Modo claro":{
				menu.setTheme(0);
				break;
			}
			case "Modo rosa":{
				menu.setTheme(1);
				break;
			}
			case "Modo oscuro":{
				menu.setTheme(2);
				break;
			}
			case "Mostrar todo":{
				MostrarTodo mostrar = new MostrarTodo(this.menu.meses);
				mostrar.setVisible(true);
				break;
			}
			case "Exportar XLM":{
				this.menu.meses.exportarXML();
				break;
			}
			case "Importar XLM":{
				this.menu.meses.importarXML();
				this.menu.cargarGestiones(LocalDate.now().getYear(), LocalDate.now().getMonth());
				this.menu.cargarPestanias();
				break;
			}
			case "Cambiar Gestion":{
				this.menu.cambiarVista(this.menu.VISTA_GESTION);
				break;
			}
			case "Cambiar Modificar":{
				this.menu.cambiarVista(this.menu.VISTA_MODIFICAR);
				break;
			}
			case "Ajustar tema":{
				this.menu.cambiarVista(this.menu.VISTA_INTERFAZ);
				break;
			}
			case "Aniadir usuario":{
				Vista loggin = new Vista(Vista.Guardar);
				break;
			}
			
		}
		
	}
	
	/**
	 * Aniade los listeners a la lista de objetos
	 */
	private void aniadirListeners() {
		this.barra.cambiarRuta.addActionListener(this);
		this.barra.cambiarRuta.setActionCommand("Cambiar ruta");
		this.barra.guardarIns.addActionListener(this);
		this.barra.guardarIns.setActionCommand("Guardar instantanea");
		this.barra.exportarXML.addActionListener(this);
		this.barra.exportarXML.setActionCommand("Exportar XLM");
		this.barra.importarXML.addActionListener(this);
		this.barra.importarXML.setActionCommand("Importar XLM");
		this.barra.modoClaro.addActionListener(this);
		this.barra.modoClaro.setActionCommand("Modo claro");
		this.barra.modoRosa.addActionListener(this);
		this.barra.modoRosa.setActionCommand("Modo rosa");
		this.barra.modoOscuro.addActionListener(this);
		this.barra.modoOscuro.setActionCommand("Modo oscuro");
		this.barra.mostrarTodo.addActionListener(this);
		this.barra.mostrarTodo.setActionCommand("Mostrar todo");
		this.barra.gestion.addActionListener(this);
		this.barra.gestion.setActionCommand("Cambiar Gestion");
		this.barra.modificacion.addActionListener(this);
		this.barra.modificacion.setActionCommand("Cambiar Modificar");
		this.barra.menuInterfaz.addActionListener(this);
		this.barra.menuInterfaz.setActionCommand("Ajustar tema");
		this.barra.aniadirUsuario.addActionListener(this);
		this.barra.aniadirUsuario.setActionCommand("Aniadir usuario");
	}

}
