package org.ovirt.engine.ui.common.widget.table.column; import java.util.Comparator; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.utils.PairQueryable; import org.ovirt.engine.ui.common.CommonApplicationConstants; import org.ovirt.engine.ui.common.CommonApplicationResources; import org.ovirt.engine.ui.common.CommonApplicationTemplates; import org.ovirt.engine.ui.common.gin.AssetProvider; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.user.client.ui.AbstractImagePrototype; public class NicActivateStatusColumn<T> extends AbstractSafeHtmlColumn<T> { private static final CommonApplicationResources resources = AssetProvider.getResources(); private static final CommonApplicationConstants constants = AssetProvider.getConstants(); private static final CommonApplicationTemplates templates = AssetProvider.getTemplates(); private ImageResource getImage(T object) { VmNetworkInterface vnic = null; if (object instanceof VmNetworkInterface) { vnic = (VmNetworkInterface) object; } else if (object instanceof PairQueryable && ((PairQueryable) object).getFirst() instanceof VmNetworkInterface) { vnic = ((PairQueryable<VmNetworkInterface, VM>) object).getFirst(); } if (vnic != null) { return vnic.isPlugged() && vnic.isLinked() ? resources.upImage() : resources.downImage(); } return null; } public void makeSortable() { makeSortable(Comparator.comparing(this::getImage, new SimpleStatusImageComparator())); } @Override public SafeHtml getValue(T object) { ImageResource image = getImage(object); return (image == null) ? null : SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(image).getHTML()); } @Override public SafeHtml getTooltip(T object) { VmNetworkInterface vnic = null; if (object instanceof VmNetworkInterface) { vnic = (VmNetworkInterface) object; } else if (object instanceof PairQueryable && ((PairQueryable) object).getFirst() instanceof VmNetworkInterface) { vnic = ((PairQueryable<VmNetworkInterface, VM>) object).getFirst(); } StringBuilder tooltip = new StringBuilder(""); //$NON-NLS-1$ boolean vnicExist = vnic != null; if (vnicExist && vnic.isPlugged()) { tooltip = tooltip.append(templates.cardStatus(constants.pluggedNetworkInterface()).asString()); } else { tooltip = tooltip.append(templates.cardStatus(constants.unpluggedNetworkInterface()).asString()); } tooltip = tooltip.append("<BR>"); //$NON-NLS-1$ if (vnicExist && vnic.isLinked()) { tooltip = tooltip.append(templates.linkState(constants.linkedNetworkInterface()) .asString()); } else { tooltip = tooltip.append(templates.linkState(constants.unlinkedNetworkInterface()) .asString()); } return SafeHtmlUtils.fromTrustedString(tooltip.toString()); } }