modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
| 234 +++-------
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/AbstractRecordEditor.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/ResourceOperationHistoryDetailsView.java
| 9
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/ResourceOperationScheduleDetailsView.java
| 80 +++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/CurrentGroupPluginConfigurationView.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/HistoryGroupPluginConfigurationSettings.java
| 7
6 files changed, 170 insertions(+), 171 deletions(-)
New commits:
commit 1a30dca496cb0a95b0216c578c019ab7265a57da
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon Dec 20 18:14:26 2010 -0500
add operation parameters to operation schedules details view; get rid of tabs in
config editor, since we currently don't support raw config; only show collapsible
section stack in config editor if the configdef includes one or more prop groups
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 9b6a063..c2e2626 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
@@ -40,7 +40,6 @@ import com.smartgwt.client.types.Autofit;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.types.MultipleAppearance;
import com.smartgwt.client.types.Overflow;
-import com.smartgwt.client.types.TreeModelType;
import com.smartgwt.client.types.VisibilityMode;
import com.smartgwt.client.util.BooleanCallback;
import com.smartgwt.client.util.SC;
@@ -87,8 +86,6 @@ import com.smartgwt.client.widgets.grid.events.CellSavedEvent;
import com.smartgwt.client.widgets.grid.events.CellSavedHandler;
import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
-import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler;
-import com.smartgwt.client.widgets.grid.events.SelectionEvent;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.LayoutSpacer;
import com.smartgwt.client.widgets.layout.SectionStack;
@@ -99,12 +96,7 @@ import com.smartgwt.client.widgets.menu.MenuItem;
import com.smartgwt.client.widgets.menu.MenuItemSeparator;
import com.smartgwt.client.widgets.menu.events.ClickHandler;
import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent;
-import com.smartgwt.client.widgets.tab.Tab;
-import com.smartgwt.client.widgets.tab.TabSet;
import com.smartgwt.client.widgets.toolbar.ToolStrip;
-import com.smartgwt.client.widgets.tree.Tree;
-import com.smartgwt.client.widgets.tree.TreeGrid;
-import com.smartgwt.client.widgets.tree.TreeNode;
import org.rhq.core.domain.configuration.AbstractPropertyMap;
import org.rhq.core.domain.configuration.Configuration;
@@ -112,7 +104,6 @@ import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertyList;
import org.rhq.core.domain.configuration.PropertyMap;
import org.rhq.core.domain.configuration.PropertySimple;
-import org.rhq.core.domain.configuration.RawConfiguration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.ConfigurationFormat;
import org.rhq.core.domain.configuration.definition.PropertyDefinition;
@@ -135,15 +126,11 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTyp
import org.rhq.enterprise.gui.coregui.client.util.CanvasUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableIButton;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableIMenuButton;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableMenu;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableSectionStack;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTab;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTabSet;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableToolStrip;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTreeGrid;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
@@ -164,16 +151,12 @@ public class ConfigurationEditor extends LocatableVLayout {
private ConfigurationGWTServiceAsync configurationService =
GWTServiceLookup.getConfigurationService();
- private TabSet tabSet;
private LocatableToolStrip toolStrip;
private ConfigurationDefinition configurationDefinition;
private Configuration configuration;
private Configuration originalConfiguration;
- private String structConfigTabTitle = MSG.view_configEdit_properties();
- private String rawConfigTabTitle = MSG.view_configEdit_files();
-
private ValuesManager valuesManager = new ValuesManager();
private boolean changed = false;
@@ -236,22 +219,6 @@ public class ConfigurationEditor extends LocatableVLayout {
addMember(new Label(message));
}
- public String getRawConfigTabTitle() {
- return this.rawConfigTabTitle;
- }
-
- public void setRawConfigTabTitle(String title) {
- this.rawConfigTabTitle = title;
- }
-
- public String getStructuredConfigTabTitle() {
- return this.structConfigTabTitle;
- }
-
- public void setStructuredConfigTabTitle(String title) {
- this.structConfigTabTitle = title;
- }
-
public boolean validate() {
return this.valuesManager.validate();
}
@@ -335,36 +302,26 @@ public class ConfigurationEditor extends LocatableVLayout {
public void reload() {
if (configurationDefinition == null || configuration == null) {
- // Wait for both to load
+ // Wait for both to load.
return;
}
originalConfiguration = configuration.deepCopy();
- tabSet = new LocatableTabSet(getLocatorId());
-
- if (configurationDefinition.getConfigurationFormat() == ConfigurationFormat.RAW
- || configurationDefinition.getConfigurationFormat() ==
ConfigurationFormat.STRUCTURED_AND_RAW) {
- com.allen_sauer.gwt.log.client.Log.info("Loading files view...");
- Tab tab = new LocatableTab("Files", getRawConfigTabTitle());
- tab.setPane(buildRawPane());
- tabSet.addTab(tab);
+ for (Canvas childCanvas : getChildren()) {
+ childCanvas.destroy();
}
if (configurationDefinition.getConfigurationFormat() ==
ConfigurationFormat.STRUCTURED
|| configurationDefinition.getConfigurationFormat() ==
ConfigurationFormat.STRUCTURED_AND_RAW) {
- com.allen_sauer.gwt.log.client.Log.info("Loading properties
view...");
- Tab tab = new LocatableTab("Properties",
getStructuredConfigTabTitle());
- tab.setPane(buildStructuredPane());
- tabSet.addTab(tab);
- }
-
- for (Canvas c : getChildren()) {
- c.destroy();
+ Log.info("Building structured configuration editor...");
+ LocatableVLayout structuredConfigLayout = buildStructuredPane();
+ addMember(structuredConfigLayout);
+ } else {
+ Label label = new Label("Structured configuration is not
supported.");
+ addMember(label);
}
- addMember(tabSet);
-
this.markForRedraw();
}
@@ -373,129 +330,90 @@ public class ConfigurationEditor extends LocatableVLayout {
reload();
}
- protected HLayout buildRawPane() {
-
- LocatableHLayout layout = new
LocatableHLayout(extendLocatorId("Raw"));
- final HashMap<String, RawConfiguration> filesMap = new HashMap<String,
RawConfiguration>();
-
- TreeGrid fileTree = new
LocatableTreeGrid(layout.extendLocatorId("Files"));
- fileTree.setShowResizeBar(true);
-
- Tree files = new Tree();
- files.setModelType(TreeModelType.CHILDREN);
- TreeNode root = new TreeNode("root");
- TreeNode[] children = new TreeNode[configuration.getRawConfigurations().size()];
- int i = 0;
- for (RawConfiguration rawConfiguration : configuration.getRawConfigurations()) {
- children[i++] = new TreeNode(rawConfiguration.getPath());
- filesMap.put(rawConfiguration.getPath(), rawConfiguration);
- }
- root.setChildren(children);
- files.setRoot(root);
- fileTree.setData(files);
- fileTree.setWidth(250);
-
- DynamicForm form = new
LocatableDynamicForm(layout.extendLocatorId("Editor"));
- final TextAreaItem rawEditor = new TextAreaItem();
- // rawEditor.setValue("This is a test");
- rawEditor.setShowTitle(false);
- form.setItems(rawEditor);
- form.setHeight100();
- form.setWidth100();
-
- fileTree.addSelectionChangedHandler(new SelectionChangedHandler() {
- public void onSelectionChanged(SelectionEvent selectionEvent) {
- String path = selectionEvent.getRecord().getAttribute("name");
- com.allen_sauer.gwt.log.client.Log.info("Getting Path: " +
path);
- rawEditor.setValue(filesMap.get(path).getContents());
- rawEditor.redraw();
- com.allen_sauer.gwt.log.client.Log.info("Data: " +
filesMap.get(path).getContents());
- }
- });
-
- if (children.length > 0) {
- fileTree.selectRecord(children[0]);
- rawEditor.setValue(filesMap.get(children[0].getName()).getContents());
- }
-
- layout.setMembers(fileTree, form);
- return layout;
- }
-
- protected VLayout buildStructuredPane() {
+ protected LocatableVLayout buildStructuredPane() {
LocatableVLayout layout = new
LocatableVLayout(extendLocatorId("Structured"));
List<PropertyGroupDefinition> groupDefinitions =
configurationDefinition.getGroupDefinitions();
- final SectionStack sectionStack = new
LocatableSectionStack(layout.extendLocatorId("Sections"));
- sectionStack.setVisibilityMode(VisibilityMode.MULTIPLE);
- sectionStack.setWidth100();
- sectionStack.setHeight100();
- sectionStack.setScrollSectionIntoView(true);
- sectionStack.setOverflow(Overflow.AUTO);
-
- if (!configurationDefinition.getNonGroupedProperties().isEmpty()) {
-
sectionStack.addSection(buildGroupSection(layout.extendLocatorId("NoGroup"),
null));
- }
-
- for (PropertyGroupDefinition definition : groupDefinitions) {
- // com.allen_sauer.gwt.log.client.Log.info("building: "
+ definition.getDisplayName());
-
sectionStack.addSection(buildGroupSection(layout.extendLocatorId(definition.getName()),
definition));
- }
+ if (groupDefinitions.isEmpty()) {
+ // No prop groups, so we just need a single form for the non-grouped props.
+ List<PropertyDefinition> propertyDefinitions =
+ new
ArrayList<PropertyDefinition>(configurationDefinition.getNonGroupedProperties());
- // TODO GH: Save button as saveListener() or remove the buttons from this form
and have
- // the container provide them?
+ DynamicForm form =
buildPropertiesForm(layout.extendLocatorId("Props"), propertyDefinitions,
configuration);
+ form.setBorder("1px solid #AAA");
+ layout.addMember(form);
+ } else {
+ // One or more prop groups, so create a section stack with one section per
group.
+ final SectionStack sectionStack = new
LocatableSectionStack(layout.extendLocatorId("Sections"));
+ sectionStack.setVisibilityMode(VisibilityMode.MULTIPLE);
+ sectionStack.setWidth100();
+ sectionStack.setHeight100();
+ sectionStack.setScrollSectionIntoView(true);
+ sectionStack.setOverflow(Overflow.AUTO);
+
+ if (!configurationDefinition.getNonGroupedProperties().isEmpty()) {
+
sectionStack.addSection(buildGroupSection(layout.extendLocatorId("NoGroup"),
null));
+ }
- toolStrip = new LocatableToolStrip(layout.extendLocatorId("Tools"));
- toolStrip.setBackgroundImage(null);
+ for (PropertyGroupDefinition definition : groupDefinitions) {
+ // com.allen_sauer.gwt.log.client.Log.info("building:
" + definition.getDisplayName());
+
sectionStack.addSection(buildGroupSection(layout.extendLocatorId(definition.getName()),
definition));
+ }
- toolStrip.setWidth100();
+ toolStrip = new
LocatableToolStrip(layout.extendLocatorId("Tools"));
+ toolStrip.setBackgroundImage(null);
+ toolStrip.setWidth100();
- toolStrip.addMember(new LayoutSpacer());
- saveButton = new LocatableIButton(toolStrip.extendLocatorId("Save"),
MSG.common_button_save());
- saveButton.setAlign(Alignment.CENTER);
- saveButton.setDisabled(true);
- // toolStrip.addMember(saveButton);
+ toolStrip.addMember(new LayoutSpacer());
+ saveButton = new
LocatableIButton(toolStrip.extendLocatorId("Save"), MSG.common_button_save());
+ saveButton.setAlign(Alignment.CENTER);
+ saveButton.setDisabled(true);
+ //toolStrip.addMember(saveButton);
- IButton resetButton = new
LocatableIButton(toolStrip.extendLocatorId("Reset"),
MSG.common_button_reset());
- resetButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler()
{
- public void onClick(ClickEvent clickEvent) {
- reload();
+ IButton resetButton = new
LocatableIButton(toolStrip.extendLocatorId("Reset"),
MSG.common_button_reset());
+ resetButton.addClickHandler(new
com.smartgwt.client.widgets.events.ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ reload();
+ }
+ });
+ //toolStrip.addMember(resetButton);
+
+ toolStrip.addMember(new LayoutSpacer());
+
+ Menu menu = new
LocatableMenu(toolStrip.extendLocatorId("JumpMenu"));
+ for (SectionStackSection section : sectionStack.getSections()) {
+ MenuItem item = new MenuItem(section.getTitle());
+ item.addClickHandler(new ClickHandler() {
+ public void onClick(MenuItemClickEvent event) {
+ int x = event.getMenu().getItemNum(event.getItem());
+ sectionStack.expandSection(x);
+ sectionStack.showSection(x);
+ }
+ });
+ menu.addItem(item);
}
- });
+ menu.addItem(new MenuItemSeparator());
- Menu menu = new LocatableMenu(toolStrip.extendLocatorId("JumpMenu"));
- for (SectionStackSection section : sectionStack.getSections()) {
- MenuItem item = new MenuItem(section.getTitle());
- item.addClickHandler(new ClickHandler() {
+ MenuItem hideAllItem = new MenuItem(MSG.view_configEdit_hideAll());
+ hideAllItem.addClickHandler(new ClickHandler() {
public void onClick(MenuItemClickEvent event) {
- int x = event.getMenu().getItemNum(event.getItem());
- sectionStack.expandSection(x);
- sectionStack.showSection(x);
+ for (int i = 0; i < sectionStack.getSections().length; i++) {
+ sectionStack.collapseSection(i);
+ }
}
});
- menu.addItem(item);
- }
- menu.addItem(new MenuItemSeparator());
-
- MenuItem hideAllItem = new MenuItem(MSG.view_configEdit_hideAll());
- hideAllItem.addClickHandler(new ClickHandler() {
- public void onClick(MenuItemClickEvent event) {
- for (int i = 0; i < sectionStack.getSections().length; i++) {
- sectionStack.collapseSection(i);
- }
- }
- });
- menu.addItem(hideAllItem);
+ menu.addItem(hideAllItem);
- // toolStrip.addMember(resetButton);
- toolStrip.addMember(new LayoutSpacer());
- toolStrip.addMember(new
LocatableIMenuButton(toolStrip.extendLocatorId("Jump"), MSG
- .view_configEdit_jumpToSection(), menu));
+ // TODO GH: Save button as saveListener() or remove the buttons from this
form and have
+ // the container provide them?
- layout.addMember(toolStrip);
+ toolStrip.addMember(new
LocatableIMenuButton(toolStrip.extendLocatorId("Jump"), MSG
+ .view_configEdit_jumpToSection(), menu));
- layout.addMember(sectionStack);
+ layout.addMember(toolStrip);
+ layout.addMember(sectionStack);
+ }
return layout;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/AbstractRecordEditor.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/AbstractRecordEditor.java
index e9fe59a..c134b69 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/AbstractRecordEditor.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/AbstractRecordEditor.java
@@ -214,6 +214,10 @@ public abstract class AbstractRecordEditor<DS extends
RPCDataSource> extends Loc
return this.recordId;
}
+ public boolean isNewRecord() {
+ return (getRecordId() == ID_NEW);
+ }
+
public String getListViewPath() {
return this.listViewPath;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/ResourceOperationHistoryDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/ResourceOperationHistoryDetailsView.java
index 208404f..b3e869a 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/ResourceOperationHistoryDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/history/ResourceOperationHistoryDetailsView.java
@@ -23,6 +23,7 @@ import java.util.Date;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.CloseClickHandler;
import com.smartgwt.client.widgets.events.CloseClientEvent;
@@ -201,18 +202,22 @@ public class ResourceOperationHistoryDetailsView extends
LocatableVLayout implem
// params/results
if (operationHistory.getParameters() != null) {
+ Label title = new Label(MSG.view_operationHistoryDetails_parameters());
+ addMember(title);
+
ConfigurationEditor editor = new
ConfigurationEditor(extendLocatorId("params"), definition
.getParametersConfigurationDefinition(),
operationHistory.getParameters());
editor.setReadOnly(true);
-
editor.setStructuredConfigTabTitle(MSG.view_operationHistoryDetails_parameters());
addMember(editor);
}
if (status == OperationRequestStatus.SUCCESS &&
operationHistory.getResults() != null) {
+ Label title = new Label(MSG.view_operationHistoryDetails_results());
+ addMember(title);
+
ConfigurationEditor editor = new
ConfigurationEditor(extendLocatorId("results"), definition
.getResultsConfigurationDefinition(), operationHistory.getResults());
editor.setReadOnly(true);
-
editor.setStructuredConfigTabTitle(MSG.view_operationHistoryDetails_results());
addMember(editor);
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/ResourceOperationScheduleDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/ResourceOperationScheduleDetailsView.java
index 263c3ae..3afb1e2 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/ResourceOperationScheduleDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/ResourceOperationScheduleDetailsView.java
@@ -25,6 +25,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.form.fields.FormItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
@@ -32,13 +33,18 @@ import com.smartgwt.client.widgets.form.fields.TextAreaItem;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.composite.ResourceComposite;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
+import
org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor;
import org.rhq.enterprise.gui.coregui.client.components.form.AbstractRecordEditor;
import org.rhq.enterprise.gui.coregui.client.components.form.EnhancedDynamicForm;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.schedule.ResourceOperationScheduleDataSource;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
* @author Ian Springer
@@ -46,19 +52,27 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation
public class ResourceOperationScheduleDetailsView extends AbstractRecordEditor {
private static final String FIELD_OPERATION_DESCRIPTION =
"operationDescription";
+ private static final String FIELD_OPERATION_PARAMETERS =
"operationParameters";
private ResourceComposite resourceComposite;
private Map<String, String> operationNameToDescriptionMap = new
HashMap<String, String>();
+ private Map<String, ConfigurationDefinition>
operationNameToParametersDefinitionMap =
+ new HashMap<String, ConfigurationDefinition>();
private SelectItem operationNameItem;
private StaticTextItem operationDescriptionItem;
+ private StaticTextItem operationParametersItem;
+ private LocatableHLayout operationParametersConfigurationHolder;
public ResourceOperationScheduleDetailsView(String locatorId, ResourceComposite
resourceComposite, int scheduleId) {
super(locatorId, new ResourceOperationScheduleDataSource(resourceComposite),
scheduleId, "Scheduled Operation", null);
+
this.resourceComposite = resourceComposite;
ResourceType resourceType =
this.resourceComposite.getResource().getResourceType();
Set<OperationDefinition> operationDefinitions =
resourceType.getOperationDefinitions();
for (OperationDefinition operationDefinition : operationDefinitions) {
this.operationNameToDescriptionMap.put(operationDefinition.getName(),
operationDefinition.getDescription());
+
this.operationNameToParametersDefinitionMap.put(operationDefinition.getName(),
+ operationDefinition.getParametersConfigurationDefinition());
}
}
@@ -79,24 +93,44 @@ public class ResourceOperationScheduleDetailsView extends
AbstractRecordEditor {
items.add(this.operationNameItem);
this.operationNameItem.addChangedHandler(new ChangedHandler() {
public void onChanged(ChangedEvent event) {
- updateOperationDescriptionItem();
+ refreshOperationDescriptionItem();
+ refreshOperationParametersItem();
}
});
this.operationDescriptionItem = new StaticTextItem(FIELD_OPERATION_DESCRIPTION,
"Operation Description");
items.add(this.operationDescriptionItem);
- TextAreaItem notesItem = new
TextAreaItem(ResourceOperationScheduleDataSource.Field.DESCRIPTION, "Notes");
- notesItem.setColSpan(form.getNumCols());
- items.add(notesItem);
+ this.operationParametersItem = new StaticTextItem(FIELD_OPERATION_PARAMETERS,
"Operation Parameters");
+ items.add(this.operationParametersItem);
return items;
}
@Override
+ protected LocatableVLayout buildContentPane() {
+ LocatableVLayout contentPane = super.buildContentPane();
+
+ this.operationParametersConfigurationHolder = new
LocatableHLayout(extendLocatorId("ConfigHolder"));
+ this.operationParametersConfigurationHolder.setVisible(false);
+ contentPane.addMember(this.operationParametersConfigurationHolder);
+
+ EnhancedDynamicForm notesForm = new
EnhancedDynamicForm(extendLocatorId("NotesForm"), isReadOnly(),
+ isNewRecord());
+ TextAreaItem notesItem = new
TextAreaItem(ResourceOperationScheduleDataSource.Field.DESCRIPTION, "Notes");
+ notesItem.setStartRow(true);
+ notesItem.setColSpan(4);
+ notesForm.setFields(notesItem);
+ contentPane.addMember(notesForm);
+
+ return contentPane;
+ }
+
+ @Override
protected void onDraw() {
super.onDraw();
- updateOperationDescriptionItem();
+ refreshOperationDescriptionItem();
+ refreshOperationParametersItem();
}
@Override
@@ -104,15 +138,47 @@ public class ResourceOperationScheduleDetailsView extends
AbstractRecordEditor {
return ResourceOperationScheduleDataSource.Field.OPERATION_DISPLAY_NAME;
}
- private void updateOperationDescriptionItem() {
+ private void refreshOperationDescriptionItem() {
String operationName = this.operationNameItem.getValueAsString();
String value;
if (operationName == null) {
- value = "<i>Select an operation to view its
description.</i>";
+ value = "<i>Select an operation.</i>";
} else {
value = this.operationNameToDescriptionMap.get(operationName);
}
this.operationDescriptionItem.setValue(value);
}
+ private void refreshOperationParametersItem() {
+ String operationName = this.operationNameItem.getValueAsString();
+ String value;
+ if (operationName == null) {
+ value = "<i>Select an operation.</i>";
+ } else {
+ ConfigurationDefinition parametersDefinition =
this.operationNameToParametersDefinitionMap.get(operationName);
+ if (parametersDefinition == null ||
parametersDefinition.getPropertyDefinitions().isEmpty()) {
+ value = "<i>" +
MSG.view_operationCreateWizard_parametersStep_noParameters() + "</i>";
+
+ for (Canvas child :
this.operationParametersConfigurationHolder.getChildren()) {
+ child.destroy();
+ }
+ this.operationParametersConfigurationHolder.hide();
+ } else {
+ value = "<i>Enter parameters below...</i>";
+
+ for (Canvas child :
this.operationParametersConfigurationHolder.getChildren()) {
+ child.destroy();
+ }
+ Configuration defaultConfiguration =
(parametersDefinition.getDefaultTemplate() != null) ?
+ parametersDefinition.getDefaultTemplate().createConfiguration() : new
Configuration();
+ ConfigurationEditor configurationEditor = new
ConfigurationEditor("ParametersEditor", parametersDefinition,
+ defaultConfiguration);
+ configurationEditor.setReadOnly(isReadOnly());
+
this.operationParametersConfigurationHolder.addMember(configurationEditor);
+ this.operationParametersConfigurationHolder.show();
+ }
+ }
+ this.operationParametersItem.setValue(value);
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/CurrentGroupPluginConfigurationView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/CurrentGroupPluginConfigurationView.java
index 2ad9f55..87c4179 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/CurrentGroupPluginConfigurationView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/CurrentGroupPluginConfigurationView.java
@@ -27,6 +27,7 @@ import java.util.Set;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.IButton;
+import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.toolbar.ToolStrip;
@@ -125,12 +126,14 @@ public class CurrentGroupPluginConfigurationView extends
LocatableVLayout implem
private void initEditor() {
if (this.configurationDefinition != null && this.memberConfigurations !=
null) {
+ Label title = new
Label(MSG.view_group_pluginConfig_edit_currentGroupProperties());
+ addMember(title);
+
this.editor = new
GroupConfigurationEditor(this.extendLocatorId("Editor"),
this.configurationDefinition,
this.memberConfigurations);
this.editor.setOverflow(Overflow.AUTO);
this.editor.addPropertyValueChangeListener(this);
- this.editor.setReadOnly(!this.resourcePermission.isConfigureWrite());
-
this.editor.setStructuredConfigTabTitle(MSG.view_group_pluginConfig_edit_currentGroupProperties());
+ this.editor.setReadOnly(!this.resourcePermission.isConfigureWrite());
addMember(this.editor);
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/HistoryGroupPluginConfigurationSettings.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/HistoryGroupPluginConfigurationSettings.java
index 787e1ea..22aa7be 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/HistoryGroupPluginConfigurationSettings.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/HistoryGroupPluginConfigurationSettings.java
@@ -25,6 +25,7 @@ import java.util.Map;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Overflow;
+import com.smartgwt.client.widgets.Label;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.composite.ResourceConfigurationComposite;
@@ -86,12 +87,14 @@ public class HistoryGroupPluginConfigurationSettings extends
LocatableVLayout {
private void initEditor() {
if (this.configurationDefinition != null && this.memberConfigurations !=
null) {
+ Label title = new Label(MSG.view_group_pluginConfig_view_groupProperties() +
" - "
+ + this.groupUpdateId);
+ addMember(title);
+
this.editor = new
GroupConfigurationEditor(this.extendLocatorId("Editor"),
this.configurationDefinition,
this.memberConfigurations);
this.editor.setOverflow(Overflow.AUTO);
this.editor.setReadOnly(true);
-
this.editor.setStructuredConfigTabTitle(MSG.view_group_pluginConfig_view_groupProperties()
+ " - "
- + this.groupUpdateId);
addMember(this.editor);
}
}