import javax.faces.component.html.HtmlInputText; //导入方法依赖的package包/类
/**
* Makes a Faces HtmlSelectOneMenu and an HtmlInputText (for "Other" option)
* components for a parameter.
*
* The menu items are based upon the defined codes for the parameter.
* @param context the UI context
* @param section the parent section
* @param parameter the associated parameter
* @return the UI component
*/
@Override
public UIComponent makeInputComponent(UiContext context,
Section section,
Parameter parameter) {
// determine values
String sValue = parameter.getContent().getSingleValue().getValue();
String sMenuValue = sValue;
String sTextValue = "";
boolean bIsOther = false;
if (!parameter.getContent().getCodes().containsKey(sValue)) {
bIsOther = true;
} else if (sValue.equalsIgnoreCase(getOtherCodeKey())) {
bIsOther = true;
}
if (bIsOther) {
sMenuValue = getOtherCodeKey();
sTextValue = sValue;
}
// make the input text for the "Other" option
InputText other = getOtherComponent();
HtmlInputText text = new HtmlInputText();
text.setId(other.getFacesId());
text.setMaxlength(other.getMaxlength());
text.setSize(other.getSize());
text.setDisabled(!getEditable());
text.setValue(sTextValue);
if (!bIsOther) {
text.setStyle("visibility:hidden;");
}
// make the script for the onchange event
StringBuffer sbOnchange = new StringBuffer();
sbOnchange.append("mdeToggleVisibility(this,");
sbOnchange.append("'").append(other.getFacesId()).append("',");
sbOnchange.append("this.options[this.selectedIndex].value==");
sbOnchange.append("'").append(getOtherCodeKey()).append("')");
// make the select one menu
parameter.getContent().getSingleValue().setValue(sMenuValue);
UIComponent menu = makeSelectOneMenu(context,section,parameter,sbOnchange.toString());
parameter.getContent().getSingleValue().setValue(sValue);
// group the components
HtmlPanelGroup panel = new HtmlPanelGroup();
panel.getChildren().add(menu);
panel.getChildren().add(makeNBSP());
panel.getChildren().add(text);
return panel;
}