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();
  }
  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();
  }