org.apache.tapestry
Interface IComponent

All Superinterfaces:
ILocatable, ILocationHolder, IRender
All Known Subinterfaces:
IAction, IDirect, IExternalPage, IForm, IFormComponent, ILinkComponent, IPage, ITableModelSource, ITableRendererListener, ITreeModelSource
All Known Implementing Classes:
AbstractComponent, AbstractFormComponent, AbstractLinkComponent, AbstractPage, AbstractPostfield, AbstractTableRowComponent, AbstractTableViewComponent, AbstractTextField, ActionLink, Any, BaseComponent, BasePage, Block, Body, Button, Card, Checkbox, Choose, Conditional, DateField, DatePicker, Deck, Delegator, DirectLink, Do, Exception, ExceptionDisplay, ExternalLink, FieldLabel, Foreach, Form, FormConditional, FormTable, Frame, GenericLink, Go, Hidden, Image, Image, ImageSubmit, InheritInformalAny, Input, Insert, InsertText, Inspector, InspectorButton, LinkSubmit, ListEdit, MaskEdit, MultiplePropertySelection, NumericField, OnEvent, Option, Option, PageLink, Palette, PopupLink, Postfield, PropertySelection, PropertySelection, Radio, RadioGroup, RenderBlock, RenderBody, Rollover, Script, Select, Select, SelectionField, Selector, ServiceLink, Setvar, Shell, ShowEngine, ShowProperties, ShowSpecification, ShowTemplate, SimpleTableColumnComponent, SimpleTableColumnFormComponent, StaleLink, Submit, Table, TableColumns, TableFormPages, TableFormRows, TablePages, TableRows, TableValues, TableView, TextArea, TextField, Timer, Tree, TreeDataView, TreeNodeView, TreeTable, TreeTableDataView, TreeTableNodeViewDelegator, TreeView, Upload, ValidatingTextField, ValidField, ViewTabs, When, WMLException, WMLStaleLink

public interface IComponent
extends IRender, ILocationHolder

Defines an object which may be used to provide dynamic content on a Tapestry web page.

Components are created dynamically from thier class names (part of the IComponentSpecification).

Version:
$Id: IComponent.java 243791 2004-02-19 17:38:13Z hlship $
Author:
Howard Leiws Ship

