modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java | 29 +++++----- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/GroupConfigurationEditor.java | 17 ++++- 2 files changed, 29 insertions(+), 17 deletions(-)
New commits: commit cd758dcbc78fea04ebda2d3563a3b283b630b88e Author: Ian Springer ian.springer@redhat.com Date: Mon Mar 28 14:27:18 2011 -0400
fix editing of group config props via modal member value editor (https://bugzilla.redhat.com/show_bug.cgi?id=690483)
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java index 449e9c3..d991515 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java @@ -1316,17 +1316,20 @@ public class ConfigurationEditor extends LocatableVLayout { List<Validator> validators = buildValidators(propertyDefinitionSimple, propertySimple); valueItem.setValidators(validators.toArray(new Validator[validators.size()]));
- valueItem.addChangedHandler(new ChangedHandler() { - public void onChanged(ChangedEvent changedEvent) { - updatePropertySimpleValue(changedEvent.getValue(), propertySimple, propertyDefinitionSimple); - // Only fire a prop value change event if the prop's a top-level simple or a simple within a - // top-level map. - if (fireEventOnPropertyValueChange(propertyDefinitionSimple, propertySimple)) { - boolean isValid = changedEvent.getItem().validate(); - firePropertyChangedEvent(propertySimple, propertyDefinitionSimple, isValid); + if ((propertySimple.getConfiguration() != null) || (propertySimple.getParentMap() != null) || + (propertySimple.getParentList() != null)) { + valueItem.addChangedHandler(new ChangedHandler() { + public void onChanged(ChangedEvent changedEvent) { + updatePropertySimpleValue(changedEvent.getValue(), propertySimple, propertyDefinitionSimple); + // Only fire a prop value change event if the prop's a top-level simple or a simple within a + // top-level map. + if (fireEventOnPropertyValueChange(propertyDefinitionSimple, propertySimple)) { + boolean isValid = changedEvent.getItem().validate(); + firePropertyChangedEvent(propertySimple, propertyDefinitionSimple, isValid); + } } - } - }); + }); + } }
// for more robust and repeatable item locators (not positional) assign a name and title @@ -1356,9 +1359,9 @@ public class ConfigurationEditor extends LocatableVLayout {
protected boolean fireEventOnPropertyValueChange(PropertyDefinitionSimple propertyDefinitionSimple, PropertySimple propertySimple) { - PropertyDefinitionMap parentPropertyMapDefinition = propertyDefinitionSimple.getParentPropertyMapDefinition(); - return propertyDefinitionSimple.getConfigurationDefinition() != null - || (parentPropertyMapDefinition != null && parentPropertyMapDefinition.getConfigurationDefinition() != null); + PropertyMap parentMap = propertySimple.getParentMap(); + return propertySimple.getConfiguration() != null + || (parentMap != null && parentMap.getConfiguration() != null); }
protected void updatePropertySimpleValue(Object value, PropertySimple propertySimple, diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/GroupConfigurationEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/GroupConfigurationEditor.java index 4c4a29f..eafbd15 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/GroupConfigurationEditor.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/GroupConfigurationEditor.java @@ -250,7 +250,7 @@ public class GroupConfigurationEditor extends ConfigurationEditor { setAllValuesToItem.setAlign(Alignment.RIGHT); setAllItems.add(setAllValuesToItem);
- PropertySimple masterPropertySimple = new PropertySimple(aggregatePropertySimple.getName(), null); + PropertySimple masterPropertySimple = new PropertySimple(propertyDefinitionSimple.getName(), null); final FormItem masterValueItem = super.buildSimpleField(propertyDefinitionSimple, masterPropertySimple); masterValueItem.setDisabled(false);
@@ -286,7 +286,7 @@ public class GroupConfigurationEditor extends ConfigurationEditor { masterValueItem.addChangedHandler(new ChangedHandler() { public void onChanged(ChangedEvent changedEvent) { applyButton.enable(); - applyButton.focus(); + //applyButton.focus(); } });
@@ -332,7 +332,9 @@ public class GroupConfigurationEditor extends ConfigurationEditor { // Add data rows. final List<FormItem> valueItems = new ArrayList<FormItem>(this.memberConfigurations.size()); final Map<String, PropertySimple> valueItemNameToPropertySimpleMap = new HashMap<String, PropertySimple>(); - for (GroupMemberConfiguration memberConfiguration : this.memberConfigurations) { + List<GroupMemberConfiguration> memberConfigurations1 = this.memberConfigurations; + for (int i = 0, memberConfigurations1Size = memberConfigurations1.size(); i < memberConfigurations1Size; i++) { + GroupMemberConfiguration memberConfiguration = memberConfigurations1.get(i); String memberName = memberConfiguration.getLabel(); StaticTextItem memberItem = new StaticTextItem(); memberItem.setShowTitle(false); @@ -340,8 +342,11 @@ public class GroupConfigurationEditor extends ConfigurationEditor { items.add(memberItem); Configuration configuration = memberConfiguration.getConfiguration(); PropertySimple memberPropertySimple = (PropertySimple) getProperty(configuration, aggregatePropertySimple, - index); + index); FormItem valueItem = buildSimpleField(propertyDefinitionSimple, memberPropertySimple); + // All of the member props have the same name, so add an index to the item name to ensure it's unique + // to the form. + valueItem.setName(propertyDefinitionSimple.getName() + "-" + i); valueItems.add(valueItem); valueItemNameToPropertySimpleMap.put(valueItem.getName(), memberPropertySimple); FormItem unsetItem = buildUnsetItem(propertyDefinitionSimple, memberPropertySimple, valueItem); @@ -420,6 +425,10 @@ public class GroupConfigurationEditor extends ConfigurationEditor { @Override public void onClick(ClickEvent clickEvent) { Object value = masterValueItem.getValue(); + // Update the aggregate property. + aggregatePropertySimple.setValue(value); + + // Update the member properties. for (FormItem valueItem : valueItems) { setValue(valueItem, value);
rhq-commits@lists.fedorahosted.org