Creating a Dialog Definition Document

Revised 10/18/02; HP Restricted

Some features will not be generally available until the release of Kahuna 4.5.
Use of these features with Kahuna 4.13 requires installing a
patch available on The Collective.


Preliminaries

Every dialog definition document should begin by specifying the xml version and DOCTYPE.
<?xml version="1.0"?>
<!DOCTYPE dialog SYSTEM
"http://collective.cv.hp.com/kahuna/official/dialog.dtd/current/dialog.dtd">

dialog units

All sizes in a dialog definition document are in dialog units, which is roughly equal to one-quarter of an "X" character's height (for vertical sizes) or width (for horizontal sizes).


The dialog element

The root element of a dialog definition document is the dialog element.

Dialog elements can contain any number of layout devices

and input widgets Following the input widges, a dialog may optionally have a closeAfter element, which automatically closes the dialog after a specified time.

In addition, every dialog must have an okButton, and may have an optional cancelButton, stopButton, and helpButton.

<!ELEMENT dialog ((box | strut | spring | label | image | text | password | textArea | resourceAddress | webBrowser | check | radio | combo)*, okButton, cancelButton?, stopButton?, helpButton?)>
<!ATTLIST dialog
        title CDATA #IMPLIED
        type (box1) "box1"
        >
Example:
<dialog type="box1" title="Introduce Yourself">
   <label>Please enter your name:</label>
   <text onCloseStore="userName"/>
   <okButton/>
</dialog>
All attributes are optional.
type
Specifies the type of dialog box. The only type currently supported is "box1".
title
Specifies the text to appear in the title bar of the dialog box.

The box element

To facilitate layout, you can place input widgets in boxes, along with invisible struts and springs. Struts occupy a specified minimum amount of space, and springs push other widgets and struts either up or down (in a vertical box) or left or right (in a horizontal box).

A box can contain any number of other boxes, struts, springs, and input widgets.

<!ELEMENT box ((box | strut | spring | label | image | text | password | textArea | resourceAddress | webBrowser | check | radio | combo)*)>
<!ATTLIST box
        direction (vertical|horizontal) #REQUIRED
        scrolls   (true|false)          "false"
        forEach   CDATA                 #IMPLIED
        >
Example:
<box direction="horizontal">
    <label>Name:</label>
    <strut size="6"/>
    <text onCloseStore="name"/>
</box>
Every box must specify its direction. Other attributes are optional.
direction
A vertical box contains one or more widgets, struts, and springs, arranged in a vertical column. A horizontal box contains one or more widgets, struts, and springs, arranged horizontally.
forEach
A script variable. If the script variable object contains one or more keys, the box and all its contents will be repeated for each key.
scrolls
If a box contains a repeating layout, specifies whether those repeating layouts should appear in a scroll pane.

The strut element

Struts are invisible objects which occupy a specified minimum amount of space in a layout. Struts in vertical boxes have vertical size; struts in horizontal boxes have horizontal size. Use struts to enforce spacing between input widgets.
<!ELEMENT strut EMPTY>
<!ATTLIST strut
        size CDATA #REQUIRED     
        >
Example:
<label>Name:</label>
<strut size="6"/>
<text onCloseStore="name"/>
Every strut must specify its size.
size
The minimum space which the strut will occupy, in dialog units.

The spring element

Springs are invisible objects which occupy all the extra space in a layout. Springs force other objects either up or down (in a vertical box) or left or right (in a horizontal box).
<!ELEMENT spring EMPTY>
Example. To force a label object to the right side of a layout:
<box direction="horizontal">
    <spring/>
    <label>Why me?</label>
</box>

The label element

