Cairngorm Libraries

Introduction

Cairngorm 3 provides a set of optional Flex libraries released under the Cairngorm License. These are designed to support the Cairngorm 3 architecture by providing utilities for navigation, validation, module loading, reduction of view behaviour, task processing and popup management.

Several of the Cairngorm 3 libraries are implemented as extensions to the Parsley Application Framework. In order to take advantage of these libraries, you also need to use Parsley. However, other Cairngorm libraries, such as Observer, Popup, Task and Validation are independent of any third-party framework. The Cairngorm 3 Architecture can also be applied with other third-party libraries and frameworks.

Several of the Cairngorm 3 libraries are currently in beta and subject to change, but you are encouraged to browse the source code, try them out and submit feedback. For more information about retrieving and following the source code of the SVN repository, click here. The Observer, Task, Popup and Validation libraries have been used in production for several years, but Cairngorm 3 marks their first official open-source release.

Overview of Libraries

A short summary of each library follows, together with links to the download, source code and documentation.

Observer Library 1.0

The Cairngorm Observer library provides a set of non-visual components for declaration in MXML that observe other objects and react to changes in some way and execute view behaviour. These components help to reduce the amount of Script-block logic required in MXML components.

Popup Library 1.0

The Cairngorm Popup library contains components for managing the opening, closure and general behavior of popups. They are designed to minimize Script-block logic in MXML components and to reduce code duplication across applications that manage multiple popups.

Task Library 1.0

The Cairngorm Task library provides an abstraction for performing tasks in sequence and parallel. It might be used for coordinating the start-up sequence of an application or for managing a series of asynchronous processes that need to be performed in a certain order.

Validation Library 1.0

The Cairngorm Validation library is designed to simplify validation of user input and other data. Instead of declaring validators individually in MXML and coordinating them manually, a group of validators can be defined using the ValidatorGroup component. The validity of the whole group can then be determined as one. Validator groups can be nested and detached from the view and applied to other layers of an application, such as a domain model. Additional components are provided for observing validation rules and updating view components to highlight validation errors.

Integration Library 0.1 - Parsley Extension - beta

The integration library provides utilities to loosely-couple concerns of the communication with external environments with other client side architectural layers. Aside from sending and retrieving data, it also offers structures to manage global error handling, conflict resolution, and offers presentation components access progress and error information in a loosely coupled way. Supported are currently RPC, data management using LCDS, and LocalConnection. The current version is implemented as a Parsley 2 extension.

Module Library 0.1 - Parsley Extension - beta

The Cairngorm Module library is an extension to the Parsley Application Framework designed to simplify the configuration, loading and displaying of modular content. It contains infrastructure class, view components and a mechanism for loading modular content on demand in response to Parsley messages. The library is in beta and expected to change before release 1.0.

Navigation Library 0.1 - Parsley Extension - beta

The Cairngorm Navigation library provides utilities to ease the creation of point-to-point navigations, global and local history tracking, wizards, and enter and exit interceptions. It can reduce the amount of Script-block logic needed by allowing dedicated objects to control navigational concerns. The current version is implemented as a Parsley 2 extension.