com.taursys.html
Class HTMLSelect

java.lang.Object
  extended bycom.taursys.xml.Component
      extended bycom.taursys.xml.Parameter
          extended bycom.taursys.xml.AbstractField
              extended bycom.taursys.xml.SelectField
                  extended bycom.taursys.html.HTMLSelect
All Implemented Interfaces:
DocumentComponent, Element, MapperComponent

public class HTMLSelect
extends SelectField

This components is a peer component for the <Select> tag in an HTML form. This component is a specialization of the SelectField. Like the SelectField, this component (using a DefaultSelectModel), can display a selection from a list of objects. It can also change the selection from user input.

The selection is made and displayed using the property indicated by the displayPropertyName. The displayPropertyName is effectively the "selection key". If the displayPropertyName is null or blank, then the toString method is used instead. For example, given a list of Address objects, and a displayPropertyName of "zipCode", the display value for "Juneau, AK 99801 USA" would be "99801". To change the selection, you would supply a different zipCode from the list.

The HTMLSelect uses a specialized renderer which will create a list of html <Option> tags with the displayPropertyName value for each item in the list. Using the same example as above, after rendering the document would contain:

 <select name="zip" id="zip">
   <option>99801</option>
   <option>99824</option>
   <option>99827</option>
 </select>
 

This component can function in three different ways, depending on the properties you set:

When used for output, the value is rendered in the XML document as a text node by default. If you want the value to be rendered to an attribute of the node instead, you must change the renderer to an AttributeTextFieldRenderer and the the attribute property to the name of the attribute.

When used for input, this component receives its value from the InputDispatcher AFTER the openForm method of the ServletForm by default. If you want this component to receive its input earlier (at the same time as Parameters), set the earlyInputNotify property to true.

By default, this component uses a DefaultSelectModel. You can change this by overriding the createDefaultModel method or explicitly setting the model property.

Setting the List

The list must be a type of CollectionValueHolder (example: VOCollectionValueHolder or VOListValueHolder). The holder can contain any type of object (but they must all be instances of the same class).

If the list is an ObjectArrayValueHolder, then the toString() method is used as the display value (regardless of the displayPropertyName). If used in the bound mode, the whole object itself is stored in the target ValueHolder's object (regardless of the property names listed in the setListPropertyNames method). It is important to make sure that the valueHolder property is the same type as the objects in the ObjectArrayValueHolder or a ModelException will occur.

You can also preset the list in the constructor by passing it an array of Objects to be used for the list. The resulting list will be an ObjectArrayValueHolder.

The following is an example of this usage:

   SelectField color = new SelectField(new String[] {
       "Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet",
       });
   ...
   private void jbInit() throws Exception {
     ...
     color.setParameter("color");
     color.setId("color");
     ...
     this.add(color);
   }
 

This component can be used in a variety of ways. It can be used in an un-bound mode, where the current selection is maintained internally. It can also be used in a bound mode where the current selection is propagated to a value holder. When used in the bound mode, either a single property, or multiple properties can be set in the value holder. The following sections describe the required settings to make for each of the modes.

Un-bound Mode (uses internal VariantValueHolder)

When used in this mode this component uses an internal VariantValueHolder to hold the current selection. By default a VariantValueHolder is created with a data type of String. To set a different data type use the constructor which takes a data type as a parameter. (example new SelectField(DataTypes.TYPE_INT)).

To use this component in the un-bound mode, you must set the following properties:

Bound Mode

To use this component in the bound mode, use the same properties as described in the Un-bound Mode, plus the following additional properties:

Other Important Information

When a selection is made, the values are copied from the properties in the list to the properties in the valueHolder object. The property names in propertyNames[] and listPropertyNames[] must appear in a corresponding order.

A "null" item will always be added to the displayOptionList. When the "null" item is selected, a null will be assigned to the propertyNames[] in the valueHolder object. The actual "null" item to to display is defined by the nullDisplay (default is "--none--").

The format and formatPattern govern the display property in this component. The getText method returns the formatted display property, while the setText method changes the current selection to one whose display matches the given value. If you attempt to setText for an item that is not in the list, a NotInListException will be thrown.


Constructor Summary
HTMLSelect()
          Constructs a new HTMLSelect component.
HTMLSelect(int javaDataType)
          Creates a new HTMLSelect of the given data type.
HTMLSelect(int javaDataType, java.lang.Object[] array)
          Constructs a new HTMLSelect of the given data type with the given list of options.
HTMLSelect(java.lang.Object[] array)
          Constructs a new HTMLSelect with the given list of options.
 
Methods inherited from class com.taursys.xml.SelectField
createDefaultModel, createDefaultModel, createDefaultRenderer, getDisplayPropertyName, getList, getListPropertyNames, getNullDisplay, getPropertyName, getPropertyNames, getRenderer, getSelection, getSelectModel, getText, isNullAllowed, processRenderEvent, setDisplayPropertyName, setList, setListPropertyNames, setModel, setNullAllowed, setNullDisplay, setPropertyName, setPropertyNames, setRenderer, setSelection, setText
 
Methods inherited from class com.taursys.xml.AbstractField
addAttribute, addNotify, addTextNode, createAttribute, createAttribute, createAttribute, createBoundAttribute, createBoundTextNode, createTextNode, createTextNode, createTextNode, getAttribute, getAttributeName, getAttributeText, getAttributeValue, getElementDelegate, getId, getTextNode, getTextNodeText, getTextNodeValue, isEarlyInputNotify, processInputEvent, removeAttribute, removeAttribute, removeNotify, removeTextNode, removeTextNode, setAttributeName, setAttributeText, setAttributeValue, setEarlyInputNotify, setId, setTextNodeText, setTextNodeValue, setValueHolder, toString
 
Methods inherited from class com.taursys.xml.Parameter
getDefaultValue, getFormat, getFormatPattern, getModel, getParameter, getValue, getValueHolder, processParameterEvent, setDefaultValue, setFormat, setFormatPattern, setParameter, setValue
 
Methods inherited from class com.taursys.xml.Component
addEventType, addInputListener, addParameterListener, addRecycleListener, addRenderListener, addTriggerListener, dispatchEvent, fireActionPerformed, fireInputReceived, fireParameterReceived, fireRecycle, fireRender, getEventTypeList, getParent, isNotifySet, isVisible, lazyAddNotify, lazyRemoveNotify, processEvent, processRecycleEvent, processTriggerEvent, removeEventType, removeInputListener, removeParameterListener, removeRecycleListener, removeRenderListener, removeTriggerListener, setVisible
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

HTMLSelect

public HTMLSelect()
Constructs a new HTMLSelect component.


HTMLSelect

public HTMLSelect(int javaDataType)
Creates a new HTMLSelect of the given data type.

Parameters:
javaDataType - the data type for the VariantValueHolder
See Also:
for defined data type constants TYPE_XXXXXX.

HTMLSelect

public HTMLSelect(java.lang.Object[] array)
Constructs a new HTMLSelect with the given list of options.


HTMLSelect

public HTMLSelect(int javaDataType,
                  java.lang.Object[] array)
Constructs a new HTMLSelect of the given data type with the given list of options.

Parameters:
javaDataType - the data type for the VariantValueHolder
array - the array of options
See Also:
for defined data type constants TYPE_XXXXXX.


Copyright © 2007 Martin T Phelan. All Rights Reserved.