Cet exercice illustre les possibilités et limites du
widget Canvas de SwingStates concernant la gestion
des tags. L'objectif est d'implémenter des guides
d'alignement magnétiques : des lignes horizontales ou verticales sur
lesquelles on va pouvoir "accrocher" des objets pour les aligner.
MagneticGuides.java. Ce
programme crée une fenêtre, un canvas occupant tout
l'espace disponible et une CStateMachine attachée à ce
canvas. Il crée une également une série de rectangles que l'on peut
déplacer à la souris sur le canvas.MagneticGuide dérivée
de CExtensionalTag et incluant un
champ CSegment. Compléter ensuite le code de
la CStateMachine pour pouvoir créer d'un clic une ligne
horizontale infinie (ou presque...) sur le canvas avec avec un tag de
la classe MagneticGuide.CStateMachine pour pouvoir
déplacer les guides créés.CStateMachine pour qu'une
forme déplacée au-dessus d'un guide se colle à lui et prenne le tag
correspondant. Faire en sorte qu'on puisse également détacher la forme
du guide en s'en éloignant.