• › Connexion
  • Blog RIA.do.be
  • Blog Web2Entreprise
Section separator

Catégories

  • Annonces
  • Évènements
  • Concepts et Usages
  • Notes Techniques
  • Références
Adobe EMEA Silver Solution Partner Section separator

Abonnement

  • RSS Articles Articles (RSS)
  • RSS Articles Commentaires (RSS)
  • RSS mail Articles (Email)
  • Populaires
  • Récents
  • Commentaires
  • Premiers Retours sur l’Adobe MAX 2009 (vu 13 818 fois)
  • Utiliser le framework Cairngorm pour Flex 2 (1/4) (vu 7 087 fois)
  • Comment forcer les styles des composants Flex/AS3 d’une librairie SWC réutilisable (vu 6 754 fois)
  • Architecture MVC: Cairngorm ou PureMVC ? (vu 4 659 fois)
  • Le problème du ModelLocator Cairngorm (vu 4 306 fois)
Articles récents
  • La confusion Cairngorm3 et des frameworks post MVC
  • Ready2Flex, la Solution pour Votre Déploiement Flex
  • Ouverture des Inscriptions pour le Webinar ConfluenceFx
  • Développeur, Communicant, Designer ou Ergonome ? Changez pour Kap IT
  • Application AIR : Comment Sauvegarder/Charger un Document et lui Associer une Extension ?
Commentaires récents
  • Yannick Lacaute dans La confusion Cairngorm3 et des frameworks post MVC
  • Yannick Lacaute dans La confusion Cairngorm3 et des frameworks post MVC
  • Fadi Mansour dans Détection de l’Événement « Coller » avec Flex Builder 3 et Flash Player 9
  • nico dans Détection de l’Événement « Coller » avec Flex Builder 3 et Flash Player 9
  • Florian dans Application AIR : Comment Sauvegarder/Charger un Document et lui Associer une Extension ?

Auteurs

  • Alexis Kartmann (12)
  • Benoit Kogut-Kubiak (2)
  • Christoher Bograt (1)
  • Cyril Daloz (8)
  • Daniel Pesic (6)
  • Fadi Mansour (3)
  • Florian Fesseler (1)
  • Guillaume Mignard (2)
  • Jean de Laulanié (2)
  • Julien Revel (19)
  • Mahmoud Ramadan (1)
  • Matthieu Jobert (1)
  • Stéphane Guyot (1)
  • Stéphane Koëth (2)
  • Yann Graufogel (2)
Section separator

Tags

kapinspect compilation Kap IT AS3 LCDS Corporate Framework builder BlazeDS MVC AMF PureMVC JVM RTMP skin AIR Web 2.0 Flex RIA Cairngorm actionscript Adobe MAX Kap Lab livecycle fds
Section separator

Archives

  • juin 2010 (1)
  • mars 2010 (1)
  • février 2010 (1)
  • décembre 2009 (2)
  • novembre 2009 (1)
  • octobre 2009 (3)
  • septembre 2009 (1)
  • août 2009 (1)
  • avril 2009 (2)
  • février 2009 (2)
  • janvier 2009 (4)
  • décembre 2008 (4)
  • novembre 2008 (2)
  • octobre 2008 (2)
  • septembre 2008 (2)
  • août 2008 (1)
  • juin 2008 (1)
  • avril 2008 (4)
  • mars 2008 (3)
  • février 2008 (2)
  • janvier 2008 (1)
  • décembre 2007 (3)
  • novembre 2007 (1)
  • septembre 2007 (1)
  • juillet 2007 (1)
  • juin 2007 (1)
  • mai 2007 (4)
  • avril 2007 (8)
  • mars 2007 (2)
  • février 2007 (1)

Marque-pages

  • Adobe Labs
  • AStrois Blog
  • Code moi un mouton
  • Coma Informatique
Section separator

Kap IT

  • Site Web
  • Blog RIA.do.be
  • Blog Web2Entreprise
  • Kap Lab - Composants Flex
  • Kap Lab - Plugins Confluence

Blog RIA.do.be

Veille, Recherche et Développement RIA Flex-AS3-LiveCycle

Application AIR : Comment Sauvegarder/Charger un Document et lui Associer une Extension ?