Method Summary
 void addAsset(String name, IAsset asset)
          Adds an asset to the component.
 void addBody(IRender element)
          Adds a new renderable element to the receiver's body.
 void addComponent(IComponent component)
          Adds a component to a container.
 void finishLoad(IRequestCycle cycle, IPageLoader loader, IComponentSpecification specification)
          Allows a component to finish any setup after it has been constructed.
 IAsset getAsset(String name)
          Returns the named asset, or null if not found.
 Map getAssets()
          Returns the asset map for the component, which may be empty but will not be null.
 IBinding getBinding(String name)
          Returns the binding with the given name or null if not found.
 Collection getBindingNames()
          Returns a Collection of the names of all bindings (which includes bindings for both formal and informal parameters).
 Map getBindings()
          Returns a Map of the bindings for this component; this includes informal parameters as well as formal bindings.
 IComponent getComponent(String id)
          Retrieves an contained component by its id.
 Map getComponents()
          Returns the contained components as an unmodifiable Map.
 IComponent getContainer()
          Returns the component which embeds the receiver.
 String getExtendedId()
          Returns a string identifying the name of the page and the id path of the reciever within the page.
 String getId()
          Returns the simple id of the component, as defined in its specification.
 String getIdPath()
          Returns the qualified id of the component.
 String getMessage(String key)
          Returns a localized string message.
 IMessages getMessages()
          Returns component strings for the component.
 INamespace getNamespace()
          Returns the INamespace in which the component was defined (as an alias).
 IPage getPage()
          Returns the page which ultimately contains the receiver.
 Object getProperty(String propertyName)
          Gets a property of a component.
 IComponentSpecification getSpecification()
          Returns the specification which defines the component.
 String getString(String key)
          Deprecated. To be removed in 3.1, use getMessage(String).
 void renderBody(IMarkupWriter writer, IRequestCycle cycle)
          Invoked to make the receiver render its body (the elements and components its tag wraps around, on its container's template).
 void setBinding(String name, IBinding binding)
          Adds a binding to a container.
 void setContainer(IComponent value)
          Sets the container of the component.
 void setId(String value)
          Sets the id of the component.
 void setNamespace(INamespace namespace)
          Sets the INamespace for the component.
 void setPage(IPage value)
          Sets the page which ultimiately contains the component.
 void setProperty(String propertyName, Object value)
          Sets a property of a component.
 void setSpecification(IComponentSpecification value)
          Sets the specification used by the component.
 
Methods inherited from interface org.apache.tapestry.IRender
render
 
Methods inherited from interface org.apache.tapestry.ILocationHolder
setLocation
 
Methods inherited from interface org.apache.tapestry.ILocatable
getLocation
 

Method Detail

addAsset

void addAsset(String name,
              IAsset asset)
Adds an asset to the component. This is invoked from the page loader.


addComponent

void addComponent(IComponent component)
Adds a component to a container. Should only be called during the page loading process, which is responsible for any checking.

See Also:
IPageLoader

addBody

void addBody(IRender element)
Adds a new renderable element to the receiver's body. The element may be either another component, or static HTML. Such elements come from inside the receiver's tag within its container's template, and represent static text and other components.

The method renderBody(IMarkupWriter, IRequestCycle) is used to render these elements.

Since:
2.2

getAssets

Map getAssets()
Returns the asset map for the component, which may be empty but will not be null.

The return value is unmodifiable.


getAsset

IAsset getAsset(String name)
Returns the named asset, or null if not found.


getBinding

IBinding getBinding(String name)
Returns the binding with the given name or null if not found.

Bindings are added to a component using setBinding(String,IBinding).


getBindingNames

Collection getBindingNames()
Returns a Collection of the names of all bindings (which includes bindings for both formal and informal parameters).

The return value is unmodifiable. It will be null for a page, or may simply be empty for a component with no bindings.


getBindings

Map getBindings()
Returns a Map of the bindings for this component; this includes informal parameters as well as formal bindings.

Since:
1.0.5

getComponent

IComponent getComponent(String id)
Retrieves an contained component by its id. Contained components have unique ids within their container.

Throws:
ApplicationRuntimeException - runtime exception thrown if the named component does not exist.

getContainer

IComponent getContainer()
Returns the component which embeds the receiver. All components are contained within other components, with the exception of the root page component.

A page returns null.


setContainer

void setContainer(IComponent value)
Sets the container of the component. This is write-once, an attempt to change it later will throw an ApplicationRuntimeException.


getExtendedId

String getExtendedId()
Returns a string identifying the name of the page and the id path of the reciever within the page. Pages simply return their name.

See Also:
getIdPath()

getId

String getId()
Returns the simple id of the component, as defined in its specification.

An id will be unique within the component which contains this component.

A page will always return null.


setId

void setId(String value)
Sets the id of the component. This is write-once, an attempt to change it later will throw an ApplicationRuntimeException.


getIdPath

String getIdPath()
Returns the qualified id of the component. This represents a path from the page to this component, showing how components contain each other.

A page will always return null. A component contained on a page returns its simple id. Other components return their container's id path followed by a period and their own name.

See Also:
getId()

getPage

IPage getPage()
Returns the page which ultimately contains the receiver. A page will return itself.


setPage

void setPage(IPage value)
Sets the page which ultimiately contains the component. This is write-once, an attempt to change it later will throw an ApplicationRuntimeException.


getSpecification

IComponentSpecification getSpecification()
Returns the specification which defines the component.


setSpecification

void setSpecification(IComponentSpecification value)
Sets the specification used by the component. This is write-once, an attempt to change it later will throw an ApplicationRuntimeException.


renderBody

void renderBody(IMarkupWriter writer,
                IRequestCycle cycle)
Invoked to make the receiver render its body (the elements and components its tag wraps around, on its container's template). This method is public so that the RenderBody component may operate.

Since:
2.2

setBinding

void setBinding(String name,
                IBinding binding)
Adds a binding to a container. Should only be called during the page loading process (which is responsible for eror checking).

See Also:
IPageLoader

getComponents

Map getComponents()
Returns the contained components as an unmodifiable Map. This allows peer components to work together without directly involving their container ... the classic example is to have an Insert work with an enclosing Foreach.

This is late addition to Tapestry, because it also opens the door to abuse, since it is quite possible to break the "black box" aspect of a component by interacting directly with components it embeds. This creates ugly interelationships between components that should be seperated.

Returns:
A Map of components keyed on component id. May return an empty map, but won't return null.

finishLoad

void finishLoad(IRequestCycle cycle,
                IPageLoader loader,
                IComponentSpecification specification)
Allows a component to finish any setup after it has been constructed.

The exact timing is not specified, but any components contained by the receiving component will also have been constructed before this method is invoked.

As of release 1.0.6, this method is invoked before bindings are set. This should not affect anything, as bindings should only be used during renderring.

Release 2.2 added the cycle parameter which is, regretfully, not backwards compatible.

Since:
0.2.12

getString

String getString(String key)
Deprecated. To be removed in 3.1, use getMessage(String).

Returns a localized string message. Each component has an optional set of localized message strings that are read from properties files.

Parameters:
key - the key used to locate the message
Returns:
the localized message for the key, or a placeholder if no message is defined for the key.
Since:
2.0.4

getMessage

String getMessage(String key)
Returns a localized string message. Each component has an optional set of localized message strings that are read from properties files.

Parameters:
key - the key used to locate the message
Returns:
the localized message for the key, or a placeholder if no message is defined for the key.
Since:
3.0

getMessages

IMessages getMessages()
Returns component strings for the component.

Since:
3.0

getNamespace

INamespace getNamespace()
Returns the INamespace in which the component was defined (as an alias).

Since:
2.2

setNamespace

void setNamespace(INamespace namespace)
Sets the INamespace for the component. The namespace should only be set once.

Since:
2.2

setProperty

void setProperty(String propertyName,
                 Object value)
Sets a property of a component.

Parameters:
propertyName - the property name
value - the provided value

getProperty

Object getProperty(String propertyName)
Gets a property of a component.

Parameters:
propertyName - the property name
Returns:
Object the value of property