package org.ovirt.engine.ui.webadmin.widget.table.cell;
import org.ovirt.engine.core.common.asynctasks.gluster.GlusterTaskType;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterTaskSupport;
import org.ovirt.engine.ui.common.widget.table.cell.AbstractCell;
import org.ovirt.engine.ui.webadmin.ApplicationConstants;
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.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 class VolumeActivityStatusCell<T extends GlusterTaskSupport> extends AbstractCell<T> {
private static final ApplicationTemplates templates = AssetProvider.getTemplates();
private static final ApplicationResources resources = AssetProvider.getResources();
private static final ApplicationConstants constants = AssetProvider.getConstants();
@Override
public void render(Context context, T value, SafeHtmlBuilder sb, String id) {
// Nothing to render if no task is provided, or if task status is empty:
if (value == null || value.getAsyncTask() == null || value.getAsyncTask().getType() == null
||value.getAsyncTask().getStatus() == null) {
return;
}
// Find the image corresponding to the task
GlusterTaskType taskType = value.getAsyncTask().getType();
ImageResource taskImage = null;
if (taskType == GlusterTaskType.REBALANCE) {
switch (value.getAsyncTask().getStatus()) {
case STARTED:
taskImage = resources.rebalanceRunning();
break;
case ABORTED:
taskImage = resources.rebalanceStoppped();
break;
case FAILED:
taskImage = resources.rebalanceFailed();
break;
case FINISHED:
taskImage = resources.rebalanceCompleted();
break;
case UNKNOWN:
taskImage = resources.questionMarkImage();
break;
default:
taskImage = null;
}
}
else if (taskType == GlusterTaskType.REMOVE_BRICK) {
switch (value.getAsyncTask().getStatus()) {
case STARTED:
taskImage = resources.removeBrickRunning();
break;
case ABORTED:
taskImage = resources.removeBrickStopped();
break;
case FAILED:
taskImage = resources.removeBrickFailed();
break;
case FINISHED:
taskImage = resources.removeBrickCommitRequired();
break;
case UNKNOWN:
taskImage = resources.questionMarkImage();
break;
default:
taskImage = null;
}
}
if (taskImage != null) {
// Generate the HTML for the image:
SafeHtml activityImageHtml =
SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(taskImage).getHTML());
sb.append(templates.imageWithId(activityImageHtml, id));
}
}
}