Par Mahmoud RamadangravatarFermerAuteur : Mahmoud Ramadan Email : mramadan@kapit.fr
Site :
A propos : Voir les autres billets de l'auteur (1)
, publié le 18 décembre 2009

Introduction

Lorsque votre application AIR sert à saisir des données et les manipuler, il est utile de pouvoir sauvegarder ces données afin de pouvoir les charger ultérieurement.

Il est aussi utile d’associer une extension à ce document afin de pouvoir lancer l’application en chargeant automatiquement vos données. Le document sauvegardé peut aussi contenir des informations sur la position de la fenêtre de l’application et les préférences utilisateurs. Ainsi, au démarrage de l’application, on peut restituer les données et les préférences utilisateur.

Application AIR, Intégration au Bureau - Lire la Suite ›

Problématique:

Comment sauvegarder votre VO dans un fichier et comment le charger à partir de ce fichier ?
Comment lancer votre application et charger vos données à exécution de ce fichier ?

Voir la procédure !

Tutoriel

1/5 - Créer une Classe Remote

Cette classe contient vos VO.

	[RemoteClass]
	public class SaveData
	{
		public var user:UserVO;
		public var prefs:PreferencesVO;
	}

Ensuite, il suffit de créer une instance de SaveData avec vos VO comme propriétés.

saver:SaveData = new SaveData();
saver.user = myUser;
saver.prefs = myPrefs;

2/5 - Sauvegarder le Fichier

Nous allons utiliser la classe File pour afficher une fenêtre de sauvegarde du fichier :

	private function displaySaveWindow(event:MouseEvent):void
	{
		var file:File = File.documentsDirectory;  //Se placer dans le répertoire "Documents"
		try
		{
			file.browseForSave("Save Project As");
			file.addEventListener(Event.SELECT, saveProject); //Appeler la méthode saveProject lorsque l'utilisateur sélectionne un fichier de sauvegarde
		}
		catch (error:Error)
		{
			trace("Failed:", error.message);
		}
	}

Une fois le fichier de sauvegarde sélectionné, on va rajouter l’extension souhaitée au cas où l’utilisateur ne la rajoute pas au nom du fichier.

Dans L’exemple suivant, l’extension choisie est « .kap ». Ensuite nous créons un objet SaveData en y rajoutant les données à sauvegarder myUser et myPrefs en propriétés. La dernière étape est d’écrire les données (saver) dans le fichier selectionné (newFile) en utilisant la méthode writeObjectToFile (détails dans le paragraphe suivant).

	private function saveProject(event:Event):void
	{
		var newFile:File = event.target as File;

		if(newFile.url.substring(newFile.url.lastIndexOf("."),newFile.url.length) != ".kap")
		newFile.url += ".kap"; //Rajouter l'extension si elle n'existe pas dans le nom du fichier
		var saver:SaveData = new SaveData();
		saver.user = myUser;
		saver.prefs = myPrefs;
		FileSerializer.writeObjectToFile(saver, newFile);
	}

3/5 - Ecrire les Données dans le Fichier

Afin d’écrire l’objet saver qui contient toute les informations à sauvegarder dans le fichier, il faut le sérialiser. Ceci peut être réalisé en utilisant la méthode writeObject de la classe FileStream du framework AIR.

La méthode suivante prend en arguments :

  • L’objet à sérialiser et sauvegarder
  • Le fichier dans lequel on va écrire cet objet

	public class FileSerializer
	{
		public static function writeObjectToFile(object:Object, file:File):void
		{
			var fileStream:FileStream = new FileStream();
			fileStream.open(file, FileMode.WRITE);
			fileStream.writeObject(object);
			fileStream.close();
		}
	}

4/5 - Affecter l’Extension de Fichier Choisie à Votre Application

Pour associer une extension à votre application AIR, éditez le fichier XML de configuration de l’application. Dans ce fichier, vous pouvez définir l’icône des fichiers associés à votre application. Trouver le bloc suivant et éditez le de la façon suivante : (n’oubliez pas de dé-commenter le bloc !)

	<fileTypes>
		<fileType>
			<name>MonApplication.KAPFile</name>
			<extension>kap</extension>
			<description>KAP File</description>
			<contentType>application/monapplication.kap-file</contentType>
			<icon>
				<image128x128>logo_monapplication_kap.png</image128x128>
			</icon>
		</fileType>
	</fileTypes>

