IconField categoryField = new IconField(CATEGORY.propertyName());
categoryField.setCellFormatter(new CellFormatter() {
public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
String categoryName = (String) value;
GroupCategory category = GroupCategory.valueOf(categoryName);
String icon = ImageManager.getGroupIcon(category);
return "<img class='tableImage' src=\"" + ImageManager.getFullImagePath(icon) + "\" />";
}
});
categoryField.setShowHover(true);
categoryField.setHoverCustomizer(new HoverCustomizer() {
public String hoverHTML(Object value, ListGridRecord record, int rowNum, int colNum) {
String categoryName = record.getAttribute(CATEGORY.propertyName());
GroupCategory category = GroupCategory.valueOf(categoryName);
String displayName;
switch (category) {
case COMPATIBLE:
displayName = MSG.view_group_summary_compatible();
break;
case MIXED:
displayName = MSG.view_group_summary_mixed();
break;
default:
throw new IllegalStateException("Unknown group category: " + category);
}
return displayName;
}
});
ListGridField nameField = new ListGridField(NAME.propertyName(), NAME.title());
nameField.setWidth("40%");
nameField.setCellFormatter(new CellFormatter() {
public String format(Object value, ListGridRecord record, int i, int i1) {
String groupId = record.getAttribute("id");
String groupUrl = LinkManager.getResourceGroupLink(Integer.valueOf(groupId));
return LinkManager.getHref(groupUrl, value.toString());
}
});
ListGridField descriptionField = new ListGridField(DESCRIPTION.propertyName(), DESCRIPTION.title());
descriptionField.setWidth("28%");
ListGridField typeNameField = new ListGridField(TYPE.propertyName(), TYPE.title());
typeNameField.setWidth("14%");
ListGridField pluginNameField = new ListGridField(PLUGIN.propertyName(), PLUGIN.title());
pluginNameField.setWidth("8%");
ListGridField availabilityChildrenField = new ListGridField(AVAIL_CHILDREN.propertyName(),
AVAIL_CHILDREN.title(), 185); // 185 due to the html in ResourceGroupCompositeDataSource.getAlignedAvailabilityResults
availabilityChildrenField.setCanSortClientOnly(true);
availabilityChildrenField.setCanGroupBy(false);
availabilityChildrenField.setWrap(false);
availabilityChildrenField.setAlign(Alignment.LEFT);
ListGridField availabilityDescendantsField = new ListGridField(AVAIL_DESCENDANTS.propertyName(),
AVAIL_DESCENDANTS.title(), 185); // 185 due to the html in ResourceGroupCompositeDataSource.getAlignedAvailabilityResults
availabilityDescendantsField.setCanSortClientOnly(true);
availabilityDescendantsField.setCanGroupBy(false);
availabilityDescendantsField.setWrap(false);
availabilityDescendantsField.setAlign(Alignment.LEFT);
setListGridFields(idField, categoryField, nameField, descriptionField, typeNameField, pluginNameField,
availabilityChildrenField, availabilityDescendantsField);
if (this.showDeleteButton) {
addTableAction(MSG.common_button_delete(), MSG.common_msg_areYouSure(), ButtonColor.RED, new AuthorizedTableAction(this,
TableActionEnablement.ANY, Permission.MANAGE_INVENTORY) {
public void executeAction(ListGridRecord[] selections, Object actionValue) {
int[] groupIds = new int[selections.length];
int index = 0;
for (ListGridRecord selection : selections) {
groupIds[index++] = selection.getAttributeAsInt("id");
}
ResourceGroupGWTServiceAsync resourceGroupManager = GWTServiceLookup.getResourceGroupService();
resourceGroupManager.deleteResourceGroups(groupIds, new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler().handleError(MSG.view_inventory_groups_deleteFailed(), caught);
refreshTableInfo();
}
public void onSuccess(Void result) {
CoreGUI.getMessageCenter().notify(
new Message(MSG.view_inventory_groups_deleteSuccessful(), Severity.Info));
refresh(true);
}
});
}
});
}
if (this.showNewButton) {
addTableAction(MSG.common_button_new(), ButtonColor.BLUE, new AuthorizedTableAction(this, Permission.MANAGE_INVENTORY) {
public void executeAction(ListGridRecord[] selection, Object actionValue) {
GroupCategory category = null;
String categoryString = getInitialCriteria() == null ? null : getInitialCriteria().getAttribute(
ResourceGroupDataSourceField.CATEGORY.propertyName());
if (categoryString != null) {
category = GroupCategory.COMPATIBLE.name().equals(categoryString) ? GroupCategory.COMPATIBLE
: GroupCategory.MIXED;