modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
| 209 +++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/GroupConfigurationEditor.java
| 119 +++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupCompositeDataSource.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupsDataSource.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDataSourceField.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestConfigurationFactory.java
| 52 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestGroupConfigurationView.java
| 139 ++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
| 5
modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
| 4
11 files changed, 384 insertions(+), 157 deletions(-)
New commits:
commit 927bc83226129c29feab114910c9d226bd2e5ddf
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Tue Oct 19 18:55:33 2010 -0400
more work on group config component; add test view for group config
(#TestGroupConfig); misc datasource fixes
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
index 6db7fc8..3888cdc 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
@@ -48,6 +48,7 @@ import org.rhq.enterprise.gui.coregui.client.menu.MenuBarView;
import org.rhq.enterprise.gui.coregui.client.report.ReportTopView;
import org.rhq.enterprise.gui.coregui.client.report.tag.TaggedView;
import org.rhq.enterprise.gui.coregui.client.test.TestConfigurationView;
+import org.rhq.enterprise.gui.coregui.client.test.TestGroupConfigurationView;
import org.rhq.enterprise.gui.coregui.client.util.ErrorHandler;
import org.rhq.enterprise.gui.coregui.client.util.WidgetUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.MessageBar;
@@ -217,6 +218,8 @@ public class CoreGUI implements EntryPoint,
ValueChangeHandler<String> {
canvas = new ReportTopView("Report");
} else if (breadcrumbName.equals(TestConfigurationView.VIEW_ID)) {
canvas = new TestConfigurationView("TestConfig");
+ } else if (breadcrumbName.equals(TestGroupConfigurationView.VIEW_ID)) {
+ canvas = new TestGroupConfigurationView("TestGroupConfig");
} else {
canvas = null;
}
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 2cbebe4..df61aaa 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
@@ -128,7 +128,6 @@ import
org.rhq.core.domain.configuration.definition.constraint.IntegerRangeConst
import org.rhq.core.domain.configuration.definition.constraint.RegexConstraint;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import org.rhq.enterprise.gui.coregui.client.RefreshableView;
import org.rhq.enterprise.gui.coregui.client.components.table.PropertyGrid;
import org.rhq.enterprise.gui.coregui.client.gwt.ConfigurationGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
@@ -558,20 +557,8 @@ public class ConfigurationEditor extends LocatableVLayout {
Property property,
boolean oddRow,
List<FormItem> fields, final boolean
firePropertyChangedEvents) {
- List<FormItem> fieldsForThisProperty = new ArrayList<FormItem>();
+ List<FormItem> fieldsForThisProperty;
- StaticTextItem nameItem = new StaticTextItem();
- nameItem.setStartRow(true);
- String title = "<b>"
- + (propertyDefinition.getDisplayName() != null ?
propertyDefinition.getDisplayName() : propertyDefinition
- .getName()) + "</b>";
- nameItem.setValue(title);
- nameItem.setShowTitle(false);
-
- fieldsForThisProperty.add(nameItem);
- fields.add(nameItem);
-
- final FormItem valueItem;
if (propertyDefinition instanceof PropertyDefinitionSimple) {
final PropertyDefinitionSimple propertyDefinitionSimple =
(PropertyDefinitionSimple)propertyDefinition;
PropertySimple propertySimple = (PropertySimple)property;
@@ -580,34 +567,8 @@ public class ConfigurationEditor extends LocatableVLayout {
propertySimple = new PropertySimple(propertyDefinitionSimple.getName(),
null);
}
- final PropertySimple finalPropertySimple = propertySimple;
- valueItem = buildSimpleField(propertyDefinitionSimple, propertySimple);
- valueItem.addChangedHandler(new ChangedHandler() {
- public void onChanged(ChangedEvent changedEvent) {
- finalPropertySimple.setErrorMessage(null);
- boolean isValid = changedEvent.getItem().validate();
- if (isValid) {
- finalPropertySimple.setValue(changedEvent.getValue());
- }
- if (firePropertyChangedEvents) {
- firePropertyChangedEvent(finalPropertySimple,
propertyDefinitionSimple, isValid);
- }
- }
- });
-
- 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);
- fieldsForThisProperty.add(descriptionItem);
- fields.add(descriptionItem);
+ fieldsForThisProperty = buildFieldsForPropertySimple(propertyDefinition,
propertyDefinitionSimple,
+ propertySimple);
} else if (propertyDefinition instanceof PropertyDefinitionList) {
PropertyDefinitionList propertyDefinitionList =
(PropertyDefinitionList)propertyDefinition;
PropertyDefinition memberDefinition =
propertyDefinitionList.getMemberDefinition();
@@ -615,41 +576,9 @@ public class ConfigurationEditor extends LocatableVLayout {
if (propertyList == null) {
propertyList = new PropertyList(propertyDefinitionList.getName());
}
- if (memberDefinition instanceof PropertyDefinitionMap) {
- // List of Maps is a specially supported case with summary fields as
columns in a table
- // Note: This field spans 3 columns.
- PropertyDefinitionMap memberDefinitionMap =
(PropertyDefinitionMap)memberDefinition;
- CanvasItem listOfMapsItem = buildListOfMapsField(locatorId,
- memberDefinitionMap,
- propertyList, oddRow);
- fieldsForThisProperty.add(listOfMapsItem);
- fields.add(listOfMapsItem);
- } else if (memberDefinition instanceof PropertyDefinitionSimple) {
- SpacerItem unsetItem = new SpacerItem();
- fieldsForThisProperty.add(unsetItem);
- fields.add(unsetItem);
-
- CanvasItem listOfSimplesItem = buildListOfSimplesField(locatorId,
propertyDefinitionList, propertyList,
- oddRow);
- fieldsForThisProperty.add(listOfSimplesItem);
- fields.add(listOfSimplesItem);
-
- StaticTextItem descriptionItem = new StaticTextItem();
- descriptionItem.setValue(propertyDefinition.getDescription());
- descriptionItem.setShowTitle(false);
- descriptionItem.setEndRow(true);
- fieldsForThisProperty.add(descriptionItem);
- fields.add(descriptionItem);
- } else {
- Log.error("List " + propertyList + " has unsupported
member type: " + memberDefinition);
- Canvas canvas = new Canvas();
- // TODO: Add label with error message to canvas.
- CanvasItem canvasItem = buildComplexPropertyField(canvas);
- canvasItem.setColSpan(3);
- canvasItem.setEndRow(true);
- fieldsForThisProperty.add(canvasItem);
- fields.add(canvasItem);
- }
+ fieldsForThisProperty = buildFieldsForPropertyList(locatorId,
propertyDefinition, oddRow,
+ propertyDefinitionList,
+ memberDefinition, propertyList);
} else if (propertyDefinition instanceof PropertyDefinitionMap) {
PropertyDefinitionMap propertyDefinitionMap =
(PropertyDefinitionMap)propertyDefinition;
PropertyMap propertyMap = (PropertyMap)property;
@@ -657,18 +586,113 @@ public class ConfigurationEditor extends LocatableVLayout {
propertyMap = new PropertyMap(propertyDefinitionMap.getName());
}
- // Note: This field spans 3 columns.
- FormItem mapField =
- buildMapField(locatorId, propertyDefinitionMap, propertyMap);
- fields.add(mapField);
+ fieldsForThisProperty = buildFieldsForPropertyMap(locatorId,
propertyDefinitionMap, propertyMap);
+ } else {
+ throw new IllegalStateException("Property definition null or of unknown
type: " + propertyDefinition);
}
- // Set row background color.
+ // Add the fields for this property to the master fields list and set the row
background color.
for (FormItem field : fieldsForThisProperty) {
+ fields.add(field);
field.setCellStyle(oddRow ? "OddRow" : "EvenRow");
}
}
+ protected List<FormItem> buildFieldsForPropertySimple(PropertyDefinition
propertyDefinition,
+ PropertyDefinitionSimple
propertyDefinitionSimple,
+ PropertySimple propertySimple) {
+ List<FormItem> fields = new ArrayList<FormItem>();
+
+ StaticTextItem nameItem = buildNameItem(propertyDefinition);
+ fields.add(nameItem);
+
+ FormItem valueItem;
+ valueItem = buildSimpleField(propertyDefinitionSimple, propertySimple);
+
+ FormItem unsetItem = buildUnsetItem(propertyDefinitionSimple, propertySimple,
valueItem);
+ fields.add(unsetItem);
+
+ fields.add(valueItem);
+
+ StaticTextItem descriptionItem = buildDescriptionField(propertyDefinition);
+ fields.add(descriptionItem);
+
+ return fields;
+ }
+
+ protected List<FormItem> buildFieldsForPropertyList(String locatorId,
PropertyDefinition propertyDefinition, boolean oddRow,
+ PropertyDefinitionList
propertyDefinitionList,
+ PropertyDefinition memberDefinition,
PropertyList propertyList) {
+ List<FormItem> fields = new ArrayList<FormItem>();
+
+ StaticTextItem nameItem = buildNameItem(propertyDefinition);
+ fields.add(nameItem);
+
+ if (memberDefinition instanceof PropertyDefinitionMap) {
+ // List of Maps is a specially supported case with summary fields as columns
in a table
+ // Note: This field spans 3 columns.
+ PropertyDefinitionMap memberDefinitionMap =
(PropertyDefinitionMap)memberDefinition;
+ CanvasItem listOfMapsItem = buildListOfMapsField(locatorId,
+ memberDefinitionMap,
+ propertyList, oddRow);
+ fields.add(listOfMapsItem);
+ } else if (memberDefinition instanceof PropertyDefinitionSimple) {
+ SpacerItem unsetItem = new SpacerItem();
+ fields.add(unsetItem);
+
+ CanvasItem listOfSimplesItem = buildListOfSimplesField(locatorId,
propertyDefinitionList, propertyList,
+ oddRow);
+ fields.add(listOfSimplesItem);
+
+ StaticTextItem descriptionItem = buildDescriptionField(propertyDefinition);
+ fields.add(descriptionItem);
+ } else {
+ Log.error("List " + propertyList + " has unsupported member
type: " + memberDefinition);
+ Canvas canvas = new Canvas();
+ // TODO: Add label with error message to canvas.
+ CanvasItem canvasItem = buildComplexPropertyField(canvas);
+ canvasItem.setColSpan(3);
+ canvasItem.setEndRow(true);
+ fields.add(canvasItem);
+ }
+
+ return fields;
+ }
+
+ protected List<FormItem> buildFieldsForPropertyMap(String locatorId,
+ PropertyDefinitionMap propertyDefinitionMap,
PropertyMap propertyMap) {
+ List<FormItem> fields = new ArrayList<FormItem>();
+
+ StaticTextItem nameItem = buildNameItem(propertyDefinitionMap);
+ fields.add(nameItem);
+
+ // Note: This field spans 3 columns.
+ FormItem mapField =
+ buildMapField(locatorId, propertyDefinitionMap, propertyMap);
+ fields.add(mapField);
+
+ return fields;
+ }
+
+ private StaticTextItem buildNameItem(PropertyDefinition propertyDefinition) {
+ StaticTextItem nameItem = new StaticTextItem();
+ nameItem.setStartRow(true);
+ String title = "<b>"
+ + (propertyDefinition.getDisplayName() != null ?
propertyDefinition.getDisplayName() : propertyDefinition
+ .getName()) + "</b>";
+ nameItem.setValue(title);
+ nameItem.setShowTitle(false);
+ return nameItem;
+ }
+
+ private StaticTextItem buildDescriptionField(PropertyDefinition propertyDefinition)
{
+ StaticTextItem descriptionItem = new StaticTextItem();
+ descriptionItem.setValue(propertyDefinition.getDescription());
+ descriptionItem.setShowTitle(false);
+ descriptionItem.setEndRow(true);
+ return descriptionItem;
+ }
+
private void firePropertyChangedEvent(Property property,
PropertyDefinition propertyDefinition,
boolean isValid) {
@@ -1300,6 +1324,24 @@ public class ConfigurationEditor extends LocatableVLayout {
valueItem.setShowTitle(false);
valueItem.setWidth(220);
+ // 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)) {
+ valueItem.addChangedHandler(new ChangedHandler() {
+ public void onChanged(ChangedEvent changedEvent) {
+ propertySimple.setErrorMessage(null);
+ boolean isValid = changedEvent.getItem().validate();
+ if (isValid) {
+ propertySimple.setValue(changedEvent.getValue());
+ }
+ firePropertyChangedEvent(propertySimple,
propertyDefinitionSimple, isValid);
+ }
+ });
+ }
+
return valueItem;
}
@@ -1334,11 +1376,10 @@ public class ConfigurationEditor extends LocatableVLayout {
unsetItem.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent changeEvent) {
Boolean isUnset = (Boolean) changeEvent.getValue();
+ valueItem.setDisabled(isUnset);
if (isUnset) {
setValue(valueItem, null);
- valueItem.setDisabled(true);
} else {
- valueItem.setDisabled(false);
valueItem.focusInItem();
}
valueItem.redraw();
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 de29950..c3ba6cb 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
@@ -49,7 +49,6 @@ import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinition;
import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
-import org.rhq.enterprise.gui.coregui.client.RefreshableView;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
@@ -60,6 +59,7 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
*/
public class GroupConfigurationEditor extends ConfigurationEditor {
private List<GroupMemberConfiguration> memberConfigurations;
+ private Map<String, FormItem> valueItemNameToStaticItemMap = new
HashMap<String, FormItem>();
private Map<String, FormItem> valueItemNameToUnsetItemMap = new
HashMap<String, FormItem>();
public GroupConfigurationEditor(String locatorId, ConfigurationDefinition
configurationDefinition,
@@ -80,6 +80,34 @@ public class GroupConfigurationEditor extends ConfigurationEditor {
}
@Override
+ protected List<FormItem> buildFieldsForPropertySimple(PropertyDefinition
propertyDefinition,
+ PropertyDefinitionSimple
propertyDefinitionSimple,
+ PropertySimple propertySimple)
{
+ List<FormItem> fields =
super.buildFieldsForPropertySimple(propertyDefinition, propertyDefinitionSimple,
+ propertySimple);
+
+ if (isAggregateProperty(propertySimple)) {
+ // Create the "MEMBER VALUES DIFFER" label that is displayed when
member values are heterogeneous.
+ final StaticTextItem staticItem = new StaticTextItem();
+ staticItem.setValue("MEMBER VALUES DIFFER");
+ staticItem.setTextBoxStyle("InlineNote");
+ staticItem.setShowTitle(false);
+ staticItem.setTooltip("Member values differ - click icon to edit
them.");
+ Boolean isHomogeneous = isHomogeneous(propertySimple);
+ staticItem.setVisible(!isHomogeneous);
+
+ FormItem valueItem = fields.get(2);
+ FormItemIcon icon = buildEditMemberValuesIcon(propertyDefinitionSimple,
propertySimple, valueItem);
+ staticItem.setIcons(icon);
+
+ this.valueItemNameToStaticItemMap.put(valueItem.getName(), staticItem);
+ fields.add(3, staticItem);
+ }
+
+ return fields;
+ }
+
+ @Override
protected FormItem buildSimpleField(final PropertyDefinitionSimple
propertyDefinitionSimple,
final PropertySimple propertySimple) {
final FormItem item = super.buildSimpleField(propertyDefinitionSimple,
propertySimple);
@@ -87,40 +115,55 @@ public class GroupConfigurationEditor extends ConfigurationEditor {
boolean isAggregate = isAggregateProperty(propertySimple);
if (isAggregate) {
// Add the icon that user can click to edit the member values.
- FormItemIcon icon = new FormItemIcon();
- icon.setSrc("[SKIN]/actions/edit.png");
- icon.setName("Edit Member Values");
- icon.setNeverDisable(true);
- icon.addFormItemClickHandler(new FormItemClickHandler() {
- public void onFormItemClick(FormItemIconClickEvent event) {
- // TODO: Pass the actual index, rather than null, if the prop is
inside a list.
-
displayMemberValuesEditor(extendLocatorId("MemberValuesEditor"),
propertyDefinitionSimple,
- propertySimple, null, item);
- }
- });
- // TODO: Figure out a way to add a tooltip to the icon.
- item.setIcons(icon);
+ FormItemIcon icon = buildEditMemberValuesIcon(propertyDefinitionSimple,
propertySimple, item);
- if (!isHomogeneous(propertySimple)) {
- updateHeterogeneousValueItem(item);
- }
+ item.setIcons(icon);
item.addChangedHandler(new ChangedHandler() {
public void onChanged(ChangedEvent changedEvent) {
Object value = changedEvent.getValue();
- for (GroupMemberConfiguration memberConfiguration :
memberConfigurations) {
- Configuration configuration =
memberConfiguration.getConfiguration();
- PropertySimple memberPropertySimple =
- getPropertySimple(configuration, propertyDefinitionSimple,
propertySimple, null);
- memberPropertySimple.setValue(value);
- }
+ updateMemberProperties(propertyDefinitionSimple, propertySimple,
value);
}
});
+
+ Boolean isHomogeneous = isHomogeneous(propertySimple);
+ item.setVisible(isHomogeneous);
}
return item;
}
+ private FormItemIcon buildEditMemberValuesIcon(final PropertyDefinitionSimple
propertyDefinitionSimple,
+ final PropertySimple propertySimple,
final FormItem dynamicItem) {
+ FormItemIcon icon = new FormItemIcon();
+
+ icon.setSrc("[SKIN]/actions/edit.png");
+ icon.setName("Edit Member Values");
+ icon.setNeverDisable(true);
+ icon.addFormItemClickHandler(new FormItemClickHandler() {
+ public void onFormItemClick(FormItemIconClickEvent event) {
+ // TODO: Pass the actual index, rather than null, if the prop is
inside a list.
+
displayMemberValuesEditor(extendLocatorId("MemberValuesEditor"),
propertyDefinitionSimple,
+ propertySimple, null, dynamicItem);
+ }
+ });
+
+ // TODO: Figure out a way to add a tooltip to the icon.
+
+ return icon;
+ }
+
+ private void updateMemberProperties(PropertyDefinitionSimple
propertyDefinitionSimple,
+ PropertySimple propertySimple, Object value
+ ) {
+ for (GroupMemberConfiguration memberConfiguration : memberConfigurations) {
+ Configuration configuration = memberConfiguration.getConfiguration();
+ PropertySimple memberPropertySimple =
+ getPropertySimple(configuration, propertyDefinitionSimple,
propertySimple, null);
+ memberPropertySimple.setValue(value);
+ }
+ }
+
@Override
protected FormItem buildUnsetItem(final PropertyDefinitionSimple
propertyDefinitionSimple, final PropertySimple propertySimple,
final FormItem valueItem) {
@@ -136,8 +179,7 @@ public class GroupConfigurationEditor extends ConfigurationEditor {
private void displayMemberValuesEditor(String locatorId, final
PropertyDefinitionSimple propertyDefinitionSimple,
final PropertySimple aggregatePropertySimple,
- Integer index, final FormItem
aggregateValueItem
- ) {
+ Integer index, final FormItem
aggregateValueItem) {
LocatableVLayout layout = new LocatableVLayout(locatorId);
layout.setHeight100();
@@ -215,31 +257,36 @@ public class GroupConfigurationEditor extends ConfigurationEditor {
memberPropertySimple.setErrorMessage(null);
}
+ FormItem aggregateStaticItem =
valueItemNameToStaticItemMap.get(aggregateValueItem.getName());
+
FormItem aggregateUnsetItem =
valueItemNameToUnsetItemMap.get(aggregateValueItem.getName());
aggregateUnsetItem.setDisabled(!valuesHomogeneous);
+
if (valuesHomogeneous) {
// Update the value of the aggregate property and set its override
flag to true.
aggregatePropertySimple.setValue(firstValue);
aggregatePropertySimple.setOverride(true);
+ aggregateUnsetItem.setValue(firstValue == null);
+
// Set the aggregate value item's value to the homogeneous value,
enable it, and make sure it has
// validators set.
- aggregateValueItem.setDisabled(false);
setValue(aggregateValueItem, firstValue);
- aggregateValueItem.setTooltip(null);
- aggregateValueItem.setValidateOnChange(true);
- aggregateValueItem.setValidateOnExit(true);
+ aggregateValueItem.show();
+ aggregateValueItem.setDisabled(false);
+
+ aggregateStaticItem.hide();
- aggregateUnsetItem.setValue(firstValue == null);
} else {
aggregatePropertySimple.setValue(null);
aggregatePropertySimple.setOverride(false);
- updateHeterogeneousValueItem(aggregateValueItem);
+ aggregateValueItem.hide();
- aggregateUnsetItem.setValue((String)null);
+ aggregateStaticItem.show();
}
+ form.markForRedraw();
popup.destroy();
}
});
@@ -270,14 +317,6 @@ public class GroupConfigurationEditor extends ConfigurationEditor {
popup.show();
}
- private void updateHeterogeneousValueItem(FormItem item) {
- item.setDisabled(true);
- item.setValidateOnChange(false);
- item.setValidateOnExit(false);
- item.setValue("MEMBER VALUES DIFFER");
- item.setTooltip("Member values differ - click icon to edit them.");
- }
-
private PropertySimple getPropertySimple(Configuration configuration,
PropertyDefinitionSimple
propertyDefinitionSimple,
PropertySimple aggregatePropertySimple,
Integer index) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupCompositeDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupCompositeDataSource.java
index 6fd1d01..2b5097f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupCompositeDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupCompositeDataSource.java
@@ -157,7 +157,7 @@ public class ResourceGroupCompositeDataSource extends
RPCDataSource<ResourceGrou
record.setAttribute("id", from.getResourceGroup().getId());
record.setAttribute("name", from.getResourceGroup().getName());
record.setAttribute("description",
from.getResourceGroup().getDescription());
- record.setAttribute("category",
from.getResourceGroup().getGroupCategory().toString());
+ record.setAttribute("category",
from.getResourceGroup().getGroupCategory());
record.setAttribute("explicitUp",
String.valueOf(from.getExplicitUp()));
record.setAttribute("explicitDown",
String.valueOf(from.getExplicitDown()));
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupsDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupsDataSource.java
index 190baf7..e0778bb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupsDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupsDataSource.java
@@ -152,7 +152,7 @@ public class ResourceGroupsDataSource extends
RPCDataSource<ResourceGroup> {
record.setAttribute("id", from.getId());
record.setAttribute("name", from.getName());
record.setAttribute("description", from.getDescription());
- record.setAttribute("category", from.getGroupCategory().toString());
+ record.setAttribute("category", from.getGroupCategory());
if (from.getResourceType() != null) {
record.setAttribute("resourceType", from.getResourceType());
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDataSourceField.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDataSourceField.java
index 59b55e9..be80e8e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDataSourceField.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDataSourceField.java
@@ -40,12 +40,12 @@ public enum ResourceDataSourceField {
AVAILABILITY("currentAvailability", "Availability");
/**
- * Corresponds to a property name of Resource
+ * Corresponds to a property name of Resource (e.g. resourceType.name).
*/
private String propertyName;
/**
- * The display name for the field or property
+ * The table header for the field or property (e.g. Type).
*/
private String title;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java
index 2b3a4c2..7759f53 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceDatasource.java
@@ -163,7 +163,7 @@ public class ResourceDatasource extends RPCDataSource<Resource>
{
record.setAttribute(DESCRIPTION.propertyName(), from.getDescription());
record.setAttribute(TYPE.propertyName(), from.getResourceType().getId());
record.setAttribute(PLUGIN.propertyName(), from.getResourceType().getPlugin());
- record.setAttribute(CATEGORY.propertyName(),
from.getResourceType().getCategory().getDisplayName());
+ record.setAttribute(CATEGORY.propertyName(),
from.getResourceType().getCategory());
record.setAttribute("icon",
from.getResourceType().getCategory().getDisplayName() + "_"
+ (from.getCurrentAvailability().getAvailabilityType() == AvailabilityType.UP
? "up" : "down") + "_16.png");
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestConfigurationFactory.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestConfigurationFactory.java
index 396f07a..89d7d53 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestConfigurationFactory.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestConfigurationFactory.java
@@ -45,48 +45,48 @@ import
org.rhq.core.domain.configuration.definition.PropertySimpleType;
*/
public abstract class TestConfigurationFactory {
public static ConfigurationDefinition createConfigurationDefinition() {
- ConfigurationDefinition configurationDefinition = new
ConfigurationDefinition("TestConfig", "a test config");
+ ConfigurationDefinition configDef = new
ConfigurationDefinition("TestConfig", "a test config");
ConfigurationTemplate defaultTemplate = new
ConfigurationTemplate(ConfigurationTemplate.DEFAULT_TEMPLATE_NAME, "default
template");
- configurationDefinition.putTemplate(defaultTemplate);
+ configDef.putTemplate(defaultTemplate);
Configuration defaultConfiguration = new Configuration();
defaultTemplate.setConfiguration(defaultConfiguration);
Map<String, PropertyDefinition> propertyDefinitions = new
HashMap<String, PropertyDefinition>();
- configurationDefinition.setPropertyDefinitions(propertyDefinitions);
+ configDef.setPropertyDefinitions(propertyDefinitions);
int orderIndex = 0;
PropertyDefinitionSimple simplePropDef;
simplePropDef = createStringPropDef1();
- addPropertyDefinition(propertyDefinitions, simplePropDef, orderIndex++);
+ addPropertyDefinition(configDef, simplePropDef, orderIndex++);
simplePropDef = createStringPropDef2();
- addPropertyDefinition(propertyDefinitions, simplePropDef, orderIndex++);
+ addPropertyDefinition(configDef, simplePropDef, orderIndex++);
simplePropDef = new PropertyDefinitionSimple("LongString", "a Long
String simple prop", false,
PropertySimpleType.LONG_STRING);
simplePropDef.setDisplayName(simplePropDef.getName());
- addPropertyDefinition(propertyDefinitions, simplePropDef, orderIndex++);
+ addPropertyDefinition(configDef, simplePropDef, orderIndex++);
simplePropDef = new PropertyDefinitionSimple("Password", "a
Password simple prop", false,
PropertySimpleType.PASSWORD);
simplePropDef.setDisplayName(simplePropDef.getName());
- addPropertyDefinition(propertyDefinitions, simplePropDef, orderIndex++);
+ addPropertyDefinition(configDef, simplePropDef, orderIndex++);
simplePropDef = new PropertyDefinitionSimple("Boolean", "a
required Boolean simple prop", true,
PropertySimpleType.BOOLEAN);
simplePropDef.setDisplayName(simplePropDef.getName());
- addPropertyDefinition(propertyDefinitions, simplePropDef, orderIndex++);
+ addPropertyDefinition(configDef, simplePropDef, orderIndex++);
simplePropDef.setRequired(true);
simplePropDef = createIntegerPropDef();
- addPropertyDefinition(propertyDefinitions, simplePropDef, orderIndex++);
+ addPropertyDefinition(configDef, simplePropDef, orderIndex++);
simplePropDef = new PropertyDefinitionSimple("Float", "a Float
simple prop", false, PropertySimpleType.FLOAT);
simplePropDef.setDisplayName(simplePropDef.getName());
- addPropertyDefinition(propertyDefinitions, simplePropDef, orderIndex++);
+ addPropertyDefinition(configDef, simplePropDef, orderIndex++);
simplePropDef = new PropertyDefinitionSimple("StringEnum1",
"a String enum prop with <=5 items - should be rendered as radio
buttons", false,
@@ -98,7 +98,7 @@ public abstract class TestConfigurationFactory {
propDefEnums.add(new PropertyDefinitionEnumeration("NJ",
"NJ"));
propDefEnums.add(new PropertyDefinitionEnumeration("PA",
"PA"));
simplePropDef.setEnumeratedValues(propDefEnums, false);
- addPropertyDefinition(propertyDefinitions, simplePropDef, orderIndex++);
+ addPropertyDefinition(configDef, simplePropDef, orderIndex++);
simplePropDef = new PropertyDefinitionSimple("StringEnum2",
"a String enum prop with >5 items - should be rendered as a popup
menu", false, PropertySimpleType.STRING);
@@ -112,31 +112,31 @@ public abstract class TestConfigurationFactory {
propDefEnums.add(new PropertyDefinitionEnumeration("blue",
"blue"));
propDefEnums.add(new PropertyDefinitionEnumeration("purple",
"purple"));
simplePropDef.setEnumeratedValues(propDefEnums, false);
- addPropertyDefinition(propertyDefinitions, simplePropDef, orderIndex++);
+ addPropertyDefinition(configDef, simplePropDef, orderIndex++);
PropertyDefinitionMap mapPropDef = new
PropertyDefinitionMap("MapOfSimples", "a map of simples", false);
mapPropDef.put(createStringPropDef1());
mapPropDef.put(createStringPropDef2());
mapPropDef.put(createIntegerPropDef());
mapPropDef.setDisplayName(mapPropDef.getName());
- addPropertyDefinition(propertyDefinitions, mapPropDef, orderIndex++);
+ addPropertyDefinition(configDef, mapPropDef, orderIndex++);
PropertyDefinitionMap openMapPropDef = new
PropertyDefinitionMap("OpenMapOfSimples", "an open map of simples",
false);
openMapPropDef.setDisplayName(openMapPropDef.getName());
- addPropertyDefinition(propertyDefinitions, openMapPropDef, orderIndex++);
+ addPropertyDefinition(configDef, openMapPropDef, orderIndex++);
PropertyDefinitionMap readOnlyOpenMapPropDef = new
PropertyDefinitionMap("ReadOnlyOpenMapOfSimples",
"a read-only open map of simples", false);
readOnlyOpenMapPropDef.setDisplayName(readOnlyOpenMapPropDef.getName());
readOnlyOpenMapPropDef.setReadOnly(true);
- addPropertyDefinition(propertyDefinitions, readOnlyOpenMapPropDef,
orderIndex++);
+ addPropertyDefinition(configDef, readOnlyOpenMapPropDef, orderIndex++);
PropertyDefinitionList listOfSimplesPropDef = new
PropertyDefinitionList("ListOfSimples",
"a list of Integer simples", true, new
PropertyDefinitionSimple("integer", "an integer", false,
PropertySimpleType.INTEGER));
listOfSimplesPropDef.setDisplayName(listOfSimplesPropDef.getName());
- addPropertyDefinition(propertyDefinitions, listOfSimplesPropDef, orderIndex++);
+ addPropertyDefinition(configDef, listOfSimplesPropDef, orderIndex++);
PropertyDefinitionMap mapInListPropDef =
new PropertyDefinitionMap("MapOfSimplesInList", "a map of
simples in a list", false);
@@ -148,7 +148,7 @@ public abstract class TestConfigurationFactory {
PropertyDefinitionList listPropDef = new
PropertyDefinitionList("ListOfMaps", "a list of maps", true,
mapInListPropDef);
listPropDef.setDisplayName(listPropDef.getName());
- addPropertyDefinition(propertyDefinitions, listPropDef, orderIndex++);
+ addPropertyDefinition(configDef, listPropDef, orderIndex++);
PropertyDefinitionMap mapInReadOnlyListPropDef =
new PropertyDefinitionMap("MapOfSimplesInReadOnlyList", "a map
of simples in a list", false);
@@ -161,7 +161,7 @@ public abstract class TestConfigurationFactory {
"a read-only list of maps", true, mapInReadOnlyListPropDef);
readOnlyListPropDef.setDisplayName(readOnlyListPropDef.getName());
readOnlyListPropDef.setReadOnly(true);
- addPropertyDefinition(propertyDefinitions, readOnlyListPropDef, orderIndex++);
+ addPropertyDefinition(configDef, readOnlyListPropDef, orderIndex++);
PropertyGroupDefinition propertyGroupDefinition = new
PropertyGroupDefinition("myGroup");
propertyGroupDefinition.setDisplayName(propertyGroupDefinition.getName());
@@ -171,14 +171,14 @@ public abstract class TestConfigurationFactory {
PropertySimpleType.STRING);
myString.setDisplayName(myString.getName());
myString.setSummary(true);
- addPropertyDefinition(propertyDefinitions, myString, orderIndex++);
+ addPropertyDefinition(configDef, myString, orderIndex++);
myString.setPropertyGroupDefinition(propertyGroupDefinition);
PropertyDefinitionSimple myString2 = new
PropertyDefinitionSimple("myString2", "my other little string", true,
PropertySimpleType.STRING);
myString2.setDisplayName(myString2.getName());
myString2.setSummary(true);
- addPropertyDefinition(propertyDefinitions, myString2, orderIndex++);
+ addPropertyDefinition(configDef, myString2, orderIndex++);
myString2.setPropertyGroupDefinition(propertyGroupDefinition);
PropertyGroupDefinition propertyGroupDefinition2 = new
PropertyGroupDefinition("myGroup2");
@@ -189,7 +189,7 @@ public abstract class TestConfigurationFactory {
PropertySimpleType.STRING);
myString3.setDisplayName((myString3.getName()));
myString3.setSummary(true);
- addPropertyDefinition(propertyDefinitions, myString3, orderIndex++);
+ addPropertyDefinition(configDef, myString3, orderIndex++);
myString3.setPropertyGroupDefinition(propertyGroupDefinition2);
PropertyDefinitionSimple enumExample = new
PropertyDefinitionSimple("myEnum",
@@ -201,16 +201,16 @@ public abstract class TestConfigurationFactory {
myEnums.add(new PropertyDefinitionEnumeration("Camden",
"Camden"));
myEnums.add(new PropertyDefinitionEnumeration("Gloucester",
"Gloucester"));
enumExample.setEnumeratedValues(myEnums, false);
- addPropertyDefinition(propertyDefinitions, enumExample, orderIndex++);
+ addPropertyDefinition(configDef, enumExample, orderIndex++);
enumExample.setPropertyGroupDefinition(propertyGroupDefinition2);
- return configurationDefinition;
+ return configDef;
}
- private static void addPropertyDefinition(Map<String, PropertyDefinition>
propertyDefinitions,
- PropertyDefinition propDef, int orderIndex)
{
+ private static void addPropertyDefinition(ConfigurationDefinition configDef,
+ PropertyDefinition propDef, int orderIndex)
{
propDef.setOrder(orderIndex);
- propertyDefinitions.put(propDef.getName(), propDef);
+ configDef.put(propDef);
}
public static Configuration createConfiguration() {
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
new file mode 100644
index 0000000..7d71c02
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestGroupConfigurationView.java
@@ -0,0 +1,139 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2010, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.enterprise.gui.coregui.client.test;
+
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.List;
+
+import com.smartgwt.client.types.Overflow;
+import com.smartgwt.client.widgets.events.ClickEvent;
+import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.layout.LayoutSpacer;
+import com.smartgwt.client.widgets.toolbar.ToolStrip;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import
org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor;
+import
org.rhq.enterprise.gui.coregui.client.components.configuration.GroupConfigurationEditor;
+import
org.rhq.enterprise.gui.coregui.client.components.configuration.GroupMemberConfiguration;
+import
org.rhq.enterprise.gui.coregui.client.components.configuration.PropertyValueChangeEvent;
+import
org.rhq.enterprise.gui.coregui.client.components.configuration.PropertyValueChangeListener;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message;
+import org.rhq.enterprise.gui.coregui.client.util.message.MessageCenter;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableIButton;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+
+/**
+ * @author Ian Springer
+ */
+public class TestGroupConfigurationView
+ extends LocatableVLayout implements PropertyValueChangeListener {
+ public static final String VIEW_ID = "TestGroupConfig";
+
+ private static final int GROUP_SIZE = 2;
+
+ private ConfigurationEditor editor;
+ private LocatableIButton saveButton;
+ private ConfigurationDefinition configurationDefinition;
+ private List<GroupMemberConfiguration> memberConfigurations;
+
+ public TestGroupConfigurationView(String locatorId) {
+ super(locatorId);
+ }
+
+ @Override
+ protected void onDraw() {
+ super.onDraw();
+
+ setWidth100();
+ setHeight100();
+
+ ToolStrip toolStrip = new ToolStrip();
+ toolStrip.setWidth100();
+
+ toolStrip.addMember(new LayoutSpacer());
+
+ this.saveButton = new LocatableIButton(this.extendLocatorId("Save"),
"Save");
+ this.saveButton.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ save();
+ }
+ });
+ this.saveButton.disable();
+ toolStrip.addMember(this.saveButton);
+
+ addMember(toolStrip);
+
+ this.configurationDefinition =
TestConfigurationFactory.createConfigurationDefinition();
+ this.memberConfigurations = new
ArrayList<GroupMemberConfiguration>(GROUP_SIZE);
+ for (int i = 0; i < GROUP_SIZE; i++) {
+ Configuration configuration =
TestConfigurationFactory.createConfiguration();
+ GroupMemberConfiguration memberConfiguration = new
GroupMemberConfiguration(i, "Member #" + i,
+ configuration);
+ this.memberConfigurations.add(memberConfiguration);
+ }
+
+ reloadConfiguration();
+ }
+
+ @Override
+ public void propertyValueChanged(PropertyValueChangeEvent event) {
+ MessageCenter messageCenter = CoreGUI.getMessageCenter();
+ Message message;
+ if (event.isValidationStateChanged()) {
+ if (event.getInvalidPropertyNames().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));
+ }
+ 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.",
+ Message.Severity.Error, EnumSet.of(Message.Option.Transient,
Message.Option.Sticky));
+ }
+ messageCenter.notify(message);
+ } else {
+ this.saveButton.enable();
+ }
+ }
+
+ private void reloadConfiguration() {
+ this.saveButton.disable();
+ if (editor != null) {
+ editor.destroy();
+ removeMember(editor);
+ }
+
+ editor = new GroupConfigurationEditor(extendLocatorId("Editor"),
this.configurationDefinition,
+ this.memberConfigurations);
+ editor.setOverflow(Overflow.AUTO);
+ editor.addPropertyValueChangeListener(this);
+ addMember(editor);
+ }
+
+ private void save() {
+ CoreGUI.getMessageCenter().notify(
+ new Message("Member configurations updated.", "Member
configurations updated."));
+ reloadConfiguration();
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
index 3314eeb..ce0ce25 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/RPCDataSource.java
@@ -24,6 +24,7 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.JavaScriptObject;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.DSRequest;
@@ -328,7 +329,7 @@ public abstract class RPCDataSource<T> extends DataSource {
@SuppressWarnings("unchecked")
public static <S> S getFilter(DSRequest request, String paramName,
Class<S> type) {
- com.allen_sauer.gwt.log.client.Log.debug("Fetching " + paramName +
" (" + type + ")");
+ Log.debug("Fetching " + paramName + " (" + type +
")");
Criteria criteria = request.getCriteria();
Map<String, Object> criteriaMap = criteria.getValues();
@@ -350,7 +351,7 @@ public abstract class RPCDataSource<T> extends DataSource {
}
}
- com.allen_sauer.gwt.log.client.Log.debug("Result = " + result);
+ Log.debug("Result = " + result);
return result;
}
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
index 54cc3a9..d60a616 100644
--- a/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
+++ b/modules/enterprise/gui/coregui/src/main/webapp/CoreGUI.css
@@ -386,6 +386,10 @@ a:hover {
border-color: #EE1111; /* slightly darker medium red */
}
+.InlineNote {
+ color: #511;
+}
+
.log-panel {
z-index: 9999999 !important;
}