package org.rhq.coregui.client.inventory.groups.detail.operation.history;
import java.util.ArrayList;
import java.util.List;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.HoverCustomizer;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
import org.rhq.coregui.client.CoreGUI;
import org.rhq.coregui.client.LinkManager;
import org.rhq.coregui.client.inventory.common.detail.operation.history.AbstractOperationHistoryDataSource;
import org.rhq.coregui.client.inventory.common.detail.operation.history.AbstractOperationHistoryListView;
import org.rhq.coregui.client.inventory.resource.AncestryUtil;
import org.rhq.coregui.client.inventory.resource.detail.operation.history.ResourceOperationHistoryDataSource;
import org.rhq.coregui.client.inventory.resource.detail.operation.history.ResourceOperationHistoryDetailsView;
/**
* @author Ian Springer
*/
public class GroupMemberResourceOperationHistoryListView extends
AbstractOperationHistoryListView<ResourceOperationHistoryDataSource> {
private ResourceGroupComposite groupComposite;
public GroupMemberResourceOperationHistoryListView(ResourceGroupComposite groupComposite,
int groupOperationHistoryId) {
super(new ResourceOperationHistoryDataSource(), null, new Criteria(
ResourceOperationHistoryDataSource.CriteriaField.GROUP_OPERATION_HISTORY_ID,
String.valueOf(groupOperationHistoryId)));
this.groupComposite = groupComposite;
}
@Override
protected List<ListGridField> createFields() {
List<ListGridField> fields = new ArrayList<ListGridField>();
ListGridField idField = new ListGridField(AbstractOperationHistoryDataSource.Field.ID);
idField.setWidth(38);
fields.add(idField);
ListGridField resourceField = createResourceField();
resourceField.setWidth("25%");
resourceField.setCellFormatter(new CellFormatter() {
public String format(Object o, ListGridRecord listGridRecord, int i, int i1) {
String url = LinkManager.getResourceLink(listGridRecord.getAttributeAsInt(AncestryUtil.RESOURCE_ID));
return LinkManager.getHref(url, o.toString());
}
});
resourceField.setShowHover(true);
resourceField.setHoverCustomizer(new HoverCustomizer() {
public String hoverHTML(Object value, ListGridRecord listGridRecord, int rowNum, int colNum) {
return AncestryUtil.getResourceHoverHTML(listGridRecord, 0);
}
});
fields.add(resourceField);
ListGridField ancestryField = AncestryUtil.setupAncestryListGridField();
ancestryField.setWidth("35%");
fields.add(ancestryField);
ListGridField statusField = createStatusField();
fields.add(statusField);
ListGridField startedTimeField = createStartedTimeField();
startedTimeField.setWidth("30%");
fields.add(startedTimeField);
return fields;
}
@Override
protected boolean hasControlPermission() {
return groupComposite.getResourcePermission().isControl();
}
@Override
public Canvas getDetailsView(Integer id) {
return new ResourceOperationHistoryDetailsView(true);
}
@Override
public void showDetails(ListGridRecord record) {
if (record == null) {
throw new IllegalArgumentException("'record' parameter is null.");
}
int resourceId = record.getAttributeAsInt(AncestryUtil.RESOURCE_ID);
int opHistoryId = record.getAttributeAsInt(ResourceOperationHistoryDataSource.Field.ID);
if (resourceId > 0 && opHistoryId > 0) {
CoreGUI.goToView(LinkManager.getSubsystemResourceOperationHistoryLink(resourceId, opHistoryId));
} else {
String msg = MSG.view_tableSection_error_badId(this.getClass().toString(), Integer.toString(resourceId)
+ "," + Integer.toString(opHistoryId));
CoreGUI.getErrorHandler().handleError(msg);
throw new IllegalArgumentException(msg);
}
}
@Override
protected boolean showNewScheduleButton() {
return false;
}
}