package fr.iutfbleau.papillon;

import javax.swing.text.*;

/**
 * La classe <code>LimiteContenu</code> permet de limiter le nombre
 * de caractères pouvant être saisis dans un champ de texte Swing.
 * <p>
 * Elle hérite de <code>PlainDocument</code> et empêche toute insertion
 * dépassant la limite définie.
 * </p>
 *
 * @version 1.0
 * @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
 */
public class LimiteContenu extends PlainDocument {

    /** Limite de caractères autorisés. */
    private int limite;

    /**
     * Constructeur qui définit la limite de caractères.
     *
     * @param limite le nombre maximum de caractères autorisés
     */
    public LimiteContenu(int limite) {
        this.limite = limite;
    }

    /**
     * Insère une chaîne dans le document si elle ne dépasse pas la limite autorisée.
     *
     * @param offset la position d’insertion
     * @param str la chaîne à insérer
     * @param attr les attributs du texte
     * @throws BadLocationException si la position est invalide
     */
    @Override
    public void insertString(int offset, String str, AttributeSet attr)
            throws BadLocationException {
        if (str == null){ 
            return;
        }
        if ((getLength() + str.length()) <= limite) {
            super.insertString(offset, str, attr);
        }
    }
}
