This package provides a strategy for rendering complex components. A
complex component is any component that consists of multiple
sub-components. The {@link com.sun.rave.web.ui.renderer.template.TemplateRenderer}
is the actual Renderer class, the other files in this package provide support for creating and
holding the LayoutDefinition information. While
{@link com.sun.rave.web.ui.renderer.template.TemplateRenderer}
could also render a simple component, the flexibility and extensibility
capabilities are probably overkill for small components.
The {@link com.sun.rave.web.ui.renderer.template.TemplateRenderer}
is driven off a "template". The template is actually a tree data
structure consisting of "{@link com.sun.rave.web.ui.component.util.descriptors.LayoutElement}"
objects. This structure is walked in order to render the component.
This data structure may be populated programatically, however, a
{@link com.sun.rave.web.ui.renderer.template.LayoutDefinitionManager}
is the recommended way to obtain the structure. A
{@link com.sun.rave.web.ui.renderer.template.LayoutDefinitionManager}
is responsible for locating a {@link com.sun.rave.web.ui.component.util.descriptors.LayoutDefinition}
for a particular component (such as a table). How this is done is left
to implementations of {@link com.sun.rave.web.ui.renderer.template.LayoutDefinitionManager}.
One implementation currently exists which populates the
{@link com.sun.rave.web.ui.component.util.descriptors.LayoutElement}
tree from an XML file: {@link com.sun.rave.web.ui.renderer.template.xml.XMLLayoutDefinitionManager}.
Different types of {@link com.sun.rave.web.ui.component.util.descriptors.LayoutElement}
objects are used to effect the output.
{@link com.sun.rave.web.ui.component.util.descriptors.LayoutElement}
are delegated the encode responsibilty so that they may determine
whether and how their child components are encoded. See the
{@link com.sun.rave.web.ui.component.util.descriptors.LayoutElement}
documentation and the implementing classes of
{@link com.sun.rave.web.ui.component.util.descriptors.LayoutElement}
for more information.
|