package interfaz;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.SystemColor;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

import negocio.BloqueConstructivo;
import negocio.Instancia;
import negocio.Proyecto;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.query.JRHibernateQueryExecuterFactory;
import net.sf.jasperreports.view.JRViewer;
import net.sf.jasperreports.view.JasperViewer;

import org.hibernate.Session;
import org.hibernate.Transaction;

import persistencia.UtilidadHibernate;
import java.awt.Color;
import javax.swing.BorderFactory;

public class MantenimientoInstancia extends JDialog {

	private static final long serialVersionUID = 1L;

	private JPanel jContentPane = null;

	private JPanel jPanel = null;

	private JPanel jPanel1 = null;

	private JButton jButton = null;

	private JButton jButton1 = null;

	private JLabel jLabel = null;

	private JScrollPane jScrollPane = null;

	public JList jList = null;
	public DefaultListModel modelo = new DefaultListModel();

	private JButton jButton2 = null;
	
	public MantenimientoBloque padreMantenimientoBloque = null;
	
	public Proyecto proyecto_seleccionado;  //  @jve:decl-index=0:

	private JButton jButton3 = null;
	
	private BloqueConstructivo padreBloque = null;

	private boolean desdePrincipal = false;

	private JButton jButton4 = null;;
	
	private Principal padrePrincipal;

	private JPanel jPanel21 = null;

	private JPanel jPanel3 = null;

	private JLabel jLabel9 = null;

	private JLabel jLabel10 = null;

	private JLabel jLabel7 = null;

	private JLabel jLabel8 = null;
	
	private Integer numero_instancias;  //  @jve:decl-index=0:

	private JButton jButton5 = null;
	/**
	 * @param owner
	 */
	public MantenimientoInstancia(MantenimientoBloque owner) {
		super(owner);
		padreMantenimientoBloque=owner;
		desdePrincipal = false;
		initialize();
	}
	
	public MantenimientoInstancia(Principal owner, BloqueConstructivo bloque) {
		super(owner);
		padreBloque=bloque;
		padrePrincipal=owner;
		desdePrincipal = true;
		initialize();
	}
	
	public MantenimientoInstancia(JDialog owner) {
		super(owner);
		initialize();
	}
	
	public void EstadisticasNumeroInstancias()
	{
		try{
			Session session=null;
			
			session = UtilidadHibernate.getSessionFactory().openSession();

			int idelemento = padrePrincipal.jList.getSelectedIndex();
			Proyecto proyecto = (Proyecto) padrePrincipal.modelo.getElementAt(idelemento);
			
			//Número de instancias
			List messages = session.createQuery("from Instancia where id_bloque = '"+padreBloque.getIdBloque()+"' AND id_proyecto = '"+proyecto.getIdProyecto()+"'").list();

			numero_instancias= messages.size();
			
			jLabel10.setText(numero_instancias.toString());
			
			session.close();
			
		}	
		catch (Exception exp) {
			// TODO: handle exception
			JOptionPane.showMessageDialog(null, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
		}
		
	}
	
	public void actualizaModelo()
	{
		try{
			Session session = UtilidadHibernate.getSessionFactory().openSession();
			
			Transaction tx = session.beginTransaction();
			
			int idelemento = padrePrincipal.jList.getSelectedIndex();
			Proyecto proyecto = (Proyecto) padrePrincipal.modelo.getElementAt(idelemento);
			
			modelo.removeAllElements();
			List messages = session.createQuery("from Instancia m where id_bloque = '"+padreBloque.getIdBloque()+"' AND id_proyecto = '"+proyecto.getIdProyecto()+"' order by id_instancia asc").list();
			
			for ( Iterator iter = messages.iterator(); iter.hasNext(); ) {
				Instancia instancia = (Instancia) iter.next();
				modelo.addElement(instancia);
			}
			jList.setModel(modelo);
			tx.commit();
			session.close();
			
			
		}	
		catch (Exception exp) {
			// TODO: handle exception
			JOptionPane.showMessageDialog(null, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
		}
		
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		if (desdePrincipal)
			padrePrincipal.Tamaño_ventana(this);
		else
			padreMantenimientoBloque.padrePrincipal.Tamaño_ventana(this);
		this.setPreferredSize(new Dimension(400, 270));
		this.setModal(true);
		
		if (desdePrincipal){
			if (padrePrincipal.idioma.equals("español"))
				this.setTitle("Instancias del bloque " + padreBloque.getNombre());
			else
				this.setTitle("Instances of the block " + padreBloque.getNombre());
		}
		else{
			int idelemento = padreMantenimientoBloque.jList.getSelectedIndex();
			
			BloqueConstructivo bloque = (BloqueConstructivo) padreMantenimientoBloque.modelo.getElementAt(idelemento);
			
			if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
				this.setTitle("Instancias del bloque " + bloque.getNombre());
			else
				this.setTitle("Instances of the block " + bloque.getNombre());
		}
		this.setContentPane(getJContentPane());
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowOpened(java.awt.event.WindowEvent e) {
				actualizaModelo();
				EstadisticasNumeroInstancias();
			}
		});
		
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getJPanel(), BorderLayout.EAST);
			jContentPane.add(getJPanel1(), BorderLayout.CENTER);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jPanel	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel() {
		if (jPanel == null) {
			jPanel = new JPanel();
			jPanel.setLayout(new FlowLayout());
			jPanel.setPreferredSize(new Dimension(115, 26));
			jPanel.setBackground(SystemColor.controlHighlight);
			jPanel.setBorder(BorderFactory.createMatteBorder(0, 1, 0, 0, Color.lightGray));
			jPanel.add(getJButton(), null);
			jPanel.add(getJButton2(), null);
			jPanel.add(getJButton1(), null);
			jPanel.add(getJButton3(), null);
			jPanel.add(getJButton4(), null);
			jPanel.add(getJButton5(), null);
		}
		return jPanel;
	}

