/**
  * Renvoie l'élément enfant se trouvant après la place où se trouverait l'enfant de référence ref.
  * (permet d'insérer un futur élément de référence ref par rapport à l'élément suivant)
  */
 private Element trouverSuivant(final Element ref) {
   final int ind = refEnfantsPossibles.indexOf(ref);
   if (ind == refEnfantsPossibles.size() - 1) return (null);
   if (enfants == null) return (null);
   for (final Node nEnfant : enfants) {
     if (nEnfant instanceof Element) {
       final Element refEnfant = cfg.getElementRef((Element) nEnfant);
       final int ind2 = refEnfantsPossibles.indexOf(refEnfant);
       if (ind2 > ind) return ((Element) nEnfant);
     }
   }
   return (null);
 }
 /** Met à jour l'affichage quand on ajoute un élément (donné en paramètre) */
 private void majPanel(final Element refAjout) {
   lireEnfants();
   if (profondeur > profondeurMax) return;
   panelEnfants.removeAll();
   affEnfants = new ArrayList<AffichageFormulaire>();
   final GridBagConstraints c = new GridBagConstraints();
   int pos = 0;
   if (!attribut) {
     for (final Element refAttributPossible : refAttributsPossibles) {
       Node nEnfant = null;
       if (enfants != null) {
         for (Node enfanti : enfants) {
           if (enfanti instanceof Attr) {
             final String nomAtt = enfanti.getNodeName();
             final String espaceAtt = enfanti.getNamespaceURI();
             boolean match = nomAtt.equals(cfg.nomAttribut(refAttributPossible));
             final String espace2 = cfg.espaceAttribut(refAttributPossible);
             match =
                 match
                     && ((espaceAtt == null && espace2 == null)
                         || (espaceAtt != null && espaceAtt.equals(espace2)));
             if (match) nEnfant = enfanti;
           }
         }
       }
       final AffichageFormulaire affEnfant =
           new AffichageFormulaire(refAttributPossible, nEnfant, this, doc, true);
       affEnfants.add(affEnfant);
       placerAffichage(affEnfant, panelEnfants, c, pos++, false);
     }
     for (final Element refEnfantPossible : refEnfantsPossibles) {
       boolean unEnfant = false;
       if (enfants != null) {
         final int enfantsSize = enfants.size();
         for (int i = 0; i < enfantsSize; i++) {
           final Node nEnfant = enfants.get(i);
           if (nEnfant instanceof Element) {
             final Element refEnfant;
             refEnfant = cfg.getElementRef((Element) nEnfant);
             if (refEnfant == refEnfantPossible) {
               final AffichageFormulaire affEnfant =
                   new AffichageFormulaire(refEnfant, nEnfant, this, doc, false);
               affEnfants.add(affEnfant);
               final Element refip1;
               if (i + 1 < enfantsSize) {
                 final Node enfantip1 = enfants.get(i + 1);
                 if (enfantip1 instanceof Element) refip1 = cfg.getElementRef((Element) enfantip1);
                 else refip1 = null;
               } else refip1 = null;
               final boolean dernier = (refAjout == null && refip1 != refEnfant);
               placerAffichage(affEnfant, panelEnfants, c, pos++, dernier);
               unEnfant = true;
             }
           }
         }
       }
       if (!unEnfant || refEnfantPossible == refAjout) {
         final AffichageFormulaire affEnfant =
             new AffichageFormulaire(refEnfantPossible, null, this, doc, false);
         affEnfants.add(affEnfant);
         placerAffichage(affEnfant, panelEnfants, c, pos++, true);
       }
     }
   }
 }