public GUIAltaEmpleado(){
        final ControlErrores control=new ControlErrores();
        this.setTitle("Alta Empleado");
	setBounds(100, 100, 500, 400);
        this.setLocationRelativeTo(null);
        
            this.setLayout(new BorderLayout());
            
            ArrayList<Departamento> depts = FactoriaSA.obtenerInstancia().generaSADepartamento().mostrarListaDepartamentos();
            ArrayList<String> departments = new ArrayList<>();
            for (int i = 0; i < depts.size(); i++)
            {
                if (depts.get(i).isDisponible())
                    departments.add(depts.get(i).getNombre());
            }
            combos = new JComboBox(departments.toArray());
            
            panelSuperior.setLayout(new GridLayout(8,2));



            //añadimos el Jlabel y el Jtextfield para el DNI del empleado
            panelSuperior.add(labDNI);
            panelSuperior.add(textDNI);
            
            //añadimos el Jlabel y el Jtextfield para el Nombre
            panelSuperior.add(labNombre);
            panelSuperior.add(textNombre);

            //añadimos el Jlabel y el Jtextfield para los Apellidos
            panelSuperior.add(labApellidos);
            panelSuperior.add(textApellidos);

            //añadimos el Jlabel y el Jtextfield para la Direccion
            panelSuperior.add(labDireccion);
            panelSuperior.add(textDireccion);
            
            panelSuperior.add(labDepartamento);
            //panelSuperior.add(textDepartamento);
            //para lineas futuras, se puede poner el comboBox
            panelSuperior.add(combos);
            

            
             //añadimos el Jlabel y el Jtextfield para el sueldo
            panelSuperior.add(labSueldo);
            panelSuperior.add(textSueldo);
            textSueldo.setText("1000");
  
            //añadimos los radiobuttons al panelRadios para indicar si es empleado es Supervisor o Trabajador
            panelRadios.add(radioTrabajador);
            panelRadios.add(radioSupervisor);

            //los radiobuttons se encuentran dentro de un ButtonGroup
            grupoRadios.add(radioTrabajador);
            grupoRadios.add(radioSupervisor);
            
            //Añadimos el campo de especialidad
            panelRadios.add(labProductividad);
            panelRadios.add(textProductividad);
            panelRadios.add(labHoras);
            panelRadios.add(textHoras);
            labHoras.setVisible(false);
            textHoras.setVisible(false);
            // Añadimos cajas de texto ocultas para cuadrar mejor el espacio
            panelRadios.add(textOculto1);
            panelRadios.add(textOculto2);
            textOculto1.setVisible(false);
            textOculto2.setVisible(false);
            



            //añadimos los botones aceptar y cancelar al panelBotones
            panelBotones.add(boton_ok);
            panelBotones.add(boton_cancelar);
            
            //Añadimos actionlintener de los botones
            radioTrabajador.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                labProductividad.setVisible(false);
                textProductividad.setVisible(false);
                labHoras.setVisible(true);
                textHoras.setVisible(true);                
            }
        });
            
            radioSupervisor.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                labHoras.setVisible(false);
                textHoras.setVisible(false); 
                labProductividad.setVisible(true);
                textProductividad.setVisible(true);
            }
        });
            
            
            
            //Añadimos el actionlistener
            boton_ok.addActionListener(new ActionListener() {

            private Departamento encuentraDepPorNombre(ArrayList<Departamento> deps, String nombre)
            {
                Departamento d = null;
                
                for (Departamento dep : deps)
                    if (dep.getNombre().equalsIgnoreCase(nombre))
                        d = dep;
                
                return d;
            }
            @Override
            public void actionPerformed(ActionEvent e) {
                
                
                
                if (radioTrabajador.isSelected())
                {
                    
                    ArrayList<Departamento> depts2 = FactoriaSA.obtenerInstancia().generaSADepartamento().mostrarListaDepartamentos();
                    t.setDni(textDNI.getText());
                    t.setNombre(textNombre.getText());
                    t.setApellidos(textApellidos.getText());
                    t.setDireccion(textDireccion.getText());
                    Departamento dummy = encuentraDepPorNombre(depts2, (String)combos.getSelectedItem());
                    t.setDepartamento(dummy);
                    t.setSueldo(((double)(Double.parseDouble(textSueldo.getText()))));
                    t.setTipo(radioTrabajador.getText());                    
                    t.setDisponible(true);
                    t.setHoras_trabajadas((double) Double.parseDouble(textHoras.getText()));
                    if(control.controlErroresEmpleado(t))
                    {
                        Controlador.getInstance().accion(EventoNegocio.ALTA_EMPLEADO, t);
                    }
                    else
                    {
                        System.out.println("Formato erroneo o falta de datos");
                         Controlador.getInstance().accion(EventoNegocio.MOSTRAR_INFORMACION_ERROR, null);
                    }
                }
                else
                {
                    ArrayList<Departamento> depts2 = FactoriaSA.obtenerInstancia().generaSADepartamento().mostrarListaDepartamentos();
                    s.setDni(textDNI.getText());
                    s.setNombre(textNombre.getText());
                    s.setApellidos(textApellidos.getText());
                    s.setDireccion(textDireccion.getText());
                    Departamento dummy = encuentraDepPorNombre(depts2, (String)combos.getSelectedItem());
                    s.setDepartamento(dummy);
                    s.setSueldo(((double)(Double.parseDouble(textSueldo.getText()))));
                    s.setTipo(radioSupervisor.getText());                    
                    s.setDisponible(true);
                    s.setFactor_productividad((double) Double.parseDouble(textProductividad.getText()));
                    if(control.controlErroresEmpleado(s))
                    {
                        Controlador.getInstance().accion(EventoNegocio.ALTA_EMPLEADO, s);
                    }
                    else
                    {
                        System.out.println("Formato erroneo o falta de datos");
                        Controlador.getInstance().accion(EventoNegocio.MOSTRAR_INFORMACION_ERROR, null);
                    }
                }
                
                
            }
        });
            boton_cancelar.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) 
                {
                dispose();
                }
            });
            //añadimos a este panel Altaempleado cada panel independiente
            
            this.add(panelRadios, BorderLayout.CENTER);
            this.add(panelSuperior,BorderLayout.NORTH);	
            this.add(panelBotones,BorderLayout.SOUTH);

         //   this.setBorder(new TitledBorder(new TitledBorder(""), "Alta empleado", 
          //                  TitledBorder.CENTER, TitledBorder.TOP ));		


            this.setVisible(true);
            
            
	}