/** procedure qui charge les differents objet arraylist pour le modification */
  private void chargerList() {

    // chargement des stages J et J+1
    stageList = PasserelleStage.lectureStageObj();
    // initialisation de dateList
    dateList = new ArrayList<String>();
    for (Stage leStage : stageList) {
      if (!dateList.contains(leStage.getDateStr())) {
        dateList.add(leStage.getDateStr());
      } // finsi
    } // finpour
  } // fin chargerList()
  /**
   * procedure de l'interface ActionListener<br>
   * execute les modifications par rapport au bouton selectionné
   */
  public void actionPerformed(ActionEvent e) {

    // récupération de la source
    JComponent source = (JComponent) e.getSource();

    if (source.equals(dateBox)) {
      stageBox.removeAllItems();
      date = (String) dateBox.getSelectedItem();
      ArrayList<Stage> vueStagelist = new ArrayList<Stage>();
      for (Stage leStage : stageList) {
        if (leStage.getDateStr().equals(date)) {
          vueStagelist.add(leStage);
        }
      } // finpour

      // tri des stages par ordre alphabetique
      Stage stgTemps;
      boolean good = false;
      // tant que le tri n'est pas bon
      while (!good) {
        good = true;
        for (int i = 0; i < vueStagelist.size() - 1; i++) {
          if (vueStagelist.get(i).getCode().compareToIgnoreCase(vueStagelist.get(i + 1).getCode())
              > 0) {
            good = false;
            // echange
            stgTemps = vueStagelist.get(i);
            vueStagelist.set(i, vueStagelist.get(i + 1));
            vueStagelist.set(i + 1, stgTemps);
          } // finsi
        } // finpour
      } // fin tant que

      for (Stage leStage : vueStagelist) {
        stageBox.addItem(leStage.getCode());
      } // finpour
    } // finsi

    // si le bouton est le bouton du choix de la date
    if (source.equals(vueBtn)) {
      ArrayList<Stage> vueStagelist = new ArrayList<Stage>();
      for (Stage leStage : stageList) {
        if (leStage.getDateStr().equals(date)) {
          vueStagelist.add(leStage);
        }
      } // finpour
      if (!vueStagelist.isEmpty()) {
        new FenetreStage(vueStagelist);
      }
    } // finsi

    // si le bouton est le bouton du choix du stage
    if (source.equals(stageBox)) {
      code = (String) stageBox.getSelectedItem();
      for (Stage leStage : stageList) {
        if (leStage.getDateStr().equals(date) && leStage.getCode().equals(code)) {
          afficherInfoStage(leStage);
          break;
        }
      } // fin pour
    } // finsi

    // si le bouton est le bouton d'enregistrement
    if (source.equals(modifBtn)) {
      // fenetre de dialogue
      int rep =
          JOptionPane.showConfirmDialog(
              null,
              "<html>enregistrer les modifications sur ce stage ?<br>"
                  + "les modifications seront definitives !</html>",
              "modification",
              JOptionPane.YES_NO_OPTION);
      // si la reponse est "oui"
      if (rep == JOptionPane.YES_OPTION) {
        for (Stage leStage : stageList) {
          if (leStage.getDateStr().equals(date) && leStage.getCode().equals(code)) {
            leStage.setCode(nomField.getText());
            leStage.setLibelle(libField.getText());
            leStage.getFirstModule().setSalle(salleField.getText());
            leStage.setLeader(leaderField.getText());
            break;
          } // finsi
        } // finpour
        PasserelleStage.ecritureStageObj(stageList); // ecriture des stages avec les modifs
        JOptionPane.showMessageDialog(
            null,
            "<html>Enregistrement réussi !</html>",
            "Enregistrement",
            JOptionPane.INFORMATION_MESSAGE);
      } // finsi
    } // finsi

    // si le bouton est le bouton de l'affichage des stagiaires
    if (source.equals(stagiaireBtn)) {
      for (Stage leStage : stageList) {
        if (leStage.getDateStr().equals(date) && leStage.getCode().equals(code)) {
          afficherInfoStage(leStage);
          new FenetreStagiaire(leStage); // affichage de la fenetre
          break;
        } // finsi
      } // finpour
    } // finsi

    // si le bouton est le bouton de la suppression de stage
    if (source.equals(removeBtn)) {
      // fenetre de dialogue
      int rep =
          JOptionPane.showConfirmDialog(
              null,
              "<html>Supprimer le stage "
                  + code
                  + " du "
                  + date
                  + " ?<br>"
                  + "les modifications seront definitives !</html>",
              "modification",
              JOptionPane.YES_NO_OPTION);
      // si la reponse est "oui"
      if (rep == JOptionPane.YES_OPTION) {
        for (Stage leStage : stageList) {
          if (leStage.getDateStr().equals(date) && leStage.getCode().equals(code)) {
            stageBox.removeItem(leStage.getCode());
            stageList.remove(leStage);
            PasserelleStage.ecritureStageObj(stageList); // ecriture des stages avec les modifs
            JOptionPane.showMessageDialog(
                null,
                "<html>Suppresion réussi !</html>",
                "Suppression",
                JOptionPane.INFORMATION_MESSAGE);
            break;
          }
        } // finpour
        code = (String) stageBox.getItemAt(0);
        for (Stage leStage : stageList) {
          if (leStage.getDateStr().equals(date) && leStage.getCode().equals(code)) {
            afficherInfoStage(leStage); // affichage des infos du premier stage de la liste
            break;
          }
        } // finpour
      } // finsi
    } // finsi
  } // fin actionPerformed()