modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml | 2 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java | 287 ++++++---- 2 files changed, 180 insertions(+), 109 deletions(-)
New commits: commit c1145e500bd70a985a0b609de0f42655902d23a6 Author: Ian Springer ian.springer@redhat.com Date: Mon Oct 4 16:58:21 2010 -0400
finish support for top-level maps - both static and dynamic/open; disable window logger
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml index ed2ce42..c486f1d 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml @@ -38,7 +38,9 @@ 2. In hosted mode, the windows are not automatically closed, although you can easily close them manually in the usual way --> + <!-- <set-property name="log_WindowLogger" value="ENABLED" /> + -->
<!-- You probably will want to disable the default `DivLogger` as well: 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 fdc2d9c..d9c3dd7 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 @@ -19,6 +19,7 @@ package org.rhq.enterprise.gui.coregui.client.components.configuration;
import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.EnumSet; @@ -29,6 +30,7 @@ import java.util.List; import java.util.Map; import java.util.Set;
+import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.data.Record; import com.smartgwt.client.types.Alignment; @@ -138,9 +140,12 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTreeGrid; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/** + * A SmartGWT widget for editing an RHQ {@link Configuration}, which conforms to a {@link ConfigurationDefinition}. + * * @author Greg Hinkle * @author Ian Springer */ +@SuppressWarnings({"UnnecessarySemicolon"}) public class ConfigurationEditor extends LocatableVLayout { private ConfigurationGWTServiceAsync configurationService = GWTServiceLookup.getConfigurationService();
@@ -170,7 +175,6 @@ public class ConfigurationEditor extends LocatableVLayout { public static enum ConfigType { plugin, resource } - ; // Need this extra semicolon for the qdox parser
public ConfigurationEditor(String locatorId) { @@ -330,6 +334,11 @@ public class ConfigurationEditor extends LocatableVLayout { this.markForRedraw(); }
+ public void reset() { + this.configuration = this.originalConfiguration; + reload(); + } + protected HLayout buildRawPane() {
LocatableHLayout layout = new LocatableHLayout(extendLocatorId("Raw")); @@ -457,7 +466,6 @@ public class ConfigurationEditor extends LocatableVLayout { }
public SectionStackSection buildGroupSection(String locatorId, PropertyGroupDefinition group) { - SectionStackSection section; if (group == null) { section = new SectionStackSection("General Properties"); @@ -473,18 +481,25 @@ public class ConfigurationEditor extends LocatableVLayout { section.setExpanded(!group.isDefaultHidden()); }
- ArrayList<PropertyDefinition> definitions = new ArrayList<PropertyDefinition>(((group == null) ? definition - .getNonGroupedProperties() : definition.getPropertiesInGroup(group.getName()))); - Collections.sort(definitions, new PropertyDefinitionComparator()); + List<PropertyDefinition> propertyDefinitions = new ArrayList<PropertyDefinition>(((group == null) ? definition + .getNonGroupedProperties() : definition.getPropertiesInGroup(group.getName())));
- DynamicForm form = buildPropertiesForm(locatorId + "_Props", definitions, configuration); + DynamicForm form = buildPropertiesForm(locatorId + "_Props", propertyDefinitions, configuration);
section.addItem(form); return section; }
- private DynamicForm buildPropertiesForm(String locatorId, List<PropertyDefinition> definitions, + private DynamicForm buildPropertiesForm(String locatorId, Collection<PropertyDefinition> propertyDefinitions, AbstractPropertyMap propertyMap) { + List<PropertyDefinition> propertyDefinitionsList; + if (!(propertyDefinitions instanceof List)) { + propertyDefinitionsList = new ArrayList<PropertyDefinition>(propertyDefinitions); + } else { + propertyDefinitionsList = (List<PropertyDefinition>)propertyDefinitions; + } + Collections.sort(propertyDefinitionsList, new PropertyDefinitionComparator()); + LocatableDynamicForm form = new LocatableDynamicForm(locatorId); form.setValuesManager(valuesManager); form.setValidateOnChange(true); @@ -503,11 +518,17 @@ public class ConfigurationEditor extends LocatableVLayout { form.setCellPadding(5); form.setColWidths(190, 28, 210);
- ArrayList<FormItem> fields = new ArrayList<FormItem>(); + List<FormItem> fields = new ArrayList<FormItem>(); + addItemsForPropertiesRecursively(locatorId, propertyDefinitionsList, propertyMap, fields); + form.setFields(fields.toArray(new FormItem[fields.size()])); + + return form; + }
+ private void addItemsForPropertiesRecursively(String locatorId, Collection<PropertyDefinition> propertyDefinitions, + AbstractPropertyMap propertyMap, List<FormItem> fields) { boolean odd = true; - - for (PropertyDefinition propertyDefinition : definitions) { + for (PropertyDefinition propertyDefinition : propertyDefinitions) { Property property = propertyMap.get(propertyDefinition.getName()); if (property == null) { if (propertyDefinition instanceof PropertyDefinitionSimple) { @@ -515,17 +536,17 @@ public class ConfigurationEditor extends LocatableVLayout { propertyMap.put(property); } } - addItems(locatorId + "_" + propertyDefinition.getName(), fields, propertyDefinition, property, odd); + addItemsForPropertyRecursively(locatorId + "_" + propertyDefinition.getName(), propertyDefinition, property, + odd, fields); odd = !odd; } - - form.setFields(fields.toArray(new FormItem[fields.size()])); - - return form; }
- public void addItems(String locatorId, ArrayList<FormItem> fields, PropertyDefinition propertyDefinition, - Property property, boolean oddRow) { + public void addItemsForPropertyRecursively(String locatorId, PropertyDefinition propertyDefinition, + Property property, + boolean oddRow, + List<FormItem> fields) { + List<FormItem> fieldsForThisProperty = new ArrayList<FormItem>();
StaticTextItem nameItem = new StaticTextItem(); nameItem.setStartRow(true); @@ -534,30 +555,50 @@ public class ConfigurationEditor extends LocatableVLayout { .getName()) + "</b>"; nameItem.setValue(title); nameItem.setShowTitle(false); - nameItem.setCellStyle(oddRow ? "OddRow" : "EvenRow");
+ fieldsForThisProperty.add(nameItem); fields.add(nameItem);
FormItem valueItem; if (propertyDefinition instanceof PropertyDefinitionSimple) { - valueItem = buildSimpleField(fields, (PropertyDefinitionSimple) propertyDefinition, oddRow, property); + PropertyDefinitionSimple propertyDefinitionSimple = (PropertyDefinitionSimple)propertyDefinition; + PropertySimple propertySimple = (PropertySimple)property; + + valueItem = buildSimpleField(propertyDefinitionSimple, propertySimple); + + FormItem unsetItem = buildUnsetItem(propertyDefinitionSimple, propertySimple, valueItem); + fieldsForThisProperty.add(unsetItem); + fields.add(unsetItem); + + fieldsForThisProperty.add(valueItem); fields.add(valueItem);
StaticTextItem descriptionItem = new StaticTextItem(); descriptionItem.setValue(propertyDefinition.getDescription()); descriptionItem.setShowTitle(false); descriptionItem.setEndRow(true); - descriptionItem.setCellStyle(oddRow ? "OddRow" : "EvenRow"); + fieldsForThisProperty.add(descriptionItem); fields.add(descriptionItem); } else if (propertyDefinition instanceof PropertyDefinitionList) { if (((PropertyDefinitionList) propertyDefinition).getMemberDefinition() instanceof PropertyDefinitionMap) { // List of Maps is a specially supported case with summary fields as columns in a table - buildListOfMapsField(locatorId, fields, - (PropertyDefinitionMap) ((PropertyDefinitionList) propertyDefinition).getMemberDefinition(), - oddRow, (PropertyList) property); + // Note: This field spans 3 columns. + CanvasItem listOfMapsItem = buildListOfMapsField(locatorId, + (PropertyDefinitionMap)((PropertyDefinitionList)propertyDefinition).getMemberDefinition(), + oddRow, (PropertyList)property); + fields.add(listOfMapsItem); } + // TODO (ips): Add support for lists of simples. } else if (propertyDefinition instanceof PropertyDefinitionMap) { - buildMapsField(fields, (PropertyDefinitionMap) propertyDefinition, (PropertyMap) property); + // Note: This field spans 3 columns. + FormItem mapField = + buildMapField(locatorId, (PropertyDefinitionMap)propertyDefinition, (PropertyMap)property); + fields.add(mapField); + } + + // Set row background color. + for (FormItem field : fieldsForThisProperty) { + field.setCellStyle(oddRow ? "OddRow" : "EvenRow"); } }
@@ -565,13 +606,39 @@ public class ConfigurationEditor extends LocatableVLayout { return this.invalidPropertyNames; }
- private void buildMapsField(ArrayList<FormItem> fields, PropertyDefinitionMap propertyDefinitionMap, - final PropertyMap propertyMap) { + private FormItem buildMapField(String parentLocatorId, PropertyDefinitionMap propertyDefinitionMap, + final PropertyMap propertyMap) { + Canvas canvas; + Map<String, PropertyDefinition> memberPropertyDefinitions = propertyDefinitionMap.getPropertyDefinitions(); + String locatorId = parentLocatorId + "_" + propertyDefinitionMap.getName(); + if (memberPropertyDefinitions == null || memberPropertyDefinitions.isEmpty()) { + canvas = buildDynamicMapField(locatorId, propertyDefinitionMap, propertyMap); + } else { + canvas = buildStaticMapField(locatorId, propertyDefinitionMap, propertyMap); + } + CanvasItem canvasItem = buildComplexPropertyField(canvas); + + return canvasItem; + } + + private CanvasItem buildComplexPropertyField(Canvas canvas) { + CanvasItem canvasItem = new CanvasItem(); + canvasItem.setCanvas(canvas); + canvasItem.setColSpan(3); + canvasItem.setEndRow(true); + canvasItem.setShowTitle(false); + return canvasItem; + } + + private Canvas buildDynamicMapField(String parentLocatorId, PropertyDefinitionMap propertyDefinitionMap, + final PropertyMap propertyMap) { + Log.debug("Building dynamic map field for " + propertyMap + "..."); + // create the property grid final PropertyGrid propertyGrid = new PropertyGrid(); propertyGrid.getNameField().setName("Name"); propertyGrid.getValuesField().setName("Value"); - + // create the editors Map<String, FormItem> editorsMap = new HashMap<String, FormItem>(); TextItem textEditor = new TextItem(); @@ -580,27 +647,26 @@ public class ConfigurationEditor extends LocatableVLayout { // set the editors and attribute name where to find the record type propertyGrid.setEditorsMap("fieldType", editorsMap);
- if (propertyDefinitionMap != null) { - ListGridRecord[] records = new ListGridRecord[propertyDefinitionMap.getPropertyDefinitions().size()]; - int i = 0; - // TODO (ips): For open maps, create the records based on props, not propDefs. - // TODO (ips): Render unset checkboxes amd descriptions for member props, just as we would for top-level simples. - for (PropertyDefinition propDef : propertyDefinitionMap.getPropertyDefinitions().values()) { - ListGridRecord record = new ListGridRecord(); - String propertyName = propDef.getName(); - record.setAttribute("Name", propertyName); - PropertySimple prop = propertyMap.getSimple(propertyName); - String value = (prop != null) ? prop.getStringValue() : null; - record.setAttribute("Value", value); - record.setAttribute("fieldType", "simpleText"); - record.setAttribute("readOnly", propDef.isReadOnly()); - records[i++] = record; + ListGridRecord[] records = new ListGridRecord[propertyMap.getMap().size()]; + int i = 0; + for (Property prop : propertyMap.getMap().values()) { + if (!(prop instanceof PropertySimple)) { + Log.warn("Unsupported Configuration permutation: PropertyMap " + propertyMap + + " contains non-simple member Property " + prop + " - skipping..."); + continue; } - propertyGrid.setData(records); + PropertySimple propSimple = (PropertySimple)prop; + ListGridRecord record = new ListGridRecord(); + String propertyName = prop.getName(); + record.setAttribute("Name", propertyName); + String value = propSimple.getStringValue(); + record.setAttribute("Value", value); + record.setAttribute("fieldType", "simpleText"); + records[i++] = record; } + propertyGrid.setData(records);
VLayout canvas = new VLayout(); - canvas.addMember(propertyGrid);
// Footer @@ -610,8 +676,8 @@ public class ConfigurationEditor extends LocatableVLayout { footer.setMembersMargin(15); canvas.addMember(footer);
- // Properties can only be added to or deleted from non-read-only "open" maps. - if (propertyDefinitionMap.getPropertyDefinitions().isEmpty() && !propertyDefinitionMap.isReadOnly()) { + // Properties can only be added to or deleted from non-read-only dynamic maps. + if (!propertyDefinitionMap.isReadOnly()) { final IButton deleteButton = new LocatableIButton(extendLocatorId(propertyMap.getName()), "Delete"); deleteButton.setDisabled(true); deleteButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() { @@ -688,19 +754,21 @@ public class ConfigurationEditor extends LocatableVLayout { } });
- propertyGrid.draw(); - - CanvasItem canvasItem = new CanvasItem(); - canvasItem.setCanvas(canvas); - // item.setHeight(500); - canvasItem.setColSpan(3); - canvasItem.setEndRow(true); - canvasItem.setShowTitle(false); - fields.add(canvasItem); + return canvas; + } + + private Canvas buildStaticMapField(String parentLocatorId, PropertyDefinitionMap propertyDefinitionMap, + PropertyMap propertyMap) { + Log.debug("Building static map field for " + propertyMap + "..."); + + return buildPropertiesForm(parentLocatorId, propertyDefinitionMap.getPropertyDefinitions().values(), propertyMap); + }
- private void buildListOfMapsField(final String locatorId, ArrayList<FormItem> fields, - final PropertyDefinitionMap propertyDefinition, boolean oddRow, final PropertyList propertyList) { + private CanvasItem buildListOfMapsField(final String locatorId, + final PropertyDefinitionMap memberPropertyDefinitionMap, boolean oddRow, + final PropertyList propertyList) { + Log.debug("Building list-of-maps field for " + propertyList + "...");
final ListGrid summaryTable = new ListGrid(); // summaryTable.setID("config_summaryTable_" + propertyDefinition.getName()); @@ -711,7 +779,7 @@ public class ConfigurationEditor extends LocatableVLayout { summaryTable.setAutoFitData(Autofit.HORIZONTAL);
ArrayList<ListGridField> fieldsList = new ArrayList<ListGridField>(); - ArrayList<PropertyDefinition> definitions = new ArrayList<PropertyDefinition>(propertyDefinition + ArrayList<PropertyDefinition> definitions = new ArrayList<PropertyDefinition>(memberPropertyDefinitionMap .getPropertyDefinitions().values()); Collections.sort(definitions, new PropertyDefinitionComparator());
@@ -757,7 +825,7 @@ public class ConfigurationEditor extends LocatableVLayout { public void onRecordClick(RecordClickEvent recordClickEvent) { com.allen_sauer.gwt.log.client.Log.info("You want to edit: " + recordClickEvent.getRecord()); displayMapEditor(locatorId + "_MapEdit", summaryTable, recordClickEvent.getRecord(), - propertyDefinition, propertyList, (PropertyMap) recordClickEvent.getRecord().getAttributeAsObject( + memberPropertyDefinitionMap, propertyList, (PropertyMap) recordClickEvent.getRecord().getAttributeAsObject( "_RHQ_PROPERTY")); } }); @@ -805,7 +873,7 @@ public class ConfigurationEditor extends LocatableVLayout { addRowButton.setIcon(Window.getImgURL("[SKIN]/actions/add.png")); addRowButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() { public void onClick(ClickEvent clickEvent) { - displayMapEditor(locatorId + "_MapEdit", summaryTable, null, propertyDefinition, propertyList, null); + displayMapEditor(locatorId + "_MapEdit", summaryTable, null, memberPropertyDefinitionMap, propertyList, null); } });
@@ -813,13 +881,9 @@ public class ConfigurationEditor extends LocatableVLayout {
summaryTableHolder.setMembers(summaryTable, toolStrip);
- CanvasItem item = new CanvasItem(); - item.setCanvas(summaryTableHolder); - // item.setHeight(500); - item.setColSpan(3); - item.setEndRow(true); - item.setShowTitle(false); - fields.add(item); + CanvasItem item = buildComplexPropertyField(summaryTableHolder); + + return item; }
private ListGridRecord[] buildSummaryRecords(PropertyList propertyList, ArrayList<PropertyDefinition> definitions) { @@ -827,7 +891,6 @@ public class ConfigurationEditor extends LocatableVLayout { int i = 0; for (Property row : propertyList.getList()) { PropertyMap rowMap = (PropertyMap) row; - ListGridRecord record = buildSummaryRecord(definitions, rowMap); rows[i++] = record; } @@ -871,32 +934,13 @@ public class ConfigurationEditor extends LocatableVLayout { return record; }
- private FormItem buildSimpleField(ArrayList<FormItem> fields, final PropertyDefinitionSimple propertyDefinition, - boolean oddRow, final Property property) { - final PropertySimple propertySimple = (PropertySimple) property; + private FormItem buildSimpleField(final PropertyDefinitionSimple propertyDefinition, + final PropertySimple propertySimple + ) { + Log.debug("Building simple field for " + propertySimple + "...");
FormItem valueItem = null;
- boolean isUnset = (property == null || propertySimple.getStringValue() == null) - && propertyDefinition.isRequired() == false; - - CheckboxItem unsetItem = null; - if (!propertyDefinition.isRequired()) { - unsetItem = new CheckboxItem(); - unsetItem.setValue(isUnset); - unsetItem.setDisabled(readOnly); - unsetItem.setShowLabel(false); - unsetItem.setShowTitle(false); - unsetItem.setLabelAsTitle(false); - unsetItem.setColSpan(1); - unsetItem.setCellStyle(oddRow ? "OddRow" : "EvenRow"); - fields.add(unsetItem); - } else { - SpacerItem spacer = new SpacerItem(); - spacer.setCellStyle(oddRow ? "OddRow" : "EvenRow"); - fields.add(spacer); - } - List<PropertyDefinitionEnumeration> enumeratedValues = propertyDefinition.getEnumeratedValues(); if (enumeratedValues != null && !enumeratedValues.isEmpty()) {
@@ -911,7 +955,7 @@ public class ConfigurationEditor extends LocatableVLayout { valueItem = new RadioGroupItem(); } valueItem.setValueMap(valueOptions); - if (property != null) { + if (propertySimple != null) { valueItem.setValue(propertySimple.getStringValue()); } } else { @@ -921,15 +965,15 @@ public class ConfigurationEditor extends LocatableVLayout { case FILE: case DIRECTORY: valueItem = new TextItem(); - valueItem.setValue(property == null ? "" : propertySimple.getStringValue()); + valueItem.setValue(propertySimple == null ? "" : propertySimple.getStringValue()); break; case LONG_STRING: valueItem = new TextAreaItem(); - valueItem.setValue(property == null ? "" : propertySimple.getStringValue()); + valueItem.setValue(propertySimple == null ? "" : propertySimple.getStringValue()); break; case PASSWORD: valueItem = new PasswordItem(); - valueItem.setValue(property == null ? "" : propertySimple.getStringValue()); + valueItem.setValue(propertySimple == null ? "" : propertySimple.getStringValue()); break; case BOOLEAN: valueItem = new RadioGroupItem(); @@ -937,19 +981,19 @@ public class ConfigurationEditor extends LocatableVLayout { valMap.put("true", "Yes"); valMap.put("false", "No"); valueItem.setValueMap(valMap); - valueItem.setValue(property == null || propertySimple.getStringValue() == null ? false : propertySimple + valueItem.setValue(propertySimple == null || propertySimple.getStringValue() == null ? false : propertySimple .getBooleanValue()); break; case INTEGER: case LONG: valueItem = new IntegerItem(); - if (property != null && propertySimple.getStringValue() != null) + if (propertySimple != null && propertySimple.getStringValue() != null) valueItem.setValue(propertySimple.getLongValue()); break; case FLOAT: case DOUBLE: valueItem = new FloatItem(); - valueItem.setValue(property == null || propertySimple.getStringValue() == null ? 0 : propertySimple + valueItem.setValue(propertySimple == null || propertySimple.getStringValue() == null ? 0 : propertySimple .getDoubleValue()); break; } @@ -957,7 +1001,7 @@ public class ConfigurationEditor extends LocatableVLayout {
valueItem.setRequired(propertyDefinition.isRequired());
- List<Validator> validators = buildValidators(propertyDefinition, property); + List<Validator> validators = buildValidators(propertyDefinition, propertySimple); valueItem.setValidators(validators.toArray(new Validator[validators.size()]));
/* @@ -973,9 +1017,8 @@ public class ConfigurationEditor extends LocatableVLayout { */
valueItem.setShowTitle(false); - valueItem.setDisabled(isUnset || readOnly); + valueItem.setDisabled(isReadOnly(propertyDefinition) || isUnset(propertyDefinition, propertySimple)); valueItem.setWidth(220); - valueItem.setCellStyle(oddRow ? "OddRow" : "EvenRow");
final FormItem finalValueItem = valueItem;
@@ -992,30 +1035,56 @@ public class ConfigurationEditor extends LocatableVLayout { boolean isValidNow = ConfigurationEditor.this.invalidPropertyNames.isEmpty(); boolean validationStateChanged = (isValidNow != wasValidBefore); for (PropertyValueChangeListener validationStateChangeListener : ConfigurationEditor.this.validationStateChangeListeners) { - PropertyValueChangeEvent event = new PropertyValueChangeEvent(property, propertyDefinition, + PropertyValueChangeEvent event = new PropertyValueChangeEvent(propertySimple, propertyDefinition, validationStateChanged, ConfigurationEditor.this.invalidPropertyNames); validationStateChangeListener.propertyValueChanged(event); } } });
- if (unsetItem != null) { + return valueItem; + } + + private boolean isUnset(PropertyDefinitionSimple propertyDefinition, PropertySimple propertySimple) { + return (!propertyDefinition.isRequired() && + (propertySimple == null || propertySimple.getStringValue() == null)); + } + + private FormItem buildUnsetItem(PropertyDefinitionSimple propertyDefinition, final PropertySimple property, + final FormItem valueItem) { + FormItem item; + if (!propertyDefinition.isRequired()) { + CheckboxItem unsetItem = new CheckboxItem(); + boolean unset = isUnset(propertyDefinition, property); + unsetItem.setValue(unset); + unsetItem.setDisabled(isReadOnly(propertyDefinition)); + unsetItem.setShowLabel(false); + unsetItem.setShowTitle(false); + unsetItem.setLabelAsTitle(false); + unsetItem.setColSpan(1); + unsetItem.addChangeHandler(new ChangeHandler() { public void onChange(ChangeEvent changeEvent) { Boolean isUnset = (Boolean) changeEvent.getValue(); if (isUnset) { - finalValueItem.setDisabled(true); - finalValueItem.setValue((String) null); + valueItem.setDisabled(true); + valueItem.setValue((String) null); } else { - finalValueItem.setDisabled(false); - finalValueItem.focusInItem(); + valueItem.setDisabled(false); + valueItem.focusInItem(); } - propertySimple.setValue(finalValueItem.getValue()); + property.setValue(valueItem.getValue()); } }); + item = unsetItem; + } else { + item = new SpacerItem(); } + return item; + }
- return valueItem; + private boolean isReadOnly(PropertyDefinition propertyDefinition) { + return propertyDefinition.isReadOnly() || this.readOnly; }
private List<Validator> buildValidators(PropertyDefinitionSimple propertyDefinition, Property property) {
rhq-commits@lists.fedorahosted.org