~ / TIS3 / AL / tps / 1-statemachine /
© 2007—2015 - Renaud Blanch
Le but de ce TP est d'apprendre à programmer une interaction en utilisant des machines à états avec la boîte à outils Swing de Java. Vous allez réaliser l'interaction pour un visualisateur du graphe d'une fonction.
Récupérez les sources du squelette de l'application.
Celles-ci fournissent dans le répertoire graphser/src/
2 packages : grapher.fc
et grapher.ui
(respectivement le noyau fonctionnel et l'interface graphique de notre programme).
Explorez le code pour comprendre ce qu'il fait.
Créez un nouveau projet nommé Grapher
à partir de ces sources (New Java Project with Existing Sources) en ajoutant le répertoire téléchargé grapher/src
à ce projet.
Exécutez la classe principale grapher.ui.Main
de ce projet pour vérifier que le code fonctionne bien.
Il s'agit de créer une classe Interaction
dans le paquet grapher.ui
qui permettra l'interaction à la souris avec le graphique (voir les interfaces des Listeners
proposées par MouseListener
et MouseMotionListener
réunies en MouseInputListener
; et MouseWheelListener
).
Faites en sorte que le drag, bouton gauche enfoncé, permette de déplacer le repère (en appelant la méthode translate(int dx, int dY)
de la classe Grapher
).
Changez le curseur (en appelant la méthode setCursor
héritée par la classe Grapher
) pour qu'il se transforme en une petite main à la place du curseur par défaut pendant le déplacement (voir la classe Cursor
).
Ajoutez le support au clic gauche qui doit permettre de zoomer de 5%, centré sur le curseur (en appelant la méthode de la classe Grapher
zoom(Point center, int dz)
avec 5 pour valeur de dz
).
Faites de même pour le clic droit qui doit permettre de dézoomer de 5%, centré sur le curseur (en appelant la méthode zoom(Point center, int dz)
avec -5 pour valeur de dz
).
Ajoutez enfin le support de la molette qui doit permettre de zoomer ou dézoomer, centré sur le curseur.
Ajoutez le support au drag, bouton droit enfoncé, qui doit permettre de sélectionner une zone rectangulaire, marquée par un rectangle pointillé, pour zoomer sur cette sélection lorsque le bouton est relâché.
mise à jour : 9 mars 2015