package interfaz;

import javax.swing.JPanel;
import java.awt.Frame;
import java.awt.BorderLayout;
import javax.swing.JDialog;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.SystemColor;
import javax.swing.JTextField;

import negocio.BloqueConstructivo;
import negocio.FaseBloque;
import negocio.FasePlantilla;
import negocio.Plantilla;
import negocio.Proyecto;
import negocio.VistaBloque;
import negocio.VistaPlantilla;

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

import persistencia.UtilidadHibernate;
import javax.swing.JComboBox;
import java.awt.Cursor;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import javax.swing.JScrollPane;
import javax.swing.BorderFactory;

public class NuevoBloque 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 JLabel jLabel = null;

	private JLabel jLabel1 = null;

	private JList jList = null;

	private JList jList1 = null;

	private JLabel jLabel2 = null;

	private JPanel jPanel2 = null;

	static public BloqueConstructivo bloque = null;

	public MantenimientoBloque padreMantenimientoBloque = null;

	public MantenimientoVista padreMantenimientoVista = null;

	public MantenimientoFase padreMantenimientoFase = null;

	private JComboBox jComboBox = null;

	private JLabel jLabel3 = null;

	int[] vector_vistas_seleccionadas;

	int[] vector_fases_seleccionadas;

	private boolean flag_seleccion_fase = false;

	private boolean actualizar;

	private JComboBox jComboBox1 = null;

	private JLabel jLabel4 = null;

	private JScrollPane jScrollPane = null;

	private JScrollPane jScrollPane1 = null;

	private JPanel jPanel21 = null;

	private JPanel jPanel22 = null;

	private JTextField jTextField = null;

	private JLabel jLabel41 = null;

	/**
	 * @param owner
	 */
	public NuevoBloque(MantenimientoBloque owner, MantenimientoVista owner2,
			MantenimientoFase owner3, boolean a) {
		super(owner);
		padreMantenimientoBloque = owner;
		padreMantenimientoVista = owner2;
		padreMantenimientoFase = owner3;
		actualizar = a;
		initialize();
	}

	public NuevoBloque(JDialog owner) {
		super(owner);
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */

	private void initialize() {
		this.setSize(768, 405);
		this.setModal(true);
		if (!actualizar){
			if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
				this.setTitle("Nuevo bloque constructivo");
			else
				this.setTitle("New building block");
		}
		else{
			if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
				this.setTitle("Modificar bloque constructivo");
			else
				this.setTitle("Modify building block");
		}
		this.setContentPane(getJContentPane());
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowOpened(java.awt.event.WindowEvent e) {

				jList.setModel(padreMantenimientoVista.modelo);
				jList1.setModel(padreMantenimientoFase.modelo);
				padreMantenimientoVista.actualizaModelo();
				padreMantenimientoFase.actualizaModelo();

				if (actualizar) {
					int elemento = padreMantenimientoBloque.jList.getSelectedIndex();
					BloqueConstructivo bloque = (BloqueConstructivo) padreMantenimientoBloque.modelo.getElementAt(elemento);
					
					//Nombre
					jTextField.setText(bloque.getNombre());

					//Tipo
					jComboBox.setSelectedIndex(bloque.getTipo());
					
					Session session = UtilidadHibernate.getSessionFactory().openSession();
					
					ArrayList<FasePlantilla> vector_fases = new ArrayList<FasePlantilla>();
					
					//MARCAR TODAS LAS FASES EN LA LISTA DE FASES
					List messages = session.createQuery("from FaseBloque where id_bloque = '"+bloque.getIdBloque()+"'").list();
					for ( Iterator iter = messages.iterator(); iter.hasNext(); ) {
						FaseBloque fasebloque = (FaseBloque) iter.next();
						
						List messages2 = session.createQuery("from FasePlantilla where id_fase_plantilla = '"+fasebloque.getFasePlantilla().getIdFasePlantilla()+"'").list();
						for ( Iterator iter2 = messages2.iterator(); iter2.hasNext(); ) {
							FasePlantilla faseplantilla = (FasePlantilla) iter2.next();
							vector_fases.add(faseplantilla);
							//padreMantenimientoFase.modelo.addElement(faseplantilla);
						}
					}
					
					int[] indices_seleccionados_fase = new int[vector_fases.size()];
					int n_fases = padreMantenimientoFase.modelo.size();
					int m = 0;
					for (int i = 0; i < n_fases; i++) {
						FasePlantilla fase = (FasePlantilla) padreMantenimientoFase.modelo.getElementAt(i);
						for (int j = 0; j < vector_fases.size(); j++) {
							if (vector_fases.get(j).getIdFasePlantilla() == fase.getIdFasePlantilla()) {
								indices_seleccionados_fase[m] = i;
								m++;
							}
						}
					}
				
					jList1.setSelectedIndices(indices_seleccionados_fase);
					
					
					ArrayList<VistaPlantilla> vector_vistas = new ArrayList<VistaPlantilla>();
					
					//MOSTRAR TODAS LAS VISTAS EN LA LISTA DE VISTAS
					messages = session.createQuery("from VistaBloque where id_bloque = '"+bloque.getIdBloque()+"'").list();
					for ( Iterator iter = messages.iterator(); iter.hasNext(); ) {
						VistaBloque vistabloque = (VistaBloque) iter.next();
						
						List messages2 = session.createQuery("from VistaPlantilla where id_vista_plantilla = '"+vistabloque.getVistaPlantilla().getIdVistaPlantilla()+"'").list();
						for ( Iterator iter2 = messages2.iterator(); iter2.hasNext(); ) {
							VistaPlantilla vistaplantilla = (VistaPlantilla) iter2.next();
							vector_vistas.add(vistaplantilla);
							//padreMantenimientoVista.modelo.addElement(vistaplantilla);
						}
					}
					
					//Marco las vistas del bloque seleccionado
					int[] indices_seleccionados_vista = new int[vector_vistas.size()];
					int n_vistas = padreMantenimientoVista.modelo.size();
					m = 0;
					for (int i = 0; i < n_vistas; i++) {
						VistaPlantilla vista = (VistaPlantilla) padreMantenimientoVista.modelo.getElementAt(i);
						for (int j = 0; j < vector_vistas.size(); j++) {
							if (vector_vistas.get(j).getIdVistaPlantilla() == vista.getIdVistaPlantilla()) {
								indices_seleccionados_vista[m] = i;
								m++;
							}
						}
					}
					for (int k = 0; k < indices_seleccionados_vista.length; k++) {
						jList.setSelectedIndices(indices_seleccionados_vista);
					}
					
					//Obtenemos la fase del modo guiado del bloque
					if (bloque.getFaseModoGuiado()!=null){
						FaseBloque fasebloquemodoguiado = (FaseBloque) session.get(FaseBloque.class, bloque.getFaseModoGuiado());
						
						
						//for ( Iterator iter = messages.iterator(); iter.hasNext(); ) {
						
						for (int i = 0; i < vector_fases.size(); i++) {
							jComboBox1.addItem(vector_fases.get(i));
							if (fasebloquemodoguiado.getFasePlantilla().getIdFasePlantilla()==vector_fases.get(i).getIdFasePlantilla()){
								jComboBox1.setSelectedIndex(i);
							}
	
						}
					}

				}

			}
		});
	}

	/**
	 * 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.setBackground(SystemColor.controlHighlight);
			jPanel.setBorder(BorderFactory.createEmptyBorder(0, 1, 0, 0));
			jPanel.add(getJButton(), null);
		}
		return jPanel;
	}

	/**
	 * This method initializes jPanel1
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			BorderLayout borderLayout = new BorderLayout();
			borderLayout.setHgap(0);
			borderLayout.setVgap(0);
			jLabel4 = new JLabel();
			if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
				jLabel4.setText("Selecciona aquella fase que estará en el modo guiado:");
			else
				jLabel4.setText("Select that phase will be in the guided mode:");
			jLabel3 = new JLabel();
			if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
				jLabel3.setText("Tipo:");
			else
				jLabel3.setText("Type:");
			GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
			gridBagConstraints11.gridx = 1;
			gridBagConstraints11.gridy = 4;
			jLabel2 = new JLabel();
			if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
				jLabel2.setText("Nombre:");
			else
				jLabel2.setText("Name:");
			jLabel1 = new JLabel();
			if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
				jLabel1.setText("Lista de fases");
			else
				jLabel1.setText("List of phases");
			jLabel = new JLabel();
			if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
				jLabel.setText("Lista de vistas");
			else
				jLabel.setText("List of views");
			jPanel1 = new JPanel();
			jPanel1.setLayout(borderLayout);
			jPanel1.setBackground(SystemColor.activeCaptionBorder);
			jPanel1.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 1));
			jPanel1.add(getJPanel21(), BorderLayout.CENTER);
			jPanel1.add(getJPanel22(), BorderLayout.NORTH);
		}
		return jPanel1;
	}

	/**
	 * This method initializes jButton
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
				jButton.setText("Aceptar");
			else
				jButton.setText("Accept");
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {

					//INSERTAR NUEVO
					if (!actualizar) {
						try {
							if ((jTextField.getText().trim()).length() <= 0) {
								if (padreMantenimientoVista.padrePrincipal.idioma.equals("español"))
									throw new Exception("El nombre está vacío");
								else
									throw new Exception("The name is empty");
							} else {
								
								Session session = null;
								
								session = UtilidadHibernate.getSessionFactory().openSession();
								
								int idplantilla = padreMantenimientoBloque.padrePrincipal.jList.getSelectedIndex();

								Plantilla plantilla = (Plantilla) padreMantenimientoBloque.padrePrincipal.modelo.getElementAt(idplantilla);

//								Comprobamos que el nombre del componente no se repita en la base de datos.
								List mensaje = session.createQuery("from BloqueConstructivo where nombre ='"+jTextField.getText().trim()+"' AND id_plantilla ='"+plantilla.getIdPlantilla()+"'").list();
								if (mensaje.size() <= 0){
								
									int indice_vista = jList.getSelectedIndex();
									if (indice_vista == -1)
										if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
											throw new Exception("Selecciona una vista de la lista de vistas.");
										else
											throw new Exception("Select a view of the list of views.");
									else {
										
										int indice_fase = jList1.getSelectedIndex();
										if (indice_fase == -1) {
											if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
												throw new Exception("Selecciona una fase de la lista de fases.");
											else
												throw new Exception("Select a phase of the list of phases.");
										} else {
											
											if (jComboBox1.getSelectedIndex()==-1) {
												if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
													throw new Exception("Selecciona una fase del modo guiado.");
												else
													throw new Exception("Select one phase of guide mode.");
											} else {
											
												BloqueConstructivo bloque = new BloqueConstructivo();
												bloque = new BloqueConstructivo();
												bloque.setNombre(jTextField.getText());
												bloque.setPlantilla(plantilla);
												bloque.setTipo(jComboBox.getSelectedIndex());

												//Guardamos el bloque
												Transaction tx = session.beginTransaction();
												session.save(bloque);
												
												tx.commit();
								
												//Guardamos la lista de vistas
												
												ArrayList<VistaPlantilla> conjunto_vistas = new ArrayList<VistaPlantilla>(); // @jve:decl-index=0:
												vector_vistas_seleccionadas = jList.getSelectedIndices();
			
												for (int i = 0; i < vector_vistas_seleccionadas.length; i++) {
													VistaPlantilla vista = (VistaPlantilla) padreMantenimientoVista.modelo.getElementAt(vector_vistas_seleccionadas[i]);
													conjunto_vistas.add(vista);
												}
			
												for (int i = 0; i < conjunto_vistas.size(); i++){
													VistaBloque vistabloque = new VistaBloque();
													vistabloque.setVistaPlantilla(conjunto_vistas.get(i));
													vistabloque.setBloqueConstructivo(bloque);
													
													tx = session.beginTransaction();
													session.save(vistabloque);
													tx.commit();
												}
												
	//											//Guardamos la lista de fases
												
												ArrayList<FasePlantilla> conjunto_fases = new ArrayList<FasePlantilla>(); // @jve:decl-index=0:
												vector_fases_seleccionadas = jList1.getSelectedIndices();
		
												for (int i = 0; i < vector_fases_seleccionadas.length; i++) {
													FasePlantilla fase = (FasePlantilla) padreMantenimientoFase.modelo.getElementAt(vector_fases_seleccionadas[i]);
													conjunto_fases.add(fase);
												}
												
												for (int i = 0; i < conjunto_fases.size(); i++){
													FaseBloque fasebloque = new FaseBloque();
													fasebloque.setFasePlantilla(conjunto_fases.get(i));
													fasebloque.setBloqueConstructivo(bloque);
													
													tx = session.beginTransaction();
													session.save(fasebloque);
													tx.commit();
												}
												
												//Añadimos la fase en modo guiado
												//Recupero la fase del combobox
												FasePlantilla fase_modo_guiado = (FasePlantilla)jComboBox1.getSelectedItem();
												
												List messages = session.createQuery("from FaseBloque where id_fase_plantilla ='"+fase_modo_guiado.getIdFasePlantilla()+"' AND id_bloque = '"+bloque.getIdBloque()+"' order by id_bloque desc").list();
												Iterator iter = messages.iterator();
												FaseBloque fase_modo_guiado_bloque = (FaseBloque) iter.next();
												
												//bloque.setFaseModoGuiado(fase_modo_guiado.getIdFasePlantilla());
												bloque.setFaseModoGuiado(fase_modo_guiado_bloque.getIdFaseBloque());
												
												tx = session.beginTransaction();
												session.update(bloque);
	
												tx.commit();
												
												session.close();
											
												padreMantenimientoBloque.actualizaModelo();
												padreMantenimientoBloque.EstadisticasNumeroBloques();
												//padreMantenimientoBloque.jList.setSelectedIndex(padreMantenimientoBloque.modelo.getSize()-1);
												NuevoBloque.this.dispose();
											}
										}
									}
								}
								else{
									if (padreMantenimientoFase.padrePrincipal.idioma.equals("español"))
										throw new Exception ("Error, ya existe un bloque con ese nombre");
									else
										throw new Exception ("Error, There is already a block with that name");
								}
							
							}

						} catch (Exception exp) {
							// TODO: handle exception
							JOptionPane.showMessageDialog(null, exp.getMessage(), "Error",JOptionPane.ERROR_MESSAGE);
						}
						
					//ACTUALIZAR BLOQUE	
					} else {
						try {
							if ((jTextField.getText().trim()).length() <= 0) {
								if (padreMantenimientoVista.padrePrincipal.idioma.equals("español"))
									throw new Exception("El nombre está vacío");
								else
									throw new Exception("The name is empty");
							} else {
								int idplantilla = padreMantenimientoBloque.padrePrincipal.jList.getSelectedIndex();

								Plantilla plantilla = (Plantilla)padreMantenimientoBloque.padrePrincipal.modelo.getElementAt(idplantilla);

								int elemento = padreMantenimientoBloque.jList.getSelectedIndex();
								BloqueConstructivo bloque = (BloqueConstructivo) padreMantenimientoBloque.modelo.get(elemento);
								
								String nombre_bloque_antes = bloque.getNombre();
								Integer tipo_bloque_antes = bloque.getTipo();

								Session session = UtilidadHibernate.getSessionFactory().openSession();
								
								//Comprobamos que el nombre del componente no se repita en la base de datos.
								List mensaje = session.createQuery("from BloqueConstructivo where nombre ='"+jTextField.getText().trim()+"' AND id_plantilla ='"+plantilla.getIdPlantilla()+"'").list();
								session.close();
								if (mensaje.size() <= 0 || (mensaje.size()==1 && jTextField.getText().trim().equals(bloque.getNombre()))){
								
									int indice_vista = jList.getSelectedIndex();
									if (indice_vista == -1)
										if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
											throw new Exception("Selecciona una vista de la lista de vistas.");
										else
											throw new Exception("Select a view of the list of views.");
									else {
										
										int indice_fase = jList1.getSelectedIndex();
										if (indice_fase == -1) {
											if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español"))
												throw new Exception("Selecciona una fase de la lista de fases.");
											else
												throw new Exception("Select a phase of the list of phases.");
										} else {
											
											session = UtilidadHibernate.getSessionFactory().openSession();
											
//											Borramos las fases y vistas seleccionadas del bloque, ya que acabamos de insertar las nuevas.
											//BORRAR FASES
											List messages = session.createQuery("from FaseBloque where id_bloque = '"+bloque.getIdBloque()+"' order by id_bloque desc").list();
											for (Iterator iter2 = messages.iterator(); iter2.hasNext(); ){
												Transaction tx = session.beginTransaction();
												FaseBloque fasebloque = (FaseBloque) iter2.next();
												session.delete(fasebloque);
												tx.commit();
											}
											
//											//BORRAR VISTAS
											messages = session.createQuery("from VistaBloque where id_bloque = '"+bloque.getIdBloque()+"' order by id_bloque desc").list();
											for (Iterator iter2 = messages.iterator(); iter2.hasNext(); ){
												Transaction tx = session.beginTransaction();
												VistaBloque vistabloque = (VistaBloque) iter2.next();
												session.delete(vistabloque);
												tx.commit();
											}
											
											
											bloque.setNombre(jTextField.getText());
											bloque.setPlantilla(plantilla);
											bloque.setTipo(jComboBox.getSelectedIndex());
											
											//Guardamos el bloque
											Transaction tx = session.beginTransaction();
											session.update(bloque);
				
											tx.commit();
											
											//Guardamos la lista de vistas
											
											ArrayList<VistaPlantilla> conjunto_vistas = new ArrayList<VistaPlantilla>(); // @jve:decl-index=0:
											vector_vistas_seleccionadas = jList.getSelectedIndices();
		
											for (int i = 0; i < vector_vistas_seleccionadas.length; i++) {
												VistaPlantilla vista = (VistaPlantilla) padreMantenimientoVista.modelo.getElementAt(vector_vistas_seleccionadas[i]);
												conjunto_vistas.add(vista);
											}
		
											for (int i = 0; i < conjunto_vistas.size(); i++){
												VistaBloque vistabloque = new VistaBloque();
												vistabloque.setVistaPlantilla(conjunto_vistas.get(i));
												vistabloque.setBloqueConstructivo(bloque);
												
												tx = session.beginTransaction();
												session.save(vistabloque);
												tx.commit();
											}
											
//											//Guardamos la lista de fases
											
											ArrayList<FasePlantilla> conjunto_fases = new ArrayList<FasePlantilla>(); // @jve:decl-index=0:
											vector_fases_seleccionadas = jList1.getSelectedIndices();
	

											for (int i = 0; i < vector_fases_seleccionadas.length; i++) {
												FasePlantilla fase = (FasePlantilla) padreMantenimientoFase.modelo.getElementAt(vector_fases_seleccionadas[i]);
												conjunto_fases.add(fase);
											}
											
											for (int i = 0; i < conjunto_fases.size(); i++){
												FaseBloque fasebloque = new FaseBloque();
												fasebloque.setFasePlantilla(conjunto_fases.get(i));
												fasebloque.setBloqueConstructivo(bloque);
												
												tx = session.beginTransaction();
												session.save(fasebloque);
												tx.commit();
											}
											
											//Añadimos la fase en modo guiado
											
											//Recupero la fase del combobox
											FasePlantilla fase_modo_guiado = (FasePlantilla)jComboBox1.getSelectedItem();
											
											messages = session.createQuery("from FaseBloque where id_fase_plantilla ='"+fase_modo_guiado.getIdFasePlantilla()+"' AND id_bloque = '"+bloque.getIdBloque()+"' order by id_bloque desc").list();
											Iterator iter = messages.iterator();
											FaseBloque fase_modo_guiado_bloque = (FaseBloque) iter.next();
											
											//bloque.setFaseModoGuiado(fase_modo_guiado.getIdFasePlantilla());
											bloque.setFaseModoGuiado(fase_modo_guiado_bloque.getIdFaseBloque());
											
											tx = session.beginTransaction();
											session.update(bloque);
											tx.commit();
									

											padreMantenimientoBloque.actualizaModelo();
											session.close();
											NuevoBloque.this.dispose();
										}
									}
									
								}
								else{
									if (padreMantenimientoFase.padrePrincipal.idioma.equals("español"))
										throw new Exception ("Error, ya existe un bloque con ese nombre");
									else
										throw new Exception ("Error, There is already a block with that name");
								}
							}
							

						} catch (Exception exp) {
							// TODO: handle exception
							JOptionPane.showMessageDialog(null, exp.getMessage(), "Error",JOptionPane.ERROR_MESSAGE);
						}
					}
				}
			});
		}
		return jButton;
	}

	/**
	 * This method initializes jList
	 * 
	 * @return javax.swing.JList
	 */
	private JList getJList() {
		if (jList == null) {
			jList = new JList();
			//jList.setPreferredSize(new Dimension(0, 0));
			//jList.setSize(new Dimension(0, 0));
			jList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		}
		return jList;
	}

	/**
	 * This method initializes jList1
	 * 
	 * @return javax.swing.JList
	 */
	private JList getJList1() {
		if (jList1 == null) {
			jList1 = new JList();
			//jList1.setPreferredSize(new Dimension(0, 0));
			//jList1.setSize(new Dimension(400, 0));
			jList1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
			jList1.addMouseListener(new java.awt.event.MouseAdapter() {
				public void mouseClicked(java.awt.event.MouseEvent e) {

					jComboBox1.removeAllItems();

					// bloque.setVista((Vista)padreMantenimientoVista.modelo.getElementAt(indice_vista));
					ArrayList<FasePlantilla> conjunto_fases = new ArrayList<FasePlantilla>(); // @jve:decl-index=0:
					vector_fases_seleccionadas = jList1.getSelectedIndices();

					// Vector<Integer> v = new
					// Vector<Integer>(vector_elementos_seleccionados.length);
					for (int i = 0; i < vector_fases_seleccionadas.length; i++) {
						FasePlantilla fase = (FasePlantilla) padreMantenimientoFase.modelo.getElementAt(vector_fases_seleccionadas[i]);
						conjunto_fases.add(fase);
					}

					for (int i = 0; i < conjunto_fases.size(); i++) {
						jComboBox1.addItem(conjunto_fases.get(i));
					}
				}
			});
		}
		return jList1;
	}

	/**
	 * This method initializes jComboBox
	 * 
	 * @return javax.swing.JComboBox
	 */
	private JComboBox getJComboBox() {
		if (jComboBox == null) {
			jComboBox = new JComboBox();
			if (padreMantenimientoBloque.padrePrincipal.idioma.equals("español")) {
				jComboBox.addItem("Estándar");
				jComboBox.addItem("Portafolio de aplicaciones");
				jComboBox.addItem("Modelo de madurez");
			} else {
				jComboBox.addItem("Standar");
				jComboBox.addItem("Aplication portfolio");
				jComboBox.addItem("Maturity model");
			}

			//jComboBox.setPreferredSize(new Dimension(150, 25));
			jComboBox.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
		}
		return jComboBox;
	}

	/**
	 * This method initializes jComboBox1
	 * 
	 * @return javax.swing.JComboBox
	 */
	private JComboBox getJComboBox1() {
		if (jComboBox1 == null) {
			jComboBox1 = new JComboBox();
		}
		return jComboBox1;
	}

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

	/**
	 * This method initializes jScrollPane1	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane1() {
		if (jScrollPane1 == null) {
			jScrollPane1 = new JScrollPane();
			jScrollPane1.setPreferredSize(new Dimension(300, 0));
			jScrollPane1.setViewportView(getJList1());
		}
		return jScrollPane1;
	}

	/**
	 * This method initializes jPanel21	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel21() {
		if (jPanel21 == null) {
			GridBagConstraints gridBagConstraints14 = new GridBagConstraints();
			gridBagConstraints14.gridx = 0;
			gridBagConstraints14.gridy = 3;
			jLabel41 = new JLabel();
			jLabel41.setText("");
			GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
			gridBagConstraints2.fill = GridBagConstraints.BOTH;
			gridBagConstraints2.gridx = 1;
			gridBagConstraints2.gridy = 2;
			gridBagConstraints2.weightx = 1.0;
			gridBagConstraints2.weighty = 1.0;
			gridBagConstraints2.gridwidth = 1;
			gridBagConstraints2.ipadx = 0;
			gridBagConstraints2.insets = new Insets(5, 5, 0, 10);
			GridBagConstraints gridBagConstraints12 = new GridBagConstraints();
			gridBagConstraints12.fill = GridBagConstraints.BOTH;
			gridBagConstraints12.gridx = 0;
			gridBagConstraints12.gridy = 2;
			gridBagConstraints12.weightx = 1.0;
			gridBagConstraints12.weighty = 1.0;
			gridBagConstraints12.gridwidth = 1;
			gridBagConstraints12.gridheight = 1;
			gridBagConstraints12.ipadx = 0;
			gridBagConstraints12.insets = new Insets(5, 10, 0, 5);
			GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
			gridBagConstraints10.anchor = GridBagConstraints.WEST;
			gridBagConstraints10.gridx = 1;
			gridBagConstraints10.gridy = 3;
			gridBagConstraints10.insets = new Insets(5, 5, 5, 0);
			GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
			gridBagConstraints9.anchor = GridBagConstraints.WEST;
			gridBagConstraints9.insets = new Insets(0, 5, 15, 0);
			gridBagConstraints9.gridx = 1;
			gridBagConstraints9.gridy = 4;
			gridBagConstraints9.weightx = 1.0;
			gridBagConstraints9.fill = GridBagConstraints.VERTICAL;
			GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
			gridBagConstraints6.anchor = GridBagConstraints.WEST;
			gridBagConstraints6.insets = new Insets(10, 5, 0, 50);
			gridBagConstraints6.gridx = 1;
			gridBagConstraints6.gridy = 0;
			gridBagConstraints6.weightx = 1.0;
			gridBagConstraints6.fill = GridBagConstraints.BOTH;
			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
			gridBagConstraints1.insets = new Insets(10, 0, 0, 0);
			gridBagConstraints1.gridy = 1;
			gridBagConstraints1.gridx = 1;
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.insets = new Insets(10, 0, 0, 0);
			gridBagConstraints.gridy = 1;
			gridBagConstraints.gridx = 0;
			jPanel21 = new JPanel();
			jPanel21.setLayout(new GridBagLayout());
			jPanel21.setPreferredSize(new Dimension(0, 36));
			jPanel21.add(jLabel, gridBagConstraints);
			jPanel21.add(jLabel1, gridBagConstraints1);
			jPanel21.add(getJComboBox1(), gridBagConstraints9);
			jPanel21.add(jLabel4, gridBagConstraints10);
			jPanel21.setBackground(new Color(238, 238, 238));
			jPanel21.add(getJScrollPane(), gridBagConstraints12);
			jPanel21.add(getJScrollPane1(), gridBagConstraints2);
			jPanel21.add(jLabel41, gridBagConstraints14);
		}
		return jPanel21;
	}

	/**
	 * This method initializes jPanel22	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel22() {
		if (jPanel22 == null) {
			
			GridBagConstraints gridBagConstraints13 = new GridBagConstraints();
			gridBagConstraints13.fill = GridBagConstraints.HORIZONTAL;
			gridBagConstraints13.gridy = 0;
			gridBagConstraints13.weightx = 1.0;
			gridBagConstraints13.anchor = GridBagConstraints.WEST;
			gridBagConstraints13.insets = new Insets(10, 5, 0, 10);
			gridBagConstraints13.gridx = 1;
			GridBagConstraints gridBagConstraints7 = new GridBagConstraints();
			gridBagConstraints7.anchor = GridBagConstraints.WEST;
			gridBagConstraints7.insets = new Insets(5, 5, 0, 0);
			gridBagConstraints7.gridx = 1;
			gridBagConstraints7.gridy = 1;
			gridBagConstraints7.weightx = 1.0;
			gridBagConstraints7.fill = GridBagConstraints.VERTICAL;
			GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
			gridBagConstraints8.anchor = GridBagConstraints.EAST;
			gridBagConstraints8.gridx = 0;
			gridBagConstraints8.gridy = 1;
			gridBagConstraints8.insets = new Insets(5, 0, 0, 0);
			GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
			gridBagConstraints5.anchor = GridBagConstraints.EAST;
			gridBagConstraints5.gridx = 0;
			gridBagConstraints5.gridy = 0;
			gridBagConstraints5.insets = new Insets(10, 10, 0, 0);
			jPanel22 = new JPanel();
			jPanel22.setLayout(new GridBagLayout());
			jPanel22.setPreferredSize(new Dimension(0, 80));
			jPanel22.add(jLabel2, gridBagConstraints5);
			jPanel22.add(jLabel3, gridBagConstraints8);
			jPanel22.add(getJComboBox(), gridBagConstraints7);
			jPanel22.add(getJTextField(), gridBagConstraints13);
			jPanel22.setBackground(new Color(238, 238, 238));
		}
		return jPanel22;
	}

	/**
	 * This method initializes jTextField	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setPreferredSize(new Dimension(4, 20));
		}
		return jTextField;
	}

	/**
	 * This method initializes jPanel2
	 * 
	 * @return javax.swing.JPanel
	 */

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