modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java | 9 - modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/OperationScheduleDataSource.java | 24 ++- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/OperationScheduleListView.java | 2 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/ResourceOperationScheduleDetailsView.java | 72 ++++++++++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java | 4 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleDataSource.java | 14 + modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleListView.java | 9 - 7 files changed, 116 insertions(+), 18 deletions(-)
New commits: commit 930cd482ebf00702f399b8faa10b504b5ce4a35a Author: Ian Springer ian.springer@redhat.com Date: Fri Dec 17 18:08:58 2010 -0500
start of details view for Resource operation schedules (view and new modes)
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java index e30a6bb..199ca19 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/form/EnhancedDynamicForm.java @@ -74,8 +74,12 @@ public class EnhancedDynamicForm extends LocatableDynamicForm { setWrapItemTitles(false);
// Other Display Settings - setHiliteRequiredFields(true); - setRequiredTitleSuffix(" <span class='requiredFieldMarker'>*</span> :"); + if (readOnly) { + setHiliteRequiredFields(false); + } else { + setHiliteRequiredFields(true); + setRequiredTitleSuffix(" <span class='requiredFieldMarker'>*</span> :"); + }
// DataSource Settings setUseAllDataSourceFields(false); @@ -106,6 +110,7 @@ public class EnhancedDynamicForm extends LocatableDynamicForm { StaticTextItem staticItem = new StaticTextItem(item.getName(), item.getTitle()); staticItem.setTooltip(item.getTooltip()); staticItem.setValue(item.getValue()); + staticItem.setColSpan(item.getAttribute("colSpan")); // TODO: Any other fields we should copy? icons?
if (item instanceof BooleanItem) { diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/OperationScheduleDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/OperationScheduleDataSource.java index 06e68e5..1e0d4a8 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/OperationScheduleDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/OperationScheduleDataSource.java @@ -19,7 +19,9 @@ */ package org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.schedule;
+import java.util.LinkedHashMap; import java.util.List; +import java.util.Set;
import com.smartgwt.client.data.DataSourceField; import com.smartgwt.client.data.Record; @@ -30,7 +32,9 @@ import com.smartgwt.client.widgets.grid.ListGridRecord; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.common.JobTrigger; import org.rhq.core.domain.configuration.Configuration; +import org.rhq.core.domain.operation.OperationDefinition; import org.rhq.core.domain.operation.bean.OperationSchedule; +import org.rhq.core.domain.resource.ResourceType; import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.gwt.OperationGWTServiceAsync; import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource; @@ -38,7 +42,7 @@ import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource; /** * @author Ian Springer */ -public abstract class OperationScheduleDataSource<T extends OperationSchedule> extends RPCDataSource<T> { +public abstract class OperationScheduleDataSource<T extends OperationSchedule> extends RPCDataSource<T> {
public static abstract class Field { public static final String ID = "id"; @@ -54,8 +58,11 @@ public abstract class OperationScheduleDataSource<T extends OperationSchedule> e
protected OperationGWTServiceAsync operationService = GWTServiceLookup.getOperationService();
- public OperationScheduleDataSource() { + private ResourceType resourceType; + + public OperationScheduleDataSource(ResourceType resourceType) { super(); + this.resourceType = resourceType; List<DataSourceField> fields = addDataSourceFields(); addFields(fields); } @@ -70,13 +77,24 @@ public abstract class OperationScheduleDataSource<T extends OperationSchedule> e idField.setCanEdit(false); fields.add(idField);
+ DataSourceTextField operationNameField = createTextField(Field.OPERATION_NAME, "Operation", null, 100, true); + fields.add(operationNameField); + DataSourceTextField operationDisplayNameField = createTextField(Field.OPERATION_DISPLAY_NAME, "Operation", null, 100, true); fields.add(operationDisplayNameField);
+ Set<OperationDefinition> operationDefinitions = this.resourceType.getOperationDefinitions(); + LinkedHashMap<String, String> valueMap = new LinkedHashMap<String, String>(); + for (OperationDefinition operationDefinition : operationDefinitions) { + valueMap.put(operationDefinition.getName(), operationDefinition.getDisplayName()); + } + operationNameField.setValueMap(valueMap); + DataSourceTextField subjectField = createTextField(Field.SUBJECT, "Owner", null, 100, true); + subjectField.setCanEdit(false); fields.add(subjectField);
- DataSourceTextField descriptionField = createTextField(Field.DESCRIPTION, "Description", null, 100, true); + DataSourceTextField descriptionField = createTextField(Field.DESCRIPTION, "Notes", null, 100, false); fields.add(descriptionField);
DataSourceTextField jobTriggerField = createTextField(Field.JOB_TRIGGER, "Schedule", null, 100, true); diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/OperationScheduleListView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/OperationScheduleListView.java index d658acc..d615316 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/OperationScheduleListView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/OperationScheduleListView.java @@ -58,7 +58,7 @@ public abstract class OperationScheduleListView extends TableSection<OperationSc }
public void executeAction(ListGridRecord[] selection, Object actionValue) { - // TODO: wizard or details view + newDetails(); } });
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 new file mode 100644 index 0000000..12df23e --- /dev/null +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/operation/schedule/ResourceOperationScheduleDetailsView.java @@ -0,0 +1,72 @@ +/* + * 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.inventory.common.detail.operation.schedule; + +import java.util.ArrayList; +import java.util.List; + +import com.smartgwt.client.widgets.form.fields.FormItem; +import com.smartgwt.client.widgets.form.fields.SelectItem; +import com.smartgwt.client.widgets.form.fields.TextAreaItem; + +import org.rhq.core.domain.resource.composite.ResourceComposite; +import org.rhq.enterprise.gui.coregui.client.ViewPath; +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; + +/** + * @author Ian Springer + */ +public class ResourceOperationScheduleDetailsView extends AbstractRecordEditor { + + public ResourceOperationScheduleDetailsView(String locatorId, ResourceComposite resourceComposite, int scheduleId) { + super(locatorId, new ResourceOperationScheduleDataSource(resourceComposite), scheduleId, "Scheduled Operation", null); + } + + @Override + public void renderView(ViewPath viewPath) { + super.renderView(viewPath); + + // Existing schedules are not editable. This may change in the future. + boolean isReadOnly = (getRecordId() != 0); + init(isReadOnly); + } + + @Override + protected List<FormItem> createFormItems(EnhancedDynamicForm form) { + List<FormItem> items = new ArrayList<FormItem>(); + + SelectItem operationNameItem = new SelectItem(ResourceOperationScheduleDataSource.Field.OPERATION_NAME); + items.add(operationNameItem); + + TextAreaItem descriptionItem = new TextAreaItem(ResourceOperationScheduleDataSource.Field.DESCRIPTION); + descriptionItem.setColSpan(form.getNumCols()); + items.add(descriptionItem); + + return items; + } + + @Override + protected String getTitleFieldName() { + return ResourceOperationScheduleDataSource.Field.OPERATION_DISPLAY_NAME; + } + +} diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java index 9cbf3e2..ffc4ca5 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java @@ -347,8 +347,8 @@ public class ResourceDetailView extends AbstractTwoLevelTabSetView<ResourceCompo updateSubTab(this.operationsTab, this.operationsHistory, new ResourceOperationHistoryListView(operationsTab .extendLocatorId("HistoryView"), this.resourceComposite), true, true);
- updateSubTab(this.operationsTab, this.operationsSchedule,new ResourceOperationScheduleListView(operationsTab.extendLocatorId("SchedulesView"), this.resourceComposite), - true, true); + updateSubTab(this.operationsTab, this.operationsSchedule,new ResourceOperationScheduleListView( + operationsTab.extendLocatorId("SchedulesView"), this.resourceComposite), true, true); } }
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleDataSource.java index e044f51..6e9c744 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleDataSource.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleDataSource.java @@ -28,6 +28,7 @@ import com.smartgwt.client.data.Record;
import org.rhq.core.domain.operation.bean.ResourceOperationSchedule; import org.rhq.core.domain.resource.Resource; +import org.rhq.core.domain.resource.composite.ResourceComposite; import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.schedule.OperationScheduleDataSource;
/** @@ -37,10 +38,11 @@ import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.s */ public class ResourceOperationScheduleDataSource extends OperationScheduleDataSource<ResourceOperationSchedule> {
- private int resourceId; + private ResourceComposite resourceComposite;
- public ResourceOperationScheduleDataSource(int resourceId) { - this.resourceId = resourceId; + public ResourceOperationScheduleDataSource(ResourceComposite resourceComposite) { + super(resourceComposite.getResource().getResourceType()); + this.resourceComposite = resourceComposite; }
@Override @@ -50,7 +52,7 @@ public class ResourceOperationScheduleDataSource extends OperationScheduleDataSo
@Override protected void executeFetch(final DSRequest request, final DSResponse response) { - operationService.findScheduledResourceOperations(this.resourceId, + operationService.findScheduledResourceOperations(this.resourceComposite.getResource().getId(), new AsyncCallback<List<ResourceOperationSchedule>>() { public void onSuccess(List<ResourceOperationSchedule> result) { Record[] records = buildRecords(result); @@ -59,8 +61,8 @@ public class ResourceOperationScheduleDataSource extends OperationScheduleDataSo }
public void onFailure(Throwable caught) { - throw new RuntimeException("Failed to find scheduled operations for Resource with id [" - + resourceId + "].", caught); + throw new RuntimeException("Failed to find scheduled operations for " + + resourceComposite.getResource() + ".", caught); } }); } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleListView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleListView.java index 03de2a6..14bb294 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleListView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/schedule/ResourceOperationScheduleListView.java @@ -22,8 +22,8 @@ package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operatio import com.smartgwt.client.widgets.Canvas;
import org.rhq.core.domain.resource.composite.ResourceComposite; -import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.schedule.OperationScheduleDataSource; import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.schedule.OperationScheduleListView; +import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.operation.schedule.ResourceOperationScheduleDetailsView;
/** * @author Ian Springer @@ -35,7 +35,7 @@ public class ResourceOperationScheduleListView extends OperationScheduleListView private ResourceComposite resourceComposite;
public ResourceOperationScheduleListView(String locatorId, ResourceComposite resourceComposite) { - super(locatorId, new ResourceOperationScheduleDataSource(resourceComposite.getResource().getId()), TITLE); + super(locatorId, new ResourceOperationScheduleDataSource(resourceComposite), TITLE); this.resourceComposite = resourceComposite; }
@@ -45,8 +45,9 @@ public class ResourceOperationScheduleListView extends OperationScheduleListView }
@Override - public Canvas getDetailsView(int id) { - return new Canvas(); // TODO + public Canvas getDetailsView(int scheduleId) { + return new ResourceOperationScheduleDetailsView(extendLocatorId("DetailsView"), + this.resourceComposite, scheduleId); }
}