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

26juil/090

AFCS – Tutorial Introduction à AFCS avec Flex (3 – Les composants de base Pods)

Suite du tutorial AFCS – Tutorial Introduction à AFCS avec Flex (1) et AFCS – Tutorial Introduction à AFCS avec Flex (2 – Préparer la room et Flex Builder), traduction de Introduction to Adobe Flash Collaborative Services par Romin Irani.

Maintenant que vous êtes parés, voilà votre première application Flex avec AFCS dans ce tuto Flex. Créer un nouveau projet Flex dans lequel vous avez référencé le SWF d'AFCS (voir tuto Flex précédent). Voici le code MXML:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
	xmlns:rtc="AfcsNameSpace">

	<rtc:AdobeHSAuthenticator id="auth"
		userName="...YourUserName..."
		password="...YourPassword..."/>

	<rtc:ConnectSessionContainer
		roomURL="http://connectnow.acrobat.com/fnicollet/flexTutorialFR"
		authenticator="{auth}"
		autoLogin="true" width="100%" height="100%">

		<mx:HDividedBox width="100%" height="100%">
			<rtc:Roster width="30%" height="100%"/>
			<rtc:SimpleChat width="30%" height="100%"/>
		</mx:HDividedBox>

	</rtc:ConnectSessionContainer>

</mx:Application>

Ce n'est pas une application AFCS idéale car elle ne capte pas les évènemens ou exceptions important, mais pour le moment, cela va suffir. Tout cela sera détaillé plus loin dans le tutorial. Voici les aspects les plus importants:

  • Dans le tag <mx:Application>, on a défini un namespace pour AFCS xmlns:rtc="AfcsNameSpace" pour inclure facilement les classes AFCS.
  • La classe la plus importante est ici ConnectSessionContainer. Elle est basée sur UIComponent, et prend en charge les notions suivantes:
    • Enregistrement (login) de l'utilisateur dans la room et création de la session
    • Gestion de l'état de la room et de la synchronisation
    • Peut contenir des Pods AFCS. Un Pod AFCS est une mini-application prête à être utilisée qui implémente plusieurs applications comme le Chat, File Sharing, Webcam viewer, …

L'objet ConnectSessionContainer a 3 attributs importants:

  • roomURL: C'est l'URL de la room dans laquelle vous voulez vous connecter. Vous devez spécifier l'URL de la room créée dans le tutorial précédent.
  • authenticator: Cet attribut est utilisé pour indiquer comment le ConnectSessionContainer va authentifier l'utilisateur sur la room. Vous pouvez voir dans le code qu'on lui donne un objet AdobeHSAuthenticator. Cet objet authentifie l'utilisateur auprès du Service AFCS. Vous aurez besoin de donner votre nom d'utilisateur AFCS et votre mot de passe. Le nom d'utilisateur est typiquement votre email que vous avez utilisé pour vous enregistrer comme développeur.
  • autoLogin: Pour cet exemple, on l'a fixé à true. Cela veut dire qu'à la création de l"objet ConnectionSessionContainer, il va tenter de se logger en utilisant l'authenticator associé.

Une fois l'authentification OK, le ConnectSessionContainer va agir comme un conteneur pour tous les autres composants d'affichage (UI), et va instancier ses enfants. On a pour le moment ajouté 2 Pods (Roster et Chat).

20juil/090

AFCS – Tutorial Introduction à AFCS avec Flex (2 – Préparer la room et Flex Builder)

Suite du tutorial AFCS – Tutorial Introduction à AFCS avec Flex (1), traduction de Introduction to Adobe Flash Collaborative Services par Romin Irani.

Avant d'aller plus loin sur les bases d'une application AFCS, voici un aperçu du rendu final.

afcs appli

afcs appli

Cette application est un salon de chat en ligne, dans lequel plusieurs utilisateurs peuvent s'enregistrer et discuter ensemble. Sur la gauche, on peut voir la liste des participants, mise à jour à chaque connexion (login) et déconnexion (logout). Sur la droite, on a une console de chat qui permet au participant d'envoyer des messages publics/privés, de recevoir des messages privés et de voir tous les messages publics en live. Bien que cela ne soit pas l'application idéale pour démontrer la capacités d'AFCS, c'est suffisant pour vous donner un bon départ. Voyons maintenant comment créer cette application de A à Z et en détail.

