/*
* RHQ Management Platform
* Copyright (C) 2005-2010 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2, as
* published by the Free Software Foundation, and/or the GNU Lesser
* General Public License, version 2.1, also as published by the Free
* Software Foundation.
*
* 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 and the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License
* and the GNU Lesser General Public License along with this program;
* if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.rhq.coregui.client.bundle.destination;
import java.util.HashMap;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.widgets.events.DoubleClickEvent;
import com.smartgwt.client.widgets.events.DoubleClickHandler;
import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.bundle.BundleDeploymentStatus;
import org.rhq.coregui.client.CoreGUI;
import org.rhq.coregui.client.IconEnum;
import org.rhq.coregui.client.LinkManager;
import org.rhq.coregui.client.components.table.Table;
import org.rhq.coregui.client.components.table.TimestampCellFormatter;
import org.rhq.coregui.client.util.StringUtility;
/**
* @author Greg Hinkle
*/
public class BundleDestinationListView extends Table<BundleDestinationDataSource> {
public BundleDestinationListView() {
this(null);
}
public BundleDestinationListView(Criteria criteria) {
super(MSG.view_bundle_bundleDestinations(), criteria, IconEnum.BUNDLE_DESTINATION.getIcon24x24Path());
setDataSource(new BundleDestinationDataSource());
}
@Override
protected void configureTable() {
ListGridField idField = new ListGridField(BundleDestinationDataSource.FIELD_ID, MSG.common_title_id());
ListGridField nameField = new ListGridField(BundleDestinationDataSource.FIELD_NAME, MSG.common_title_name());
ListGridField descriptionField = new ListGridField(BundleDestinationDataSource.FIELD_DESCRIPTION,
MSG.common_title_description());
ListGridField bundleNameField = new ListGridField(BundleDestinationDataSource.FIELD_BUNDLE_NAME,
MSG.common_title_bundle());
ListGridField groupNameField = new ListGridField(BundleDestinationDataSource.FIELD_GROUP_NAME,
MSG.view_bundle_dest_group());
ListGridField baseDirNameField = new ListGridField(BundleDestinationDataSource.FIELD_BASE_DIR_NAME,
MSG.view_bundle_dest_baseDirName());
ListGridField deployDirField = new ListGridField(BundleDestinationDataSource.FIELD_DEPLOY_DIR,
MSG.view_bundle_dest_deployDir());
ListGridField latestDeploymentVersionField = new ListGridField(
BundleDestinationDataSource.FIELD_LATEST_DEPLOY_VERSION, MSG.view_bundle_dest_lastDeployedVersion());
ListGridField latestDeploymentDateField = new ListGridField(
BundleDestinationDataSource.FIELD_LATEST_DEPLOY_DATE, MSG.view_bundle_dest_lastDeploymentDate());
ListGridField latestDeploymentStatusField = new ListGridField(
BundleDestinationDataSource.FIELD_LATEST_DEPLOY_STATUS, MSG.view_bundle_dest_lastDeploymentStatus());
latestDeploymentDateField.setType(ListGridFieldType.DATE);
TimestampCellFormatter.prepareDateField(latestDeploymentDateField);
nameField.setCellFormatter(new CellFormatter() {
public String format(Object value, ListGridRecord listGridRecord, int i, int i1) {
Integer bundleId = listGridRecord.getAttributeAsInt(BundleDestinationDataSource.FIELD_BUNDLE_ID);
Integer bundleDestId = listGridRecord.getAttributeAsInt(BundleDestinationDataSource.FIELD_ID);
return "<a href=\"" + LinkManager.getBundleDestinationLink(bundleId, bundleDestId) + "\">"
+ StringUtility.escapeHtml(value.toString()) + "</a>";
}
});
groupNameField.setCellFormatter(new CellFormatter() {
public String format(Object value, ListGridRecord listGridRecord, int i, int i1) {
Integer groupId = listGridRecord.getAttributeAsInt(BundleDestinationDataSource.FIELD_GROUP_ID);
return "<a href=\"" + LinkManager.getResourceGroupLink(groupId) + "\">"
+ StringUtility.escapeHtml(value.toString()) + "</a>";
}
});
bundleNameField.setCellFormatter(new CellFormatter() {
public String format(Object value, ListGridRecord listGridRecord, int i, int i1) {
Integer bid = listGridRecord.getAttributeAsInt(BundleDestinationDataSource.FIELD_BUNDLE_ID);
return "<a href=\"" + LinkManager.getBundleLink(bid) + "\">"
+ StringUtility.escapeHtml(value.toString()) + "</a>";
}
});
HashMap<String, String> statusIcons = new HashMap<String, String>();
statusIcons.put(BundleDeploymentStatus.PENDING.name(), "subsystems/bundle/install-loader.gif");
statusIcons.put(BundleDeploymentStatus.IN_PROGRESS.name(), "subsystems/bundle/install-loader.gif");
statusIcons.put(BundleDeploymentStatus.FAILURE.name(), "subsystems/bundle/Error_11.png");
statusIcons.put(BundleDeploymentStatus.MIXED.name(), "subsystems/bundle/Warning_11.png");
statusIcons.put(BundleDeploymentStatus.SUCCESS.name(), "subsystems/bundle/Ok_11.png");
latestDeploymentStatusField.setValueIcons(statusIcons);
latestDeploymentStatusField.setValueIconHeight(11);
latestDeploymentStatusField.setValueIconWidth(11);
latestDeploymentStatusField.setShowValueIconOnly(true);
idField.setWidth(50);
nameField.setWidth("15%");
descriptionField.setWidth("20%");
bundleNameField.setHidden(true);
groupNameField.setWidth("15%");
baseDirNameField.setWidth("15%");
deployDirField.setWidth("15%");
latestDeploymentVersionField.setWidth("10%");
latestDeploymentDateField.setWidth("10%");
latestDeploymentStatusField.setWidth(80);
// XXX there seems to be a bug here - i want to hide the bundle column, but setHidden(true) causes the entire rendering to fail
setListGridFields(idField, nameField, descriptionField, /*bundleNameField, */groupNameField, baseDirNameField,
deployDirField, latestDeploymentVersionField, latestDeploymentDateField, latestDeploymentStatusField);
setListGridDoubleClickHandler(new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
ListGrid listGrid = (ListGrid) event.getSource();
ListGridRecord[] selectedRows = listGrid.getSelectedRecords();
if (selectedRows != null && selectedRows.length == 1) {
String selectedId = selectedRows[0].getAttribute(BundleDestinationDataSource.FIELD_BUNDLE_ID);
String selectedDestId = selectedRows[0].getAttribute(BundleDestinationDataSource.FIELD_ID);
CoreGUI.goToView(LinkManager.getBundleDestinationLink(Integer.valueOf(selectedId),
Integer.valueOf(selectedDestId)));
}
}
});
}
}