package org.ovirt.engine.ui.userportal.widget; import org.ovirt.engine.core.common.businessentities.QuotaUsagePerUser; import org.ovirt.engine.core.common.utils.SizeConverter; import org.ovirt.engine.ui.common.CommonApplicationMessages; import org.ovirt.engine.ui.common.gin.AssetProvider; import org.ovirt.engine.ui.common.widget.renderer.DiskSizeRenderer; import com.google.gwt.safehtml.shared.SafeHtml; public class QuotaMemoryProgressBar extends QuotaProgressBar { private static final double GIGA = 1024; private static final double MB_GB_THRESHOLD = 4; // over this threshold number would be presented in GB not MB private static final DiskSizeRenderer<Number> diskSizeRenderer = new DiskSizeRenderer<>(SizeConverter.SizeUnit.GiB); private static final CommonApplicationMessages messages = AssetProvider.getMessages(); public QuotaMemoryProgressBar(QuotaUsagePerUser quotaUsagePerUser) { super(quotaUsagePerUser); } public QuotaMemoryProgressBar() { super(); } @Override protected void setValuesByType(QuotaUsagePerUser quotaUsagePerUser) { setValues(quotaUsagePerUser.getMemoryLimit(), quotaUsagePerUser.getMemoryTotalUsage() - quotaUsagePerUser.getMemoryUsageForUser(), quotaUsagePerUser.getMemoryUsageForUser()); } @Override public SafeHtml getTooltip() { if (quotaUsagePerUser.getMemoryLimit() == UNLIMITED) { return null; } return templateWithLabels(renderMemory(quotaUsagePerUser.getMemoryLimit()), (int) (quotaUsagePerUser.getOthersMemoryUsagePercentage() + quotaUsagePerUser.getUserMemoryUsagePercentage()), renderMemory(quotaUsagePerUser.getMemoryTotalUsage()), (int) quotaUsagePerUser.getUserMemoryUsagePercentage(), renderMemory(quotaUsagePerUser.getMemoryUsageForUser()), (int) quotaUsagePerUser.getOthersMemoryUsagePercentage(), renderMemory(quotaUsagePerUser.getMemoryTotalUsage() - quotaUsagePerUser.getMemoryUsageForUser()), (int) Math.max(100 - (quotaUsagePerUser.getOthersMemoryUsagePercentage() + quotaUsagePerUser.getUserMemoryUsagePercentage()), 0), renderMemory(quotaUsagePerUser.getFreeMemory())); } private String renderMemory(double memory) { if (memory <= 0) { return "0"; //$NON-NLS-1$ } return memory > Math.abs(MB_GB_THRESHOLD * GIGA) ? diskSizeRenderer.render(memory / GIGA) : messages.megabytes(String.valueOf((int) memory)); } }