Création d'une "room"

Tout d'abord, on va créer une "room" (un salon pour franciser). Vous pouvez voir une room comme un conteneur dans lequel une application AFCS va se dérouler. Les utilisateurs vont s'enregistrer et si l'authentification est bonne, ils seront autorisés à entrer dans la room. On verra cela plus en détail plus tard.

Vous pouvez créer une room de deux manières: en utilisant le AFCS Developer Portal ou en utilisant l'application locale AFCS Developer Console. On va se concentrer sur la AFCS Developer Console (mais vous pouvez très bien le faire depuis le Portal en ligne si vous voulez).

Vous devez être connecté à Internet pour que l'application AFCS Developer Console fonctionne normalement puisqu'elle interagit avec le cloud AFCS.

Pour créer une room, lancez l'application Air AFCSDevConsole. Vous verrez ainsi ceci:

afcs-dev

Comme vous le voyez, il n'y a pas encore de compte (Account) défini. Puisque vous avez déjà crée un Developer Account sur le site d'AFCS plus tôt dans ce tutorial, vous pouvez utiliser le même compte ici. Pour cela, cliquez simplement sur le bouton "Add" en bas du panel Accounts. Cela va ouvrir la boite de dialogue suivante:

afcs-dev-2

Entrez simplement vos informations personnelles. L'URL de votre compte est http://connectnow.acrobat.com/[VotreIDdeCompte]. Donnez un nom à votre compte. Cela peut être n'importe quel nom puisque vous pouvez gérer plusieurs comptes sur la Developer Console.

19juil/091

AFCS – Tutorial Introduction à AFCS avec Flex (1)

Il y a quelques mois, je présentais Adobe Cocomo, qui a changé de nom et s'est transformé en AFCS (Adobe Flash Collaborative Services). Romin Irani a publié sur InsideRIA, un article présentant les fonctionnalités principales de AFCS avec applications pratiques.

Voir l'article original sur insideRIA.com

Pour ceux qui ne connaissent pas AFCS, c'est un SDK permettant de créer rapidement des applications dites collaboratives, c'est-à-dire multi-utilisateur. Cela peut aller du chat, au partage de fichiers en passant par le partage de webcam. Les fonctionnalités de AFCS sont décrites dans cet article:

AFCS – Présentation des fonctionnalités (Adobe Cocomo)

Pourquoi utiliser AFCS ?

Typiquement, un développeur se poserait ce type de questions:

  • Pourquoi ai-je besoin d'un ensemble de composant pour intégrer une dimension collaborative à mon application.
  • C'est pas si difficile que cela de faire une application collaborative, non ? Un chat et un partage de fichier et c'est tout ?
  • … et bien d'autres

Et bien, le développement d'application collaboratives n'est pas si simple que cela. Si vous voulez développer une appli collaborative, vous devrez prendre en compte les points suivants:

  • Prendre en charge l'audio, la vidéo et tous les échanges de data
  • Etre sûr que l'application peut fonctionner avec un grand nombre d'utilisateurs
  • S'assurer que tous les utilisateurs soient synchronisés
  • Réutiliser des composants souvent utilisés comme un Chat, des notes, un tableau blanc (whiteboard) etc. pour développer des applications rapidement et que vous ne deviez pas ré-inventer la roue en permanence.
  • Prendre en charge la gestion des utilisateurs et de leurs droits.

Tous ces points vont s'additionner et cela va devenir assez complexe pour un développeur de créer son application. AFCS propose des solutions à ces problèmes grâce à ces fonctionnalités:

  • Un ensemble de composants collaboratifs qui peuvent être simplement placés dans l'application pour accélérer le développement. Ces composants vont de la simple fenêtre de chat jusqu'au tableau blanc partagé
  • Un ensemble d'APIs, qui peut être utilisé pour les problématiques de droits utilisateur, de gestion des medias ou de l'authentification. Ces APIs et ces composant peuvent être étendus pour pouvoir être personnalisés
  • Une architecture côté serveur (le "cloud") qui vous permet de ne pas vous soucier des problèmes de charge (scaling) ou de crash (reliability).

