Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

27août/101

Hero – Le premier build de Flex 4.5 dévoilé

J'en parlais il y a quelques semaines, la prochaine version du SDK Flex (Flex 4.5) sera nommée Hero. Celle-ci comportera notamment des composants pour plate-formes mobiles bien pratiques. Pour plus d'informations, lire ce billet:

Hero – Le prochain Flex SDK (4.5) avec composants pour mobiles

Et aujourd'hui, la Product Manager de Flex, Deepa Subramaniam a annoncé sur son blog, le premier build public de ce SDK:

Exciting Developments with Hero

Ce build (4.5.0.17077) peut être téléchargé sur le site Open Source @ Adobe:

Télécharger le dernier build de Hero Flex 4.5

Ce build est le premier, il est donc incomplet et sûrement buggé. Pas de composants mobiles dans cette version (pour l'instant!), voici les fonctionnalités implémentées:

Je suis allé jeter un coup d'oeil sur les documentations (encore incomplètes elles aussi) et les composants Image et DataGrid sont vraiment cool!

Notamment la possibilité de donner une SkinPart à une image pour l'affichage du preloading de l'image. Plus besoin de faire une nouvelle classe qui va hériter de Image pour cela. Notez aussi que ce composant Image intègre directement une mise en cache des éléments chargés. Ici aussi, on aura plus besoin de SuperImage et autres.

Le composant Spark DataGrid est lui, le remplaçant de la DataGrid mais aussi, à terme, de l'AdvancedDataGrid. Lisez les specifications, les modifications apportées ont du sens :) .

Pour l'instant, ils ont trouvé le set de couleurs le plus moche pour les couleurs de rollover / selection de base :P :

hero-1

Remplis sous: Non classé 1 commentaire
13août/100

Flex Tips – Scroll automatique sur un conteneur lorsque le Focus sort du Container

Voici un petit bout de code bien pratique que j'ai mis en place aujourd'hui. Celui-ci permet  d'effectuer un scroll vertical automatiquement quand l'objet qui a le focus sort de la zone visible.

Imaginez que vous ayez application Flex / Air de gestion. Celle-ci ouvre une pop-up avec un formulaire contenant de très nombreuses informations. L'utilisateur va remplir (ou pas) chaque champ puis passer au suivant avec la touche tabulation. Sauf que si votre formulaire est trop important, le conteneur aura une barre de défilement pour accéder aux autres champs.

De base, Flex permet de naviguer entre les champs grâce à la touche TAB, pas de problème de ce côté là. Mais si le champ qui prend le focus est en dehors de la zone visible (accessible grâce à la scrollbar), vous aurez le focus mais vous ne verrez pas ce que vous tapez car votre champ ne sera pas visible.

On va donc effectuer un scroll automatiquement pour toujours avoir en vue le champ dans lequel l'utilisateur tape. La solution se trouve sur ce billet:

AutoScrolling Flex Form

Le code qui vous trouverez est à insérer dans votre conteneur. Si vous avez plusieurs conteneurs dans lesquels vous voulez implémenter cette fonctionnalité, utiliser l'héritage ou un classe utilitaire pour ne pas dupliquer le code.

Un exemple pour la forme:

Flex Source Code Download: Télécharger le code source complet de l'application

This movie requires Flash Player 11

Remplis sous: Exemple Aucun commentaire
6juil/090

Flex Chart – Le composant AreaChart (exemples)

Le composant AreaChart représente de la donnée sous la forme d'une surface délimitée par une ligne reliant les valeurs de la donnée. La surface (area) sous la ligne est remplie par une couleur ou un motif. Vous pouvez utiliser un icône ou un symbole pour représenter chaque point de donnée le long de la ligne, mais vous pouvez aussi afficher une simple ligne sans icônes.

Voici comment produire un exemple simple d'AreaChart Flex:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html">
	<mx:Script><![CDATA[
		import mx.collections.ArrayCollection;
		[Bindable]
		public var expenses:ArrayCollection = new ArrayCollection([
			{Month:"Jan", Profit:2000, Expenses:1500, Amount:450},
			{Month:"Feb", Profit:1000, Expenses:200, Amount:600},
			{Month:"Mar", Profit:1500, Expenses:500, Amount:300}
		]);
	]]></mx:Script>

	<mx:Panel title="Area Chart">
		<mx:AreaChart id="myChart" dataProvider="{expenses}"
		showDataTips="true">
			<mx:horizontalAxis>
				<mx:CategoryAxis
				dataProvider="{expenses}"
				categoryField="Month"
				/>
			</mx:horizontalAxis>
			<mx:series>
				<mx:AreaSeries
				yField="Profit"
				displayName="Profit"
				/>
				<mx:AreaSeries
				yField="Expenses"
				displayName="Expenses"
				/>
			</mx:series>
		</mx:AreaChart>
		<mx:Legend dataProvider="{myChart}"/>
	</mx:Panel>
</mx:Application>

Flex Source Code Download: Télécharger le code source complet de l'application

This movie requires Flash Player 11

Un composant AreaChart est principalement un LineChart avec une surface remplie juste en dessous, c'est pourquoi les composants AreaChart et LineChart partagent de nombreuses caractéristiques communes.

26mar/092

Flex Tips – Valider automatiquement un Formulaire Flex (mx:Form) avec la touche Entrée

Voici le premier tutorial/article sur les Flex Tips, ces petits trucs que vous ne connaissez pas forcement et qui peuvent grandement vous faciliter la vie. Le framework Flex est très riche en fonctionnalités (on ne va pas s'en plaindre) et il est difficile de tout connaître. Ces Flex Tips sont des petits trucs que j'ai découvert au fur et à mesure de mon apprentissage de Flex, et je suis sûr qu'ils vous sauveront souvent pas mal de temps et de lignes de code.

Le premier porte sur la validation des formulaires Flex. La plupart du temps, quand vous avez un formulaire Flex,  vous avez un certain nombre de champs, des combobox etc. Et la plupart du temps, quelques boutons (Valider, Annuler, Reset, ...). Quand un utilisateur complète un formulaire HTML (login par exemple), il a l'habitude de valider en faisant Entrée car le HTML permet de faire cette validation de <form> de manière automatique. Avec Flex en revanche, pas de comportement par défaut. Si vous voulez répondre aux évènements clavier, vous devrez le coder vous-même. Cela permet bien sûr plus de fonctionnalités et de personnalisation car vous pouvez valider votre formulaire de manière quelconque.

Si vous voulez valider un formulaire avec la touche Entrée (pratique  pour un login par exemple), il va vous falloir ajouter un event listener global, traiter chaque évènement clavier et si la touche Entrée est détectée, exécuter la même action que l'appui sur le bouton. Cela est un peu laborieux, d'autant plus que si vous changez la fonction handler de l'évènement "click" du bouton, il faut aller modifier votre code dans le keyUpListener.

Heureusement, le composant <mx:Form> de Flex contient une propriété "defaultButton" qui va vous sauver de toutes ces lignes de code. La propriété "defaultButton" prend un id de composant (Button) en valeur. Une fois cette propriété fixée, vous n'avez plus rien à faire, la validation du formulaire se fera automatiquement sur pression de la touche Entrée. Vous remarquerez aussi que dès que le formulaire a le focus, le bouton par défaut est mis en valeur (emphasized).

Voici un exemple pour vous montrer sa facilité d'utilisation:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
		]]>
	</mx:Script>
	<mx:Form defaultButton="{validButton}">
		<mx:FormHeading label="Identification (Appuyer sur Entrée pour valider)"/>
		<mx:FormItem label="Login">
			<mx:TextInput text="monlogin"/>
		</mx:FormItem>
		<mx:FormItem label="Password">
			<mx:TextInput text="monmdp"/>
		</mx:FormItem>
		<mx:FormItem direction="horizontal">
			<mx:Button id="validButton" label="Valider" click="Alert.show('Formulaire identification validé !')"/>
			<mx:Button id="cancelButton" label="Annuler"/>
		</mx:FormItem>
	</mx:Form>
</mx:Application>

Flex Source Code Download: Télécharger le code source complet de l'application

This movie requires Flash Player 11

27déc/080

Composant Flex – TextInput avec message quand le champ est vide (prompt)

Lorsque vous construisez un formulaire en Flex, vous avez de manière basique, une liste de champs avec  des textes expliquant comment remplir ces champs. Vous pouvez le faire en définissant des <mx:FormHeading> ou bien en remplissant la propriété label des <mx:FormItem>.

Voir un exemple de <mx:Form> avec FormHeading et FormItem

Mais parfois, vous aurez besoin d'indiquer plus d'informations sur un champ en particulier. Vous pourriez pour cela mettre une valeur par défaut mais quand vous allez récupérer la valeur du champ au moment du post du formulaire, vous allez récupérer la valeur par défaut, ce qui n'est pas le comportement souhaité.

Heureusement, la FlexLib contient un composant appelé PromptingTextInput, qui  a exactement le comportement souhaité, il est vraiment parfait pour la construction d'un formulaire en Flex. Il affiche dans votre TextInput, un message légèrement grisé en italique et quand vous cliquez sur le champ (ou que ce champ prend le focus), ce message disparait pour laisser l'utilisateur taper.