modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
| 48 ++++++++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/inventory/PluginConfigurationEditView.java
| 23 ++++
2 files changed, 66 insertions(+), 5 deletions(-)
New commits:
commit 3c7a7fd6f8749eca0995d05eee2b723decb1af83
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Sat Feb 26 00:15:35 2011 -0500
BZ 680167 - add load handler to config editor so we know when the config editor has
fully loaded its config and config def
the view can now use this to be told when the config editor is done loading
everything
this is used so we don't issue duplicate queries due to multiple refresh calls
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 b7c45d6..ba1268e 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
@@ -170,6 +170,19 @@ public class ConfigurationEditor extends LocatableVLayout {
plugin, resource
}; // Need this extra semicolon for the qdox parser
+ /**
+ * This is the kind of handler that is called when this editor has loaded
+ * the configuration and configuration definition. If the load failed,
+ * the methods will still be called, but will be passed null.
+ */
+ public static interface LoadHandler {
+ void loadedConfiguration(Configuration config);
+
+ void loadedConfigurationDefinition(ConfigurationDefinition configDef);
+ }
+
+ private LoadHandler loadHandler = null;
+
public ConfigurationEditor(String locatorId) {
super(locatorId);
}
@@ -193,10 +206,18 @@ public class ConfigurationEditor extends LocatableVLayout {
this.configurationDefinition = configurationDefinition;
}
+ public void setLoadHandler(LoadHandler handler) {
+ this.loadHandler = handler;
+ }
+
public Configuration getConfiguration() {
return configuration;
}
+ public ConfigurationDefinition getConfigurationDefinition() {
+ return configurationDefinition;
+ }
+
public boolean isReadOnly() {
return readOnly;
}
@@ -248,12 +269,18 @@ public class ConfigurationEditor extends LocatableVLayout {
configurationService.getResourceConfiguration(resourceId, new
AsyncCallback<Configuration>() {
public void onFailure(Throwable caught) {
showError(caught);
+ if (loadHandler != null) {
+ loadHandler.loadedConfiguration(null);
+ }
}
public void onSuccess(Configuration result) {
configuration = result;
Log.info("Config retrieved in: " +
(System.currentTimeMillis() - start));
reload();
+ if (loadHandler != null) {
+ loadHandler.loadedConfiguration(configuration);
+ }
}
});
@@ -269,6 +296,9 @@ public class ConfigurationEditor extends LocatableVLayout {
showError(MSG.view_configEdit_error_1());
}
reload();
+ if (loadHandler != null) {
+
loadHandler.loadedConfigurationDefinition(configurationDefinition);
+ }
}
});
@@ -276,11 +306,17 @@ public class ConfigurationEditor extends LocatableVLayout {
configurationService.getPluginConfiguration(resourceId, new
AsyncCallback<Configuration>() {
public void onFailure(Throwable caught) {
showError(caught);
+ if (loadHandler != null) {
+ loadHandler.loadedConfiguration(null);
+ }
}
public void onSuccess(Configuration result) {
configuration = result;
reload();
+ if (loadHandler != null) {
+ loadHandler.loadedConfiguration(configuration);
+ }
}
});
@@ -294,6 +330,9 @@ public class ConfigurationEditor extends LocatableVLayout {
showError(MSG.view_configEdit_error_2());
}
reload();
+ if (loadHandler != null) {
+
loadHandler.loadedConfigurationDefinition(configurationDefinition);
+ }
}
});
}
@@ -553,7 +592,7 @@ public class ConfigurationEditor extends LocatableVLayout {
// Note: This field spans 3 columns.
PropertyDefinitionMap memberDefinitionMap = (PropertyDefinitionMap)
memberDefinition;
CanvasItem listOfMapsItem = buildListOfMapsField(locatorId,
memberDefinitionMap, propertyDefinitionList,
- propertyList, oddRow);
+ propertyList, oddRow);
fields.add(listOfMapsItem);
} else if (memberDefinition instanceof PropertyDefinitionSimple) {
SpacerItem unsetItem = new SpacerItem();
@@ -812,9 +851,8 @@ public class ConfigurationEditor extends LocatableVLayout {
}
private CanvasItem buildListOfMapsField(final String locatorId,
- final PropertyDefinitionMap
memberPropertyDefinitionMap,
- PropertyDefinitionList
propertyDefinitionList,
- final PropertyList propertyList, boolean
oddRow) {
+ final PropertyDefinitionMap memberPropertyDefinitionMap, PropertyDefinitionList
propertyDefinitionList,
+ final PropertyList propertyList, boolean oddRow) {
Log.debug("Building list-of-maps field for " + propertyList +
"...");
final ListGrid summaryTable = new ListGrid();
@@ -1446,7 +1484,7 @@ public class ConfigurationEditor extends LocatableVLayout {
}
private void displayMapEditor(String locatorId, final ListGrid summaryTable, final
Record existingRecord,
- PropertyDefinitionMap definition, final PropertyList
list, final PropertyMap map, boolean mapReadOnly) {
+ PropertyDefinitionMap definition, final PropertyList list, final PropertyMap map,
boolean mapReadOnly) {
final List<PropertyDefinition> memberDefinitions = new
ArrayList<PropertyDefinition>(definition
.getPropertyDefinitions().values());
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/inventory/PluginConfigurationEditView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/inventory/PluginConfigurationEditView.java
index 76adc19..3ca884f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/inventory/PluginConfigurationEditView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/inventory/PluginConfigurationEditView.java
@@ -29,6 +29,7 @@ import com.smartgwt.client.widgets.toolbar.ToolStrip;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PluginConfigurationUpdate;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.composite.ResourceComposite;
import org.rhq.core.domain.resource.composite.ResourcePermission;
@@ -57,6 +58,10 @@ public class PluginConfigurationEditView extends LocatableVLayout
implements Pro
private ConfigurationEditor editor;
private LocatableIButton saveButton;
+ // flags to indicate if the config editor is refreshing its internal config/configDef
objects
+ private boolean refreshingConfig = false;
+ private boolean refreshingConfigDef = false;
+
public PluginConfigurationEditView(String locatorId, ResourceComposite
resourceComposite) {
super(locatorId);
@@ -95,6 +100,12 @@ public class PluginConfigurationEditView extends LocatableVLayout
implements Pro
@Override
public void refresh() {
+ if (this.refreshingConfig || this.refreshingConfigDef) {
+ return; // we are already in the process of refreshing, don't do it
again
+ }
+
+ this.refreshingConfig = true;
+ this.refreshingConfigDef = true;
this.saveButton.disable();
if (editor != null) {
@@ -106,6 +117,18 @@ public class PluginConfigurationEditView extends LocatableVLayout
implements Pro
editor.setOverflow(Overflow.AUTO);
editor.addPropertyValueChangeListener(this);
editor.setReadOnly(!this.resourcePermission.isInventory());
+ editor.setLoadHandler(new ConfigurationEditor.LoadHandler() {
+ @Override
+ public void loadedConfigurationDefinition(ConfigurationDefinition configDef)
{
+ refreshingConfig = false; // finished loading the config
+ }
+
+ @Override
+ public void loadedConfiguration(Configuration config) {
+ refreshingConfigDef = false; // finished loading the config def
+ }
+ });
+
addMember(editor);
// TODO (ips): If editor != null, use editor.reload() instead.
}