modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
| 7 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
| 60 ++++++----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestTopView.java
| 23 +++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestConfigurationFactory.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestConfigurationView.java
| 14 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestGroupConfigurationView.java
| 14 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestReadOnlyConfigurationView.java
| 41 ++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestReadOnlyGroupConfigurationView.java
| 41 ++++++
8 files changed, 172 insertions(+), 30 deletions(-)
New commits:
commit 0aefd8c5cc4837aad89342f64dd76083ab6542fb
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu Feb 24 13:20:16 2011 -0500
for list of maps where list is read-only or entire config is read-only, show a view
icon, rather than an edit icon and enable the OK button in the popup map editor; add test
views under #Test for read-only config editor and read-only group config editor
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
index da0b477..1aad4e6 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
@@ -38,6 +38,13 @@ public class ImageManager {
/**
* Returns a generic edit icon.
*/
+ public static String getViewIcon() {
+ return "[SKIN]/actions/view.png";
+ }
+
+ /**
+ * Returns a generic edit icon.
+ */
public static String getEditIcon() {
return "[SKIN]/actions/edit.png";
}
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 894aeb3..b7c45d6 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
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2010 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -552,7 +552,8 @@ public class ConfigurationEditor extends LocatableVLayout {
// 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);
+ CanvasItem listOfMapsItem = buildListOfMapsField(locatorId,
memberDefinitionMap, propertyDefinitionList,
+ propertyList, oddRow);
fields.add(listOfMapsItem);
} else if (memberDefinition instanceof PropertyDefinitionSimple) {
SpacerItem unsetItem = new SpacerItem();
@@ -811,7 +812,9 @@ public class ConfigurationEditor extends LocatableVLayout {
}
private CanvasItem buildListOfMapsField(final String locatorId,
- final PropertyDefinitionMap memberPropertyDefinitionMap, 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();
@@ -872,26 +875,29 @@ public class ConfigurationEditor extends LocatableVLayout {
}
}
+ boolean allSubDefsReadOnly = isAllReadOnly(propertyDefinitions);
+
ListGridField editField = new ListGridField("edit", 20);
editField.setType(ListGridFieldType.ICON);
- // editField.setIcon(Window.getImgURL(ImageManager.getEditIcon()));
- editField.setCellIcon(Window.getImgURL(ImageManager.getEditIcon()));
+ final boolean mapReadOnly = this.readOnly || allSubDefsReadOnly;
+ String icon = (mapReadOnly) ? ImageManager.getViewIcon() :
ImageManager.getEditIcon();
+ editField.setCellIcon(Window.getImgURL(icon));
editField.setCanEdit(false);
editField.setCanGroupBy(false);
editField.setCanSort(false);
editField.setCanHide(false);
editField.addRecordClickHandler(new RecordClickHandler() {
public void onRecordClick(RecordClickEvent recordClickEvent) {
- Log.info("You want to edit: " + recordClickEvent.getRecord());
+ Log.debug("Editing property map: " +
recordClickEvent.getRecord());
PropertyMap memberPropertyMap = (PropertyMap)
recordClickEvent.getRecord().getAttributeAsObject(
RHQ_PROPERTY_ATTRIBUTE_NAME);
displayMapEditor(extendLocatorId("MapEdit"), summaryTable,
recordClickEvent.getRecord(),
- memberPropertyDefinitionMap, propertyList, memberPropertyMap);
+ memberPropertyDefinitionMap, propertyList, memberPropertyMap,
mapReadOnly);
}
});
fieldsList.add(editField);
- if (!readOnly) {
+ if (!(readOnly || propertyDefinitionList.isReadOnly())) {
ListGridField removeField = new ListGridField("remove", 20);
removeField.setType(ListGridFieldType.ICON);
//
removeField.setIcon(Window.getImgURL("[SKIN]/actions/remove.png"));
//"/images/tbb_delete.gif");
@@ -930,16 +936,17 @@ public class ConfigurationEditor extends LocatableVLayout {
ToolStrip toolStrip = new ToolStrip();
toolStrip.setWidth100();
- IButton addRowButton = new IButton();
- addRowButton.setIcon(Window.getImgURL("[SKIN]/actions/add.png"));
- addRowButton.addClickHandler(new
com.smartgwt.client.widgets.events.ClickHandler() {
- public void onClick(ClickEvent clickEvent) {
- displayMapEditor(extendLocatorId("MapEdit"), summaryTable,
null, memberPropertyDefinitionMap,
- propertyList, null);
- }
- });
-
- toolStrip.addMember(addRowButton);
+ if (!(readOnly || propertyDefinitionList.isReadOnly())) {
+ IButton addRowButton = new IButton();
+ addRowButton.setIcon(Window.getImgURL("[SKIN]/actions/add.png"));
+ addRowButton.addClickHandler(new
com.smartgwt.client.widgets.events.ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ displayMapEditor(extendLocatorId("MapEdit"), summaryTable,
null, memberPropertyDefinitionMap,
+ propertyList, null, mapReadOnly);
+ }
+ });
+ toolStrip.addMember(addRowButton);
+ }
summaryTableHolder.setMembers(summaryTable, toolStrip);
@@ -950,6 +957,17 @@ public class ConfigurationEditor extends LocatableVLayout {
return canvasItem;
}
+ private static boolean isAllReadOnly(List<PropertyDefinition>
propertyDefinitions) {
+ boolean allPropsDefsReadOnly = true;
+ for (PropertyDefinition subDef : propertyDefinitions) {
+ if (!subDef.isReadOnly()) {
+ allPropsDefsReadOnly = false;
+ break;
+ }
+ }
+ return allPropsDefsReadOnly;
+ }
+
private ListGridRecord[] buildSummaryRecords(PropertyList propertyList,
List<PropertyDefinition> definitions) {
ListGridRecord[] rows = new ListGridRecord[propertyList == null ? 0 :
propertyList.getList().size()];
int i = 0;
@@ -1428,7 +1446,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)
{
+ PropertyDefinitionMap definition, final PropertyList
list, final PropertyMap map, boolean mapReadOnly) {
final List<PropertyDefinition> memberDefinitions = new
ArrayList<PropertyDefinition>(definition
.getPropertyDefinitions().values());
@@ -1454,7 +1472,9 @@ public class ConfigurationEditor extends LocatableVLayout {
popup.centerInPage();
final IButton okButton = new LocatableIButton(extendLocatorId("OK"),
MSG.common_button_ok());
- okButton.disable();
+ if (!mapReadOnly) {
+ okButton.disable();
+ }
okButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() {
public void onClick(ClickEvent clickEvent) {
if (newRow) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestTopView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestTopView.java
index 95bfaa5..5e69c1b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestTopView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/TestTopView.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2010 Red Hat, Inc.
+ * Copyright (C) 2005-2011 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -33,6 +33,8 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.resource.selection.Resour
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeTreeView;
import org.rhq.enterprise.gui.coregui.client.test.configuration.TestConfigurationView;
import
org.rhq.enterprise.gui.coregui.client.test.configuration.TestGroupConfigurationView;
+import
org.rhq.enterprise.gui.coregui.client.test.configuration.TestReadOnlyConfigurationView;
+import
org.rhq.enterprise.gui.coregui.client.test.configuration.TestReadOnlyGroupConfigurationView;
import org.rhq.enterprise.gui.coregui.client.test.i18n.TestPluralizationView;
import org.rhq.enterprise.gui.coregui.client.test.i18n.TestRemoteServiceStatisticsView;
import org.rhq.enterprise.gui.coregui.client.test.inventory.TestSearchBarView;
@@ -44,6 +46,7 @@ import
org.rhq.enterprise.gui.coregui.client.test.inventory.TestSearchBarView;
* @author Ian Springer
*/
public class TestTopView extends AbstractSectionedLeftNavigationView {
+
public static final ViewName VIEW_ID = new ViewName("Test");
// view IDs for Inventory section
@@ -55,7 +58,9 @@ public class TestTopView extends AbstractSectionedLeftNavigationView {
// view IDs for Configuration section
private static final ViewName CONFIGURATION_SECTION_VIEW_ID = new
ViewName("Configuration");
private static final ViewName PAGE_CONFIG_EDITOR = new
ViewName("ConfigEditor");
+ private static final ViewName PAGE_READONLY_CONFIG_EDITOR = new
ViewName("ReadOnlyConfigEditor");
private static final ViewName PAGE_GROUP_CONFIG_EDITOR = new
ViewName("GroupConfigEditor");
+ private static final ViewName PAGE_READONLY_GROUP_CONFIG_EDITOR = new
ViewName("ReadOnlyGroupConfigEditor");
// view IDs for Misc section
private static final ViewName MISC_SECTION_VIEW_ID = new ViewName("Misc");
@@ -119,13 +124,26 @@ public class TestTopView extends AbstractSectionedLeftNavigationView
{
}
});
+ NavigationItem readOnlyConfigEditorItem = new
NavigationItem(PAGE_READONLY_CONFIG_EDITOR, null, new ViewFactory() {
+ public Canvas createView() {
+ return new
TestReadOnlyConfigurationView(extendLocatorId(PAGE_READONLY_CONFIG_EDITOR.getName()));
+ }
+ });
+
NavigationItem groupConfigEditorItem = new
NavigationItem(PAGE_GROUP_CONFIG_EDITOR, null, new ViewFactory() {
public Canvas createView() {
return new
TestGroupConfigurationView(extendLocatorId(PAGE_GROUP_CONFIG_EDITOR.getName()));
}
});
- return new NavigationSection(CONFIGURATION_SECTION_VIEW_ID, configEditorItem,
groupConfigEditorItem);
+ NavigationItem readOnlyGroupConfigEditorItem = new
NavigationItem(PAGE_READONLY_GROUP_CONFIG_EDITOR, null, new ViewFactory() {
+ public Canvas createView() {
+ return new
TestReadOnlyGroupConfigurationView(extendLocatorId(PAGE_READONLY_GROUP_CONFIG_EDITOR.getName()));
+ }
+ });
+
+ return new NavigationSection(CONFIGURATION_SECTION_VIEW_ID, configEditorItem,
readOnlyConfigEditorItem,
+ groupConfigEditorItem, readOnlyGroupConfigEditorItem);
}
private NavigationSection buildMiscSection() {
@@ -145,4 +163,5 @@ public class TestTopView extends AbstractSectionedLeftNavigationView
{
return new NavigationSection(MISC_SECTION_VIEW_ID, pluralizationItem,
remoteServiceStatisticsItem);
}
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestConfigurationFactory.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestConfigurationFactory.java
index e786a36..cca914c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestConfigurationFactory.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestConfigurationFactory.java
@@ -44,6 +44,7 @@ import org.rhq.core.domain.configuration.definition.PropertySimpleType;
* @author Ian Springer
*/
public abstract class TestConfigurationFactory {
+
public static ConfigurationDefinition createConfigurationDefinition() {
ConfigurationDefinition configDef = new
ConfigurationDefinition("TestConfig", "a test config");
@@ -308,4 +309,5 @@ public abstract class TestConfigurationFactory {
private TestConfigurationFactory() {
}
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestConfigurationView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestConfigurationView.java
index 206c78a..f1845b7 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestConfigurationView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestConfigurationView.java
@@ -44,7 +44,6 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
*/
public class TestConfigurationView
extends LocatableVLayout implements PropertyValueChangeListener {
- public static final String VIEW_ID = "TestConfig";
private ConfigurationEditor editor;
private LocatableIButton saveButton;
@@ -119,15 +118,22 @@ public class TestConfigurationView
removeMember(editor);
}
- editor = new ConfigurationEditor(extendLocatorId("Editor"),
this.configurationDefinition, this.configuration);
+ editor = createConfigurationEditor();
+ addMember(editor);
+ }
+
+ protected ConfigurationEditor createConfigurationEditor() {
+ ConfigurationEditor editor = new
ConfigurationEditor(extendLocatorId("Editor"), this.configurationDefinition,
this.configuration);
+ editor.setEditorTitle("Test Configuration");
editor.setOverflow(Overflow.AUTO);
editor.addPropertyValueChangeListener(this);
- addMember(editor);
+ return editor;
}
private void save() {
CoreGUI.getMessageCenter().notify(
new Message("Configuration updated.", "Test configuration
updated."));
reloadConfiguration();
- }
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestGroupConfigurationView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestGroupConfigurationView.java
index 1a8b304..8179fbd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestGroupConfigurationView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestGroupConfigurationView.java
@@ -48,7 +48,6 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
*/
public class TestGroupConfigurationView
extends LocatableVLayout implements PropertyValueChangeListener {
- public static final String VIEW_ID = "TestGroupConfig";
private static final int GROUP_SIZE = 2;
@@ -127,16 +126,23 @@ public class TestGroupConfigurationView
removeMember(editor);
}
- editor = new GroupConfigurationEditor(extendLocatorId("Editor"),
this.configurationDefinition,
+ editor = createConfigurationEditor();
+ addMember(editor);
+ }
+
+ protected GroupConfigurationEditor createConfigurationEditor() {
+ GroupConfigurationEditor editor = new
GroupConfigurationEditor(extendLocatorId("Editor"),
this.configurationDefinition,
this.memberConfigurations);
+ editor.setEditorTitle("Test Group Configuration");
editor.setOverflow(Overflow.AUTO);
editor.addPropertyValueChangeListener(this);
- addMember(editor);
+ return 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/test/configuration/TestReadOnlyConfigurationView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestReadOnlyConfigurationView.java
new file mode 100644
index 0000000..899da26
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestReadOnlyConfigurationView.java
@@ -0,0 +1,41 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2011, 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.configuration;
+
+import
org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor;
+
+/**
+ * @author Ian Springer
+ */
+public class TestReadOnlyConfigurationView extends TestConfigurationView {
+
+ public TestReadOnlyConfigurationView(String locatorId) {
+ super(locatorId);
+ }
+
+ @Override
+ protected ConfigurationEditor createConfigurationEditor() {
+ ConfigurationEditor editor = super.createConfigurationEditor();
+ editor.setEditorTitle("Test Read-Only Configuration");
+ editor.setReadOnly(true);
+ return editor;
+ }
+
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestReadOnlyGroupConfigurationView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestReadOnlyGroupConfigurationView.java
new file mode 100644
index 0000000..f8d3829
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/test/configuration/TestReadOnlyGroupConfigurationView.java
@@ -0,0 +1,41 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2011, 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.configuration;
+
+import
org.rhq.enterprise.gui.coregui.client.components.configuration.GroupConfigurationEditor;
+
+/**
+ * @author Ian Springer
+ */
+public class TestReadOnlyGroupConfigurationView extends TestGroupConfigurationView {
+
+ public TestReadOnlyGroupConfigurationView(String locatorId) {
+ super(locatorId);
+ }
+
+ @Override
+ protected GroupConfigurationEditor createConfigurationEditor() {
+ GroupConfigurationEditor editor = super.createConfigurationEditor();
+ editor.setEditorTitle("Test Read-Only Group Configuration");
+ editor.setReadOnly(true);
+ return editor;
+ }
+
+}