Librairie lafabrick : parce que je le vaut bien

Le développement du simulateur Climatus demande une bonne dose d’architecture pour ne pas ce noyer dans les classes. Et quoi de mieux qu’un petit framework pour structurer tout ça ?!

J’ai donc démarré le développement d’une librairie de composants, avec un ensemble de classes pour la gestion de mes vues, que j’utilise directement dans le simulateur. 3 composants principaux pour l’instant, dérivés de TitleWindow :

  • DraggableWindow et ResizableWindow : un TitleWindow draggable et resizable (on s’en serait douté !), inspiré de plusieurs travaux sur des composants Flex glané sur le web. La notion de Skin à une place importante, et, je l’espère, moins limitative que certain exemple que l’on peux trouver… et d’autres petites “features” que je vous laisse découvrir !
  • ExpandedWindow est le concentré des 2 autres, avec une gestion d’évenements “minimize” et “maximize”, à la manière de l’évenement “close” du TitleWindow.

Je vous propose de découvrir cette petite librairie, via le googleCode “lafabrick” (pour changer !)

UPDATE
Un petit exemple, avec les sources.

N’hésitez pas à me faire part de vos réactions, remarques et idées qui me permettront d’améliorer et d’étoffer cette librairie.


Tags: , , ,

6 Responses to “Librairie lafabrick : parce que je le vaut bien”

  1. Tek /
    -->

    Tu n’aurais pas un petit exemple pré-compilé de ce que ça donne une fois monté pour ceux qui n’ont pas trop le temps de s’y plonger ?

  2. ekameleon /
    -->

    Tout pareil que Tek :)

    Bonne initiative en tout cas :)

    EKA+ :)

  3. fab /
    -->

    ok ! j’essaye de vous faire ca pour ce soir !

  4. fab /
    -->

    Voila pour l’exemple, en update dans le post ! :)

  5. forsaken /
    -->

    Bonjour j’aimerais utiliser la fonction de réduction du TitleWindow mais j’ai du mal à le faire
    minimize="{Alert.show('maximize event');}"
    maximize="{Alert.show('maximize event');}"

    par quoi doit on remplacer cela pour que l’on puisse réduire la fenêtre à la taille du titre merci d’avance

  6. fab /
    -->

    il suffit d’écrire les petites fonctions minimize et maximize qui vont bien, ou plus simplement utiliser Resize :

    - - - - - - - - - - - - - - - - - - - -

    Exemple 1 avec Resize :

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml&q...
    layout="absolute"
    xmlns:lafabrick="com.lafabrick.components.*">

    <mx:Resize target="{expWin}" id="minimizeEffect" heightTo="30" />
    <mx:Resize target="{expWin}" id="maximizeEffect" heightTo="300" />

    <lafabrick:ExpandedWindow
    id="expWin"
    x="376"
    y="159"
    width="300"
    height="300"
    minimizeEnabled="true"
    minimize="{minimizeEffect.play();}"
    maximize="{maximizeEffect.play();}">
    </lafabrick:ExpandedWindow>

    </mx:Application>

    - - - - - - - - - - - - - - - - - - - -

    Exemple 2 avec des fonctions :

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml&q...
    layout="absolute"
    xmlns:lafabrick="com.lafabrick.components.*">

    <mx:Script>
    <![CDATA[

    public function minimizeFunc() : void {
    maximizeEffect.stop();
    minimizeEffect.play();
    }

    public function maximizeFunc() : void {
    minimizeEffect.stop();
    maximizeEffect.play();
    }

    ]]>
    </mx:Script>

    <mx:Resize target="{expWin}" id="minimizeEffect" heightTo="30" />
    <mx:Resize target="{expWin}" id="maximizeEffect" heightTo="300" />

    <lafabrick:ExpandedWindow
    id="expWin"
    x="376"
    y="159"
    width="300"
    height="300"
    minimizeEnabled="true"
    minimize="{minimizeFunc();}"
    maximize="{maximizeFunc();}">
    </lafabrick:ExpandedWindow>

    </mx:Application>

    Le fait d’utiliser des fonctions permet d’enrichir le comportement de mouvement (utilisation du stop() des effets), et avoir une animation plus fluide au cas ou ‘utilisateur s’acharne sur les boutons minimize/maximize :)


Soit pas timide...

Powered by WP Hashcash