Introduction à SwingStates
Dessin sur un canvas

L'objectif de cet exercice est d'utiliser le widget canvas de la librairie SwingStates pour créer un petit éditeur graphique :

Pour en savoir plus sur SwingStates, consulter les documents accessibles depuis la page consacrées aux ressources utiles.

Récupérer les fichiers GraphicalEditor.java, RectangleTool.java, SelectionTool.java et ShapeCreatedEvent.java. Ces quatre fichiers fournissent le code d'un programme qui permet de tracer des rectangles à la souris puis de les déplacer, toujours à la souris, en maintenant la touche Shift enfoncée.
Créer trois nouvelles machines à états similaires à RectangleTool.java afin de tracer des ellipses, des segments de droite et des traits à main levée (utiliser les classes CEllipse, CSegment et CPolyLine du Canvas SwingStates).
Ajouter sur le canvas une palette permettant de choisir l'outil courant. Faire en sorte que la palette puisse être déplacée et qu'elle soit toujours au-dessus des objets dessinés. Ce fichier contient les images PNG des icônes d'outils visibles sur la figure ci-dessus.
Modifier l'outil SelectionTool pour permettre la sélection multiple. Ajouter des marques de sélection autour des objets sélectionnés (voir figure) et faire en sorte que ces objets puissent être déplacés, dupliqués ou supprimés ensemble.