package org.ovirt.engine.ui.webadmin.widget.tree; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.ui.common.utils.ElementIdUtils; import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel; import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.ApplicationTemplates; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import com.google.gwt.cell.client.AbstractCell; 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.DOM; import com.google.gwt.user.client.ui.AbstractImagePrototype; public class SystemTreeItemCell extends AbstractCell<SystemTreeItemModel> { private String elementIdPrefix = DOM.createUniqueId(); private static final ApplicationTemplates templates = AssetProvider.getTemplates(); private static final ApplicationResources resources = AssetProvider.getResources(); public SystemTreeItemCell() { } @Override public void render(Context context, SystemTreeItemModel value, SafeHtmlBuilder sb) { ImageResource imageResource; // get the right image resource switch (value.getType()) { case Cluster: imageResource = resources.clusterImage(); break; case Clusters: imageResource = resources.clustersImage(); break; case DataCenter: imageResource = resources.dataCenterImage(); break; case DataCenters: imageResource = resources.dataCentersImage(); break; case Cluster_Gluster: imageResource = resources.glusterClusterImage(); break; case Host: imageResource = resources.hostImage(); break; case Hosts: imageResource = resources.hostsImage(); break; case Storage: imageResource = resources.storageImage(); break; case Storages: imageResource = resources.storagesImage(); break; case System: imageResource = resources.systemImage(); break; case Templates: imageResource = resources.templatesImage(); break; case VMs: imageResource = resources.vmsImage(); break; case Volume: imageResource = resources.volumeImage(); break; case Volumes: imageResource = resources.volumesImage(); break; case Network: imageResource = resources.networkTreeImage(); break; case Networks: imageResource = resources.networksTreeImage(); break; case Provider: switch (((Provider) value.getEntity()).getType()) { case EXTERNAL_NETWORK: case OPENSTACK_NETWORK: case OPENSTACK_IMAGE: case OPENSTACK_VOLUME: imageResource = resources.openstackImage(); break; case FOREMAN: imageResource = resources.foremanImage(); break; default: imageResource = resources.providersImage(); } break; case Providers: imageResource = resources.providersImage(); break; case Sessions: imageResource = resources.userImage_tree(); break; case Errata: imageResource = resources.errataImage(); break; default: imageResource = resources.questionMarkImage(); } // get the image HTML SafeHtml imageHtml = SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(imageResource).getHTML()); // apply to template sb.append(templates.treeItem(imageHtml, value.getTitle(), ElementIdUtils.createTreeCellElementId(elementIdPrefix, value, null))); } public void setElementIdPrefix(String elementIdPrefix) { this.elementIdPrefix = elementIdPrefix; } }