Une bonne idée est d’associer une icône à votre application en dé-commentant le bloc suivant et en indiquant le chemin vers l’icône.

<icon>
        <image128x128>logo_monapplication_kap.png</image128x128>
</icon>

Pour voir le résultat, il faut faire un Release Build de l’application et installer le .air. L’exécuteur adl (celui utilisé par Flex Builder par exemple) ne permet pas d’affecter l’extension à vos fichiers.

5/5 - Récupérer les Données Lors de l’Exécution du Fichier Sauvegardé

Après avoir installé l’application AIR sur votre système, vous remarquez que le fichier « .kap » devient exécutable et lance votre application AIR. Mais comment récupérer les données du fichier au lancement ?

L’événement invoke est dispatché lorsque l’application est invoquée. C’est le cas du lancement de l’application à l’exécution du fichier qui porte une extension qui y est associée.

Il suffit alors d’écouter l’évenement invoke qui contient une propriété arguments qui contient à son tour les URL des fichiers sélectionnés pour l’exécution de l’application.

D’abord nous récupérons l’URL du fichier à partir de l’événement, ensuite on instancie un objet File à partir de cet URL et on le passe à la fonction readObjectFromFile pour dé-sérialiser l’objet. Une fois l’objet dé-sérialisé, nous pouvons récupérer nos VO sauvegardés.

Voici le code:

	<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
		layout="absolute"
		width="300"
		height="300"
		invoke="onInvoke" >

		private function onInvoke(e:InvokeEvent):void
		{
			if (e.arguments[0])
			{
				var loadedFile:File = new File(e.arguments[0].toString());
				loadedFileData = FileSerializer.readObjectFromFile(loadedFile) as SaveData; //Permet de désérialiser l'objet, voir paragraphe suivant
				myUser = loadedFileData.user;
				myPrefs = loadedFileData.prefs;
			}
		}
	</mx:WindowedApplication>

Ci-dessous la méthode readObjectFromFile qu’on utilise pour dé-sérialiser l’objet sauvegardé. Elle prend comme argument l’objet de type File qu’on a instancié à partir de l’URL du fichier en argument de l’évenement invoke.

public class FileSerializer
	{
		public static function writeObjectToFile(object:Object, file:File):void
		{
			var fileStream:FileStream = new FileStream();
			fileStream.open(file, FileMode.WRITE);
			fileStream.writeObject(object);
			fileStream.close();
		}

                public static function readObjectFromFile(file:File):Object
		{
			if(file)
			{
				var data:ByteArray = new ByteArray();
				var fileStream:FileStream = new FileStream();
				fileStream.open(file, FileMode.READ);
				fileStream.readBytes(data);
				return data.readObject();
			}
			return null;
		}
        }

Articles relatifs

  • Tout Savoir sur les Fuites Mémoires (ou Memory Leak) en Flex (0)
  • Digest estival de news Adobe (1)
  • A la recherche de nouvelles sensations professionnelles ? Rejoignez Kap IT ! (0)
  • Utilisation d’un TreeMap en Flex et en as3 : À la découverte des classes AS3 du package mx du framework Flex (0)
  • Réunion des Tontons Flexeurs du 25 février 2008 (0)
Catégories: Notes Techniques
Tags: AIR, AS3, Desktop Integration, Flex, Intégration au Bureau, Tips

Un commentaire sur “Application AIR : Comment Sauvegarder/Charger un Document et lui Associer une Extension ?”

  1. Florian dit :
    22 décembre 2009 à 12:06

    Il aurait été intéressant de noter quels sont les avantages/inconvénients de la sauvegarde AMF par rapport à une sauvegarde “classique” de type XML.

    Aussi, il y a quelques notions importantes à connaitre afin que la sérialisation se déroule correctement comme : l’utilisation de IExternalizable pour les objets plus complexes, pas de paramètres dans le constructeur, propriétés en public, etc… (il doit exister un paragraphe sur ce sujet dans la documentation Adobe).

Laisser une réponse

Cliquer ici pour annuler la réponse.

Article précédent
Article suivant
 
Haut de page

Copyright © 2009 Kap IT - Blog RIA - Blog Web2Entreprise - Kap Lab

Motorisé par Wordpress - Thème avec YAML par Kap IT