Liguoblog

mercredi 17 juin 2009

[Frame]

J'ai beaucoup joué avec le DragManager de Flex dans les dernier mois. J'ai eu besoin à un certain point de fournir une implémentation custom du DragManager afin de régler quelques bugs assez gênant.

Tout les singletons de Flex implémentent une certaine interface (DragManager -> IDragManager -> DragManagerImpl) sont enregistrés globalement dans la classe non-documenté mx.core.Singleton.

Le problème avec la fameuse classe Singleton, c'est qu'elle ne permet pas de redéfinir une classe.

public static function registerClass(interfaceName:String, clazz:Class):void
{.
var c:Class = classMap[interfaceName];.
if (!c).
classMap[interfaceName] = clazz;.
}.
Donc le seul moyen de spécifier ma propre classe, c'est de redéfinir le SystemManager. La majorité des managers sont défini dans la méthode SystemManager.docFrameHandler() (à la ligne 2261 pour être exact).

Heureusement, la méthode utilise le namespace mx_internal donc il est tout à fait possible de polymorpher la méthode. (à vos risques et périls, cependant)

Mais...

Hmmm.

Où est défini l'implémentation du SystemManager? Qu'est-ce que le SystemManager?

Il y a le metadata [Frame] défini dans la classe Application. Ce metatag permet d'indiquer au compilateur la classe qui sera instancié sur un frame du swf.

Dans le cadre de mx.core.Application :

[Frame(factoryClass="mx.managers.SystemManager")]


C'est en modifiant ce metadata que j'ai pu avoir ma propre implémentation du SystemManager ainsi que du DragManager. Et au final, après avoir implémenté mon DragManager custom, j'ai trouvé une solution à mon problème d'origine sans avoir à modifier le DragManager de Flex. Il suffisait d'envoyer une implémentation spécial de MouseEvent, mais ça, c'est le but d'un autre billet! :D

mercredi 28 février 2007

FlexLib

Voici un projet prometteur.  Il s'agit d'un ensemble de composants Flex 2 open source.

FlexLib

mercredi 24 janvier 2007

Flex on Labs

Adobe vient de rajouter deux projets sur labs.

Flex Ant Tasks
Ensemble de trois tâches ant qui permettent de compiler et déployer les applicationw Flex. (mxmlc, compc et html-wrapper)

Flex Compiler Shell
Un outil en ligne de commande qui permet de réutiliser la même JVM pour le compilateur.  Ce n'est pas très utile pour ceux qui utilisent Flex Builder mais ceux qui compilent en ligne de commande auront un gain de performance significatif.

lundi 8 janvier 2007

Flex 2.0.1

Vous avez surement appris dernièrement qu'une mise à jour est disponible pour Flex 2.

Comme à chaque mise à jour, j'ai eu des problèmes de compilation :P

Cette fois, il s'agit de la propriété UIComponent.layoutManager qui n'existe plus...  Elle a été changé pour :

UIComponentGlobals.mx_internal::layoutManager

Voilà, si jamais c'est utile à quelqu'un :)

samedi 30 septembre 2006

Flex 2 DataGrid double-click edit

Voici un extension du DataGrid de Flex 2 permettant d'éditer une cellule en utilisant un double clic au lieu d'un simple clic.

Lire la suite

samedi 9 septembre 2006

Flex 2 MenuBar hack

De tous les composants de Flex 2, je crois que c'est mx.controls.MenuBar et mx.controls.Menu qui m'ont donnés le plus de trouble.  J'irais même jusqu'à dire qu'ils font pitié, ils ne méritent pas d'être inclus dans le Flex 2 SDK :P

Pourquoi ?

Pour plein de raisons.

Lire la suite

lundi 8 mai 2006

Flex 2 Beta 3

La beta 3 de Flex 2 est maintenant disponible.  Rendez-vous sur Adobe Labs pour le téléchargement.

lundi 20 mars 2006

Flex 2 Beta 2

Adobe vient de rendre disponible Flex 2 Beta 2 sur Adobe Labs.  À vos marques, prêt, testez!

mercredi 1 février 2006

Flex 2 - View source

Une nouveauté intéressante s'est introduite dans la version beta de Flex 2.  Il est maintenant équipé d'un "view source" !

Voici un petit exemple pour le démontrer. L'important n'est pas le contenu du SWF, mais le "view source" lorsque l'on fait un clic-droit.  Le Flash Player 8.5 beta est requis pour visionner ce swf.

Exemple de view source

Pour ceux qui ne sont pas capable de visionner le swf. Lorsque l'on clique sur View Source, une nouvelle page s'ouvrira avec un SWF contenant l'arborescense des sources et un frame HTML contenant la source sélectionné. Il y a également un bouton pour télécharger l'ensemble des sources dans un fichier ZIP.

Pour activer cette fonctionnalité, il suffit de cliquer sur le bouton Publish Application Source dans Flex Builder et le reste se fait seul. Magique n'est-ce pas ? :D

En fait, le principe est assez simple, on aurait pu déjà le faire avant mais il aurait fallut beaucoup plus d'effort pour obtenir le même résultat.