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, ActionLink, DirectLink, Form, FormTable, InspectorButton, Palette, ShowTemplate, SimpleTableColumnComponent, SimpleTableColumnFormComponent, Table, TableView, TreeTableNodeViewDelegator, TreeView, ValidField

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,v 1.10 2004/01/19 21:32:10 hlship Exp $
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

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


addComponent

public 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

public 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

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

The return value is unmodifiable.


getAsset

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


getBinding

public 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

public 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

public 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

public 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

public 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

public 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

public 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

public 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

public 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

public 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

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


setPage

public 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

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


setSpecification

public 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

public 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

public 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

public 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

public 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

public 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

public 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

public IMessages getMessages()
Returns component strings for the component.

Since:
3.0

getNamespace

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

Since:
2.2

setNamespace

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

Since:
2.2

setProperty

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

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

getProperty

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

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