modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java | 26 ++++-- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/GroupConfigurationEditor.java | 38 +++++++--- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestConfigurationView.java | 9 +- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestGroupConfigurationView.java | 9 +- 4 files changed, 58 insertions(+), 24 deletions(-)
New commits: commit 1863896db8bd017e29a385cbb06fcbeb9402262a Author: Ian Springer ian.springer@redhat.com Date: Wed Oct 20 11:06:08 2010 -0400
core group config code for top-level simples and static maps of simples is done; still to do: set-all-values-to controls and support for dynamic/open maps of simples
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 df61aaa..28d5960 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 @@ -1326,17 +1326,11 @@ public class ConfigurationEditor extends LocatableVLayout {
// Only update the underlying property when the input is changed if it's a top-level simple or a simple within a // top-level map. - PropertyDefinitionMap parentPropertyMapDefinition = - propertyDefinitionSimple.getParentPropertyMapDefinition(); - if (propertyDefinitionSimple.getConfigurationDefinition() != null || - (parentPropertyMapDefinition != null && parentPropertyMapDefinition.getConfigurationDefinition() != null)) { + if (updatePropertyValueOnChange(propertyDefinitionSimple, propertySimple)) { valueItem.addChangedHandler(new ChangedHandler() { - public void onChanged(ChangedEvent changedEvent) { - propertySimple.setErrorMessage(null); + public void onChanged(ChangedEvent changedEvent) { + updatePropertySimpleValue(changedEvent.getValue(), propertySimple, propertyDefinitionSimple); boolean isValid = changedEvent.getItem().validate(); - if (isValid) { - propertySimple.setValue(changedEvent.getValue()); - } firePropertyChangedEvent(propertySimple, propertyDefinitionSimple, isValid); } }); @@ -1345,6 +1339,20 @@ public class ConfigurationEditor extends LocatableVLayout { return valueItem; }
+ protected boolean updatePropertyValueOnChange(PropertyDefinitionSimple propertyDefinitionSimple, + PropertySimple propertySimple) { + PropertyDefinitionMap parentPropertyMapDefinition = + propertyDefinitionSimple.getParentPropertyMapDefinition(); + return propertyDefinitionSimple.getConfigurationDefinition() != null || + (parentPropertyMapDefinition != null && parentPropertyMapDefinition.getConfigurationDefinition() != null); + } + + protected void updatePropertySimpleValue(Object value, PropertySimple propertySimple, + PropertyDefinitionSimple propertyDefinitionSimple) { + propertySimple.setErrorMessage(null); + propertySimple.setValue(value); + } + protected static Property getTopLevelProperty(Property property) { Property currentProperty = property; while (currentProperty.getConfiguration() == null) { 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 c3ba6cb..e198fc0 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 @@ -159,7 +159,7 @@ public class GroupConfigurationEditor extends ConfigurationEditor { for (GroupMemberConfiguration memberConfiguration : memberConfigurations) { Configuration configuration = memberConfiguration.getConfiguration(); PropertySimple memberPropertySimple = - getPropertySimple(configuration, propertyDefinitionSimple, propertySimple, null); + getPropertySimple(configuration, propertyDefinitionSimple, null); memberPropertySimple.setValue(value); } } @@ -218,7 +218,7 @@ public class GroupConfigurationEditor extends ConfigurationEditor { memberItem.setDefaultValue(memberName); items.add(memberItem); Configuration configuration = memberConfiguration.getConfiguration(); - PropertySimple memberPropertySimple = getPropertySimple(configuration, propertyDefinitionSimple, aggregatePropertySimple, index); + PropertySimple memberPropertySimple = getPropertySimple(configuration, propertyDefinitionSimple, index); memberProperties.put(memberName, memberPropertySimple); FormItem valueItem = buildSimpleField(propertyDefinitionSimple, memberPropertySimple); valueItem.setAttribute("rhq:property", memberPropertySimple); @@ -317,13 +317,36 @@ public class GroupConfigurationEditor extends ConfigurationEditor { popup.show(); }
+ @Override + protected boolean updatePropertyValueOnChange(PropertyDefinitionSimple propertyDefinitionSimple, + PropertySimple propertySimple) { + return isAggregateProperty(propertySimple) && super.updatePropertyValueOnChange(propertyDefinitionSimple, propertySimple); // TODO: Implement this method. + } + + @Override + protected void updatePropertySimpleValue(Object value, PropertySimple propertySimple, + PropertyDefinitionSimple propertyDefinitionSimple) { + // Update the aggregate property + super.updatePropertySimpleValue(value, propertySimple, propertyDefinitionSimple); + propertySimple.setOverride(true); + + // Update all the member properties. + for (GroupMemberConfiguration memberConfiguration : this.memberConfigurations) { + Configuration configuration = memberConfiguration.getConfiguration(); + PropertySimple memberPropertySimple = + getPropertySimple(configuration, propertyDefinitionSimple, null); + memberPropertySimple.setErrorMessage(null); + memberPropertySimple.setValue(value); + } + } + private PropertySimple getPropertySimple(Configuration configuration, PropertyDefinitionSimple propertyDefinitionSimple, - PropertySimple aggregatePropertySimple, Integer index) { + Integer index) { LinkedList<PropertyDefinition> propertyDefinitionHierarchy = new LinkedList<PropertyDefinition>(); PropertyDefinition currentPropertyDefinition = propertyDefinitionSimple; - do { - propertyDefinitionHierarchy.addFirst(currentPropertyDefinition); + propertyDefinitionHierarchy.add(currentPropertyDefinition); + do { if (currentPropertyDefinition.getParentPropertyMapDefinition() != null) { currentPropertyDefinition = currentPropertyDefinition.getParentPropertyMapDefinition(); } else if (currentPropertyDefinition.getParentPropertyListDefinition() != null) { @@ -331,6 +354,7 @@ public class GroupConfigurationEditor extends ConfigurationEditor { } else if (currentPropertyDefinition.getConfigurationDefinition() == null) { throw new IllegalStateException(currentPropertyDefinition + " has no parent."); } + propertyDefinitionHierarchy.addFirst(currentPropertyDefinition); } while (currentPropertyDefinition.getConfigurationDefinition() == null);
@@ -348,10 +372,6 @@ public class GroupConfigurationEditor extends ConfigurationEditor { }
PropertySimple propertySimple = (PropertySimple)property; - if (isHomogeneous(aggregatePropertySimple)) { - // If the aggregate property has its override bit set, make sure the member property has the same value. - propertySimple.setStringValue(aggregatePropertySimple.getStringValue()); - } return propertySimple; }
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestConfigurationView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestConfigurationView.java index 2fd5dfa..9d94650 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestConfigurationView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestConfigurationView.java @@ -20,6 +20,7 @@ package org.rhq.enterprise.gui.coregui.client.test;
import java.util.EnumSet; +import java.util.Set;
import com.smartgwt.client.types.Overflow; import com.smartgwt.client.widgets.events.ClickEvent; @@ -91,15 +92,17 @@ public class TestConfigurationView MessageCenter messageCenter = CoreGUI.getMessageCenter(); Message message; if (event.isValidationStateChanged()) { - if (event.getInvalidPropertyNames().isEmpty()) { + Set<String> invalidPropertyNames = event.getInvalidPropertyNames(); + if (invalidPropertyNames.isEmpty()) { this.saveButton.enable(); message = new Message("All properties now have valid values, so the configuration can now be saved.", - Message.Severity.Info, EnumSet.of(Message.Option.Transient)); + Message.Severity.Info, EnumSet.of(Message.Option.Transient, Message.Option.Sticky)); } else { this.saveButton.disable(); message = new Message( - "One or more properties have invalid values. The values must be corrected before the configuration can be saved.", + "The following properties have invalid values: " + invalidPropertyNames + + " - the values must be corrected before the configuration can be saved.", Message.Severity.Error, EnumSet.of(Message.Option.Transient, Message.Option.Sticky)); } messageCenter.notify(message); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestGroupConfigurationView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestGroupConfigurationView.java index 7d71c02..f54bb01 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestGroupConfigurationView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestGroupConfigurationView.java @@ -22,6 +22,7 @@ package org.rhq.enterprise.gui.coregui.client.test; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; +import java.util.Set;
import com.smartgwt.client.types.Overflow; import com.smartgwt.client.widgets.events.ClickEvent; @@ -100,15 +101,17 @@ public class TestGroupConfigurationView MessageCenter messageCenter = CoreGUI.getMessageCenter(); Message message; if (event.isValidationStateChanged()) { - if (event.getInvalidPropertyNames().isEmpty()) { + Set<String> invalidPropertyNames = event.getInvalidPropertyNames(); + if (invalidPropertyNames.isEmpty()) { this.saveButton.enable(); message = new Message("All properties now have valid values, so the configuration can now be saved.", - Message.Severity.Info, EnumSet.of(Message.Option.Transient)); + Message.Severity.Info, EnumSet.of(Message.Option.Transient, Message.Option.Sticky)); } else { this.saveButton.disable(); message = new Message( - "One or more properties have invalid values. The values must be corrected before the configuration can be saved.", + "The following properties have invalid values: " + invalidPropertyNames + + " - the values must be corrected before the configuration can be saved.", Message.Severity.Error, EnumSet.of(Message.Option.Transient, Message.Option.Sticky)); } messageCenter.notify(message);