package org.ovirt.engine.ui.common.widget.table.cell; import org.ovirt.engine.ui.common.widget.table.HasStyleClass; import com.google.gwt.core.client.GWT; import com.google.gwt.safehtml.client.SafeHtmlTemplates; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; public abstract class AbstractImageCell<T> extends AbstractCell<T> implements HasStyleClass { interface CellTemplate extends SafeHtmlTemplates { @Template("<div id=\"{0}\" style=\"{1}\" class=\"{2}\">{3}</div>") SafeHtml imageContainerWithStyleClass(String id, String style, String styleClass, SafeHtml imageHtml); } private String style = "line-height: 100%; text-align: center; vertical-align: middle;"; //$NON-NLS-1$ private String styleClass = ""; //$NON-NLS-1$ private CellTemplate template = GWT.create(CellTemplate.class); protected abstract SafeHtml getRenderedImage(T value); @Override public void render(Context context, T value, SafeHtmlBuilder sb, String id) { if (value != null) { final SafeHtml renderedImage = getRenderedImage(value); sb.append(template.imageContainerWithStyleClass( id, style, styleClass, renderedImage)); } } public void setStyle(String style) { this.style = style; } @Override public void setStyleClass(String styleClass) { this.styleClass = styleClass == null ? "" : styleClass; //$NON-NLS-1$ } }