On va maintenant voir comment créer ces applications avec AFCS grâce à quelques tutoriaux Flex.

18juil/090

Flex Chart – Modifier les styles des axes avec AxisRenderer et axisStroke

Dans le tuto Flex précédent, on a vu comment afficher plusieurs axes dans un graphique Flex, pour simplifier la lecture quand on utilise plusieurs Series. Comme vous le voyez dans l'exemple, les axes ont le style par défaut, il est donc difficile de reconnaître quel axe correspond à quelle Series. Cela est d'autant plus vrai si vous faîtes une impression Flex de votre graphique car vous n'auriez pas les tooltips.

C'est pourquoi vous devez donner un styles à ces axes pour qu'ils correspondent aux styles des items du Chart grâce à AxisRenderer.

18juil/090

Flex Chart – Utiliser plusieurs Axes différents dans un même Chart Flex

Lorsque vous utilisez plusieurs Series de données dans le même graphique, comme expliqué dans ce tutorial Flex, vous aurez sûrement quelques problèmes si les intervalles de données sont très différents. Dans ce cas là, les points de donnée pourraient être situés dans des régions très différentes du Chart. Par exemple, une valeur contenue entre 100€ et 150€, alors qu'un autre prix fluctue entre 2€ et 2.5€. Si vous affichez les deux series de données dans un même graphique, il vous sera difficile de voir un quelconque lien entre les prix, même sur un axe logarithmique. Pour contourner ce problème, vous pouvez utiliser de multiples axes sur votre Chart pour que chaque serie de data soit positionnée de manière relative par rapport à son axe. Tous les Chart qui héritent de CartesianChart (c'est-à-dire tous sauf le Pie Chart) supportent le fait d'avoir plusieurs series sur l'axe horizontal, vertical ou les deux. Pour utiliser plusieurs axes dans un Chart, vous devez tout d'abord définir les Series du Chart et leurs axes. Par exemple, pour un graphique qui mélange des colonnes et des lignes, vous aurez un ColumnSeries et un LineSeries. Pour chacun, Vous allez aussi définir un axe vertical comme dans cet exemple de code:

<mx:series>
	<mx:ColumnSeries id="cs1" dataProvider="{SMITH}" yField="close">
		<mx:verticalAxis>
			<mx:LinearAxis id="v1" minimum="40" maximum="50"/>
		</mx:verticalAxis>
	</mx:ColumnSeries>
	<mx:LineSeries id="cs2" dataProvider="{DECKER}" yField="close">
		<mx:verticalAxis>
			<mx:LinearAxis id="v2" minimum="150" maximum="170"/>
		</mx:verticalAxis>
	</mx:LineSeries>
</mx:series>

Vous devrez ensuite définir les "Axis Renderer", et lier leurs propriétés "axis" aux axes des Series. Dans ce cas, on va définir deux vertical axis renderers, et les lier aux objets LinearAxis:

<mx:verticalAxisRenderers>
	<mx:AxisRenderer placement="left" axis="{v1}"/>
	<mx:AxisRenderer placement="left" axis="{v2}"/>
</mx:verticalAxisRenderers>

Notez que vous pouvez contrôler la position des axes en utilisant la propriété "placement" de l'AxisRenderer. Pour un axe vertical, les valeurs valides sont "left" et "right". Pour un axe horizontal, les valeurs valides sont "top" et "bottom". Les axes peuvent aussi être indépendants des définitions de Series. Par exemple, vous pouvez plus d'une série à un même axe. Dans ce cas, vous pouvez définir l'axe vertical comme ceci:

<mx:horizontalAxis>
	<mx:CategoryAxis id="h1" categoryField="date"/>
<mx:horizontalAxis>

Et les lier (bind) ensuite aux Series, comme ceci:

<mx:ColumnSeries id="cs1" horizontalAxis="{h1}" dataProvider="{SMITH}" yField="close">
...
<mx:LineSeries id="cs2" horizontalAxis="{h1}" dataProvider="{DECKER}" yField="close">

Et vous pouvez lier un AxisRenderer sur ce même axe:

<mx:horizontalAxisRenderers>
	<mx:AxisRenderer placement="bottom" axis="{h1}"/>
</mx:horizontalAxisRenderers>
Remplis sous: Charting, Exemple Lire la suite