private void updateCbParcours() {
    myView.getCbParcours().removeAllItems();
    if (eodHabilitations.selectedObjects() != null
        && eodHabilitations.selectedObjects().count() == 1) {
      FormationHabilitation selectedHabilitation =
          (FormationHabilitation) eodHabilitations.selectedObject();
      int niveau = selectedHabilitation.fhabNiveau().intValue();
      int ordre1 = niveau * 2 - 1;
      int ordre2 = ordre1 + 1;

      EOQualifier qualifier =
          EOQualifier.qualifierWithQualifierFormat(
              "("
                  + MaquetteRepartitionSem.SEMESTRE_KEY
                  + "."
                  + MaquetteSemestre.MSEM_ORDRE_KEY
                  + " = %@ or "
                  + MaquetteRepartitionSem.SEMESTRE_KEY
                  + "."
                  + MaquetteSemestre.MSEM_ORDRE_KEY
                  + " = %@) and "
                  + MaquetteRepartitionSem.PARCOURS_KEY
                  + "."
                  + MaquetteParcours.FORMATION_SPECIALISATION_KEY
                  + " = %@ and "
                  + MaquetteRepartitionSem.FANN_KEY_KEY
                  + " = %@",
              new NSArray<Object>(
                  new Object[] {
                    new Integer(ordre1),
                    new Integer(ordre2),
                    selectedHabilitation.formationSpecialisation(),
                    selectedHabilitation.fannKey()
                  }));
      EOSortOrdering sortSemestres =
          EOSortOrdering.sortOrderingWithKey(
              MaquetteRepartitionSem.SEMESTRE_KEY + "." + MaquetteSemestre.MSEM_ORDRE_KEY,
              EOSortOrdering.CompareCaseInsensitiveAscending);
      EOSortOrdering sortParcours =
          EOSortOrdering.sortOrderingWithKey(
              MaquetteRepartitionSem.PARCOURS_KEY + "." + MaquetteParcours.MPAR_LIBELLE_KEY,
              EOSortOrdering.CompareCaseInsensitiveAscending);

      NSArray<MaquetteRepartitionSem> semestres =
          MaquetteRepartitionSem.fetchMaquetteRepartitionSems(
              ec,
              qualifier,
              new NSArray<EOSortOrdering>(new EOSortOrdering[] {sortSemestres, sortParcours}));

      myView.getCbParcours().addItem(null);
      for (int i = 0; i < semestres.count(); i++) {
        myView.getCbParcours().addItem(semestres.objectAtIndex(i));
      }
    }
  }
 private void updatePreferences() {
   EOQualifier qual1 =
       new EOKeyValueQualifier(
           PrefScol.INDIVIDU_KEY,
           EOKeyValueQualifier.QualifierOperatorEqual,
           app.userInfo("individu"));
   EOQualifier qual2 =
       new EOKeyValueQualifier(
           PrefScol.ANNEE_KEY,
           EOKeyValueQualifier.QualifierOperatorEqual,
           myView.getCbAnnee().getSelectedItem());
   EOQualifier qualifier =
       new EOAndQualifier(new NSArray<EOQualifier>(new EOQualifier[] {qual1, qual2}));
   EOFetchSpecification myFetch = new EOFetchSpecification(PrefScol.ENTITY_NAME, qualifier, null);
   eodHabilitationsChoisies.setObjectArray(ec.objectsWithFetchSpecification(myFetch));
   myView.getMyEOTableHabilitationsChoisies().updateData();
 }
  public void ajouterPreference() {
    NSArray<FormationHabilitation> habilitations = eodHabilitations.selectedObjects();
    if (habilitations == null || habilitations.count() == 0) {
      WindowHandler.showInfo(
          "Veuillez rechercher et sélectionner un diplôme dans la table du dessus");
      return;
    }

    for (int i = 0; i < habilitations.count(); i++) {
      FormationHabilitation habilitation = habilitations.objectAtIndex(i);
      NSArray<FormationHabilitation> preferedHabilitations =
          (NSArray<FormationHabilitation>)
              eodHabilitationsChoisies.displayedObjects().valueForKey(PrefScol.HABILITATION_KEY);
      if (preferedHabilitations.containsObject(habilitation)) {
        WindowHandler.showInfo(
            "Ce diplôme est déjà dans votre liste des préférences ("
                + habilitation.formationSpecialisation().scolFormationDiplome().fdipAbreviation()
                + ")");
        if (habilitations.count() == 1) {
          return;
        }
        continue;
      }

      PrefScol prefScol = PrefScol.createPrefScol(ec);
      prefScol.setHabilitationRelationship(habilitation);
      prefScol.setAnneeRelationship((FormationAnnee) myView.getCbAnnee().getSelectedItem());
      prefScol.setIndividuRelationship((IndividuUlr) app.userInfo("individu"));
      if (myView.getCbParcours().getSelectedItem() != null) {
        prefScol.setMaquetteRepartitionSemRelationship(
            (MaquetteRepartitionSem) myView.getCbParcours().getSelectedItem());
      }
    }
    if (!app.saveChanges()) {
      WindowHandler.showError(
          "Impossible d'ajouter le(s) diplôme(s) aux préférences : Contactez le service info SVP");
    } else {
      updatePreferences();
    }
  }
  private void init() {
    myView
        .getBtChercher()
        .addActionListener(
            new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                updateEodHabilitations();
              }
            });
    myView.getBtAjouter().setIcon(WidgetHandler.imageIcon("down"));
    myView
        .getBtAjouter()
        .addActionListener(
            new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                ajouterPreference();
              }
            });
    myView.getBtSupprimer().setIcon(WidgetHandler.imageIcon("up"));
    myView
        .getBtSupprimer()
        .addActionListener(
            new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                retirerPreference();
              }
            });

    NSArray<FormationAnnee> formationAnnee = app.getFormationAnnees();
    myView.getCbAnnee().removeAllItems();
    for (int i = 0; i < formationAnnee.count(); i++) {
      FormationAnnee fAnnee = formationAnnee.objectAtIndex(i);
      myView.getCbAnnee().addItem(fAnnee);
      if (fAnnee.fannCourante().equals("O")) {
        myView.getCbAnnee().setSelectedItem(fAnnee);
      }
    }

    myView.getCbParcours().removeAllItems();

    RechercheListener myRechercheListener = new RechercheListener();
    myView.getBtChercher().addActionListener(myRechercheListener);
    myView.getTfGrade().addActionListener(myRechercheListener);
    myView.getTfDiplome().addActionListener(myRechercheListener);
    myView.getCbAnnee().addActionListener(new ChangementAnneeListener());

    myView.getMyEOTableHabilitations().addListener(new ListenerTableHabilitations());

    EOSortOrdering sortDiplome =
        EOSortOrdering.sortOrderingWithKey(
            FormationHabilitation.FORMATION_SPECIALISATION_KEY
                + "."
                + FormationSpecialisation.SCOL_FORMATION_DIPLOME_KEY
                + "."
                + FormationDiplome.FDIP_ABREVIATION_KEY,
            EOSortOrdering.CompareCaseInsensitiveAscending);
    EOSortOrdering sortNiveau =
        EOSortOrdering.sortOrderingWithKey(
            FormationHabilitation.FHAB_NIVEAU_KEY, EOSortOrdering.CompareAscending);
    eodHabilitations.setSortOrderings(
        new NSArray<EOSortOrdering>(new EOSortOrdering[] {sortDiplome, sortNiveau}));

    EOSortOrdering sortDiplomePref =
        EOSortOrdering.sortOrderingWithKey(
            PrefScol.HABILITATION_KEY
                + "."
                + FormationHabilitation.FORMATION_SPECIALISATION_KEY
                + "."
                + FormationSpecialisation.SCOL_FORMATION_DIPLOME_KEY
                + "."
                + FormationDiplome.FDIP_ABREVIATION_KEY,
            EOSortOrdering.CompareAscending);
    EOSortOrdering sortNiveauPref =
        EOSortOrdering.sortOrderingWithKey(
            PrefScol.HABILITATION_KEY + "." + FormationHabilitation.FHAB_NIVEAU_KEY,
            EOSortOrdering.CompareAscending);
    eodHabilitationsChoisies.setSortOrderings(
        new NSArray<EOSortOrdering>(new EOSortOrdering[] {sortDiplomePref, sortNiveauPref}));

    updateEodHabilitations();
    updatePreferences();
  }
 public void close() {
   myView.setVisible(false);
 }
 public void open() {
   myView.setLocation(parent.getX() + 20, parent.getY() + 20);
   myView.setVisible(true);
 }
  private void updateEodHabilitations() {
    boolean edtCreateur = ((Boolean) app.userInfo("edtCreateur")).booleanValue();
    NSArray<Object> droits = (NSArray<Object>) app.userInfo("droits");
    if (!edtCreateur && (droits == null || droits.count() == 0)) {
      eodHabilitations.setObjectArray(null);
      myView.getMyEOTableHabilitations().updateData();
      return;
    }

    String grade = myView.getTfGrade().getText();
    String diplome = myView.getTfDiplome().getText();

    NSMutableArray<EOQualifier> sumQualifiers = new NSMutableArray<EOQualifier>();

    if (!diplome.equals("")) {
      sumQualifiers.addObject(
          EOQualifier.qualifierWithQualifierFormat(
              FormationHabilitation.FORMATION_SPECIALISATION_KEY
                  + "."
                  + FormationSpecialisation.SCOL_FORMATION_DIPLOME_KEY
                  + "."
                  + FormationDiplome.FDIP_ABREVIATION_KEY
                  + " caseInsensitiveLike '*"
                  + diplome
                  + "*'"
                  + " or "
                  + FormationHabilitation.FORMATION_SPECIALISATION_KEY
                  + "."
                  + FormationSpecialisation.SCOL_FORMATION_DIPLOME_KEY
                  + "."
                  + FormationDiplome.FDIP_ABREVIATION_KEY
                  + " caseInsensitiveLike '*"
                  + diplome
                  + "*'",
              null));
    }

    if (!grade.equals("")) {
      sumQualifiers.addObject(
          EOQualifier.qualifierWithQualifierFormat(
              FormationHabilitation.FORMATION_SPECIALISATION_KEY
                  + "."
                  + FormationSpecialisation.SCOL_FORMATION_DIPLOME_KEY
                  + "."
                  + FormationDiplome.FGRA_CODE_KEY
                  + " caseInsensitiveLike '*"
                  + grade
                  + "*'",
              null));
    }

    sumQualifiers.addObject(
        EOQualifier.qualifierWithQualifierFormat(
            FormationHabilitation.FANN_KEY_KEY + " = %@",
            new NSArray<Object>(
                ((FormationAnnee) myView.getCbAnnee().getSelectedItem()).fannKey())));

    // si edtCreateur : peut voir tous les diplomes
    if (!edtCreateur) {
      sumQualifiers.addObject(
          new EOKeyValueQualifier(
              FormationHabilitation.DROIT_DIPLOMES_KEY + "." + ScolDroitDiplome.DLOG_KEY_KEY,
              EOKeyValueQualifier.QualifierOperatorEqual,
              droits.objectAtIndex(0)));
      sumQualifiers.addObject(
          new EOKeyValueQualifier(
              FormationHabilitation.DROIT_DIPLOMES_KEY + "." + ScolDroitDiplome.DDIP_EDT_KEY,
              EOKeyValueQualifier.QualifierOperatorEqual,
              "A"));
    }

    EOQualifier totalQualifier = new EOAndQualifier(sumQualifiers);

    EOFetchSpecification myFetch =
        new EOFetchSpecification(FormationHabilitation.ENTITY_NAME, totalQualifier, null);
    myFetch.setUsesDistinct(true);
    myFetch.setRefreshesRefetchedObjects(true);
    eodHabilitations.setObjectArray(ec.objectsWithFetchSpecification(myFetch));
    myView.getMyEOTableHabilitations().updateData();
  }