Memento pour AsWing components
Par Romain Ecarnot, lundi 11 septembre 2006 à 15:12 :: AsWing :: #47 :: rss
Une nouvelle extension pour AsWing vient de voir le jour sur le Fever SVN
Il est maintenant possible de jouer avec l'état des composants ( enregistrer, restaurer ainsi que les fameux undo et redo )
Bienvenue au package org.aswing.fever.memento, une implémentation de Design Pattern Memento.
Il est souvent appréciable dans le développement de nos applications de pouvoir stocker l'état de nos UI's, de nos données etc etc.
Bien que l'implémentation d'un tel système ne soit pas d'une compléxité à en devenir fou, j'en ai souvent eu besoin dans le développement de mes applis.
Il était temps pour moi de créer un modèle qui pourrait me resservir tout le temps. 
Cela fait maintenant longtemps que Fever est prêt pour sa sortie...mais faute de temps pour finaliser, documenter etc etc...je n'avais jamais oser publier la 1er release.
C'est chose faite. Oh biensur il n'y a rien de révolutionnaire la dedans, mais j'avais besoin de cette sortie pour continuer le développement et la publication d'autres AsWing Extensions
J'en profite au passage pour remercier, encore une fois, Francis Bourre ( The Pixlib Author ). Fever est essentiellement basé sur Pixlib en s'appuyant sur son Event API par exemple...
Mais revenons à nos moutons...l'implémentation de base du modèle memento se trouve donc dans Fever; mais je vais m'intéresser ici aux spécificités du package org.aswing.fever.memento se trouvant lui du coté du Fever AsWing Framework
Je ne vais pas m'étaler sur le principe du modèle memento, un petit tour sur DoFactory permettra de vous faire une idée plus précise 
- enregister un composant comme étant sous contrôle d'un memento
- sauvegarder l'état d'un component
- restaurer un état sur un composant
- Utliser les méthodes undo et redo sur un composant
var frame : JFrame = new JFrame( "myTitle", ASWingUtils.getRootMovieClip(), true ); FvAsWingState.init( frame );
Ensuite tout es une question de volonté 
En effet, pour sauvegader un état, on doit définir quelles sont les propriétés que l'ont veut sauvegarder pour cet état, et comment faire pour les sauvegarder.
Pour revenir sur le pattern memento, ça revient à définir un memento et un originator.
Par défault, le FvAsWingState utilise le memento FvComponentMemento et l'originator FvComponentOriginator ce qui permet de gérer par défault :
- la position
- la taille
- La couleur d'avant plan
- la couleur d'avant plan
- la police utlisée dans le composant
- la transparence du composant
Pour enregister plus de chose dans nos états ou bien définir un gestionnaire spécifique pour des composants précis ( le JSlider par exemple ), on devra :
- Implémenter un nouveau memento
- Implémenter un nouvel originator
Fever defini en natif 3 gestionnaire spécifique, prenez exemple pour définir les votres :
- FvTextFieldMemento / FvTextFieldOriginator
- FvSliderMemento / FvSliderOriginator
- FvAdjusterMemento / FvAdjusterOriginator
Ensuite il suffit d'appeler les méthodes :
- saveState
- getState
- undo
- redo
Par exemple :
var frame : JFrame = new JFrame( "myTitle", ASWingUtils.getRootMovieClip(), true ); FvAsWingState.init( frame ); frame.setLocation( 400, 200 ); FvAsWingState.undo( frame ); var slider : JSlider = new JSlider(); slider.setMinimumValue( 10 ); slider.setMaximumValue( 100 ); slider.setValue( 50 ); FvAsWingState.init( slider, new FvSliderOriginator() ); slider.setValue( 75 ); FvAsWingState.undo( slider );Et le tour est joué.
Une démo est disponible sur le site AsWing.org
Pour le téléchargement, ça se passe du coté du SVN : http://as2fever.googlecode.com/svn/trunk/
Bonne journéeà tous );

Commentaires
1. Le mercredi 13 septembre 2006 à 13:01, par autochtonia
2. Le mercredi 13 septembre 2006 à 13:11, par Romain
Ajouter un commentaire