The Pentaho XUL Specification Extension exists to accommodate extended functionality and components that are not currently represented in the Mozilla XUL specification. The elements and attributes listed below must be prefixed by the Pentaho namespace prefix in order for the Pentaho XUL Framework to recognize and render them properly. If another engine is processing the XUL, or the appropriate handlers are not available for the extended references, then the attribute or element will be ignored.
The Pentaho XUL Namespace
The Pentaho XUL namespace is "http://www.pentaho.org/2008/xul". When using extensions, this should be placed on the top level node in your XUL document with a namespace prefix, along with the XUL namespace as default.
Example:
<window id="general-datasource-window" title="Database Connection" orient="vertical" height="605" width="700" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:pen="http://www.pentaho.org/2008/xul" > ...
Extension Elements
Extension Attributes
Extension Attributes Defined for All XUL Elements
The following attributes are common extensions to all XUL elements:
customclass
The customclass attribute allows you to override one of the standard component rendering classes with a custom class for that element. The String value of the customclass element should be the name of the handler that is mapped to the custom classname in the framework's loading engine.
The custom class is required to implement the same interface that the standard element implements, in order to keep the functional code clean (without references to the custom components).
For example, if I declare the following definition:
... <label id="custom-url-label" value="Custom Connection URL:" /> <textbox pen:customclass="variabletextbox" id="custom-url-text" /> ...
Since the XUL textbox element renders an implementation of the XulTextbox interface, then the class that my "variabletextbox" name maps to must also implement the XulTextbox interface. For an understanding of what interfaces are implemented for which elements, download the source and inspect the implementations of the XulLoader interface. The XulLoader impl classes hold the references to the handler mappings (element to implementing renderer Java class name).
This is the most common way to "inject" a customized component into the framework.