Skip to content

start:

Glow Architecture

This page has two sections, one for the current architectural elements and a second section that describes the Glow integration framework which will be used to enable Glow to manage a wide collection of content types and sources seamlessly with broad support for drag-and-drop, customisation, and personalisation.

Current Architecture

The main elements are an extended Model-View-Controller architecture on top of a Domain API (JCAPI for calendaring).
  • a View, to visualize some content (for example the calendar day, week and month views) or to provide selection capability (such as the date-selector and the calendar selector)
  • a Model, to provide a standard asynchronous interface for obtaining content from a local or remote source
  • a ModelMediator, to manage a query with the Model and to mediate between the View and Model
The base Model interfaces support a ModelQuery, which returns a ModelQueryResult. Both the Model and the ModelQueryResult support change-notification (when another part of Glow, or another client changes some Model data) via a common AsyncResultListener interface.

Glow Integration Framework

There are several elements, which we just outline here (more detail will appear shortly):
Element
Description
Parcel
A Glow Parcel is a jar file that contains one or more Viewers, Commands, Folder or Store implementations. A parcel normally also contains the localised messages (and other resources such as icons) and an XML-based descriptor for integrating the Viewers and Commands into the Glow UI. Glow itself has a UIDescription that provides a skeleton for the Parcel to extend; this ensure that a newly installed Parcel cannot break the user's knowledge of the structure of the UI.
Viewer
A component for viewing an Item or a Folder. A Viewer supports one or more ItemTypes, and a sophisticated viewer may support multiple modes called aspects (for example, the existing Calendar Views will be integrated into a single Viewer that supports day, week, work-week and month aspects). There is a common FolderViewer which can provide name, icon and attribute-summary views of just about any Folder, but there can also be custom Viewers for special Folders (such as a mailbox) or for handling groups of Items of a single ItemType within a Folder (such as a slideshower for images or an mp3 file player) that may contain other kinds of Item (which are ignored in this custom view).
 Item
Item is the base type for just about every interesting data object, including a calendar appointment, a task, a contact, a document, a mail or instant message. An Item has an AttributeSet, and it can have a dynamic CommandSet in addition to any Commands that are assciated with the ItemType(s) of the Item.
ItemType
Similar to the OO concept of a class, an ItemType defines the data attributes of an Item (using an AttributeSetDefinition) and the Commands (via one or more CommandSets).
Command
A Command has a short name;  and a localised user-name and short description. It supports one or more methods for invocation, depending if it is a simple action, a toggle, or an option Command. A Command may also have an associated UILocation, which describes how to integrate the Command into the Glow UI.
CommandSet
A collection of Commands. A CommandSet may have a default UILocation that each Command may append to or actually override.
Folder
The Folder is the counter-part to Item; it is a container or a collection for Items. A Folder is built on a Store which may perform authentication via a Sesssion.
Store
A Store provides common read/write persistence support to all Items and Folders on that Store. Examples of Stores include: a single calendar, a mailbox, a filesystem, a web-site. A Store may also have a Session which
Session
A Session manages authentication information, interacts with the Authenticator service and and handles transitions between online and offline.