package org.ovirt.engine.ui.userportal.widget.table.column;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.ui.common.widget.table.column.AbstractDataurlImageColumn;
import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalItemModel;
import org.ovirt.engine.ui.uicommonweb.models.vms.IconCache;
import com.google.gwt.cell.client.Cell;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
public abstract class AbstractUserportalMaskedDataurlImageColumn extends AbstractDataurlImageColumn<UserPortalItemModel> {
private ImageResource mask;
public AbstractUserportalMaskedDataurlImageColumn(ImageResource mask) {
this.mask = mask;
}
@Override
public SafeHtml getTooltip(UserPortalItemModel itemModel) {
String osName = AsyncDataProvider.getInstance().getOsName(itemModel.getOsId());
return SafeHtmlUtils.fromString(osName);
}
@Override
public String getValue(UserPortalItemModel itemModel) {
return IconCache.getInstance().getIcon(getIconId(itemModel));
}
public abstract Guid getIconId(UserPortalItemModel itemModel);
@Override
public void render(Cell.Context context, UserPortalItemModel itemModel, SafeHtmlBuilder sb) {
if (!itemModel.isVmUp()) {
renderMask(mask, sb);
}
super.render(context, itemModel, sb);
}
private static void renderMask(ImageResource mask, SafeHtmlBuilder sb) {
// TODO why hardcode to 19px left here?
sb.appendHtmlConstant("<div style=\"position: absolute; left: 19px\" >"); //$NON-NLS-1$
sb.append(SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(mask).getHTML()));
sb.appendHtmlConstant("</div>"); //$NON-NLS-1$
}
}