$form

 

The form demonstrates a custom RichTextArea control using the TinyMCE JavaScript library. The control overrides the Field method getHtmlImports() to include its JavaScript imports automatically:
protected static final String HTML_IMPORTS =
    "<script type=\"text/javascript\" src=\"{0}/tiny_mce/tiny_mce.js\"></script>\n";

public String getHtmlImports() {
    String[] args = { getContext().getRequest().getContextPath() };
    return MessageFormat.format(HTML_IMPORTS, args);
} 
The control is rendered using a Velocity template (/examples/control/RichTextArea.htm) which loaded from the classpath:
${textArea}
<script type="text/javascript">
tinyMCE.init({
   theme : "${theme}",
   mode : "exact",
   elements : "${id}"
});
</script>
The control's toString() method merges the RichTextArea.htm template and the model returning rendred HTML.
public String toString() {
    Map model = new HashMap();
    model.put("textArea", super.toString());
    model.put("theme", getTheme());
    model.put("id", getId());

    return getContext().renderTemplate(getClass(), model);
}