package org.ovirt.engine.ui.common.widget.table.cell; import org.ovirt.engine.ui.common.CommonApplicationResources; import org.ovirt.engine.ui.common.gin.AssetProvider; import org.ovirt.engine.ui.uicommonweb.models.storage.LunModel; 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; /** * LunSelectionCell. Supports tooltips. * */ public class LunSelectionCell extends AbstractCell<LunModel> { interface CellTemplate extends SafeHtmlTemplates { @Template("<span id=\"{0}\" style=\"padding-left: 1px;\">{1}</span>") SafeHtml span(String id, SafeHtml html); @Template("<input id=\"{0}\" tabindex='-1' type=\"{1}\" checked />") SafeHtml inputChecked(String id, String type); @Template("<input id=\"{0}\" tabindex='-1' type=\"{1}\" checked disabled />") SafeHtml inputCheckedDisabled(String id, String type); @Template("<input id=\"{0}\" tabindex='-1' type=\"{1}\" />") SafeHtml inputUnchecked(String id, String type); @Template("<input id=\"{0}\" tabindex='-1' type=\"{1}\" disabled />") SafeHtml inputUncheckedDisabled(String id, String type); } private static final CellTemplate templates = GWT.create(CellTemplate.class); private boolean multiSelection; private static final CommonApplicationResources resources = AssetProvider.getResources(); public LunSelectionCell() { } public LunSelectionCell(boolean multiSelection) { this.multiSelection = multiSelection; } @Override public void render(Context context, LunModel value, SafeHtmlBuilder sb, String id) { ImageResourceCell imageCell = new ImageResourceCell(); imageCell.setStyle("text-align: center;"); //$NON-NLS-1$ if (value.getIsIncluded()) { // ImageResourceCell sets the id imageCell.render(context, resources.okSmallImage(), sb, id); } else if (!value.getIsAccessible()) { // ImageResourceCell sets the id imageCell.render(context, resources.logWarningImage(), sb, id); } else { boolean checked = value.getIsSelected(); boolean disabled = value.getIsGrayedOut(); String inputId = id + "_input"; //$NON-NLS-1$ String type = multiSelection ? "checkbox" : "radio"; //$NON-NLS-1$ //$NON-NLS-2$ SafeHtml input = null; if (checked && !disabled) { input = templates.inputChecked(inputId, type); } else if (checked && disabled) { input = templates.inputCheckedDisabled(inputId, type); } else if (!checked && !disabled) { input = templates.inputUnchecked(inputId, type); } else { input = templates.inputUncheckedDisabled(inputId, type); } sb.append(templates.span(id, input)); } } }