com.primix.tapestry
Interface IComponent

All Superinterfaces:
IRender
All Known Subinterfaces:
IAction, IDirect, IExternalPage, IForm, IFormComponent, IPage, IServiceLink, IValidatingTextField
All Known Implementing Classes:
AbstractComponent

public interface IComponent
extends IRender

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 ComponentSpecification).

Version:
$Id: IComponent.java,v 1.19 2001/09/12 20:45:12 hship Exp $
Author:
Howard Ship

Method Summary
 void addAsset(java.lang.String name, IAsset asset)
          Adds an asset to the component.
 void addComponent(IComponent component)
          Adds a component to a container.
 void addWrapped(IRender element)
          Adds a new renderable element to the receiver.
 void finishLoad(IPageLoader loader, ComponentSpecification specification)
          Allows a component to finish any setup after it has been constructed.
 IAsset getAsset(java.lang.String name)
          Returns the named asset, or null if not found.
 java.util.Map getAssets()
          Returns the asset map for the component, which may be null.
 IBinding getBinding(java.lang.String name)
          Returns the binding with the given name or null if not found.
 java.util.Collection getBindingNames()
          Returns a Collection of the names of all bindings (which includes bindings for both formal and informal parameters).
 java.util.Map getBindings()
          Returns a Map of the bindings for this component; this includes informal parameters as well as formal bindings.
 IComponent getComponent(java.lang.String id)
          Retrieves an contained component by its id.
 java.util.Map getComponents()
          Returns the contained components as an unmodifiable Map.
 IComponent getContainer()
          Returns the component which embeds the receiver.
 java.lang.String getExtendedId()
          Returns a string identifying the name of the page and the id path of the reciever within the page.
 java.lang.String getId()
          Returns the simple id of the component, as defined in its specification.
 java.lang.String getIdPath()
          Returns the qualified id of the component.
 IPage getPage()
          Returns the page which ultimately contains the receiver.
 ComponentSpecification getSpecification()
          Returns the specification which defines the component.
 void renderWrapped(IResponseWriter writer, IRequestCycle cycle)
          Invoked to make the receiver render any elements it wraps.
 void setBinding(java.lang.String name, IBinding binding)
          Adds a binding to a container.
 void setContainer(IComponent value)
          Sets the container of the component.
 void setId(java.lang.String value)
          Sets the id of the component.
 void setPage(IPage value)
          Sets the page which ultimiately contains the component.
 void setSpecification(ComponentSpecification value)
          Sets the specification used by the component.
 
Methods inherited from interface com.primix.tapestry.IRender
render
 

Method Detail

addAsset

public void addAsset(java.lang.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

addWrapped

public void addWrapped(IRender element)
Adds a new renderable element to the receiver. The element may be either another component, or static HTML.

getAssets

public java.util.Map getAssets()
Returns the asset map for the component, which may be null.

The return value is unmodifiable.


getAsset

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

getBinding

public IBinding getBinding(java.lang.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 java.util.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 java.util.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(java.lang.String id)
Retrieves an contained component by its id. Contained components have unique ids within their container.
Throws:
NoSuchComponentException - 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 java.lang.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 java.lang.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(java.lang.String value)
Sets the id of the component. This is write-once, an attempt to change it later will throw an ApplicationRuntimeException.

getIdPath

public java.lang.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 ComponentSpecification getSpecification()
Returns the specification which defines the component.

setSpecification

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

renderWrapped

public void renderWrapped(IResponseWriter writer,
                          IRequestCycle cycle)
                   throws RequestCycleException
Invoked to make the receiver render any elements it wraps. This is typically invoked by the receiver itself. This method is public so that the InsertWrapped component may operate.

setBinding

public void setBinding(java.lang.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 java.util.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.


finishLoad

public void finishLoad(IPageLoader loader,
                       ComponentSpecification specification)
                throws PageLoaderException
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.

Since:
0.2.12