package automotoras06;

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import java.awt.event.*;

/**
 *
 * @author lalo
 */
public class VentanaVehiculos extends JFrame {

    // vamos a tener un DAO listo para usarlo todo el tiempo.....
    private VehiculoDAO dao;

    // campos que corresponden a la Interfaz de usuario....
    private JTable tabla;
    private JButton botonNuevo;
    private JButton botonGuardarCambios;

    /**
     * crea la ventana de los vehiculos en forma de tabla,primero revisa
     * la cantidad de autos que hay en la BD
     */
    public VentanaVehiculos() {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        dao = new VehiculoDAO();
        inicializarComponentes();
    }

    private void inicializarComponentes() {
        Container contentPane = this.getContentPane();
        contentPane.setLayout(new BorderLayout());
        // vamos a hacer todo aqui...
        ArrayList<Vehiculo> datos = dao.listar();
        tabla = new JTable(new VehiculoTableModel(datos));
        JScrollPane scroller = new JScrollPane(tabla);
        contentPane.add(scroller, BorderLayout.CENTER);
        this.setSize(600, 400);

        botonNuevo = new JButton("Agregar Nuevo");
        botonNuevo.addActionListener(new NuevoListener() );
        contentPane.add(botonNuevo, BorderLayout.NORTH);

        botonGuardarCambios = new JButton("Guardar Cambios");
        botonGuardarCambios.addActionListener(new GuardarCambiosListener() );
        contentPane.add(botonGuardarCambios, BorderLayout.SOUTH);
    }

    class NuevoListener implements ActionListener{

        public void actionPerformed(ActionEvent e) {
            nuevo();
        }

    }

    class GuardarCambiosListener implements ActionListener{

        public void actionPerformed(ActionEvent e) {
            guardarCambios();
        }
    }

    private void nuevo(){
        VehiculoTableModel modelo = (VehiculoTableModel) tabla.getModel();
        // aqui debemos mostrar una ventana que permite el ingreso
        // de los datos, para luego agregar el vehiculo recien creado a la lista.
        modelo.add(new Vehiculo());
    }

    private void guardarCambios(){
        VehiculoTableModel modelo = (VehiculoTableModel) tabla.getModel();
        ArrayList<Vehiculo> lista = modelo.getDatos();
        for( Vehiculo vehiculo: lista ){
            dao.guardar(vehiculo);
        }
        modelo.fireTableDataChanged();
    }
}
