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.