Bonjour,
Je développe une petite interface en Java avec la bibliothèque JavaFX 8 donc l'objectif, en gros, est de fournir un outil de dessin pour des formes géométriques (notamment polylines, splines, etc.). Je me dis que pour chaque type de spline ce serait l'idéal de définir un contrôle graphique custom qui me permettrait de piloter les différents paramètres (points de contrôles, tangentes, etc.).
Je débute complètement avec JavaFX et je ne suis pas très au courant des bonnes pratiques, surtout que la documentation est encore assez légère sur internet (si l'on compare à Swing), et en plus je tente de respecter au maximum le pattern MVC et les principes de base de design logiciel. Du coup, je me demandais qu'elle était la meilleure façon de construire ces contrôles ?
A noter que je dispose déjà d'une bibliothèque fermée contenant ces différentes splines (sous forme de classes qui contiennent les attributs des splines).
Tout d'abord ce que je pensais faire, c'était définir une classe étendant Control (appelons-là SplineControl) qui contiendrait une référence à un objet Spline de la bibliothèque de splines, ainsi qu'une liste de propriétés identiques aux propriétés de ma spline (notamment les points de contrôle), avec des ChangeListener sur ces propriétés pour que chaque changement d'une de ces propriétés soit répercuté sur les attributs de l'objet Spline. Pour la partie graphique, je pensais implémenter l'interface Skin (classe SplineSkin) et retourner l'objet graphique à dessiner dans la méthode getNode(), ce skin devrait aussi être ChangeListener des propriétés de SplineControl afin de modifier les objets graphiques en conséquence. Déjà, est-ce que c'est la bonne façon de faire ?
De plus je me demandais où devait-être implémentée l'interaction avec l'utilisateur : par exemple, dans SplineSkin je dessine les points de contrôles de ma spline et je veux que ceux-ci puissent être draggés par l'utilisateur, où vaut-il mieux que ce comportement soit décrit ? Et si deux points de contrôles sont superposés, y-a-t-il quelque chose à faire pour qu'un seul des deux soit draggé ?