ArrayList<FormItem> formItems = new ArrayList<FormItem>();
ShowIfCategoryFunction ifFunc = new ShowIfCategoryFunction(AlertConditionCategory.BASELINE);
String helpStr = MSG.view_alert_definition_condition_editor_metric_baseline_tooltip();
StaticTextItem helpItem = buildHelpTextItem("baselineHelp", helpStr, ifFunc);
formItems.add(helpItem);
// if a metric is trending (up or down), it will never have baselines calculated for it so only show dynamic metrics
SelectItem metricDropDownMenu = buildMetricDropDownMenu(BASELINE_METRIC_ITEMNAME, true, ifFunc, editMode);
if (metricDropDownMenu != null) {
formItems.add(metricDropDownMenu);
formItems.add(buildComparatorDropDownMenu(BASELINE_COMPARATOR_ITEMNAME, ifFunc, editMode));
TextItem baselinePercentage = new TextItem(BASELINE_PERCENTAGE_ITEMNAME,
MSG.view_alert_definition_condition_editor_metric_baseline_percentage());
baselinePercentage.setWrapTitle(false);
baselinePercentage.setRequired(true);
baselinePercentage.setTooltip(MSG
.view_alert_definition_condition_editor_metric_baseline_percentage_tooltip());
baselinePercentage.setHoverWidth(200);
baselinePercentage.setShowIfCondition(ifFunc);
baselinePercentage.setValidateOnChange(true);
baselinePercentage.setValidators(new NumberWithUnitsValidator(MeasurementUnits.PERCENTAGE));
if (editMode) {
baselinePercentage.setDefaultValue(String.valueOf((int) (existingCondition.getThreshold() * 100)));
}
formItems.add(baselinePercentage);
SelectItem baselineSelection = new SelectItem(BASELINE_SELECTION_ITEMNAME,
MSG.view_alert_definition_condition_editor_metric_baseline_value());
LinkedHashMap<String, String> baselines = new LinkedHashMap<String, String>(3);
baselines.put("min", MSG.common_title_monitor_minimum()); // TODO can we have the current value of the min baseline
baselines.put("mean", MSG.common_title_monitor_average()); // TODO can we have the current value of the avg baseline
baselines.put("max", MSG.common_title_monitor_maximum()); // TODO can we have the current value of the max baseline
baselineSelection.setValueMap(baselines);
baselineSelection.setDefaultValue(editMode ? existingCondition.getOption() : "mean");
baselineSelection.setWrapTitle(false);
baselineSelection.setWidth("*");
baselineSelection.setRedrawOnChange(true);
baselineSelection.setShowIfCondition(ifFunc);
formItems.add(baselineSelection);
} else {
String noMetricsStr = MSG.view_alert_definition_condition_editor_metric_nometrics();
StaticTextItem noMetrics = buildHelpTextItem(BASELINE_NO_METRICS_ITEMNAME, noMetricsStr, ifFunc);
formItems.add(noMetrics);
}
return formItems;
}