	/**
	 * This method initializes jPanel1	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
			gridBagConstraints11.gridx = 0;
			gridBagConstraints11.fill = GridBagConstraints.HORIZONTAL;
			gridBagConstraints11.insets = new Insets(0, 5, 5, 5);
			gridBagConstraints11.gridy = 2;
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.fill = GridBagConstraints.BOTH;
			gridBagConstraints.gridy = 1;
			gridBagConstraints.weightx = 1.0;
			gridBagConstraints.weighty = 1.0;
			gridBagConstraints.insets = new Insets(5, 5, 5, 5);
			gridBagConstraints.gridx = 0;
			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
			gridBagConstraints1.gridx = 0;
			gridBagConstraints1.insets = new Insets(10, 0, 0, 0);
			gridBagConstraints1.gridy = 0;
			jLabel = new JLabel();
			if (!desdePrincipal){
				if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
					jLabel.setText("Lista de Instancias");
				else
					jLabel.setText("List of instances");
			}
			else{
				if (padrePrincipal.idioma.equals("español"))
					jLabel.setText("Lista de Instancias");
				else
					jLabel.setText("List of instances");
			}
			jPanel1 = new JPanel();
			jPanel1.setLayout(new GridBagLayout());
			jPanel1.setBackground(new Color(238, 238, 238));
			jPanel1.add(jLabel, gridBagConstraints1);
			jPanel1.add(getJScrollPane(), gridBagConstraints);
			jPanel1.add(getJPanel21(), gridBagConstraints11);
		}
		return jPanel1;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			if (!desdePrincipal){
				if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
					jButton.setText("Añadir");
				else
					jButton.setText("Add");
			}
			else{
				if (padrePrincipal.idioma.equals("español"))
					jButton.setText("Añadir");
				else
					jButton.setText("Add");
			}
			jButton.setPreferredSize(new Dimension(105, 26));
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					//MantenimientoVista v = new MantenimientoVista((JDialog)null);
					//MantenimientoFase f = new MantenimientoFase(null);
					
					
					NuevaInstancia ventana = new NuevaInstancia(MantenimientoInstancia.this, padreBloque, desdePrincipal, padrePrincipal, false);
					ventana.setLocationRelativeTo(MantenimientoInstancia.this);
					ventana.setVisible(true);
				}
			});
		}
		return jButton;
	}

	/**
	 * This method initializes jButton1	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton1() {
		if (jButton1 == null) {
			jButton1 = new JButton();
			if (!desdePrincipal){
				if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
					jButton1.setText("Borrar");
				else
					jButton1.setText("Delete");
			}
			else{
				if (padrePrincipal.idioma.equals("español"))
					jButton1.setText("Borrar");
				else
					jButton1.setText("Delete");
			}
			jButton1.setPreferredSize(new Dimension(105, 26));
			jButton1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					
					try{			

						int idvista = jList.getSelectedIndex();
						if (idvista!=-1){
					
							Instancia instancia = (Instancia) modelo.getElementAt(idvista);
							
							int n;

							if (padrePrincipal.idioma.equals("español")){
								n = JOptionPane.showConfirmDialog(
									MantenimientoInstancia.this, "¿Estás seguro de que quieres borrar la instancia '" + instancia.getNombre() + "'?",
									"Advertencia",
									JOptionPane.YES_NO_OPTION);
							}
							else {
								n = JOptionPane.showConfirmDialog(
										MantenimientoInstancia.this, "Are you sure you want to delete the instance '" + instancia.getNombre() + "'?",
										"Warning",
										JOptionPane.YES_NO_OPTION);
								
							}
							
							if (n == JOptionPane.YES_OPTION) {
								//Creamos la sesión para almacenar el nombre del proyecto en la BD
								Session session = UtilidadHibernate.getSessionFactory().openSession();
								
								Transaction tx = session.beginTransaction();
										
								instancia = (Instancia) session.get(Instancia.class, instancia.getIdInstancia());
								

								//Borramos el objeto
								session.delete(instancia);
								
								//Borramos el objeto de la lista
								modelo.removeElement(instancia);
																																									
								tx.commit();
								actualizaModelo();
								EstadisticasNumeroInstancias();
								session.close();

							}
						}
						else{
							throw new Exception("Error, selecciona un objeto de la lista");
						}
					}	
					catch (Exception exp) {
						// TODO: handle exception
						JOptionPane.showMessageDialog(null, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
					}
					
					//actualizaModelo();
				}
			});
		}
		return jButton1;
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setViewportView(getJList());
		}
		return jScrollPane;
	}

	/**
	 * This method initializes jList	
	 * 	
	 * @return javax.swing.JList	
	 */
	private JList getJList() {
		if (jList == null) {
			jList = new JList();
		}
		return jList;
	}

