package org.ovirt.engine.ui.userportal.client.views.extended.templates.components;
import org.ovirt.engine.core.common.businessentities.VmOsType;
import org.ovirt.engine.core.common.businessentities.VmTemplate;
import org.ovirt.engine.ui.uicompat.EnumTranslator;
import org.ovirt.engine.ui.uicompat.Translator;
import org.ovirt.engine.ui.userportal.client.components.GridElement;
import org.ovirt.engine.ui.userportal.client.components.UPLabel;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.types.VerticalAlignment;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.layout.HLayout;
public class TemplateGridItem extends HLayout implements GridElement<VmTemplate> {
public static final int TEMPLATE_GRID_ITEM_HEIGHT = 50;
private Img image;
private UPLabel nameLabel;
private UPLabel descriptionLabel;
private static final int IMAGE_WIDTH = 51;
private static final int IMAGE_HEIGHT = 41;
private Object entityGuid;
private Translator osTranslator = EnumTranslator.Create(VmOsType.class);
public TemplateGridItem(VmTemplate item) {
setItemId(item.getId());
setHeight(TEMPLATE_GRID_ITEM_HEIGHT);
setWidth100();
setMembersMargin(7);
setCanHover(true);
setCanFocus(true);
setStyleName("mainGrid-row");
setLayoutLeftMargin(7);
image = new Img();
image.setWidth(IMAGE_WIDTH);
image.setHeight(IMAGE_HEIGHT);
image.setLayoutAlign(VerticalAlignment.CENTER);
image.setBorder("1px solid white");
image.setHoverOpacity(75);
image.setHoverStyle("gridToolTipStyle");
image.setHoverWidth(1);
image.setHoverWrap(false);
image.setHoverDelay(500);
nameLabel = new UPLabel("mainGrid-VMname");
nameLabel.setLayoutAlign(VerticalAlignment.CENTER);
nameLabel.setAutoFit(true);
descriptionLabel = new UPLabel("mainGrid-VMdescription");
descriptionLabel.setLayoutAlign(VerticalAlignment.CENTER);
descriptionLabel.setAutoFit(true);
HLayout nameAndDescriptionLayout = new HLayout(5);
nameAndDescriptionLayout.setMembers(nameLabel, descriptionLabel);
nameAndDescriptionLayout.setWidth100();
nameAndDescriptionLayout.setOverflow(Overflow.HIDDEN);
updateValues(item);
setMembers(image, nameAndDescriptionLayout);
}
@Override
public void updateValues(VmTemplate item) {
setImage(item);
setName(item.getname());
setDescription(item.getdescription());
}
public void setImage(VmTemplate item) {
String imageName = "os/large/" + item.getos().name() + ".png";
if (!image.getSrc().equals(imageName)) {
image.setTooltip(osTranslator.get(item.getos()));
image.setSrc(imageName);
}
}
public void setName(String name) {
nameLabel.setContents(name);
}
public void setDescription(String description) {
if ((description == null || description.isEmpty())) {
descriptionLabel.setContents(null, true);
return;
}
String descriptionString = '(' + description + ')';
descriptionLabel.setContents(descriptionString, true);
}
@Override
public void select() {
setStyleName("mainGrid-rowSelected");
}
@Override
public void deselect() {
setStyleName("mainGrid-row");
}
@Override
public void setItemId(Object id) {
entityGuid = id;
}
@Override
public Object getItemId() {
return entityGuid;
}
}