Previous: Les DialogView Up: Smalltalk 4.1, un tutorial Next: Concepts avancés
Les contrôleurs servent à gérer les interactions avec l'utilisateur via la souris et le clavier. Ces interactions redirigent des modifications vers le modèle associé au contrôleur. Le modèle signale ensuite à ses dépendants qu'il a changé grâce au message changed. Les vues se remettent alors à jour.
Pour la plupart des vues précédemment présentées Smalltalk associe un DefaultControllerClass qui permet d'interagir avec ces vues d'une manière prédéfinie.
___________________________________________
Exercice 41 Inspectez la hiérarchie des contrôleurs
___________________________________________
Pour spécialiser un contrôleur, les méthodes importantes qui sont liées au contrôle sont:
Pour accéder à la souris et à son état, le contrôleur dispose des messages sensor qui retourne un objet de la classe InputSensor. Cet objet peut lui même répondre aux messages suivant :
___________________________________________
Exercice 42 Construisez une application permettant de dessiner à l'aide de la souris des dessins constitués de points reliés par des segments de droites. Le modèle est un ensemble ordonné de points (LineDrawer). La vue est à définir (LineDrawerView) ainsi que le contrôleur (LineDrawerController). Pour indiquer que l'on peut ajouter un point au dessin, le curseur aura la forme d'une croix.
___________________________________________
Exercice 43 Construisez une application permettant de tracer la courbe correspondant à une fonction. L'interface possèdera une liste de fonctions. Chaque fonction sera représentée par un Block à un argument ([:x | x cos], par exemple). Chaque fois qu'une fonction sera sélectionnée, une vue devra tracer la courbe de cette fonction.
___________________________________________ Dans l'application précédente, la courbe n'est pas toujours visible dans de bonnes conditions. Pour pouvoir zoomer, placez sur les bords de la vue de la courbe deux potentiomètres permettant de spécififier un coefficient de dilatation horizontal et vertical. Ces coefficients devront être associés à chaque fonction pour permettre un tracer correct à chaque sélection.
___________________________________________