	/**
	 * This method initializes jButton2	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton2() {
		if (jButton2 == null) {
			jButton2 = new JButton();
			if(!desdePrincipal){
				if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
					jButton2.setText("Modificar");
				else
					jButton2.setText("Modify");
			}
			else{
				if (padrePrincipal.idioma.equals("español"))
					jButton2.setText("Modificar");
				else
					jButton2.setText("Modify");
			}
			jButton2.setPreferredSize(new Dimension(105, 26));
			jButton2.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					
					try{
						int idinstancia = jList.getSelectedIndex();
						if (idinstancia==-1){
							if (padrePrincipal.idioma.equals("español"))
								throw new Exception("Error, selecciona una instancia de la lista");
							else
								throw new Exception("Error, select a instancia of the list");
						}
						else{
							NuevaInstancia ventana = new NuevaInstancia(MantenimientoInstancia.this, padreBloque, desdePrincipal, padrePrincipal, true);
							ventana.setLocationRelativeTo(MantenimientoInstancia.this);
							ventana.setVisible(true);
						}
					}	
					catch (Exception exp) {
						// TODO: handle exception
						JOptionPane.showMessageDialog(null, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
					}
				}
			});
		}
		return jButton2;
	}

	/**
	 * This method initializes jButton3	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton3() {
		if (jButton3 == null) {
			jButton3 = new JButton();
			if (!desdePrincipal){
				if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
					jButton3.setText("Rellenar");
				else
					jButton3.setText("Fill");
			}
			else{
				if (padrePrincipal.idioma.equals("español"))
					jButton3.setText("Rellenar");
				else
					jButton3.setText("Fill");
			}
				
			jButton3.setPreferredSize(new Dimension(105, 26));
			jButton3.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					try{
						
						int indice = jList.getSelectedIndex();
						if (indice!=-1){
							if (!desdePrincipal){
								RellenarInstancia ventana = new RellenarInstancia(MantenimientoInstancia.this, padreMantenimientoBloque);
								ventana.setLocationRelativeTo(MantenimientoInstancia.this);
								ventana.setVisible(true);
							}
							else{
								RellenarInstancia ventana = new RellenarInstancia(MantenimientoInstancia.this, padreBloque, padrePrincipal);
								ventana.setLocationRelativeTo(MantenimientoInstancia.this);
								ventana.setVisible(true);
							}
						}
						else{
							if (!desdePrincipal){
								if(padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
									throw new Exception ("Error, selecciona una instancia de la lista.");
								else
									throw new Exception ("Error, select a instance of the list.");
							}
							else{
								if(padrePrincipal.idioma.equals("español"))
									throw new Exception ("Error, selecciona una instancia de la lista.");
								else
									throw new Exception ("Error, select a instance of the list.");
							}
						}
					
					}catch (Exception exp) {
						// TODO: handle exception
						JOptionPane.showMessageDialog(null, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
					}
					
				}
			});
		}
		return jButton3;
	}

	/**
	 * This method initializes jButton4	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton4() {
		if (jButton4 == null) {
			jButton4 = new JButton();
			if (!desdePrincipal){
				if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
					jButton4.setText("Ver");
				else
					jButton4.setText("See");
			}
			else{
				if (padrePrincipal.idioma.equals("español"))
					jButton4.setText("Ver");
				else
					jButton4.setText("See");
			}
			jButton4.setPreferredSize(new Dimension(105, 26));
			jButton4.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					
					try{
						int indice = jList.getSelectedIndex();
						if (indice!=-1){
						
							Instancia instancia = (Instancia) modelo.getElementAt(indice);
							
							if (!desdePrincipal){
								int idelemento = padreMantenimientoBloque.jList.getSelectedIndex();
								
								BloqueConstructivo bloque = (BloqueConstructivo) padreMantenimientoBloque.modelo.getElementAt(idelemento);
								
								VerInstancia ventana = new VerInstancia(instancia, bloque, padreMantenimientoBloque);

								ventana.setLocationRelativeTo(MantenimientoInstancia.this);
								ventana.setVisible(true);
								
							}
							else{
								
								VerInstancia ventana = new VerInstancia(instancia, padreBloque,padrePrincipal);
								//ventana.setSize(ventana.getToolkit().getScreenSize());
								ventana.setLocationRelativeTo(MantenimientoInstancia.this);
								
								ventana.setVisible(true);
							}
						}
						else{
							if (!desdePrincipal){
								if(padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
									throw new Exception ("Error, selecciona una instancia de la lista.");
								else
									throw new Exception ("Error, select a instance of the list.");
							}
							else{
								if(padrePrincipal.idioma.equals("español"))
									throw new Exception ("Error, selecciona una instancia de la lista.");
								else
									throw new Exception ("Error, select a instance of the list.");
							}
						}
					}
					catch (Exception exp) {
						// TODO: handle exception
						JOptionPane.showMessageDialog(null, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
					}
				}
			});
		}
		return jButton4;
	}

	/**
	 * This method initializes jPanel21	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel21() {
		if (jPanel21 == null) {
			GridBagConstraints gridBagConstraints111 = new GridBagConstraints();
			gridBagConstraints111.gridx = 0;
			gridBagConstraints111.gridy = 2;
			jLabel8 = new JLabel();
			GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
			gridBagConstraints10.anchor = GridBagConstraints.WEST;
			gridBagConstraints10.gridx = 0;
			gridBagConstraints10.gridy = 0;
			gridBagConstraints10.insets = new Insets(5, 0, 0, 0);
			jLabel7 = new JLabel();
			if (!desdePrincipal){
				if(padreMantenimientoBloque.padrePrincipal.idioma.equals("español")){
					jLabel7.setText("Estadísticas:");
				}
				else{
					jLabel7.setText("Statistics");
				}
			}else{
				if(padrePrincipal.idioma.equals("español"))
					jLabel7.setText("Estadísticas:");
				else
					jLabel7.setText("Statistics");
			}
			GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
			gridBagConstraints9.insets = new Insets(5, 5, 5, 5);
			gridBagConstraints9.gridy = 1;
			gridBagConstraints9.gridx = 0;
			jPanel21 = new JPanel();
			jPanel21.setLayout(new GridBagLayout());
			jPanel21.setBackground(new Color(238, 238, 238));
			jPanel21.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.lightGray));
			jPanel21.add(getJPanel3(), gridBagConstraints9);
			jPanel21.add(jLabel7, gridBagConstraints10);
			jPanel21.add(jLabel8, gridBagConstraints111);
		}
		return jPanel21;
	}

	/**
	 * This method initializes jPanel3	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel3() {
		if (jPanel3 == null) {
			GridBagConstraints gridBagConstraints13 = new GridBagConstraints();
			gridBagConstraints13.insets = new Insets(0, 5, 5, 0);
			gridBagConstraints13.gridy = 7;
			gridBagConstraints13.gridx = 3;
			jLabel10 = new JLabel();
			jLabel10.setForeground(Color.BLUE);
			GridBagConstraints gridBagConstraints12 = new GridBagConstraints();
			gridBagConstraints12.anchor = GridBagConstraints.WEST;
			gridBagConstraints12.gridx = 2;
			gridBagConstraints12.gridy = 7;
			gridBagConstraints12.insets = new Insets(0, 0, 5, 0);
			jLabel9 = new JLabel();
			jLabel9.setForeground(Color.BLUE);
			jLabel9.setText("Total");
			jPanel3 = new JPanel();
			jPanel3.setLayout(new GridBagLayout());
			jPanel3.setBackground(new Color(238, 238, 238));
			jPanel3.add(jLabel9, gridBagConstraints12);
			jPanel3.add(jLabel10, gridBagConstraints13);
		}
		return jPanel3;
	}

	/**
	 * This method initializes jButton5	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton5() {
		if (jButton5 == null) {
			jButton5 = new JButton();
			if (desdePrincipal){
				if (padrePrincipal.idioma.equals("español"))
					jButton5.setText("Informe");
				else
					jButton5.setText("Report");
			}
			else{
				if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
					jButton5.setText("Informe");
				else
					jButton5.setText("Report");
			}
			jButton5.setPreferredSize(new Dimension(105, 26));
			jButton5.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					try{
						JasperPrint informe = null;
						int numero_proyecto = padrePrincipal.jList.getSelectedIndex();
						
							Proyecto proyecto = (Proyecto) padrePrincipal.modelo.getElementAt(numero_proyecto);

							int numero_instancia = jList.getSelectedIndex();
							if (numero_instancia >= 0){
								Instancia i = (Instancia) modelo.getElementAt(numero_instancia);
								Session sesion= UtilidadHibernate.getSessionFactory().openSession();
								
								HashMap parametros = new HashMap();
								parametros.put(JRHibernateQueryExecuterFactory.PARAMETER_HIBERNATE_SESSION,sesion);
								parametros.put("I", i.getIdInstancia());
								parametros.put("PR", proyecto.getIdProyecto());
								parametros.put("BL", padreBloque.getIdBloque());

			
								try {
									String fileName;
									if (padrePrincipal.idioma.equals("español"))
										fileName= "src/informes/componentes_bloque.jasper";
									else
										fileName= "src/informes/components_block.jasper";
									informe= JasperFillManager.fillReport(fileName, parametros);
									
									//JasperViewer.viewReport(informe,false);
									
									//Esto sustituye a JasperViewer.viewReport y sirve para mostrar el informe en primer plano
									JDialog viewer;
									if (padrePrincipal.idioma.equals("español"))
										viewer = new JDialog(new JFrame(),"Vista previa del reporte", true);
									else
										viewer = new JDialog(new JFrame(),"Preview of report", true);
									viewer.setSize(800,600);
									viewer.setSize(viewer.getToolkit().getScreenSize().width,viewer.getToolkit().getScreenSize().height-40);   
									viewer.setLocationRelativeTo(MantenimientoInstancia.this);
									JRViewer jrv = new JRViewer(informe);
									viewer.getContentPane().add(jrv);
									viewer.setVisible(true);
									viewer.setModal(false);
	
								}
								catch (JRException e1){
									e1.printStackTrace();
								}
							}
							else{
								if (padrePrincipal.idioma.equals("español"))
									throw new Exception("Error, selecciona una instancia de la lista.");
								else
									throw new Exception("Error, select a instance of the list.");
							}
					}
					catch (Exception exp) {
						// TODO: handle exception
						JOptionPane.showMessageDialog(null, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
					}
				}
			});
		}
		return jButton5;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"
