modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionEditor.java | 3 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java | 2 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java | 39 ++++++++-- 3 files changed, 35 insertions(+), 9 deletions(-)
New commits: commit 57333dd7c4a683fe39bfcf68ea706cbfa6feded9 Author: Jirka Kremser jkremser@redhat.com Date: Tue May 28 18:40:38 2013 +0200
[BZ 967542] - UI shows confusing units when editing Availability Duration alert condition type
I improved the DurationItem component to use internally the SelectItem instead of ComboBoxItem. When using ComboBoxItem, it was possible to write to the combobox and this is something that shouldn't happen in this component because the unit types should be fixed. The DurationItem is also used from the operation tab view, but no reggression was introduced by this commit in this view.
Modifying also the DurationItem.setAndFormatValue() to populate the time correctly when !isReadOnly.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionEditor.java index 8fe6d4b..0a2627c 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionEditor.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionEditor.java @@ -65,7 +65,6 @@ import org.rhq.enterprise.gui.coregui.client.components.form.DurationItem; import org.rhq.enterprise.gui.coregui.client.components.form.NumberWithUnitsValidator; import org.rhq.enterprise.gui.coregui.client.components.form.SortedSelectItem; import org.rhq.enterprise.gui.coregui.client.components.form.TimeUnit; -import org.rhq.enterprise.gui.coregui.client.components.form.UnitType; import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedVLayout; import org.rhq.enterprise.gui.coregui.client.util.measurement.MeasurementParser; import org.rhq.enterprise.gui.coregui.client.util.message.Message; @@ -959,7 +958,7 @@ public class ConditionEditor extends EnhancedVLayout { durationValue.setTooltip(MSG.view_alert_definition_condition_editor_availabilityDuration_tooltip_duration()); durationValue.setHoverWidth(200); if (editMode) { - durationValue.setValue(Integer.parseInt(existingCondition.getOption()), UnitType.TIME); + durationValue.setAndFormatValue(Integer.parseInt(existingCondition.getOption()) * 1000L); } durationValue.setShowIfCondition(ifFunc); formItems.add(durationValue); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java index 25742f5..e24d1b4 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java @@ -211,6 +211,8 @@ public class SingleAlertDefinitionView extends EnhancedVLayout { public void execute(Boolean value) { if (value) { save(); + } else { + unregisterHandler(); } } }); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java index 633188a..104b84c 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/DurationItem.java @@ -29,17 +29,19 @@ import java.util.TreeSet;
import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.CanvasItem; -import com.smartgwt.client.widgets.form.fields.ComboBoxItem; import com.smartgwt.client.widgets.form.fields.FormItem; import com.smartgwt.client.widgets.form.fields.IntegerItem; +import com.smartgwt.client.widgets.form.fields.SelectItem; import com.smartgwt.client.widgets.form.fields.StaticTextItem; import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; import com.smartgwt.client.widgets.form.validator.IntegerRangeValidator;
+import org.rhq.core.domain.measurement.MeasurementUnits; import org.rhq.enterprise.gui.coregui.client.CoreGUI; import org.rhq.enterprise.gui.coregui.client.Messages; import org.rhq.enterprise.gui.coregui.client.util.FormUtility; +import org.rhq.enterprise.gui.coregui.client.util.MeasurementConverterClient; import org.rhq.enterprise.gui.coregui.client.util.TypeConversionUtility;
/** @@ -142,7 +144,7 @@ public class DurationItem extends CanvasItem { } });
- ComboBoxItem unitsItem = new ComboBoxItem(FIELD_UNITS); + SelectItem unitsItem = new SelectItem(FIELD_UNITS); unitsItem.setShowTitle(false);
LinkedHashMap<String, String> valueMap = new LinkedHashMap<String, String>(); @@ -230,10 +232,33 @@ public class DurationItem extends CanvasItem { if (longValue < 0) { throw new IllegalArgumentException("negative time period " + longValue); } - String formattedOutput = formatMilliseconds(longValue); - this.unitType = UnitType.TIME; - this.form.setValue(FIELD_VALUE, formattedOutput); - setValue(formattedOutput); + if (isReadOnly) { + String formattedOutput = formatMilliseconds(longValue); + this.unitType = UnitType.TIME; + this.form.setValue(FIELD_VALUE, formattedOutput); + setValue(formattedOutput); + } else { + String valueWithUnits = MeasurementConverterClient.format((double) longValue, + MeasurementUnits.MILLISECONDS, true); + String[] chunks = valueWithUnits.split(" "); + String value = chunks[0]; + if (value.endsWith(".0")) { + value = value.substring(0, value.indexOf(".0")); + } + this.form.setValue(FIELD_VALUE, value); + String units = chunks[1]; + SelectItem unitsItem = (SelectItem) this.form.getItem(FIELD_UNITS); + if (MeasurementConverterClient.getMeasurementUnitAbbreviation(MeasurementUnits.SECONDS).equals(units)) { + unitsItem.setValue(TimeUnit.SECONDS.name().toLowerCase()); + } else if (MeasurementConverterClient.getMeasurementUnitAbbreviation(MeasurementUnits.MINUTES) + .equals(units)) { + unitsItem.setValue(TimeUnit.MINUTES.name().toLowerCase()); + } else if (MeasurementConverterClient.getMeasurementUnitAbbreviation(MeasurementUnits.HOURS).equals(units)) { + unitsItem.setValue(TimeUnit.HOURS.name().toLowerCase()); + } else if (MeasurementConverterClient.getMeasurementUnitAbbreviation(MeasurementUnits.DAYS).equals(units)) { + unitsItem.setValue(TimeUnit.DAYS.name().toLowerCase()); + } + } }
/** @@ -474,7 +499,7 @@ public class DurationItem extends CanvasItem { }
private TimeUnit getInputTimeUnit() { - ComboBoxItem unitsItem = (ComboBoxItem) this.form.getItem(FIELD_UNITS); + SelectItem unitsItem = (SelectItem) this.form.getItem(FIELD_UNITS); String unitString = unitsItem.getValueAsString(); // this will always be non-null TimeUnit unit; try {