Exercice 1 : cet exercice donne une idée de l’implémentation d’une commande « annuler » dans un traitement de texte. Pour rester simple, nous n’écrirons qu’un processeur ligne (pas très utile), capables de travailler sur une seule ligne texte. Les commandes sont :
(Caractère quelconque) afficher le caractère à l’endroit ou est positionné le curseur.
[CTR-L] déplacer le curseur vers la gauche.
[CTR-R] déplacer le curseur vers la droite.
[CTR-B] positionner le curseur au début de la ligne.
[CTR-E] positionner le curseur à la fin de la ligne.
[DEL] supprimer le caractère sous le curseur.
[BKSP] supprimer le caractère placé avant le curseur.
[CTR-U] annuler la dernière commande.
[CTR-D] répéter la dernière commande.
[CTR-Q] Quitter.
Il faut accepter un nombre quelconque d’ « annuler » jusqu’an retour à l’état initial (une ligne blanche).
Concevez une classe de base command. Dérivez-en les commandes permettant de déplacer le curseur, d’insérer un caractère. De supprimer un caractère. Gardez un tableau de paires de command*. Chaque fois qu’une nouvelle commande est entrée (sauf « annuler » / « Répéter »), entrez la commande et son inverse, dans ce tableau. « Annuler » revient en arrière dans le tableau, en exécutant l’inverse,
Tandis que « Répéter » avance dans le tableau et réexécute les commandes entrées précédemment.
Cherchez comment faire pour obtenir des entrées non « Bufférisées » sur votre système, comment déplacer le curseur et insérer/supprimer des caractères dans une ligne. Encapsulez ces détails propres à votre système.
Exercice 2: Ajoutez des commandes au programme de l’exercice précédent :
[CTR-I] passer du mode « Insertion » au mode « Remplacement ».
[CTR-A] supprimer tous les caractères situés à la droite du curseur.
Partager