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(a)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);