/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package Fichas;
import java.io.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class VisorDatos extends javax.swing.JFrame {
    
    private javax.swing.table.DefaultTableModel modelo;

    public VisorDatos(DefaultTableModel modelo, String Titulo) {
        this.modelo = modelo;
        initComponents();
        jTabla.setModel(modelo);
        setLocationRelativeTo(null);
        setTitle("Visor Datos " + Titulo );
        setSize(500,400);
    }

    public void ExportaAHojaExcell(){
        String message = crearFicheroXLS(modelo);
        try {
            Runtime.getRuntime().exec("rundll32 shell32.dll,ShellExec_RunDLL \"" + message +"\"");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public String crearFicheroXLS(DefaultTableModel modelo ){
        try {
            File temp = File.createTempFile("Grafic", ".xls");
            int cab = modelo.getColumnCount();
            int row = modelo.getRowCount();
            
            PrintWriter out = new PrintWriter(new FileWriter(temp));
            StringBuffer sb = new StringBuffer();
            for (int i=0; i < cab; i++) {
                sb.append(modelo.getColumnName(i)).append("\t");
            }
            out.println(sb.toString());
            for (int i=0; i < row; i++) {
                sb = new StringBuffer();
                for (int col=0; col < cab; col++) {
                    sb.append(modelo.getValueAt(i,col)).append("\t");
                }
                out.println(sb.toString());
            }
            out.close();
            return temp.getAbsolutePath();
        } catch (IOException e) {
            return "error";
        }
    }
    
    
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTabla = new MiJTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jPanel1.setBackground(new java.awt.Color(255, 255, 255));
        jPanel1.setLayout(new java.awt.BorderLayout());

        jButton1.setText(" Exportar a Excel");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jPanel1.add(jButton1, java.awt.BorderLayout.CENTER);

        getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);

        jTabla.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null}
            },
            new String [] {
                "Title 1", "Title 2"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jTabla.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jTablaMousePressed(evt);
            }
        });
        jScrollPane1.setViewportView(jTabla);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        ExportaAHojaExcell();
    }//GEN-LAST:event_jButton1ActionPerformed
    
    private void jTablaMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTablaMousePressed
        
    }//GEN-LAST:event_jTablaMousePressed
    
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTabla;
    // End of variables declaration//GEN-END:variables
    
    class MiJTable extends JTable {
        public boolean isCellEditable(int fila, int col) {
            return false;
        }
    }
}
