CHAPTER 9
Working with Adobe AIR
First axiom of user interface design: Don’t make the user
look stupid.
—Alan Cooper
In this chapter, you’ll investigate Adobe Integrated Runtime (AIR), which is a valuable
addition to the arsenal of Flex developers for many reasons:
• AIR allows you to perform all I/O operation with the filesystem on the user’s
desktop.
• AIR allows you to sign applications and allows versioning of applications.
• AIR offers an updater that make it easy to ensure proper upgrades of the applica-
tions on the user’s desktop computer.
• AIR comes with a local database, SQLite, which is a great way to arrange a repo-
sitory of the application data (in clear or encrypted mode) right on the user’s
computer.
• AIR  applications  can  easily  monitor  and  report  the  status  of  the  network
connection.
• The user can start and run an AIR application even when there is no network
connection available.
• AIR has better support for HTML content.
At the time of this writing, AIR 1.5 has been officially released and AIR 2.0 is in beta.
As you can see, AIR 1.5 is a significant step toward providing a platform for desktop
application development. AIR 1.5 was not a full-featured desktop development envi-
ronment because of the following limitations:
• It couldn’t make calls to the user’s native operating system.
• It  couldn’t  launch  non-AIR applications  on the  desktop  (except  the  default
browser).
• It couldn’t instantiate a DLL.
441
View pdf image thumbnail - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
pdf files thumbnails; pdf thumbnail
View pdf image thumbnail - VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
enable pdf thumbnail preview; pdf files thumbnail preview
• It couldn’t directly access the ports (i.e., USB or serial) of the user’s computer.
AIR 2.0 introduced significant improvements that received a warm welcome in the
developer community, such as:
• It can launch and communicate with native (non-AIR) applications.
• It lowers CPU and memory consumption.
• It supports the detection of mass storage devices (e.g., when a USB device or a
camera is connected or disconnected).
• It knows how to open files with default programs (e.g., PDF files would be opened
by Acrobat Reader).
• It gives you access to uncompressed microphone data via the Microsoft Access API.
• It introduces multitouch functionality.
• It introduces UDP sockets, which are a great improvement for such real-time ap-
plications as online games or Voice over IP.
• It includes global error handling, which is guaranteed to catch all unhandled errors.
• It supports screen readers (Windows OS only) for visually impaired users.
• The sizes of the runtime installers are smaller than those in AIR 1.5.
• It can create applications for the iPhone.
In addition to the technical improvements of AIR, Adobe has created a central resource
that collects a growing set of AIR applications developed by third parties. It’s called
Adobe AIR Marketplace and is found at http://www.adobe.com/go/marketplace.
If you want to create, publish, and sell your own applications, get familiar with a service
code-named Shibuya, which is a monetization service for AIR developers (it’s currently
in beta; see http://labs.adobe.com/technologies/shibuya/).
Our message is simple: we highly recommend using AIR for development of desktop
applications.
To help you get started with AIR, this chapter provides a fast-paced review of the basics
of the AIR APIs that are not available in Flex. You’ll then move on to the more advanced
topic of data synchronization between the client and a BlazeDS-powered server. As an
alternative to using LCDS and its data management services, this chapter offers a syn-
chronization solution with a subclass of 
DataCollection
(see Chapter 6) and BlazeDS.
Finally, you’ll use AIR to build a small application for a salesperson of a pharmaceutical
firm who visits doctors' offices, offering the company’s latest drug, Xyzin. During these
visits, the salesperson’s laptop is disconnected from the Internet, but the application
allows note-taking about the visit and saving the information in the local SQLite data-
base bundled into the AIR runtime. When the Internet connection becomes available,
the application automatically synchronizes the local data with a central database.
442 | Chapter 9: Working with Adobe AIR
How to C#: Set Image Thumbnail in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel NET Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less. How to C#: Set Image Thumbnail in C#.NET
print pdf thumbnails; can't see pdf thumbnails
VB.NET Image: Program for Creating Thumbnail from Documents and
language. It empowers VB developers to create thumbnail from multiple document and image formats, such as PDF, TIFF, GIF, BMP, etc. It
how to make a thumbnail from pdf; create thumbnails from pdf files
All code samples in this chapter were developed in AIR 1.5.
How AIR Is Different from Flex
You can think of AIR as a superset or a shell for the Flex, Flash, and AJAX programs.
First of all, AIR includes the API for working with files on the user’s computer; Flex
has very limited access to the disk (only file uploading and local shared objects via
advanced cookies). The user can run an AIR application installed on his desktop if it
has the AIR runtime. This runtime is installed pretty seamlessly with minimal user
interaction.
On the other hand, the very fact that AIR applications have to be installed on the user’s
computer forces us developers to take care of things that just don’t exist in Flex appli-
cations. For example, to release a new version of a Flex application, you need to update
the SWFs and some other files on a single server location. With AIR, each user has to
install a new version of your application on his computer, which may already have an
old version installed. The installer should take precautions to ensure that versioning of
the application is done properly and that the application being installed is not some
malicious program that may damage the user’s computer.
In the Flex world, if the user’s computer is not connected to the Internet, he can’t work
with your RIA. This is not the case with AIR applications, which can work in discon-
nected mode, too. Although Flex does not have language elements or libraries that can
work with a relational DBMS, AIR comes bundled with a version of SQLite that is
installed on the client and is used to create a local database (a.k.a. local cache) to store
application data in the disconnected mode. If needed, AIR can encrypt the data stored
in this local database. Consider the salesperson visiting customers with a laptop. Al-
though no Internet connection is available, she can still use the AIR application and
save the data in the local database. As soon as the Internet connection becomes avail-
able, the AIR application then synchronizes the local and remote databases.
Rendering of HTML is yet another area where AIR beats Flex hands down. AIR does
it by leveraging the open source web-browsing engine called WebKit (http://webkit
.org). Loading a web page into your AIR application is a simple matter of adding a few
lines of code; you’ll learn how to do it later in this chapter.
The inclusion of WebKit makes AIR an attractive environment not only
for Flex, but also for HTML/AJAX developers as well. If you are an AJAX
developer and your application works with WebKit, it’ll work inside
AIR, which opens a plethora of additional functionalities in any AJAX
program.
How AIR Is Different from Flex | 443
How to C#: Generate Thumbnail for Raster
VB.NET How-to, VB.NET PDF, VB.NET Word, VB Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less. You can navigate through Rater Image in your C#.NET
thumbnail view in for pdf files; pdf thumbnail generator online
How to C#: Generate Thumbnail for Word
C#.NET PDF Windows Viewer, C#.NET convert image to PDF VB.NET How-to, VB.NET PDF, VB.NET Word, VB Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less.
how to view pdf thumbnails in; pdf first page thumbnail
HelloWorld in AIR
The AIR SDK is free, so if you are willing to write code in Notepad (or your favorite
text editor) and compile and build your applications using command-line tools either
directly or hooked up to an IDE of your choice, you can certainly create AIR applications
without having to purchase any additional software. In particular, AIR comes with the
following tools:
ADL
The AIR Debug Launcher that you can use from a command line
ADT
The AIR Developer Tool with which you create deployable .air files
Most likely, you’ll work in the Flash Builder IDE, which includes AIR project creation
wizard. To get familiar with this method, try developing a HelloWorld application.
1. Create a new Flex project called HelloWorld in Flash Builder.
2. In the same window where you enter the project name, select the radio button
titled “Desktop application (runs in Adobe AIR).” Click the Finish button to see a
window similar to Figure 9-1.
3. Instead of the familiar 
<mx:Application>
tag, the root tag of an AIR application is
<mx:WindowedApplication>
. Add a line 
<mx:Label text="Hello World">
to the code
and run this application. Figure 9-2 shows the results.
Figure 9-1. An empty template of the AIR application
The src folder of your Flash Builder project now contains an application descriptor file
called HelloWorld-app.xml. Example 9-1 shows a fragment of this file. (If you don’t use
Flash Builder, you’ll have to write the file manually.)
444 | Chapter 9: Working with Adobe AIR
How to C#: Generate Thumbnail for PowerPoint
C#.NET PDF Windows Viewer, C#.NET convert image to PDF VB.NET How-to, VB.NET PDF, VB.NET Word, VB Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less.
pdf thumbnail html; generate pdf thumbnails
How to C#: Overview of Using XImage.Raster
You may easily generate thumbnail image from image file. Annotate XImage page. You may easily generate thumbnail image from image file.
pdf thumbnail generator; create thumbnail jpg from pdf
Figure 9-2. Running the HelloWorld application
Example 9-1. Partial application descriptor file for HelloWorld
<application xmlns="http://ns.adobe.com/air/application/1.5.1">
<!-- The application identifier string, unique to this application. Required. -->
<id>HelloWorld</id>
<!-- Used as the filename for the application. Required. -->
<filename>HelloWorld</filename>
<!-- The name that is displayed in the AIR application installer.
May have multiple values for each language. See samples or xsd schema file.
Optional. -->
<name>HelloWorld</name>
<!-- An application version designator (such as "v1", "2.5", or "Alpha 1").
Required. -->
<version>v1</version>
The namespace that ends with 1.5.1 indicates the minimum required version of the
AIR runtime. AIR is forward compatible, however, so an application built in, say, AIR
1.0 can be installed on the machines that have any runtime with a version greater than
1.0.
HelloWorld in AIR | 445
RasterEdge XImage.Raster for .NET - SDK for Raster Image Document
Able to view and edit image rapidly. Advanced image save option. HTML5 Viewer for .NET; XDoc.Windows Viewer for .NET; XDoc.Converter for .NET; XDoc.PDF for .NET;
view pdf thumbnails; enable pdf thumbnails
VB.NET Image: Image and Doc Windows, Web & Mobile Viewers of
a compatible mobile phone or tablet to view, navigate, zoom are JPEG, PNG, BMP, GIF, TIFF, PDF, Word and VB.NET Image Viewing SDK - Features and Techs. Easy to
view pdf image thumbnail; how to make a thumbnail of a pdf
You may run into an issue while trying to run an AIR application from
Flash Builder: it won’t start but doesn’t report any errors either. To fix
this issue, make sure that the namespace ends with 1.5.1 or whatever
the current version of AIR is that you use.
The application ID must be unique for each installed AIR application signed by the
same  code-signing  certificate.  Hence  using  reverse  domain  notation,  like
com.farata.HelloWorld
, is recommended.
To prepare a package for deploying your application:
1. Choose Project→Export Release Build, just as you would for deploying Flex appli-
cations. Flash Builder will offer to create an installer for the application, an AIR
file named HelloWorld.air. There is no need to create an HTML wrapper here as
with Flex applications.
2. Press the Next button. Flash Builder displays a window that asks for you to sign
this application using a precreated digital certificate or to export to an intermediate
file (with the .airi name extension) that you can sign later. This second option is
useful  if,  for  example,  your  firm  enforces  a  special  secure  way  of  signing
applications.
3. If you don’t have a real digital certificate, click on the Create button to create a self-
signed certificate, which is good enough for the development stage of your AIR
application.
4. Fill out the creation form in Figure 9-3 and name the file testCertificate.p12.
You can purchase a digital certificate from ChosenSecurity (http://cho
sensecurity.com),  GlobalSign  (http://globalsign.com),  Thawte  (http://
www.thawte.com), or Verisign (http://www.verisign.com).
5. Click OK to save the file.
You’ll now see a window that specifies what to include in the HelloWorld.air file.
This simple example requires only two files: the application descriptor HelloWorld-
app.xml and the application file HelloWorld.swf.
Congratulations—you’ve created your first AIR application. Now what? How do users
run HelloWorld.air if their computers don’t have Flash Builder? They must download
and install the latest version of the AIR runtime (about 15 MB) from http://get.adobe
.com/air/.
When this is complete, they double-click on HelloWorld.air to start the installation of
the HelloWorld application and see the scary message in Figure 9-4.
446 | Chapter 9: Working with Adobe AIR
Figure 9-3. Creating a self-signed certificate
Figure 9-4. Installing the AIR application
HelloWorld in AIR | 447
Because you used a self-signed certificate, the AIR installer warns the user that the
publisher’s identity is unknown. The fact that you’ve entered your name as a publisher
is not good enough; some trustworthy agent has to confirm that you are who you say
you are. Besides identifying the publisher of the application, digital certificates guar-
antee that the binary content of the application has not been modified after signing (the
checksum mechanism is being used there). Using the .air file is one of the ways to install
an AIR application.
You can allow users to install your AIR application from a web page
without saving the .air file. Flex SDK has a badge.swf file that supports
such seamless installation (of both AIR itself and your application). For
details, refer to the Adobe documentation at http://tinyurl.com/akntmc.
The installer extracts the application name from the descriptor, and the installer also
has a mechanism to ensure that you won’t replace an AIR application with its older
version.
Assuming your user knows the publisher of this application (you), and clicks Install,
the installation process continues, and HelloWorld will take its honorable place among
other applications installed on the user’s computer. For example, if no settings are
changed, on Windows a new HelloWorld.exe application will be installed in the folder
C:\Program Files\Hello World, as shown in Figure 9-5. Double-click on the .air file after
this application was installed (the ID and the version were compared), and you’ll see a
screen offering to either uninstall the application or run it.
Figure 9-5. AIR application folders
448 | Chapter 9: Working with Adobe AIR
Native Windows
The root tag of any AIR application is 
<mx:WindowedApplication>
, which is all it takes
to make the application look like a native window of the OS where it runs. For example,
install and run the same HelloWorld.air application on Mac OS, and, instead of looking
like Figure 9-2, the window looks like Figure 9-6.
You can have only one 
<mx:WindowedApplication>
tag per application, however. If you
need to instantiate other windows, you need to use the 
<mx:Window>
component. With
it, you can specify multiple windows that may or may not look like a native window
based on the chrome you specify. The 
Window
class contains an important property called
nativeWindow
of type 
flash.display.NativeWindow
, which is the class you would use to
create new windows if you were developing a plain Flash (no Flex) application.
Figure 9-6. HelloWorld on MAC OS
If  you  need  to  open  a  new  native  window,  create  a  custom  component  called
HelloWindow with 
<mx:Window>
as the root tag:
<?xml version="1.0" encoding="utf-8"?>
<mx:Window xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" width="400" height="300">
<mx:Button label="Close me" click="close()"/>
</mx:Window>
The following application instantiates and opens this native window:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical">
<mx:Label text="Hello World" />
Native Windows | 449
<mx:Button  label="Open Native Window" click="openMyWindow()" />
<mx:Script>
<![CDATA[
import mx.core.Window;
private function openMyWindow():void{
var helloNativeWindow:Window=new HelloWindow();
helloNativeWindow.open();
}
]]>
</mx:Script>
</mx:WindowedApplication>
You can change the chrome and transparency of the 
<mx:Window>
component by using
its properties 
systemChrome
and 
transparent
, respectively.
You  can’t  set  the 
systemChrome
and 
transparent
properties  of
<mx:WindowedApplication>
programmatically, but you can do it in the
application descriptor file.
Working with Files
The class 
flash.filesystem.File
is a means of getting access to the files and directories
on the user’s computer. This class enables you to create, move, copy, or delete files. It
also comes with generic constants that resolve the path to the user, desktop, or docu-
ment directories and offer a unified cross-platform way to access application resource
files.  For  read/write  operations,  use  the  class 
FileStream
from  the  package
flash.filesystem
.
AIR supports working with files in two modes: synchronous and asynchronous. Syn-
chronous mode forces the application to block (wait) until this I/O operation is com-
plete. In asynchronous mode, the user can continue working with the application while
it works with files, and an event notification mechanism monitors the progress of the
I/O. Those methods that work asynchronously have the suffix Async in their names—
for example, 
File.copyToAsync()
or 
FileStream.openAsync()
. Using the asynchronous
versions of I/O requires a bit more coding, but it should be your first choice when you
need to process files of substantial sizes.
Commonly Used Directories
Because AIR is a cross-platform runtime, it shields the user from knowing specifics of
the structure of the native filesystem by introducing predefined alias names for certain
directories.
The app:/ alias refers to your application’s root read-only directory, where all files (both
code and assets) that you packaged with your application are located. For example, if
your application includes an images directory, which holds the file cafeLogo.jpg, you
450 | Chapter 9: Working with Adobe AIR
Documents you may be interested
Documents you may be interested