A label may specify its initial text statically or load it dynamically using the onLoadRecall attribute.
<!ELEMENT label (#PCDATA)>
<!ATTLIST label
        onLoadRecall CDATA #IMPLIED     
        width        CDATA #IMPLIED
        height       CDATA #IMPLIED  
        >
Example:
<label>User name:</label>
<strut size="6"/>
<label onLoadRecall="userName"/>
All attributes are optional.
onLoadRecall
The script variable from which the label will dynamically load its text.
width
The absolute width of the label, in dialog units. If the label's text requires more space, it will be truncated.
height
The absolute height of the label, in dialog units.

The image element

This feature will not be generally available until the release of Kahuna 4.5.
Use of this feature with Kahuna 4.13 requires installing a
patch available on The Collective.

An image simply displays a static image. Images with a width or height but no source attribute simply take up space.
<!ELEMENT image EMPTY>
<!ATTLIST image
        source       CDATA #IMPLIED  
        width        CDATA #IMPLIED
        height       CDATA #IMPLIED  
        >
Example:
<image source="pic_data.jpg" />
All attributes are optional.
source
The resource address from which the image will load.
width
The absolute width of the image, in dialog units. The image will be scaled to the specified width.
height
The absolute height of the image, in dialog units. The image will be scaled to the specified height.

The text element

Text elements are single line text fields. A text field may specify its initial text statically or load it dynamically using the onLoadRecal attribute.
<!ELEMENT text (#PCDATA)>
<!ATTLIST text
        onLoadRecall    CDATA #IMPLIED     
        onCloseStore    CDATA #IMPLIED     
        width           CDATA #IMPLIED
        height          CDATA #IMPLIED
        validatePattern CDATA #IMPLIED     
        >
Example:
<label>Pixels:</label>
<text onLoadRecall="pixels" onCloseStore="pixels"/>
<label>Names:</label>
<text onCloseStore="pixBoys">Manny, Moe, and Jack</text>
Attributes:
onLoadRecall
The script variable from which the text field will dynamically load its contents.
onCloseStore
The script variable to which the text field will save its contents, if the user clicks the "OK" button.
width
The absolute width of the text field, in dialog units.
height
The absolute height of the text field, in dialog units.
validatePattern
A regular expression which the user's input must match. When the user clicks the "OK" button, if the user's input does not match, an error message will appear. On dismissal of the error message, the focus will return to the text field.

The password element

Password elements are single line text fields which show * in place of the original characters. A password field may specify its initial text statically or load it dynamically using the onLoadRecal attribute.
<!ELEMENT password (#PCDATA)>
<!ATTLIST password
        onLoadRecall    CDATA #IMPLIED     
        onCloseStore    CDATA #IMPLIED     
        width           CDATA #IMPLIED
        height          CDATA #IMPLIED
        validatePattern CDATA #IMPLIED     
        >
Example:
<label>Name:</label>
<text onCloseStore="userName"/>
<label>Password:</label>
<password onLoadRecall="password" onCloseStore="password"/>
Attributes:
onLoadRecall
The script variable from which the password field will dynamically load its contents.
onCloseStore
The script variable to which the password field will save its contents, if the user clicks the "OK" button.
width
The absolute width of the password field, in dialog units.
height
The absolute height of the password field, in dialog units.
validatePattern
A regular expression which the user's input must match. When the user clicks the "OK" button, if the user's input does not match, an error message will appear. On dismissal of the error message, the focus will return to the password field.

The textArea element

TextArea elements are multi-line text areas. A text area may specify its initial text statically or load it dynamically using the onLoadRecall attribute.
<!ELEMENT textArea (#PCDATA)>
<!ATTLIST textArea
        onLoadRecall    CDATA #IMPLIED     
        onCloseStore    CDATA #IMPLIED     
        width           CDATA #IMPLIED
        height          CDATA #IMPLIED
        validatePattern CDATA #IMPLIED     
        >
Example:
<label>Comments:</label>
<textArea onCloseStore="comments"/>
<label>Name:</label>
<textArea onLoadRecall="name" onCloseStore="name"/>
<label>Address:</label>
<textArea onCloseStore="address">wstt@cv.hp.com</textArea>
Attributes:
onLoadRecall
The script variable from which the text area will dynamically load its contents.
onCloseStore
The script variable to which the text area will save its contents, if the user clicks the "OK" button.
width
The absolute width of the text area, in dialog units.
height
The absolute height of the text area, in dialog units.
validatePattern
A regular expression which the user's input must match. When the user clicks the "OK" button, if the user's input does not match, an error message will appear. On dismissal of the error message, the focus will return to the text area.

The resourceAddress element

This feature will not be generally available until the release of Kahuna 4.5.
Use of this feature with Kahuna 4.13 requires installing a
patch available on The Collective.

ResourceAddress elements consist of a single line text field with a "Browse..." button for showing the Resource Chooser. The text field may specify a default address statically or load it dynamically using the onLoadRecall attribute.

The resourceAddress element may contain any number of resourceType elements, which specify resource name filters for the Resouce Chooser.The first filter specified will be selected by default.

<!ELEMENT resourceAddress (resourceType*)>

<!ATTLIST resourceAddress
        onLoadRecall    CDATA #IMPLIED     
        onCloseStore    CDATA #IMPLIED     
        width           CDATA #IMPLIED
        height          CDATA #IMPLIED
        validatePattern CDATA #IMPLIED     
        >
Example:
<resourceAddress width="200" onCloseStore="picAddress">
   <resourceType>Graphic Files (*.jpg, *.gif)
      <resourceNamePattern>/^.*\.jpg$/</resourceNamePattern>
      <resourceNamePattern>/^.*\.gif$/</resourceNamePattern>
   </resourceType>
</resourceAddress>
Attributes:
onLoadRecall
The script variable from which the text field will dynamically load a default address.
onCloseStore
The script variable to which the text field will save the address, if the user clicks the "OK" button.
width
The absolute width of the combined text field and browse button, in dialog units.
height
The absolute height of the text field and browse button, in dialog units.
validatePattern
A regular expression which the user's input must match. When the user clicks the "OK" button, if the user's input does not match, an error message will appear. On dismissal of the error message, the focus will return to the text field.

The resourceType element

This feature will not be generally available until the release of Kahuna 4.5.
Use of this feature with Kahuna 4.13 requires installing a
patch available on The Collective.

ResourceTypes can appear only within resourceAddress elements.

Resource types specify resource name filters which appear in a drop down list in the Resouce Chooser.

The resourceType element must contain one or more resourceNamePattern elements, which specify regular expressions for resource name matching. Only resources matching one of the specified patterns will appear in the Resource Chooser's list.

<!ELEMENT resourceType (#PCDATA | resourceNamePattern)*>  
Example:
<resourceType>Graphic Files (*.jpg, *.gif)
   <resourceNamePattern>/^.*\.jpg$/</resourceNamePattern>
   <resourceNamePattern>/^.*\.gif$/</resourceNamePattern>
</resourceType>

The resourceNamePattern element

This feature will not be generally available until the release of Kahuna 4.5.
Use of this feature with Kahuna 4.13 requires installing a
patch available on The Collective.

ResourceNamePatterns can appear only within resourceType elements.

The pattern specifies a regular expression for resource name matching.

<!ELEMENT resourceNamePattern (#PCDATA)>  
Example:
<resourceNamePattern>/^.*\.jpg$/</resourceNamePattern>

The webBrowser element

This feature will not be generally available until the release of Kahuna 4.5.
Use of this feature with Kahuna 4.13 requires installing a
patch available on The Collective.

WebBrowser elements present a panel of widgets comprising a very basic web browser.

At the top is a navigation bar containing Back, Forward, and Home buttons, and a text field for entering web addresses. At the bottom is a status bar. The browser can hide the navigation and status bars, and make the address field read-only.

The browser may specify a starting address statically or load it dynamically using the loadUrlFrom attribute. The browser may also specify a home address statically or load it dynamically using the loadHomeUrlFrom attribute.

<!ELEMENT webBrowser (#PCDATA)>

<!ATTLIST webBrowser  
        loadUrlFrom     CDATA #IMPLIED       
        homeUrl         CDATA #IMPLIED
        loadHomeUrlFrom CDATA #IMPLIED
        showNavBar      (true|false) "true"
        showStatusBar   (true|false) "true"
        editAddress     (true|false) "true"
        width           CDATA #IMPLIED  
        height          CDATA #IMPLIED
        >
Example:
<dialog type="box1" title="Surf's Up!">
    <webBrowser>http://hpcvitws.cv.hp.com/kahuna/xmldialog/</webBrowser>
    <okButton/>
</dialog>
All attributes are optional:
loadUrlFrom
The script variable from which the web browser will dynamically load a starting URL. A dynamically loaded starting URL overrides a statically specified URL.
homeUrl
The URL to which the web browser goes when the user clicks the Home button. Defaults to the starting URL.
loadHomeUrlFrom
The script variable from which the web browser will dynamically load a home URL. A dynamically loaded home URL overrides a statically specified URL.
showNavBar
Whether the web browser will show a navitation bar. By default, it will.
showStatusBar
Whether the web browser will show a status bar. By default, it will.
editAddress
Whether the web browse will have an editable address field. By default, it will.
width
The absolute width of the web browser panel, in dialog units.
height
The absolute height of the web browser panel, in dialog units.

The check element

Check boxes have only two states, selected (checked) and unselected (unchecked). These states might represent true/false, on/off, or yes/no choices. The default selectedValue is "true" and the default unSelectedValue is "false".

A check box may specify its initial state statically using the selected attribute, or load it dynamically using the onLoadRecall attribute. A check box which loads its state dynamically using the onLoadRecall attribute may further specify a regular expression using the selectedPattern attribute. Data which matches the pattern results in an initially checked check box.

Every check box should have a label. A check box may specify its label text statically or load it dynamically using the loadLabelFrom attribute.

<!ELEMENT check (#PCDATA)>
<!ATTLIST check
        onLoadRecall    CDATA        #IMPLIED     
        onCloseStore    CDATA        #IMPLIED     
        width           CDATA        #IMPLIED
        height          CDATA        #IMPLIED   
        loadLabelFrom   CDATA        #IMPLIED     
        selectedPattern CDATA        #IMPLIED
        selectedValue   CDATA        "true"
        unSelectedValue CDATA        "false"
        selected        (true|false) "false"  
        >
Example:
<check onCloseStore="doCleanup">Clean up afterwards</check>
<check loadLabelFrom="option_name_one" onLoadRecall="option_one" onCloseStore="option_one"/> 
<check onLoadRecall="is_too" selectedPattern="/[^n]*/i">Is too.</check>
<check onCloseStore="close" selectedValue="yes" unSelectedValue="no">Close files?</check>
Attributes:
onLoadRecall
The script variable from which the check box will dynamically load its initial state.
If the selectedPattern attribute is not specified, the check box will be checked only if the data equals the selectedValue attribute. This test is case-sensitive.
If the selectedPattern attribute is specified, the check box will be checked if the data matches the pattern.
onCloseStore
The script variable to which the check box will save its state, if the user clicks the "OK" button.
If checked, the check box will write the value specified by the selectedValue attribute.
If not checked, the check box will write the value specified by the unSelectedValue attribute.
width
The absolute width of the check box, in dialog units. If the check's label requires more space, it will be truncated.
height
The absolute height of the check box, in dialog units.
loadLabelFrom
The script variable from which the check box will dynamically load its label text.
selectedPattern
A regular expression. See the discussion of the onLoadRecall attribute, above.
selectedValue
The value which the checked state represents. The default is "true".
unSelectedValue
The value which the unchecked state represents. The default is "false".
selected
Whether the check box should be initially checked. This attribute is overridden by the onLoadRecall attribute, above.

The radio element

Radio buttons have all the characteristics of check boxes, with one additional property--radio buttons can be grouped together, and within a group, only one radio button can be selected at a time.

Like check boxes, radio buttons have only two states, selected and unselected. The default selectedValue is "true" and the default unSelectedValue is "false".

A radio button may specify its initial state statically using the selected attribute, or load it dynamically using the onLoadRecall attribute. A radio button which loads its state dynamically using the onLoadRecall attribute may further specify a regular expression using the selectedPattern attribute. Data which matches the pattern results in an initially selected radio button.

Every radio button should have a label. A radio button may specify its label text statically or load it dynamically using the loadLabelFrom attribute.

<!ELEMENT radio (#PCDATA)>
<!ATTLIST radio
        onLoadRecall    CDATA        #IMPLIED     
        onCloseStore    CDATA        #IMPLIED     
        width           CDATA        #IMPLIED
        height          CDATA        #IMPLIED
        loadLabelFrom   CDATA        #IMPLIED     
        buttonGroup     CDATA        #IMPLIED   
        selectedPattern CDATA        #IMPLIED
        selectedValue   CDATA        "true"
        unSelectedValue CDATA        "false"
        selected        (true|false) "false"  
        >
Example:
<label>Please make a decision:</label>
<radio selectedValue="yes"   onCloseStore="decision" buttonGroup="dec_one" selected="true">Yes</radio> 
<radio selectedValue="no"    onCloseStore="decision" buttonGroup="dec_one">No</radio> 
<radio selectedValue="maybe" onCloseStore="decision" buttonGroup="dec_one">Maybe</radio> 

<label>Please vote for the lesser of four evils:</label>
<radio onCloseStore="algo"   buttonGroup="evils" selectedValue="1" unSelectedValue="1">Al</radio> 
<radio onCloseStore="junior" buttonGroup="evils" selectedValue="1" unSelectedValue="0">W.</radio> 
<radio onCloseStore="waldo"  buttonGroup="evils" selectedValue="1" unSelectedValue="0">Ralph</radio> 
<radio onCloseStore="peanut" buttonGroup="evils" selectedValue="1" unSelectedValue="0">Harry</radio> 
Attributes:
onLoadRecall
The script variable from which the radio button will dynamically load its initial state.
If the selectedPattern attribute is not specified, the radio button will be selected only if the data equals the selectedValue attribute. This test is case-sensitive.
If the selectedPattern attribute is specified, the radio button will be selected if the data matches the pattern.
Only one radio button in a group can be initially selected. Subsequent selections toggle previous selections off.
onCloseStore
The script variable to which the radio button will save its state, if the user clicks the "OK" button.
If selected, the radio button will write the value specified by the selectedValue attribute.
If not selected, the radio button will write the value specified by the unSelectedValue attribute.
When multiple radio buttons share an onCloseStore attribute, only the selected button writes its value.
width
The absolute width of the radio button, in dialog units. If the radio button's label requires more space, it will be truncated.
height
The absolute height of the radio button, in dialog units.
loadLabelFrom
The script variable from which the radio button will dynamically load its label text.
buttonGroup
A name which identifies the button's group. Only one button in a button group can be selected at any given time.
selectedPattern
A regular expression. See the discussion of the onLoadRecall attribute, above.
selectedValue
The value which the selected state represents. The default is "true".
unSelectedValue
The value which the unselected state represents. The default is "false".
selected
Whether the radio button should be initially selected. This attribute is overridden by the onLoadRecall attribute, above.

The combo element

Combo boxes come in two flavors, depending on whether they contain an editable text field.

If the combo box is editable, it's more like a text field. Items in the drop-down list merely represent "canned" choices. The user can select one of them or type in anything at all. The data type of an editable combo box is plain old text.

If the combo box is not editable, then the items it the list behave more like a group of radio buttons, only one of which can be selected at any time. List items, in fact, share many of the same attributes and characteristics of radio buttons.

The combo element may contain any number of item elements.

<!ELEMENT combo (item*)>
<!ATTLIST combo
        onLoadRecall    CDATA        #IMPLIED     
        onCloseStore    CDATA        #IMPLIED     
        width           CDATA        #IMPLIED
        height          CDATA        #IMPLIED
        editable        (true|false) "false"
        validatePattern CDATA        #IMPLIED     
        >
Example:
<label>So, whaddya think?</label>
<combo editable="true" onCloseStore="my_opinion" validatePattern="/.+/">
   <item>I dunno</item>
   <item>We'd better not</item>
   <item>What?</item>
</combo>

<label>What did you notice first?</label>
<combo>
   <item onCloseStore="first" selectedValue="flash">Brilliant flash of light</item>
   <item onCloseStore="first" selectedValue="boom">Loud boom</item>
   <item onCloseStore="first" selectedValue="heat">Intense heat</item>
   <item onCloseStore="first" selectedValue="smudge">Poor print quality</item>
</combo>
Attributes:
onLoadRecall
The script variable from which the combo's text field will dynamically load its contents.
This attribute has no meaning for a non-editable combo box.
onCloseStore
The script variable to which the combo box will save its text, if the user clicks the "OK" button.
width
The absolute width of the combo box, in dialog units.
height
The absolute height of the combo box, in dialog units. Specifying the height of a combo box is not recommended.
editable
Whether the combo box will have an editable text field. By default, it will not.
validatePattern
A regular expression which the user's input must match. When the user clicks the "OK" button, if the user's input does not match, an error message will appear. On dismissal of the error message, the focus will return to the text field.
This attribute has little meaning for a non-editable combo box.

The item element

List items can appear only within combo elements.

If the combo box is editable, list items merely represent "canned" choices, and most of the list item's attributes are irrelevant.

If the combo box is not editable, list items are more like radio buttons, and share many of the same attributes and characteristics.

<!ELEMENT item (#PCDATA)>
<!ATTLIST item
        onLoadRecall    CDATA        #IMPLIED     
        onCloseStore    CDATA        #IMPLIED     
        loadLabelFrom   CDATA        #IMPLIED     
        selectedPattern CDATA        #IMPLIED
        selectedValue   CDATA        "true"
        unSelectedValue CDATA        "false"
        selected        (true|false) "false"  
        >
Example:
<combo>
   <item onCloseStore="top"  selected="true">top</item>
   <item onCloseStore="left"                >left</item>
   <item onCloseStore="bottom"              >bottom</item>
   <item onCloseStore="right"               >right</item>
</combo>

<combo>
   <item onCloseStore="sel_opt" loadLabelFrom="opt_1" selectedValue="1" selected="true"/>
   <item onCloseStore="sel_opt" loadLabelFrom="opt_2" selectedValue="2"/>
   <item onCloseStore="sel_opt" loadLabelFrom="opt_3" selectedValue="3"/>
</combo>

Attributes:
onLoadRecall
The script variable from which the list item will dynamically load its initial state.
If the selectedPattern attribute is not specified, the list item will be selected only if the data equals the selectedValue attribute. This test is case-sensitive.
If the selectedPattern attribute is specified, the list item will be selected if the data matches the pattern.
Only one list item can be initially selected. Subsequent selections toggle previous selections off.
onCloseStore
The script variable to which the list item will save its state, if the user clicks the "OK" button.
If selected, the list item will write the value specified by the selectedValue attribute.
If not selected, the list item will write the value specified by the unSelectedValue attribute.
When multiple list items share an onCloseStore attribute, only the selected item writes its value.
loadLabelFrom
The script variable from which the list item will dynamically load its label text.
selectedPattern
A regular expression. See the discussion of the onLoadRecall attribute, above.
selectedValue
The value which the selected state represents. The default is "true".
unSelectedValue
The value which the unselected state represents. The default is "false".
selected
Whether the list item should be initially selected. This attribute is overridden by the onLoadRecall attribute, above.

The closeAfter element

This feature will not be generally available until the release of Kahuna 4.5.
Use of this feature with Kahuna 4.13 requires installing a
patch available on The Collective.

A dialog may optionally have a closeAfter element, which adds a "Closing automatically after n seconds" label. The label counts down the seconds and then closes the dialog by simulating a click on the OK button. The closeAfter element can only be placed within the dialog itself, and not within a box or any other element. If used, it must immediately preceed the OK button.
<!ELEMENT closeAfter EMPTY>
<!ATTLIST closeAfter
        seconds      CDATA #IMPLIED     
        onLoadRecall CDATA #IMPLIED     
        >
Example:
<dialog type="box1" title="Interrogation">
    <box direction="horizontal">
        <label>What is your name?</label>
        <strut size="5" />
        <text width="100">Who's asking?</text>
    </box>
    <closeAfter seconds="10" />
    <okButton/>
</dialog>
Attributes:
seconds
The number of seconds to count down before automatically closing the dialog.
Setting seconds="0" (or less) will leave the dialog open until the user dismisses it.
onLoadRecall
The script variable from which the closeAfter will dynamically load the number of seconds.
If the variable does not contain a valid integer, the dialog will remain open until the user dismisses it.
The onLoadRecall attribute overrides the seconds attribute.

The okButton element

Every dialog must have an OK button. The OK button can only be placed within the dialog itself, and not within a box or any other element. It appears last, after all other elements except the Cancel button.
<!ELEMENT okButton EMPTY>
Example:
<dialog type="box1" title="Unexpected Error">
   <label onLoadRecall="err_msg"/>
   <label>Bummer.</label>
   <okButton/>
</dialog>

The cancelButton element

In addition to an OK button, a dialog can also have a Cancel button. Like the OK button, the Cancel button can only be placed within the dialog element. It appears after the OK button.
<!ELEMENT cancelButton EMPTY>
Example:
<dialog type="box1" title="Run Test">
   <label>Please enter the test name:</label>
   <text onCloseStore="testName"/>
   <okButton/>
   <cancelButton/>
</dialog>

The stopButton element

In addition to an OK button and a Cancel button, a dialog can also have a Stop button. Like the OK button and Cancel buttons, the Stop button can only be placed within the dialog element. It appears after the Cancel button.
<!ELEMENT stopButton EMPTY>
Example:
<dialog type="box1" title="Run Test">
   <label>Please enter the test name:</label>
   <text onCloseStore="testName"/>
   <okButton/>
   <cancelButton/>
   <stopButton/>
</dialog>

The helpButton element

This feature will not be generally available until the release of Kahuna 4.5.
Use of this feature with Kahuna 4.13 requires installing a
patch available on The Collective.

In addition to an OK button, a Cancel button, and a Stop button, a dialog can also have a Help button. Like the OK, Cancel, and Stop buttons, the Help button can only be placed within the dialog element. It appears after the Stop button.
<!ELEMENT helpButton EMPTY>
<!ATTLIST helpButton
        source CDATA #REQUIRED  
        >
Example:
<dialog type="box1" title="Run Test">
   <label>Please enter the test name:</label>
   <text onCloseStore="testName"/>
   <okButton/>
   <helpButton source="http://hpcvitws.cv.hp.com/kahuna/" />
</dialog>
The source attribute is required:
source
The URL of the help page. If the help page is local, use a file URL, such as source="file:///C:/kahuna/help.html".