Previous | Next | WireHose Developers Guide |
Like all WebObjects web applications, a WireHose application consists of pages and components. The WireHoseLayoutSupport framework provides a very dynamic, flexible system for controlling your application's appearance and behavior.
To achieve this flexibility, WireHose introduces the concepts of layouts, pages, wrappers and areas. These are defined in a configuration file known as the application's layout dictionary.
WireHose provides the ability for your application to have multiple user interface appearances (also known as being "skinnable"). Each separate look in a WireHose application is called a layout.
A WireHose application can support multiple branded affiliates from a single codebase, as in an application service provider environment. Or it can allow the user to personalize the look of their page in addition to personalizing its content. You can also use this ability to support multiple output formats, such as XML, HDML, SMIL, RSS, RDF, etc.
You can substitute pages and components for a given layout; the session helper uses the layout dictionary to determine which components to use for each layout.
Each page is identified by its canonical name, which is typically the name of a page's superclass. For example, the canonical name for a search results page is "WHSearchResultsPage". You can provide a subclass of WHSearchResultsPage, such as "MySearchResultsPage", and with an appropriate entry in the layout dictionary, have it be used only when a particular layout is active.
Each layout has an associated wrapper, which defines the
look for that layout. A wrapper component will include the enclosing
<HTML><BODY>...</BODY></HTML>
tags, and provides a WOComponentContent in which pages are rendered.
WireHose page components therefore do not usually contain these tags;
rather, they use a WOSwitchComponent to switch in the appropriate
wrapper for the current layout via a
helper.currentWrapper
binding. This allows a page
component to be used in multiple layouts.
Wrappers and pages also may define multiple areas. For
example, a three-column layout may define three areas, "left",
"middle" and "right", while another layout may include only a "main"
area. Each of a user's channels are mapped to a particular area
through its areaName
property.
Copyright ©2000-2003 Gary Teter. All rights reserved. WireHose is a trademark of Gary Teter.