/**
  * Valider une suppression
  *
  * @param row row indice de la ligne à supprimer
  * @return suppression validée ?
  */
 public boolean validateDelete(int row) {
   // Valider la suppression
   this.erreurs = new ArrayList<String>();
   for (ITrackableListValidator<T> validator : this.validators) {
     String erreur = validator.validateDelete(row, this);
     if (erreur != null) {
       this.erreurs.add(erreur);
     }
   }
   return this.erreurs.size() == 0;
 }
 /**
  * Valider un ajout
  *
  * @param t élément à ajouter
  * @return ajout validé ?
  */
 public boolean validateAdd(T t) {
   // Valider l'ajout
   this.erreurs = new ArrayList<String>();
   for (ITrackableListValidator<T> validator : this.validators) {
     String erreur = validator.validateAdd(t, this);
     if (erreur != null) {
       this.erreurs.add(erreur);
     }
   }
   return this.erreurs.size() == 0;
 }
 /**
  * Valider un déplacement
  *
  * @param row indice de l'élément à déplacer
  * @param movement mouvement à valider
  * @return mouvement validé ?
  */
 public boolean validateMove(int row, int movement) {
   // Valider le déplacement
   this.erreurs = new ArrayList<String>();
   for (ITrackableListValidator<T> validator : this.validators) {
     String erreurA = validator.validateMove(row, movement, this);
     if (erreurA != null) {
       this.erreurs.add(erreurA);
     }
     String erreurB = validator.validateMove(row + movement, movement > 0 ? -1 : +1, this);
     if (erreurB != null) {
       this.erreurs.add(erreurB);
     }
   }
   return this.erreurs.size() == 0;
 }