modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java | 16 - modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/GroupConfigurationEditor.java | 133 +++++++--- 2 files changed, 112 insertions(+), 37 deletions(-)
New commits: commit d8d3923378207946060daf0a7158554a2e94696b Author: Ian Springer ian.springer@redhat.com Date: Wed Oct 20 19:48:29 2010 -0400
group config: add set-all-values-to controls at top of edit-member-values modal; fix a few other bugs in the group config editor
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 28d5960..163ff47 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 @@ -1283,11 +1283,13 @@ public class ConfigurationEditor extends LocatableVLayout { valueItem = new PasswordItem(); break; case BOOLEAN: - valueItem = new RadioGroupItem(); - LinkedHashMap<String, String> valMap = new LinkedHashMap<String, String>(); - valMap.put("true", "Yes"); - valMap.put("false", "No"); - valueItem.setValueMap(valMap); + RadioGroupItem radioGroupItem = new RadioGroupItem(); + radioGroupItem.setVertical(false); + valueItem = radioGroupItem; + LinkedHashMap<String, String> valueMap = new LinkedHashMap<String, String>(); + valueMap.put("true", "Yes"); + valueMap.put("false", "No"); + valueItem.setValueMap(valueMap); break; case INTEGER: case LONG: @@ -1300,8 +1302,7 @@ public class ConfigurationEditor extends LocatableVLayout { } }
- valueItem.setDefaultValue((String)null); - valueItem.setValue(propertySimple.getStringValue()); + valueItem.setDefaultValue(propertySimple.getStringValue()); valueItem.setRequired(propertyDefinitionSimple.isRequired());
List<Validator> validators = buildValidators(propertyDefinitionSimple, propertySimple); @@ -1606,6 +1607,7 @@ public class ConfigurationEditor extends LocatableVLayout { String stringValue = (value != null) ? value.toString() : null; item.setValue(stringValue); } + item.setDefaultValue((String)null); }
private static class PropertyDefinitionComparator implements Comparator<PropertyDefinition> { 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 4583a4a..c2e2eb7 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 @@ -32,14 +32,19 @@ import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.events.ItemChangedEvent; import com.smartgwt.client.widgets.form.events.ItemChangedHandler; +import com.smartgwt.client.widgets.form.fields.ButtonItem; +import com.smartgwt.client.widgets.form.fields.CheckboxItem; import com.smartgwt.client.widgets.form.fields.FormItem; import com.smartgwt.client.widgets.form.fields.FormItemIcon; +import com.smartgwt.client.widgets.form.fields.SpacerItem; 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.fields.events.ClickHandler; import com.smartgwt.client.widgets.form.fields.events.FormItemClickHandler; import com.smartgwt.client.widgets.form.fields.events.FormItemIconClickEvent; import com.smartgwt.client.widgets.layout.HLayout; +import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.Property; @@ -180,16 +185,81 @@ public class GroupConfigurationEditor extends ConfigurationEditor { private void displayMemberValuesEditor(String locatorId, final PropertyDefinitionSimple propertyDefinitionSimple, final PropertySimple aggregatePropertySimple, Integer index, final FormItem aggregateValueItem) { + final Window popup = new Window(); + popup.setTitle("Member Values for Property '" + propertyDefinitionSimple.getName() + "'"); + popup.setWidth(800); + popup.setHeight(600); + popup.setIsModal(true); + popup.setShowModalMask(true); + popup.setShowCloseButton(false); + popup.centerInPage(); + LocatableVLayout layout = new LocatableVLayout(locatorId); layout.setHeight100(); + layout.setMargin(11); + + final DynamicForm setAllForm = new DynamicForm(); + setAllForm.setNumCols(4); + setAllForm.setColWidths(175, 25, 250, 100); + setAllForm.setCellPadding(5); + + List<FormItem> setAllItems = new ArrayList<FormItem>(); + + // Header Row + SpacerItem spacerItem = new SpacerItem(); + setAllItems.add(spacerItem); + + StaticTextItem unsetAllHeader = new StaticTextItem(); + unsetAllHeader.setShowTitle(false); + unsetAllHeader.setDefaultValue("<h4>Unset</h4>"); + setAllItems.add(unsetAllHeader); + + StaticTextItem valueAllHeader = new StaticTextItem(); + valueAllHeader.setShowTitle(false); + valueAllHeader.setDefaultValue("<h4>Value</h4>"); + + setAllItems.add(valueAllHeader); + + spacerItem = new SpacerItem(); + //spacerItem.setEndRow(true); + setAllItems.add(spacerItem); + + // Input Row + StaticTextItem setAllValuesToItem = new StaticTextItem(); + setAllValuesToItem.setShowTitle(false); + setAllValuesToItem.setDefaultValue("<b>Set all values to: </b>"); + setAllValuesToItem.setAlign(Alignment.RIGHT); + setAllItems.add(setAllValuesToItem); + + PropertySimple masterPropertySimple = new PropertySimple(aggregatePropertySimple.getName(), null); + final FormItem masterValueItem = super.buildSimpleField(propertyDefinitionSimple, masterPropertySimple); + masterValueItem.setDisabled(false); + + FormItem masterUnsetItem = buildUnsetItem(propertyDefinitionSimple, masterPropertySimple, masterValueItem); + if (masterUnsetItem instanceof CheckboxItem) { + masterUnsetItem.setValue(false); + }
- // TODO: Add 'Set All Values To' and 'Unset All' controls in a separate DynamicForm. + setAllItems.add(masterUnsetItem); + setAllItems.add(masterValueItem);
- final DynamicForm form = new DynamicForm(); - form.setHeight100(); - form.setNumCols(3); - form.setColWidths("60%", "8%", "32%"); - layout.addMember(form); + ButtonItem applyButtonItem = new ButtonItem(); + applyButtonItem.setTitle("Apply"); + //applyButtonItem.setEndRow(true); + setAllItems.add(applyButtonItem); + + setAllForm.setFields(setAllItems.toArray(new FormItem[setAllItems.size()])); + layout.addMember(setAllForm); + + VLayout spacerLayout = new VLayout(); + spacerLayout.setHeight(20); + layout.addMember(spacerLayout); + + final DynamicForm membersForm = new DynamicForm(); + membersForm.setHeight100(); + membersForm.setNumCols(3); + membersForm.setColWidths("52%", "8%", "40%"); + layout.addMember(membersForm);
// Add header row. List<FormItem> items = new ArrayList<FormItem>(); @@ -208,9 +278,8 @@ public class GroupConfigurationEditor extends ConfigurationEditor { items.add(valueHeader);
// Add data rows. - final Map<String, PropertySimple> memberProperties = new HashMap<String, PropertySimple>(this.memberConfigurations.size()); final List<FormItem> valueItems = new ArrayList<FormItem>(this.memberConfigurations.size()); - final List<FormItem> unsetItems = new ArrayList<FormItem>(this.memberConfigurations.size()); + final Map<String, PropertySimple> valueItemNameToPropertySimpleMap = new HashMap<String, PropertySimple>(); for (GroupMemberConfiguration memberConfiguration : this.memberConfigurations) { String memberName = memberConfiguration.getLabel(); StaticTextItem memberItem = new StaticTextItem(); @@ -219,26 +288,15 @@ public class GroupConfigurationEditor extends ConfigurationEditor { items.add(memberItem); Configuration configuration = memberConfiguration.getConfiguration(); PropertySimple memberPropertySimple = getPropertySimple(configuration, propertyDefinitionSimple, index); - memberProperties.put(memberName, memberPropertySimple); FormItem valueItem = buildSimpleField(propertyDefinitionSimple, memberPropertySimple); - valueItem.setAttribute("rhq:property", memberPropertySimple); valueItems.add(valueItem); + valueItemNameToPropertySimpleMap.put(valueItem.getName(), memberPropertySimple); FormItem unsetItem = buildUnsetItem(propertyDefinitionSimple, memberPropertySimple, valueItem); items.add(unsetItem); - unsetItems.add(unsetItem); items.add(valueItem); valueItem.setEndRow(true); } - form.setItems(items.toArray(new FormItem[items.size()])); - - final Window popup = new Window(); - popup.setTitle("Member Values for Property '" + propertyDefinitionSimple.getName()); - popup.setWidth(800); - popup.setHeight(600); - popup.setIsModal(true); - popup.setShowModalMask(true); - popup.setShowCloseButton(false); - popup.centerInPage(); + membersForm.setItems(items.toArray(new FormItem[items.size()]));
final IButton okButton = new IButton("OK"); okButton.disable(); @@ -251,8 +309,7 @@ public class GroupConfigurationEditor extends ConfigurationEditor { if ((value != null && !value.equals(firstValue)) || (value == null && firstValue != null)) { valuesHomogeneous = false; } - PropertySimple memberPropertySimple = - (PropertySimple)valueItem.getAttributeAsObject("rhq:property"); + PropertySimple memberPropertySimple = valueItemNameToPropertySimpleMap.get(valueItem.getName()); memberPropertySimple.setValue(value); memberPropertySimple.setErrorMessage(null); } @@ -269,8 +326,7 @@ public class GroupConfigurationEditor extends ConfigurationEditor {
aggregateUnsetItem.setValue(firstValue == null);
- // Set the aggregate value item's value to the homogeneous value, enable it, and make sure it has - // validators set. + // Set the aggregate value item's value to the homogeneous value, unhide it, and enable it. setValue(aggregateValueItem, firstValue); aggregateValueItem.show(); aggregateValueItem.setDisabled(false); @@ -286,18 +342,36 @@ public class GroupConfigurationEditor extends ConfigurationEditor { aggregateStaticItem.show(); }
- form.markForRedraw(); + membersForm.markForRedraw(); popup.destroy(); } });
// Only enable the OK button if all properties are valid. - form.addItemChangedHandler(new ItemChangedHandler() { + membersForm.addItemChangedHandler(new ItemChangedHandler() { public void onItemChanged(ItemChangedEvent itemChangedEvent) { - okButton.setDisabled(!form.validate()); + okButton.setDisabled(!membersForm.validate()); } });
+ applyButtonItem.addClickHandler(new ClickHandler() { + @Override + public void onClick(com.smartgwt.client.widgets.form.fields.events.ClickEvent clickEvent) { + Object value = masterValueItem.getValue(); + for (FormItem valueItem : valueItems) { + setValue(valueItem, value); + + FormItem unsetItem = valueItemNameToUnsetItemMap.get(valueItem.getName()); + if (unsetItem instanceof CheckboxItem) { + unsetItem.setValue((value == null)); + valueItem.setDisabled((value == null)); + } + + okButton.setDisabled(!membersForm.validate()); + } + } + }); + final IButton cancelButton = new IButton("Cancel"); cancelButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() { public void onClick(ClickEvent clickEvent) { @@ -308,12 +382,11 @@ public class GroupConfigurationEditor extends ConfigurationEditor { // TODO: Anchor the button bar at the bottom of the modal window, so it's always visible. HLayout buttons = new HLayout(); buttons.setAlign(Alignment.CENTER); - buttons.setMembersMargin(10); + buttons.setMembersMargin(7); buttons.setMembers(okButton, cancelButton); layout.addMember(buttons);
popup.addItem(layout); - popup.show(); }
rhq-commits@lists.fedorahosted.org