Bonjour,
Nous sommes actuellement en train de mettre en place une application de reporting en RCP (client lourd) et RAP (Web) pour le projet XDocReport http://code.google.com/p/xdocreport/wiki/EclipseRAPRCP
Je suis en train d'étudier les solutions pour gérer un formulaire de CRUD (Create, Read, Update, Delete), autrement dit comment mettre en place un editor RCP qui puisse saisir des données d'une instance domain (Modèle, Pojo, etc..) mappée sur une Table d'une BD.
J'aimerais faire ça proprement, et la première chose que je pensais faire est d'utiliser JFace Databinding pour binder les widgets de l'IHM et le domain à mettre à jour. Mais la question que je me pose est sur la mise à jour du dirty de l'editor, de la gestion du undo (Ctrl+Z).
En effet dès que l'on modifie une valeur d'un champs du formulaire, il faut mettre à jour l'état dirty de l'editor. Soit c'est :
- l'UI qui fait ça, autrement dit il faut ajouter un listener sur chaque widget qui met à jour l'état dirty de l'editor.
- le modèle qui fait ça, autrement dit le modèle doit gérer des listeners en interne (soit codé à la main avec PropertyChangeSupport, soit utilisé EMF qui génère toute cette tuyauterie de listeners) .
- utiliser JFace Databinding pour détecter dans le DatabindingContext les changements de valeurs.
Je pense plutôt à mettre en place la 3ème solution mais ce qui impose le fait de cloner l'instance domain avant car cette solution ne permet pas de "reseter" les valeurs domain avec les valeurs initial. EMF, même si j'adore, me fait un peu peur de par son coté lourd en terme d'apprentissage (j'ai peur que ça refroidisse les gens qui souhaiterait contribuer à l'application).
Il existe aussi le projet Riena mais je ne sais pas si il gère ce genre de problématiques?
J'aurais aimé connaitre les solutions que vous avez mis en place dans vos projets pour gérer les formulaire de CRUD avec lock, gestion du dirty, getion de l'undo, etc....
Merci de vos réponses.
Angelo
Partager