Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
{scrollbar}

h1. XUL 1.0 Extensions and the Pentaho XUL Namespace

The Pentaho XUL Specification

...

The Pentaho XUL Namespace

...

 Extension adds extra functionality and components that do not exist in the Mozilla XUL 1.0 specification. These Pentaho-specific elements are explained in later portions of this guide. In order to use them, you must use the Pentaho namespace prefix:

[http://www.pentaho.org/2008/xul

...

Example:

Code Block
XMLXML

|http://www.pentaho.org/2008/xul]

This must be placed in the top level node in your XUL document with a namespace prefix, along with the default XUL namespace:

{code}
<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"* >
...
{code}

If another engine processes a XUL file that contains Pentaho-specific XUL extensions  >
	
        ... 	

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:

Code Block

 ...

without calling the Pentaho namespace, or if the appropriate handlers are not available for the extended references, then the XUL engine will ignore those attributes and elements.

h2. Extension Attributes Defined for All XUL Elements

The following attributes are common extensions to all XUL elements:

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.

customclass 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, consider the following definition:

{code}
<label id="custom-url-label" value="Custom Connection URL:" />
<textbox pen:customclass="variabletextbox" id="custom-url-text" />
{code}
...
Since the XUL *textbox* element renders an implementation of the *XulTextbox* interface, then the class

...

 that the *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. This is the most common way to inject a customized component into the framework.

{scrollbar}