You are previewing Developing AIR applications with Flex.
O'Reilly logo
Developing AIR applications with Flex

Book Description

Describes how to use Flex Builder and the Flex SDK to build AIR applications.

Table of Contents

  1. 1. Installation instructions
    1. 1.1. Adobe AIR runtime installation
      1. 1.1.1. Installing the AIR runtime
      2. 1.1.2. Uninstalling the AIR runtime
      3. 1.1.3. Installing and running the AIR sample applications
    2. 1.2. Setting up the Flex 3 SDK
      1. 1.2.1. About the AIR SDK command line tools
      2. 1.2.2. Install the Flex 3 SDK
      3. 1.2.3. Compiler setup
      4. 1.2.4. Debugger setup
      5. 1.2.5. Application packager setup
  2. 2. Getting started
    1. 2.1. Introducing Adobe AIR
    2. 2.2. Finding AIR Resources
    3. 2.3. Creating your first Flex AIR application in Flex Builder
      1. 2.3.1. Run Flex Builder and create an AIR project
      2. 2.3.2. Write the AIR application code
      3. 2.3.3. Test the AIR application
      4. 2.3.4. Package, sign, and run your AIR application
    4. 2.4. Creating your first AIR application with the Flex SDK
      1. 2.4.1. Create the AIR application descriptor file
      2. 2.4.2. Write the application code
      3. 2.4.3. Compile the application
      4. 2.4.4. Test the application
      5. 2.4.5. Create the AIR installation file
  3. 3. AIR development tools
    1. 3.1. Developing AIR applications with Flex Builder
      1. 3.1.1. Creating AIR projects with Flex Builder
      2. 3.1.2. Debugging AIR applications with Flex Builder
      3. 3.1.3. Packaging AIR applications with Flex Builder
        1. 3.1.3.1. Digitally signing your AIR applications
      4. 3.1.4. Create an AIR Library project
    2. 3.2. Creating an AIR application using the command line tools
      1. 3.2.1. Compiling an AIR application with the amxmlc compiler
      2. 3.2.2. Compiling an AIR component or library with the acompc compiler
        1. 3.2.2.1. Component compiler configuration file
        2. 3.2.2.2. acompc examples
      3. 3.2.3. Using the AIR Debug Launcher (ADL)
        1. 3.2.3.1. Launching an application with ADL
        2. 3.2.3.2. Printing trace statements
        3. 3.2.3.3. ADL Examples
        4. 3.2.3.4. Connecting to the Flash Debugger (FDB)
        5. 3.2.3.5. ADL exit and error codes
      4. 3.2.4. Packaging an AIR installation file using the AIR Developer Tool (ADT)
        1. 3.2.4.1. Packaging an AIR installation file
        2. 3.2.4.2. ADT command line signing options
        3. 3.2.4.3. Creating an unsigned AIR intermediate file with ADT
        4. 3.2.4.4. Signing an AIR intermediate file with ADT
      5. 3.2.5. Creating a self-signed certificate with ADT
      6. 3.2.6. Using Apache Ant with the SDK tools
        1. 3.2.6.1. Using Ant for simple projects
        2. 3.2.6.2. Using Ant for more complex projects
    3. 3.3. Using the Flex AIR components
      1. 3.3.1. About file system controls
      2. 3.3.2. FileSystemComboBox control
        1. 3.3.2.1. Creating a FileSystemComboBox control
        2. 3.3.2.2. FileSystemComboBox user interaction
      3. 3.3.3. FileSystemTree control
        1. 3.3.3.1. Creating a FileSystemTree control
        2. 3.3.3.2. FileSystemTree user interaction
      4. 3.3.4. FileSystemList control
        1. 3.3.4.1. Creating a FileSystemList control
        2. 3.3.4.2. FileSystemList user interaction
      5. 3.3.5. FileSystemDataGrid control
        1. 3.3.5.1. Creating a FileSystemDataGrid control
        2. 3.3.5.2. FileSystemDataGrid user interaction
      6. 3.3.6. FileSystemHistoryButton control
        1. 3.3.6.1. Creating a FileSystemHistoryButton control
        2. 3.3.6.2. FileSystemHistoryButton user interaction
      7. 3.3.7. Example: Displaying a directory structure with Flex AIR
      8. 3.3.8. About the HTML control
        1. 3.3.8.1. Creating an HTML control
        2. 3.3.8.2. HTML control user interaction
      9. 3.3.9. About the FlexNativeMenu control
        1. 3.3.9.1. Creating a FlexNativeMenu control
          1. 3.3.9.1.1. Creating an application or window menu
          2. 3.3.9.1.2. Creating a context menu
          3. 3.3.9.1.3. Creating a pop-up menu
        2. 3.3.9.2. Defining FlexNativeMenu menu structure and data
          1. 3.3.9.2.1. Specifying and using menu entry information
          2. 3.3.9.2.2. Menu entry types
          3. 3.3.9.2.3. Menu attributes
          4. 3.3.9.2.4. Considerations for XML-based FlexNativeMenu data providers
          5. 3.3.9.2.5. Example: An Array FlexNativeMenu data provider
          6. 3.3.9.2.6. Example: An XML FlexNativeMenu data provider
        3. 3.3.9.3. Specifying menu item keyboard equivalents
          1. 3.3.9.3.1. About key equivalents
          2. 3.3.9.3.2. Example: FlexNativeMenu key equivalent commands
          3. 3.3.9.3.3. Example: Using custom logic for multi-platform key equivalent menu commands
        4. 3.3.9.4. Specifying menu item mnemonics
        5. 3.3.9.5. Handling FlexNativeMenu control events
      10. 3.3.10. About window containers
        1. 3.3.10.1. Controlling window chrome
        2. 3.3.10.2. WindowedApplication container
        3. 3.3.10.3. Window container
  4. 4. Application development essentials
    1. 4.1. AIR security
      1. 4.1.1. Installation and updates
        1. 4.1.1.1. AIR runtime installation location
        2. 4.1.1.2. Seamless install (runtime and application)
        3. 4.1.1.3. Manual install
        4. 4.1.1.4. Application installation flow
        5. 4.1.1.5. Application destination
        6. 4.1.1.6. The AIR file system
        7. 4.1.1.7. AIR application storage
        8. 4.1.1.8. Updating Adobe AIR
        9. 4.1.1.9. Updating AIR applications
        10. 4.1.1.10. Uninstalling an AIR application
        11. 4.1.1.11. Uninstalling Adobe AIR
        12. 4.1.1.12. Windows registry settings for administrators
      2. 4.1.2. Sandboxes
        1. 4.1.2.1. About the AIR application sandboxes
        2. 4.1.2.2. The application sandbox
        3. 4.1.2.3. Privileges of content in non-application sandboxes
          1. 4.1.2.3.1. Restrictions on loading CSS, frame, iframe, and img elements
      3. 4.1.3. HTML security
        1. 4.1.3.1. Overview on configuring your HTML-based application
        2. 4.1.3.2. Code restrictions for content in different sandboxes
          1. 4.1.3.2.1. Restrictions on using the JavaScript eval() method and similar techniques
          2. 4.1.3.2.2. Restrictions on access to AIR APIs (for non-application sandboxes)
          3. 4.1.3.2.3. Restrictions on calling the JavaScript Window.open() method
          4. 4.1.3.2.4. Errors when calling restricted code
      4. 4.1.4. Scripting between content in different domains
        1. 4.1.4.1. About the AIR sandbox bridge
        2. 4.1.4.2. Sandbox bridge example (SWF)
        3. 4.1.4.3. Sandbox bridge example (HTML)
        4. 4.1.4.4. Limiting API exposure
      5. 4.1.5. Writing to disk
      6. 4.1.6. Working securely with untrusted content
        1. 4.1.6.1. Security.allowDomain()
        2. 4.1.6.2. Scripting between application and non-application content
        3. 4.1.6.3. Protection against dynamically generating unsafe SWF content
      7. 4.1.7. Best security practices for developers
        1. 4.1.7.1. Risk from importing files into the application security sandbox
        2. 4.1.7.2. Risk from using an external source to determine paths
        3. 4.1.7.3. Risk from using, storing, or transmitting insecure credentials
        4. 4.1.7.4. Risk from a downgrade attack
      8. 4.1.8. Code Signing
    2. 4.2. Setting AIR application properties
      1. 4.2.1. The application descriptor file structure
      2. 4.2.2. Defining properties in the application descriptor file
        1. 4.2.2.1. Defining the basic application information
        2. 4.2.2.2. Defining the installation folder and program menu folder
        3. 4.2.2.3. Defining the properties of the initial application window
        4. 4.2.2.4. Specifying icon files
        5. 4.2.2.5. Providing a custom user interface for application updates
        6. 4.2.2.6. Allowing browser invocation of the application
        7. 4.2.2.7. Declaring file type associations
    3. 4.3. New functionality in Adobe AIR
      1. 4.3.1. New runtime classes
      2. 4.3.2. Runtime classes with new functionality
      3. 4.3.3. New Flex components
      4. 4.3.4. Service monitoring framework classes
  5. 5. Windows, menus, and taskbars
    1. 5.1. Working with native windows
      1. 5.1.1. AIR window basics
        1. 5.1.1.1. Windows in AIR
        2. 5.1.1.2. Native Window classes
        3. 5.1.1.3. Native window event flow
        4. 5.1.1.4. Properties controlling native window style and behavior
          1. 5.1.1.4.1. Window Types
          2. 5.1.1.4.2. Window chrome
          3. 5.1.1.4.3. Window transparency
          4. 5.1.1.4.4. Transparency in an MXML application window
          5. 5.1.1.4.5. Transparency in an HTML application window
        5. 5.1.1.5. A visual window catalog
      2. 5.1.2. Creating windows
        1. 5.1.2.1. Specifying window initialization properties
        2. 5.1.2.2. Creating the initial application window
          1. 5.1.2.2.1. Creating the initial window with Flex
          2. 5.1.2.2.2. Creating the initial window with ActionScript
        3. 5.1.2.3. Creating a new mx:Window
        4. 5.1.2.4. Creating a new NativeWindow
        5. 5.1.2.5. Creating a new HTML window
        6. 5.1.2.6. Adding content to a window
          1. 5.1.2.6.1. Loading Flash content within an HTML page
        7. 5.1.2.7. Example: Creating a native window
      3. 5.1.3. Managing windows
        1. 5.1.3.1. Getting a NativeWindow instance
        2. 5.1.3.2. Activating, showing and hiding windows
        3. 5.1.3.3. Changing the window display order
        4. 5.1.3.4. Closing a window
        5. 5.1.3.5. Allowing cancellation of window operations
        6. 5.1.3.6. Maximizing, minimizing, and restoring a window
        7. 5.1.3.7. Example: Minimizing, maximizing, restoring and closing a window
        8. 5.1.3.8. Resizing and moving a window
        9. 5.1.3.9. Example: Resizing and moving windows
      4. 5.1.4. Listening for window events
      5. 5.1.5. Displaying full-screen windows
    2. 5.2. Screens
      1. 5.2.1. Screen basics
      2. 5.2.2. Enumerating the screens
    3. 5.3. Working with native menus
      1. 5.3.1. AIR menu basics
        1. 5.3.1.1. AIR menu classes
        2. 5.3.1.2. Menu varieties
        3. 5.3.1.3. Menu structure
        4. 5.3.1.4. Menu events
        5. 5.3.1.5. Key equivalents for menu commands
        6. 5.3.1.6. Mnemonics
        7. 5.3.1.7. Menu item state
        8. 5.3.1.8. Attaching an object to a menu item
      2. 5.3.2. Creating native menus
        1. 5.3.2.1. Creating a root menu object
        2. 5.3.2.2. Creating a submenu
        3. 5.3.2.3. Creating a menu command
        4. 5.3.2.4. Creating a menu separator line
      3. 5.3.3. About context menus
      4. 5.3.4. About context menus in HTML
      5. 5.3.5. Defining native menus declaratively
      6. 5.3.6. Displaying pop-up menus
      7. 5.3.7. Handling menu events
        1. 5.3.7.1. Events summary for menu classes
        2. 5.3.7.2. Selecting menu events
        3. 5.3.7.3. Displaying menu events
      8. 5.3.8. Example: Window and application menu
    4. 5.4. Taskbar icons
      1. 5.4.1. About taskbar icons
      2. 5.4.2. Dock icons
        1. 5.4.2.1. Dock icon menus
        2. 5.4.2.2. Bouncing the dock
        3. 5.4.2.3. Dock icon events
      3. 5.4.3. System Tray icons
        1. 5.4.3.1. System tray icon menus
        2. 5.4.3.2. System tray icon tooltips
        3. 5.4.3.3. System tray icon events
        4. 5.4.3.4. Example: Creating an application with no windows
      4. 5.4.4. Window taskbar icons and buttons
        1. 5.4.4.1. Highlighting the taskbar window button
        2. 5.4.4.2. Creating windows without taskbar buttons or icons
  6. 6. Files and data
    1. 6.1. Working with the file system
      1. 6.1.1. AIR file basics
      2. 6.1.2. Working with File objects
        1. 6.1.2.1. About the File class
        2. 6.1.2.2. Paths of File objects
        3. 6.1.2.3. Pointing a File object to a directory
          1. 6.1.2.3.1. Pointing to the user's home directory
          2. 6.1.2.3.2. Pointing to the user's documents directory
          3. 6.1.2.3.3. Pointing to the desktop directory
          4. 6.1.2.3.4. Pointing to the application storage directory
          5. 6.1.2.3.5. Pointing to the application directory
          6. 6.1.2.3.6. Pointing to the filesystem root
          7. 6.1.2.3.7. Pointing to an explicit directory
          8. 6.1.2.3.8. Navigating to relative paths
          9. 6.1.2.3.9. Letting the user browse to select a directory
          10. 6.1.2.3.10. Pointing to the directory from which the application was invoked
        4. 6.1.2.4. Pointing a File object to a file
          1. 6.1.2.4.1. Pointing to an explicit file path
          2. 6.1.2.4.2. Enumerating files in a directory
          3. 6.1.2.4.3. Letting the user browse to select a file
        5. 6.1.2.5. Modifying File paths
        6. 6.1.2.6. Supported URL schemes
        7. 6.1.2.7. Finding the relative path between two files
        8. 6.1.2.8. Obtaining canonical versions of file names
        9. 6.1.2.9. Working with packages and symbolic links
      3. 6.1.3. Getting file system information
      4. 6.1.4. Working with directories
        1. 6.1.4.1. Creating directories
        2. 6.1.4.2. Creating a temporary directory
        3. 6.1.4.3. Enumerating directories
        4. 6.1.4.4. Copying and moving directories
        5. 6.1.4.5. Deleting directory contents
      5. 6.1.5. Working with files
        1. 6.1.5.1. Getting file information
        2. 6.1.5.2. Copying and moving files
        3. 6.1.5.3. Deleting a file
        4. 6.1.5.4. Moving a file to the trash
        5. 6.1.5.5. Creating a temporary file
      6. 6.1.6. Reading and writing files
        1. 6.1.6.1. Workflow for reading and writing files
        2. 6.1.6.2. Working with FileStream objects
          1. 6.1.6.2.1. FileStream open modes
          2. 6.1.6.2.2. Initializing a FileStream object, and opening and closing files
          3. 6.1.6.2.3. The position property of a FileStream object
          4. 6.1.6.2.4. The read buffer and the bytesAvailable property of a FileStream object
          5. 6.1.6.2.5. Asynchronous programming and the events generated by a FileStream object opened asynchronously
          6. 6.1.6.2.6. Data formats, and choosing the read and write methods to use
        3. 6.1.6.3. Example: Reading an XML file into an XML object
        4. 6.1.6.4. Example: Reading and writing data with random access
    2. 6.2. Drag and Drop
      1. 6.2.1. Drag and drop basics
      2. 6.2.2. Supporting the drag-out gesture
        1. 6.2.2.1. Preparing data for transfer
        2. 6.2.2.2. Starting a drag-out operation
        3. 6.2.2.3. Completing a drag-out transfer
      3. 6.2.3. Supporting the drag-in gesture
        1. 6.2.3.1. Steps in a typical drop operation
        2. 6.2.3.2. Acknowledging a drag-in gesture
        3. 6.2.3.3. Completing the drop
        4. 6.2.3.4. Updating the visual appearance of a component
        5. 6.2.3.5. Tracking mouse position during a drag-in gesture
      4. 6.2.4. HTML Drag and drop
        1. 6.2.4.1. Default drag and drop behavior
        2. 6.2.4.2. Drag-and-drop events in HTML
        3. 6.2.4.3. MIME types for the HTML drag-and-drop
        4. 6.2.4.4. Drag effects in HTML
        5. 6.2.4.5. Dragging data out of an HTML element
        6. 6.2.4.6. Dragging data into an HTML element
          1. 6.2.4.6.1. Enabling drag-in
          2. 6.2.4.6.2. Getting the dropped data
        7. 6.2.4.7. Example: Overriding the default HTML drag-in behavior
        8. 6.2.4.8. Handling file drops in non-application HTML sandboxes
    3. 6.3. Copy and paste
      1. 6.3.1. Copy-and-paste basics
      2. 6.3.2. Reading from and writing to the system clipboard
      3. 6.3.3. HTML copy and paste
        1. 6.3.3.1. Default behavior
        2. 6.3.3.2. Using the clipboardData property of the event object
      4. 6.3.4. Menu commands and keystrokes for copy and paste
        1. 6.3.4.1. Starting a copy or paste operation with a menu command
        2. 6.3.4.2. Starting a copy or paste command with a keystroke
      5. 6.3.5. Clipboard data formats
        1. 6.3.5.1. Standard data formats
        2. 6.3.5.2. Custom data formats
          1. 6.3.5.2.1. Transfer modes
          2. 6.3.5.2.2. Reading and writing custom data formats
        3. 6.3.5.3. Deferred rendering
          1. 6.3.5.3.1. Pasting text using a deferred rendering function
    4. 6.4. Working with byte arrays
      1. 6.4.1. Reading and writing a ByteArray
        1. 6.4.1.1. ByteArray methods
        2. 6.4.1.2. The position property
        3. 6.4.1.3. The bytesAvailable and length properties
        4. 6.4.1.4. The endian property
        5. 6.4.1.5. The compress() and uncompress() methods
        6. 6.4.1.6. Reading and writing objects
      2. 6.4.2. ByteArray example: Reading a .zip file
    5. 6.5. Working with local SQL databases
      1. 6.5.1. About local SQL databases
        1. 6.5.1.1. Uses for local SQL databases
        2. 6.5.1.2. About AIR databases and database files
        3. 6.5.1.3. About relational databases
        4. 6.5.1.4. About SQL
        5. 6.5.1.5. About SQL database classes
        6. 6.5.1.6. About synchronous and asynchronous execution modes
      2. 6.5.2. Creating and modifying a database
        1. 6.5.2.1. Creating a database
        2. 6.5.2.2. Creating database tables
      3. 6.5.3. Manipulating SQL database data
        1. 6.5.3.1. Connecting to a database
        2. 6.5.3.2. Working with SQL statements
        3. 6.5.3.3. Using parameters in statements
          1. 6.5.3.3.1. Understanding statement parameters
          2. 6.5.3.3.2. Using named parameters
          3. 6.5.3.3.3. Using unnamed parameters
          4. 6.5.3.3.4. Benefits of using parameters
        4. 6.5.3.4. Retrieving data from a database
          1. 6.5.3.4.1. Executing a SELECT statement
          2. 6.5.3.4.2. Accessing SELECT statement result data
          3. 6.5.3.4.3. Defining the data type of SELECT result data
          4. 6.5.3.4.4. Retrieving SELECT results in parts
        5. 6.5.3.5. Inserting data
          1. 6.5.3.5.1. Executing an INSERT statement
          2. 6.5.3.5.2. Retrieving a database-generated primary key of an inserted row
        6. 6.5.3.6. Changing or deleting data
        7. 6.5.3.7. Working with multiple databases
        8. 6.5.3.8. Handling database errors
          1. 6.5.3.8.1. Connection errors
          2. 6.5.3.8.2. Syntax errors
          3. 6.5.3.8.3. Constraint errors
        9. 6.5.3.9. Working with database data types
      4. 6.5.4. Using synchronous and asynchronous database operations
        1. 6.5.4.1. Using synchronous database operations
          1. 6.5.4.1.1. Writing code for synchonous operations
          2. 6.5.4.1.2. Executing an operation that depends on another operation
          3. 6.5.4.1.3. Handling errors with synchronous execution
        2. 6.5.4.2. Understanding the asynchronous execution model
      5. 6.5.5. Strategies for working with SQL databases
        1. 6.5.5.1. Distributing a pre-populated database
        2. 6.5.5.2. Improving database performance
          1. 6.5.5.2.1. Use one SQLStatement instance for each SQL statement
          2. 6.5.5.2.2. Group multiple operations in a transaction
          3. 6.5.5.2.3. Minimize runtime processing
          4. 6.5.5.2.4. Avoid schema changes
        3. 6.5.5.3. Best practices for working with local SQL databases
          1. 6.5.5.3.1. Pre-create database connections
          2. 6.5.5.3.2. Reuse database connections
          3. 6.5.5.3.3. Favor asynchronous execution mode
          4. 6.5.5.3.4. Use separate SQL statements and don't change the SQLStatement's text property
          5. 6.5.5.3.5. Use statement parameters
          6. 6.5.5.3.6. Use constants for column and parameter names
    6. 6.6. Storing encrypted data
  7. 7. HTML content
    1. 7.1. About the HTML environment
      1. 7.1.1. Overview of the HTML environment
        1. 7.1.1.1. About the JavaScript environment and its relationship to the AIR runtime
        2. 7.1.1.2. About security
        3. 7.1.1.3. About plug-ins and embedded objects
      2. 7.1.2. AIR and Webkit extensions
        1. 7.1.2.1. JavaScript in AIR
          1. 7.1.2.1.1. HTML Sandboxes
          2. 7.1.2.1.2. JavaScript eval() function
          3. 7.1.2.1.3. Function constructors
          4. 7.1.2.1.4. Loading external scripts
          5. 7.1.2.1.5. The XMLHttpRequest object
          6. 7.1.2.1.6. The Canvas object
          7. 7.1.2.1.7. Cookies
          8. 7.1.2.1.8. The Clipboard object
          9. 7.1.2.1.9. Drag and Drop
          10. 7.1.2.1.10. innerHTML and outerHTML properties
          11. 7.1.2.1.11. Document.write() and Document.writeln() functions
          12. 7.1.2.1.12. Document.designMode property
          13. 7.1.2.1.13. unload events (for body and frameset objects)
          14. 7.1.2.1.14. JavaScript Window object
          15. 7.1.2.1.15. air.NativeApplication object
          16. 7.1.2.1.16. The javascript URL scheme
        2. 7.1.2.2. Extensions to HTML
          1. 7.1.2.2.1. HTML frame and iframe elements
          2. 7.1.2.2.2. HTML Canvas element
          3. 7.1.2.2.3. HTML element event handlers
          4. 7.1.2.2.4. HTML contentEditable attribute
        3. 7.1.2.3. Extensions to CSS
        4. 7.1.2.4. Unsupported standard and extended features
    2. 7.2. Programming in HTML and JavaScript
      1. 7.2.1. About the HTMLLoader class
        1. 7.2.1.1. Loading HTML content from a URL
        2. 7.2.1.2. Loading HTML content from a string
        3. 7.2.1.3. Important security rules when using HTML in AIR applications
      2. 7.2.2. Avoiding security-related JavaScript errors
        1. 7.2.2.1. Causes security-related JavaScript errors
        2. 7.2.2.2. Mapping application content to a different sandbox
        3. 7.2.2.3. eval() function
        4. 7.2.2.4. Assigning properties to an object
        5. 7.2.2.5. Creating a new function with variables available in context
        6. 7.2.2.6. Creating an object using the name of the class as a string parameter
        7. 7.2.2.7. setTimeOut() and setInterval()
        8. 7.2.2.8. Function constructor
        9. 7.2.2.9. javascript: URLs
        10. 7.2.2.10. Event callbacks assigned through onevent attributes in innerHTML and outerHTML statements
        11. 7.2.2.11. Loading JavaScript files from outside the application installation directory
        12. 7.2.2.12. document.write() and document.writeln()
        13. 7.2.2.13. Synchronous XMLHttpRequests before the load event or during a load event handler
        14. 7.2.2.14. Dynamically created script elements
      3. 7.2.3. Accessing AIR API classes from JavaScript
        1. 7.2.3.1. Using the AIRAliases.js file
      4. 7.2.4. About URLs in AIR
      5. 7.2.5. Making ActionScript objects available to JavaScript
        1. 7.2.5.1. A basic example of accessing JavaScript objects from ActionScript
        2. 7.2.5.2. Making class definitions available to JavaScript
        3. 7.2.5.3. Removing event listeners
      6. 7.2.6. Accessing DOM and JavaScript objects from ActionScript
      7. 7.2.7. Using ActionScript libraries within an HTML page
      8. 7.2.8. Converting Date and RegExp objects
      9. 7.2.9. Manipulating an HTML stylesheet from ActionScript
      10. 7.2.10. Cross-scripting content in different security sandboxes
        1. 7.2.10.1. AIR security sandboxes and JavaScript code
        2. 7.2.10.2. Loading application content into a non-application sandbox
        3. 7.2.10.3. Setting up a sandbox bridge interface
        4. 7.2.10.4. Establishing a child sandbox bridge
        5. 7.2.10.5. Establishing a parent sandbox bridge
        6. 7.2.10.6. Accessing a parent sandbox bridge during page loading
    3. 7.3. Handling HTML-related events
      1. 7.3.1. HTMLLoader events
      2. 7.3.2. Handling DOM events with ActionScript
      3. 7.3.3. Responding to uncaught JavaScript exceptions
      4. 7.3.4. Handling runtime events with JavaScript
        1. 7.3.4.1. Creating an event handler function
          1. 7.3.4.1.1. Removing event listeners in HTML pages that navigate
    4. 7.4. Scripting the HTML Container
      1. 7.4.1. Display properties of HTMLLoader objects
        1. 7.4.1.1. Basic display properties
        2. 7.4.1.2. Transparency of HTMLLoader content
        3. 7.4.1.3. Scaling HTMLLoader content
        4. 7.4.1.4. Considerations when loading SWF or PDF content in an HTML page
        5. 7.4.1.5. Advanced display properties
      2. 7.4.2. Scrolling HTML content
      3. 7.4.3. Accessing the HTML history list
      4. 7.4.4. Setting the user agent used when loading HTML content
      5. 7.4.5. Setting the character encoding to use for HTML content
      6. 7.4.6. Defining browser-like user interfaces for HTML content
        1. 7.4.6.1. About extending the HTMLHost class
        2. 7.4.6.2. Example: Extending the HTMLHost class
        3. 7.4.6.3. Handling changes to the window.location property
        4. 7.4.6.4. Handling JavaScript calls to window.moveBy(), window.moveTo(), window.resizeTo(), window.resizeBy()
        5. 7.4.6.5. Handling JavaScript calls to window.open()
        6. 7.4.6.6. Handling JavaScript calls to window.close()
        7. 7.4.6.7. Handling changes of the window.status property
        8. 7.4.6.8. Handling changes of the window.document.title property
        9. 7.4.6.9. Handling JavaScript calls to window.blur() and window.focus()
        10. 7.4.6.10. Creating windows with scrolling HTML content
      7. 7.4.7. Creating subclasses of the HTMLLoader class
  8. 8. Rich media content
    1. 8.1. Adding PDF content
      1. 8.1.1. Detecting PDF Capability
      2. 8.1.2. Loading PDF content
      3. 8.1.3. Scripting PDF content
        1. 8.1.3.1. HTML-PDF communication basics
        2. 8.1.3.2. Scripting PDF content from ActionScript
      4. 8.1.4. Known limitations for PDF content in AIR
    2. 8.2. Using digital rights management
      1. 8.2.1. Understanding the encrypted FLV workflow
      2. 8.2.2. Changes to the NetStream class
      3. 8.2.3. Using the DRMStatusEvent class
        1. 8.2.3.1. DRMStatusEvent properties
        2. 8.2.3.2. Creating a DRMStatusEvent handler
      4. 8.2.4. Using the DRMAuthenticateEvent class
        1. 8.2.4.1. DRMAuthenticateEvent properties
        2. 8.2.4.2. Creating a DRMAuthenticateEvent handler
        3. 8.2.4.3. Creating an interface for retrieving user credentials
      5. 8.2.5. Using the DRMErrorEvent class
        1. 8.2.5.1. DRMErrorEvent properties
        2. 8.2.5.2. Creating a DRMErrorEvent handler
  9. 9. Interacting with the operating system
    1. 9.1. Application launching and exit options
      1. 9.1.1. Application invocation
      2. 9.1.2. Capturing command line arguments
        1. 9.1.2.1. Example: Invocation event log
      3. 9.1.3. Launching on login
      4. 9.1.4. Browser invocation
      5. 9.1.5. Application termination
    2. 9.2. Reading application settings
      1. 9.2.1. Reading the application descriptor file
      2. 9.2.2. Getting the application and publisher identifiers
    3. 9.3. Working with runtime and operating system information
      1. 9.3.1. Managing file associations
      2. 9.3.2. Getting the runtime version and patch level
      3. 9.3.3. Detecting AIR capabilities
      4. 9.3.4. Tracking user presence
  10. 10. Networking and communications
    1. 10.1. Monitoring network connectivity
      1. 10.1.1. Detecting network connectivity changes
      2. 10.1.2. Service monitoring basics
      3. 10.1.3. Detecting HTTP connectivity
      4. 10.1.4. Detecting socket connectivity
    2. 10.2. URL requests and networking
      1. 10.2.1. Using the URLRequest class
        1. 10.2.1.1. URLRequest properties
        2. 10.2.1.2. Setting URLRequest defaults
        3. 10.2.1.3. Using AIR URL schemes in URLs
          1. 10.2.1.3.1. Using URL schemes in AIR
        4. 10.2.1.4. Prohibited URL schemes
      2. 10.2.2. Changes to the URLStream class
      3. 10.2.3. Opening a URL in the default system web browser
    3. 10.3. Inter-application communication
  11. 11. Distributing and updating applications
    1. 11.1. Distributing, Installing, and Running AIR applications
      1. 11.1.1. Installing and running an AIR application from the desktop
      2. 11.1.2. Installing and running an AIR applications from a web page
        1. 11.1.2.1. About customizing the seamless install badge.swf
        2. 11.1.2.2. Using the badge.swf file to install an AIR application
          1. 11.1.2.2.1. Installing the AIR application from a seamless install link in a web page
          2. 11.1.2.2.2. Modifying the badge.swf file
        3. 11.1.2.3. Loading the air.swf file
        4. 11.1.2.4. Checking if the AIR runtime is installed
        5. 11.1.2.5. Checking from a web page if an AIR application is installed
        6. 11.1.2.6. Installing an AIR application from the browser
        7. 11.1.2.7. Launching an installed AIR application from the browser
      3. 11.1.3. Digitally signing an AIR file
        1. 11.1.3.1. Information about code-signing certificates
        2. 11.1.3.2. About AIR code signing
        3. 11.1.3.3. About AIR publisher identifiers
        4. 11.1.3.4. About Certificate formats
        5. 11.1.3.5. Timestamps
        6. 11.1.3.6. Obtaining a certificate
        7. 11.1.3.7. Terminology
    2. 11.2. Updating AIR applications
      1. 11.2.1. About updating applications
        1. 11.2.1.1. Results of the method call
        2. 11.2.1.2. About the version string
      2. 11.2.2. Presenting a custom application update user interface
      3. 11.2.3. Downloading an AIR file to the user's computer
      4. 11.2.4. Checking to see if an application is running for the first time