net.sf.jzeno.echo.components
Class CustomRenderingComponent

java.lang.Object
  extended by nextapp.echo.AbstractComponent
      extended by net.sf.jzeno.echo.components.CustomComponent
          extended by net.sf.jzeno.echo.components.CustomRenderingComponent
All Implemented Interfaces:
java.io.Serializable, BindingTarget, PropertyComponent, RebindableComponent, EventSink, EventSource, Component, FastComponent, FastComponentContainer
Direct Known Subclasses:
CloseDivComponent, ExternalSiteViewer, OpenDivComponent, PreloadImagesComponent

public abstract class CustomRenderingComponent
extends CustomComponent

Base class for creating custom rendering component. This class represents a by-pass of jZeno's rendering abstraction layers (e.g. existing 'dynamic components'), and allows you to take full control over the HTML created for a component. Basically you can create a custom component that has 2 extra functions that allow full control over generated HTML :

  1. render() : This method returns a rendered HTML string for you component.

The main design goal of this class is to make writing custom rendered components extremely easy, to allow people to bypass jZeno is a small set of situations where this is necessary. It is not a good idea if you are using CustomRenderingComponents for 90% of your application ! More efficient implementations are possible for that. (i.e. a custom peer component that renders out Elements i.o. Strings).

See Also:
Serialized Form

Field Summary
 
Fields inherited from interface nextapp.echo.Component
BACKGROUND_CHANGED_PROPERTY, CHILDREN_CHANGED_PROPERTY, ENABLED_CHANGED_PROPERTY, FONT_CHANGED_PROPERTY, FOREGROUND_CHANGED_PROPERTY, IDENTIFIER_CHANGED_PROPERTY, LOCALE_CHANGED_PROPERTY, MODEL_CHANGED_PROPERTY, SELECTABLE_CHANGED_PROPERTY, STYLE_BACKGROUND, STYLE_FONT, STYLE_FOREGROUND, UPDATE_PROPERTY, VISIBLE_CHANGED_PROPERTY
 
Constructor Summary
CustomRenderingComponent()
           
CustomRenderingComponent(java.lang.Class beanClass, java.lang.String property, java.lang.String constructionHints)
           
 
Method Summary
protected  java.lang.String createUpdateScript(java.lang.String valueScript, boolean immediate)
          This method creates a JavaScript function-call that you can use inside of the render() method to trigger updates to the component from the client.
protected abstract  java.lang.String getHtml()
           Render your component into HTML here.
protected abstract  java.lang.String getJavascript()
           Return some javascript that you which to execute for the current rendering of your component.
protected abstract  java.lang.String getJavascriptLibrary()
           If you whish to use some javascript functions/libraries you can return those in this method.
 boolean isRebound()
           
 void rebind()
           This operation causes the component to reset it's content to that of the domain model.
 void resetRebound()
           
protected abstract  void update(java.lang.String input)
           If you want to send information from you client back to the server to update state there, you can use the createUpdateScript function to generate a javascript function-call that will trigger an update.
 
Methods inherited from class net.sf.jzeno.echo.components.CustomComponent
addValidator, fireActionEvent, fireActionEvent, fireActionEvent, getActionCommand, getBean, getBeanClass, getDecorator, getNullObject, getProperty, getValidationErrors, getValidators, getValue, isBound, isMarkedInvalid, isReadOnly, isRequired, isValid, markInvalid, markValid, preRender, removeValidator, setActionCommand, setBean, setBeanClass, setDecorator, setNullObject, setProperty, setReadOnly, setRequired, setValue, traceValue, validate
 
Methods inherited from class nextapp.echo.AbstractComponent
add, add, addHierarchyListener, addPropertyChangeListener, applyStyle, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getClientId, getComponent, getComponentCount, getComponents, getEchoInstance, getFont, getForeground, getIdentifier, getListenerList, getLocale, getParent, indexOf, init, isAncestorOf, isDifferent, isEnabled, isFocused, isRecursivelyVisible, isRegistered, isSelectableForScriptRecorder, isShowing, isVisible, processHierarchyEvent, remove, remove, removeAll, removeHierarchyListener, removePropertyChangeListener, setBackground, setClientId, setEnabled, setFocused, setFont, setForeground, setIdentifier, setLocale, setParent, setRegistered, setSelectableForScriptRecorder, setVisible, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CustomRenderingComponent

public CustomRenderingComponent()

CustomRenderingComponent

public CustomRenderingComponent(java.lang.Class beanClass,
                                java.lang.String property,
                                java.lang.String constructionHints)
Method Detail

createUpdateScript

protected java.lang.String createUpdateScript(java.lang.String valueScript,
                                              boolean immediate)
This method creates a JavaScript function-call that you can use inside of the render() method to trigger updates to the component from the client. Such an update can be immediate or lazy. Immediate updates will trigger a POST operation to the server, lazy updates will queue updates untill some other component triggers a POST to the server.

Parameters:
valueScript -
immediate -
Returns:

getHtml

protected abstract java.lang.String getHtml()

Render your component into HTML here.

Returns:

getJavascriptLibrary

protected abstract java.lang.String getJavascriptLibrary()

If you whish to use some javascript functions/libraries you can return those in this method. If you return null, no javascript will be available to you rendered HTML. The implementation could take the form of returning a string constant, or it could load a .js file from disk, and return the content, or it could load a JavaScript library as a resource from you application classpath, etc...

Returns:

update

protected abstract void update(java.lang.String input)

If you want to send information from you client back to the server to update state there, you can use the createUpdateScript function to generate a javascript function-call that will trigger an update.

Parameters:
input -

getJavascript

protected abstract java.lang.String getJavascript()

Return some javascript that you which to execute for the current rendering of your component.

Returns:

rebind

public void rebind()
Description copied from interface: RebindableComponent

This operation causes the component to reset it's content to that of the domain model.

Specified by:
rebind in interface RebindableComponent
Overrides:
rebind in class CustomComponent

isRebound

public boolean isRebound()

resetRebound

public void resetRebound()