private void llamarAcciones(int opcion) {

    ArrayList<Actividad> listaActividadSel = null;
    Actividad actividad;

    Object s[];

    // Cargar a una ArrayList los actividades seleccionados
    try {
      if (opSelActividades.isSelected()) {
        if (listActividades.getSelectedValue() == null) {

          JOptionPane.showMessageDialog(
              null,
              language.getProperty("err.actividad.noselect"),
              language.getProperty("app.title"),
              JOptionPane.WARNING_MESSAGE);
          return;

        } else {
          listaActividadSel = new ArrayList<Actividad>();
          s = listActividades.getSelectedValues();
          for (int i = 0; i < s.length; i++) {
            String prova = s[i].toString();

            actividad = new Actividad();
            actividad.setTitol(prova);
            listaActividadSel.add(actividad);
          }
        }
      }

      Date data = null;
      String txt = txtData.getText();
      if (txt.equals("")) {
        data = null;
      } else {

        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
        data = formato.parse(txt);
      }

      PnlListadoPersonalAcademico form =
          new PnlListadoPersonalAcademico(
              parent, true, manager, language, usuario, data, listaActividadSel, opcion);
      form.setLocationRelativeTo(null);
      form.setVisible(true);

    } catch (Exception ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.generic")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);
    }
  }
  /** carga la tabla de asistencia por horas */
  private void cargarTablaHoras(String inici, String fi) {

    java.sql.Time hInici;
    java.sql.Time hFin;
    SimpleDateFormat formato = new SimpleDateFormat("HH:mm");
    SimpleDateFormat formato3 = new SimpleDateFormat("HH:mm");
    DecimalFormat formato2 = new DecimalFormat("0");
    ArrayList<String> header = new ArrayList<String>(); // cabecera
    header.add(language.getProperty("estadisticas.table.personalAcademico.horas"));
    header.add(language.getProperty("estadisticas.table.personalAcademico.asistencia"));

    String[][] gridData;
    List<String> row;

    try {
      if (inici.equals("")) hInici = null;
      else hInici = new java.sql.Time(formato.parse(inici).getTime());

      if (fi.equals("")) hFin = null;
      else hFin = new java.sql.Time(formato3.parse(fi).getTime());
      ;

      matriculas = manager.consultarHoras(hInici, hFin);
      gridData = new String[matriculas.size()][4];

      int i = 0;
      float total;
      float cos = 0;

      for (Matricula matricula : matriculas) {
        cos = matricula.getAsis() + matricula.getNoAsis();
        total = matricula.getAsis() / cos;
        total = total * 100;
        gridData[i][0] = formato.format(matricula.getHoraInicio());
        gridData[i][1] = formato2.format(total) + "%";
        i++;
      }

      tablaHoras.setModel(
          new DefaultTableModel(gridData, header.toArray()) {
            @Override
            public boolean isCellEditable(int row, int column) {
              return false;
            }
          });

    } catch (ParseException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.formatoHora"),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);
    } catch (SQLException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.sql")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (RemoteException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.rmi")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (Exception ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.generic")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    }
  }
  /** carga la tabla de solapados a parti de los datos que recibe */
  public void cargarTablaSolapados(String sdata, String sdni) {
    // Rellena la tabla
    Date data;
    String dni;
    String turno = "";
    ArrayList<String> header = new ArrayList<String>(); // cabecera
    header.add(language.getProperty("mantenimiento.usermain.DNI"));
    header.add(language.getProperty("mantenimiento.usermain.name"));
    header.add(language.getProperty("mantenimiento.main.curse"));
    header.add(language.getProperty("estadisticas.table.personalAcademico.grupo"));

    String[][] gridData;
    List<String> row;
    try {

      if (sdata.equals("")) {
        data = null;
      } else {
        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
        data = formato.parse(sdata);
      }

      if (sdni.equals("")) dni = null;
      else dni = txtDni.getText();

      matriculas = manager.consultarSolapados(data, dni);
      gridData = new String[matriculas.size()][4];

      int i = 0;
      float total;
      float stat;
      float cos = 0;

      for (Matricula matricula : matriculas) {
        if (matricula.getTurno() == 1)
          turno = language.getProperty("estatisticas.table.personalAcademico.turnoMaƱana");
        if (matricula.getTurno() == 2)
          turno = language.getProperty("estatisticas.table.personalAcademico.turnoTarde");
        gridData[i][0] = matricula.getUsuarioNif();
        gridData[i][1] = matricula.getUsuarioNombre();
        gridData[i][2] = matricula.getActividadNombre();
        gridData[i][3] = turno;

        i++;
      }
      // hace que no se pueda editar la tabla
      tablaSolapados.setModel(
          new DefaultTableModel(gridData, header.toArray()) {
            @Override
            public boolean isCellEditable(int row, int column) {
              return false;
            }
          });

    } catch (ParseException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.formatoData"),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);
    } catch (SQLException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.sql")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (RemoteException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.rmi")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (Exception ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.generic")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    }
  }
  /** Creates new form PnlFiltroProfesor */
  public PnlFiltroPersonalAcademico(
      java.awt.Frame parent, boolean modal, Estadisticas manager, LanguageUtils language) {
    super(parent, modal);
    initComponents();
    setLocationRelativeTo(null);
    this.manager = manager;
    this.language = language;
    this.parent = parent;
    // Cargar textos
    btnAceptar.setText(language.getProperty("estadisticas.profesor.btn.profesores"));
    btnActividad.setText(language.getProperty("estadisticas.profesor.btn.actividad"));
    btnCancelar.setText(language.getProperty("form.common.close"));
    btnSolapamiento.setText(language.getProperty("mantenimiento.usermain.dofilter"));
    btnHoras.setText(language.getProperty("mantenimiento.usermain.dofilter"));
    btnCerrar.setText(language.getProperty("form.common.close"));
    btnCerrarH.setText(language.getProperty("form.common.close"));
    lblFecha.setText(language.getProperty("estadisticas.form.fechaInicio"));
    lblSelActividades.setText(language.getProperty("estadisticas.form.selActividades"));
    opTodasActividades.setText(language.getProperty("estadisticas.form.opTodosActividades"));
    opSelActividades.setText(language.getProperty("estadisticas.form.opFiltrarActividades"));
    lblMatriculacion.setText(language.getProperty("estadisticas.fotm.fechaMat"));
    opTodosAlumnos.setText(language.getProperty("estadisticas.form.opTodos"));
    opFiltroAlumno.setText(language.getProperty("estadisticas.form.opDni"));
    opSelHoras.setText(language.getProperty("estadisticas.form.opFiltrarHoras"));
    opTodasHoras.setText(language.getProperty("estadisticas.form.opTodas"));
    lblDe.setText(language.getProperty("estadisticas.form.horas.txtDe"));
    lblA.setText(language.getProperty("estadisticas.form.horas.txtA"));
    this.setTitle(language.getProperty("estadisticas.form.personalAcademico"));
    tabSolapamiento.setTitleAt(0, language.getProperty("estadisticas.tab.profesores"));
    tabSolapamiento.setTitleAt(1, language.getProperty("estadisticas.tab.solapamiento"));
    tabSolapamiento.setTitleAt(2, language.getProperty("estadisticas.tab.horas"));

    opcionesAlumno.add(opTodosAlumnos);
    opcionesAlumno.add(opFiltroAlumno);
    opTodosAlumnos.setSelected(true);

    //        opcionesActividades.add(opTodssActividades);
    //        opcionesActividades.add(opSelActividades);
    opTodasActividades.setSelected(true);

    opcionesHoras.add(opTodasHoras);
    opcionesHoras.add(opSelHoras);
    opTodasHoras.setSelected(true);

    // modelos para la jList
    modelo = new DefaultListModel();
    modelo2 = new DefaultListModel();

    cargarTablaSolapados("", "");
    cargarTablaHoras("", "");

    // carga los actividads de un centro
    try {

      listaActividad = manager.consultarActividades();
      cargarLista(listActividades, listaActividad);

    } catch (RemoteException e) {

      Logger.getLogger(PnlFiltroPersonalAcademico.class.getName()).log(Level.SEVERE, null, e);

    } catch (Exception e) {
      // Logger.getLogger(PnlFiltroProfesor.class.getName()).log(Level.SEVERE, null, e);
      Logger.getLogger(PnlFiltroPersonalAcademico.class.getName())
          .log(Level.SEVERE, null, "Error al cargar la lista");
    }
  }