1: package ste.pendu.wordeditor;

  3: import java.awt.event.ActionListener;
  4: import java.awt.event.ActionEvent;

  6: /**
  7:  * Interface pour les contrôleurs.
  8:  * 
  9:  * <p>Tous les contrôleurs de l'éditeur des mots doivent implémenter
 10:  * cette interface pour interagir sans problème avec les autres
 11:  * composants du bean.</p>
 12:  * 
 13:  * <p>Comme il s'agit d'une interface, aucune information ne vous est
 14:  * donnée sur le constructeur. En fait, en observant l'interface, vous
 15:  * pouvez deviner quels vont être vos besoins au niveau du
 16:  * constructeur.</p>
 17:  * 
 18:  * <p>Toutes les classes <b>Action</b> (c'est-à-dire les classes qui
 19:  * vont étendre celle-ci), devront connaître le modèle et la vue pour
 20:  * pouvoir manipuler l'un et obtenir ou manipuler l'autre. Vous pouvez
 21:  * donc faire quatre constructeurs (dans la pratique, les deux premiers
 22:  * seront suffisants:</p>
 23:  * 
 24:  * <ul><li>MonControl()</li>
 25:  * <li>MonControl(WordListModel model, View view)</li>
 26:  * <li>MonControl(WordListModel model)</li>
 27:  * <li>MonControl(View view)</li>
 28:  * </ul>
 29:  * 
 30:  * <p>De toutes manières, il y a les méthodes <i>set</i> et <i>get</i>
 31:  * qui vont vous permettre de remettre les valeurs à jour.</p>
 32:  */
 33: public interface Control extends ActionListener
 34: {

 36:   /**
 37:    * Mise à jour du WordListModel.
 38:    * 
 39:    * @param wordListModel le modèle dont va se servir le controleur pour
 40:    * exécuter les demandes de l'utilisateur
 41:    */
 42:   public void setWordListModel(WordListModel wordListModel);

 44:   /**
 45:    * Retourne le WordListModel.
 46:    * 
 47:    * @return le WordListModel actuel
 48:    */
 49:   public WordListModel getWordListModel();

 51:   /**
 52:    * Mise à jour de la vue.
 53:    * 
 54:    * @param view la vue qui sera utilisée pour récupérer les sélections
 55:    * de l'utilisateur, le texte qu'il aurait pu encoder, et effacer le
 56:    * texte (par exemple)
 57:    */
 58:   public void setView(View view);

 60:   /**
 61:    * Retourne la vue.
 62:    * 
 63:    * @return la vue actuelle
 64:    */
 65:   public View getView();

 67:   /**
 68:    * Action à effectuer.
 69:    * 
 70:    * <p>Lorsqu'un bouton a été pressé ou la touche <code>ENTER</code> a
 71:    * été pressée dans un JTextField, et que l'action est à l'écoute,
 72:    * cette méthode est exécutée. On peut récupérer le paramètre pour
 73:    * savoir quel composant a propagé l'événement et les informations
 74:    * qu'il y a enfermées.</p>
 75:    * 
 76:    * @param action l'action transmise par l'événement
 77:    */
 78:   public void actionPerformed(ActionEvent action);

 80: }