mnameText.setValue(metric.getName());
//add on parent
parent.getChildren().add(mnameText);
//2b) Select a math expression
HtmlSelectOneMenu select2 = new HtmlSelectOneMenu();
select2.setId("mathSelect"+metric.getInternalID());
UISelectItems items2 = new UISelectItems();
items2.setId("mathvals"+metric.getInternalID());
items2.setValue(metric.getAllAvailableTypes());
Class[] parms2 = new Class[]{ValueChangeEvent.class};
ExpressionFactory ef = FacesContext.getCurrentInstance().getApplication().getExpressionFactory();
MethodExpression mb = ef.createMethodExpression(FacesContext.getCurrentInstance().getELContext(),
"#{AutoEvalSerUserConfigBean.processMathExprChange}", null, parms2);
MethodExpressionValueChangeListener vcl = new MethodExpressionValueChangeListener(mb);
select2.addValueChangeListener(vcl);
select2.getChildren().add(items2);
select2.setImmediate(true);
//place an ajax support on the selectonemenu field
HtmlAjaxSupport ajaxSupport2 = new HtmlAjaxSupport();
//Class[] parms = new Class[]{ActionEvent.class};
//ajaxSupport.setAction(FacesContext.getCurrentInstance().getApplication().createMethodBinding("#{AutoEvalSerUserConfigBean.sliderValue}", parms));
ajaxSupport2.setEvent("onchange");
//to add multiple ids for rerendering, separate them with a ","
ajaxSupport2.setReRender(select2.getId());
ajaxSupport2.setEventsQueue("foo");
select2.getFacets().put("a4jsupport2", ajaxSupport2);
//add to parent
parent.getChildren().add(select2);
//2c) For all input types except boolean values:
if(metric.isHtmlInputTextUsed()){
//enter a boundary value for a specific added metric
HtmlInputText inputText = new HtmlInputText();
inputText.setId("metricBoundary"+metric.getInternalID());
inputText.setValue(metric.getEvalBoundary());
inputText.setSize(10);
Class[] parms = new Class[]{ValueChangeEvent.class};
MethodExpression mb2 = ef.createMethodExpression(FacesContext.getCurrentInstance().getELContext(),
"#{AutoEvalSerUserConfigBean.processMetricBoundaryValueChange}", null, parms);
MethodExpressionValueChangeListener vcl2 = new MethodExpressionValueChangeListener(mb2);
inputText.addValueChangeListener(vcl2);
inputText.setImmediate(true);
//place an ajax support on the InputText field
HtmlAjaxSupport ajaxSupport = new HtmlAjaxSupport();
//Class[] parms = new Class[]{ActionEvent.class};
//ajaxSupport.setAction(FacesContext.getCurrentInstance().getApplication().createMethodBinding("#{AutoEvalSerUserConfigBean.sliderValue}", parms));
ajaxSupport.setEvent("onchange");
//to add multiple ids for rerendering, separate them with a ","
ajaxSupport.setReRender(inputText.getId());
ajaxSupport.setEventsQueue("foo");
inputText.getFacets().put("a4jsupport", ajaxSupport);
//add to parent
parent.getChildren().add(inputText);
}
else{
// add a drop-down box for boolean values
HtmlSelectOneMenu select = new HtmlSelectOneMenu();
select.setId("booleanSelect"+metric.getInternalID());
UISelectItems items = new UISelectItems();
items.setId("vals"+metric.getInternalID());
List<SelectItem> l = new ArrayList<SelectItem>();
l.add(new SelectItem("true"));
l.add(new SelectItem("false"));
items.setValue(l);
Class[] parms = new Class[]{ValueChangeEvent.class};
MethodExpression mb3 = ef.createMethodExpression(FacesContext.getCurrentInstance().getELContext(),
"#{AutoEvalSerUserConfigBean.processMetricBoundaryValueChange}", null, parms);
MethodExpressionValueChangeListener vcl3 = new MethodExpressionValueChangeListener(mb3);
select.addValueChangeListener(vcl3);
select.getChildren().add(items);
select.setImmediate(true);
//place an ajax support on the selectonemenu field
HtmlAjaxSupport ajaxSupport = new HtmlAjaxSupport();
//Class[] parms = new Class[]{ActionEvent.class};
//ajaxSupport.setAction(FacesContext.getCurrentInstance().getApplication().createMethodBinding("#{AutoEvalSerUserConfigBean.sliderValue}", parms));
ajaxSupport.setEvent("onchange");
//to add multiple ids for rerendering, separate them with a ","
ajaxSupport.setReRender(select.getId());
ajaxSupport.setEventsQueue("foo");
select.getFacets().put("a4jsupport", ajaxSupport);
//add to parent
parent.getChildren().add(select);
}