anmolbabu has uploaded a new change for review.

Change subject: webadmin : Volume Capacity UI - Part2
......................................................................

webadmin : Volume Capacity UI - Part2

This patch introduces capacity progress bar
hover message. On hover of volume and brick
capacity progress bars, a message containing
the free, used and total capacities of hovered
entity.

Change-Id: I983daf32966527cdfa7773e07aa055a24519fbe2
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1144009
Signed-off-by: Anmol Babu <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationMessages.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/VolumeCapacityLabel.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/VolumeCapacityRenderer.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/BrickCapacityCell.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/GlusterCapacityCell.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeCapacityCell.java
12 files changed, 260 insertions(+), 41 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/51/40351/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java
index f2c51a5..41df6ff 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeGeneralModel.java
@@ -22,6 +22,9 @@
     private String nfsMountPoint;
     private Set<TransportType> transportTypes;
     private String snapMaxLimit;
+    private Long volumeTotalCapacity;
+    private Long volumeFreeCapacity;
+    private Long volumeUsedCapacity;
 
     public String getName() {
         return name;
@@ -143,6 +146,15 @@
         setNumOfBricks(entity.getBricks() != null ? 
Integer.toString(entity.getBricks().size()) : null);
         setTransportTypes(entity.getTransportTypes());
         setSnapMaxLimit(entity.getSnapMaxLimit() != null ? 
entity.getSnapMaxLimit().toString() : null);
+        if(entity.getAdvancedDetails() != null && 
entity.getAdvancedDetails().getCapacityInfo() != null) {
+            
setVolumeFreeCapacity(entity.getAdvancedDetails().getCapacityInfo().getFreeSize());
+            
setVolumeTotalCapacity(entity.getAdvancedDetails().getCapacityInfo().getTotalSize());
+            
setVolumeUsedCapacity(entity.getAdvancedDetails().getCapacityInfo().getUsedSize());
+        } else {
+            setVolumeFreeCapacity(null);
+            setVolumeTotalCapacity(null);
+            setVolumeUsedCapacity(null);
+        }
     }
 
     public Set<TransportType> getTransportTypes() {
@@ -152,4 +164,28 @@
     public void setTransportTypes(Set<TransportType> transportTypes) {
         this.transportTypes = transportTypes;
     }
+
+    public Long getVolumeTotalCapacity() {
+        return volumeTotalCapacity;
+    }
+
+    public void setVolumeTotalCapacity(Long volumeTotalCapacity) {
+        this.volumeTotalCapacity = volumeTotalCapacity;
+    }
+
+    public Long getVolumeFreeCapacity() {
+        return volumeFreeCapacity;
+    }
+
+    public void setVolumeFreeCapacity(Long volumeFreeCapacity) {
+        this.volumeFreeCapacity = volumeFreeCapacity;
+    }
+
+    public Long getVolumeUsedCapacity() {
+        return volumeUsedCapacity;
+    }
+
+    public void setVolumeUsedCapacity(Long volumeUsedCapacity) {
+        this.volumeUsedCapacity = volumeUsedCapacity;
+    }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
index a1a5719..eea7568 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
@@ -1552,6 +1552,9 @@
     @DefaultStringValue("Physical Memory")
     String physMemHostGeneral();
 
+    @DefaultStringValue("Capacity")
+    String volumeCapacityStatistics();
+
     @DefaultStringValue("Swap Size")
     String swapSizeHostGeneral();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationMessages.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationMessages.java
index 8a5e8a9..b2bc300 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationMessages.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationMessages.java
@@ -110,4 +110,6 @@
     @DefaultMessage("Default ({0})")
     String defaultMtu(int mtu);
 
+    @DefaultMessage("Free {0}\nUsed {1} of total available {2}")
+    String glusterCapacityInfo(String freeSize, String usedSize, String 
totalSize);
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java
index 392e349..e0d0241 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java
@@ -19,6 +19,11 @@
             "<div class='engine-progress-text'>{1}</div></div>")
     SafeHtml progressBar(int progress, String text, String color);
 
+    @Template("<div title='{3}' class='engine-progress-box'>" +
+            "<div style='background: {2}; width: {0}%; height: 100%'></div>" +
+            "<div class='engine-progress-text'>{1}</div></div>")
+    SafeHtml glusterCapcityProgressBar(int progress, String sizeString, String 
color, String toolTip);
+
     /**
      * Creates a tree-item HTML
      *
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
index 60fa8d9..ee57d24 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
@@ -139,12 +139,13 @@
             }
         });
 
-        getTable().addColumn(new Column<GlusterVolumeEntity, 
GlusterVolumeEntity>(new VolumeCapacityCell()) {
+        Column<GlusterVolumeEntity, GlusterVolumeEntity> capacityColumn = new 
Column<GlusterVolumeEntity, GlusterVolumeEntity>(new VolumeCapacityCell()) {
             @Override
             public GlusterVolumeEntity getValue(GlusterVolumeEntity object) {
                 return object;
             }
-        }, constants.volumeCapacity(), "100px");//$NON-NLS-1$
+        };
+        getTable().addColumn(capacityColumn, constants.volumeCapacity(), 
"100px");//$NON-NLS-1$
 
         getTable().addColumn(new VolumeActivityColumn<GlusterVolumeEntity>(new 
VolumeActivityCompositeCell<GlusterTaskSupport>(compositeList) {
             @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
index 0304b70..95f5e32 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeBrickView.java
@@ -18,9 +18,9 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeBrickPresenter;
 import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView;
 import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition;
+import org.ovirt.engine.ui.webadmin.widget.table.column.BrickCapacityCell;
 import org.ovirt.engine.ui.webadmin.widget.table.column.BrickStatusColumn;
 import org.ovirt.engine.ui.webadmin.widget.table.column.MenuCell;
-import org.ovirt.engine.ui.webadmin.widget.table.column.PercentColumn;
 import org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivityColumn;
 import 
org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivityCompositeCell;
 import 
org.ovirt.engine.ui.webadmin.widget.table.column.VolumeActivitySeperatorCell;
@@ -71,16 +71,12 @@
 
         getTable().addColumn(directoryColumn, 
constants.brickDirectoryVolumeBrick(), "400px"); //$NON-NLS-1$
 
-        getTable().addColumn(new PercentColumn<GlusterBrickEntity>() {
+        getTable().addColumn(new Column<GlusterBrickEntity, BrickProperties>( 
new BrickCapacityCell()) {
             @Override
-            protected Integer getProgressValue(GlusterBrickEntity object) {
-                if(object.getBrickProperties() == null) {
-                    return 0;
-                }
-                BrickProperties brickProperties = object.getBrickProperties();
-                return (int)(((brickProperties.getTotalSize() - 
brickProperties.getFreeSize())/ (brickProperties.getTotalSize())) * 100);
+            public BrickProperties getValue(GlusterBrickEntity object) {
+                return object.getBrickProperties();
             }
-        }, constants.volumeCapacity(), "60px");//$NON-NLS-1$
+        }, constants.volumeCapacity(), "100px");//$NON-NLS-1$
 
         getTable().addColumn(new 
VolumeActivityColumn<GlusterBrickEntity>(getActivityCell(constants)),
                 constants.activitiesOnVolume(), "100px"); //$NON-NLS-1$
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java
index 50ce5a6..97fdb81 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/gluster/SubTabVolumeGeneralView.java
@@ -1,5 +1,8 @@
 package org.ovirt.engine.ui.webadmin.section.main.view.tab.gluster;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+
 import javax.inject.Inject;
 
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
@@ -10,6 +13,7 @@
 import org.ovirt.engine.ui.common.widget.form.FormItem;
 import org.ovirt.engine.ui.common.widget.form.GeneralFormPanel;
 import org.ovirt.engine.ui.common.widget.label.TextBoxLabel;
+import org.ovirt.engine.ui.common.widget.label.TextBoxLabelBase;
 import org.ovirt.engine.ui.common.widget.label.VolumeTransportTypeLabel;
 import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.volumes.VolumeListModel;
@@ -21,6 +25,8 @@
 import org.ovirt.engine.ui.uicompat.Translator;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumeGeneralPresenter;
+import org.ovirt.engine.ui.webadmin.widget.label.DetailsTextBoxLabel;
+import org.ovirt.engine.ui.webadmin.widget.label.VolumeCapacityLabel;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.editor.client.Editor;
@@ -35,6 +41,8 @@
     @UiField(provided = true)
     GeneralFormPanel formPanel;
 
+    protected static final ApplicationConstants constants = 
GWT.create(ApplicationConstants.class);
+
     TextBoxLabel name = new TextBoxLabel();
     TextBoxLabel volumeId = new TextBoxLabel();
     TextBoxLabel volumeType = new TextBoxLabel();
@@ -46,16 +54,25 @@
     VolumeTransportTypeLabel transportTypes = new VolumeTransportTypeLabel();
     TextBoxLabel snapMaxLimit = new TextBoxLabel();
 
+    VolumeCapacityLabel<Long> volumeTotalCapacity;
+    VolumeCapacityLabel<Long> volumeUsedCapacity;
+    VolumeCapacityLabel<Long> volumeFreeCapacity;
+
     FormBuilder formBuilder;
 
     FormItem replicaFormItem;
     FormItem stripeFormItem;
+
+    @Ignore
+    DetailsTextBoxLabel<ArrayList<TextBoxLabelBase<Long>>, Long> 
volumeCapacityDetailsLabel = new 
DetailsTextBoxLabel<ArrayList<TextBoxLabelBase<Long>>, Long>(constants.total(), 
constants.used(), constants.free());
 
     private final Driver driver = GWT.create(Driver.class);
 
     @Inject
     public SubTabVolumeGeneralView(DetailModelProvider<VolumeListModel, 
VolumeGeneralModel> modelProvider, ApplicationConstants constants) {
         super(modelProvider);
+
+        initCapacityLabel(constants);
 
         // Init form panel:
         formPanel = new GeneralFormPanel();
@@ -64,9 +81,10 @@
         driver.initialize(this);
 
         // Build a form using the FormBuilder
-        formBuilder = new FormBuilder(formPanel, 1, 10);
+        formBuilder = new FormBuilder(formPanel, 1, 11);
 
         formBuilder.addFormItem(new FormItem(constants.NameVolume(), name, 0, 
0));
+
         formBuilder.addFormItem(new FormItem(constants.volumeIdVolume(), 
volumeId, 1, 0));
         formBuilder.addFormItem(new FormItem(constants.volumeTypeVolume(), 
volumeType, 2, 0));
 
@@ -82,6 +100,9 @@
         formBuilder.addFormItem(new FormItem(constants.disperseCount(), 
disperseCount, 8, 0));
         formBuilder.addFormItem(new FormItem(constants.redundancyCount(), 
redundancyCount, 9, 0));
 
+        volumeCapacityDetailsLabel.setWidth("275px");//$NON-NLS-1$
+        formBuilder.addFormItem(new 
FormItem(constants.volumeCapacityStatistics(), volumeCapacityDetailsLabel, 10, 
0));
+
         getDetailModel().getPropertyChangedEvent().addListener(new 
IEventListener() {
             @Override
             public void eventRaised(Event ev, Object sender, EventArgs args) {
@@ -93,6 +114,12 @@
         });
     }
 
+    private void initCapacityLabel(ApplicationConstants constants) {
+        this.volumeTotalCapacity = new VolumeCapacityLabel<Long>(constants);
+        this.volumeFreeCapacity = new VolumeCapacityLabel<Long>(constants);
+        this.volumeUsedCapacity = new VolumeCapacityLabel<Long>(constants);
+    }
+
     @Override
     public void setMainTabSelectedItem(GlusterVolumeEntity selectedItem) {
         driver.edit(getDetailModel());
@@ -102,6 +129,10 @@
         
disperseCount.setVisible(selectedItem.getVolumeType().isDispersedType());
         
redundancyCount.setVisible(selectedItem.getVolumeType().isDispersedType());
 
+        ArrayList<TextBoxLabelBase<Long>> volumeCapacityDetails =
+                new 
ArrayList<TextBoxLabelBase<Long>>(Arrays.asList(volumeTotalCapacity, 
volumeUsedCapacity, volumeFreeCapacity));
+        volumeCapacityDetailsLabel.setValue(volumeCapacityDetails);
+
         formBuilder.update(getDetailModel());
     }
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/VolumeCapacityLabel.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/VolumeCapacityLabel.java
new file mode 100644
index 0000000..fbcbbe7
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/label/VolumeCapacityLabel.java
@@ -0,0 +1,13 @@
+package org.ovirt.engine.ui.webadmin.widget.label;
+
+import org.ovirt.engine.ui.common.CommonApplicationConstants;
+import org.ovirt.engine.ui.common.widget.label.TextBoxLabelBase;
+import org.ovirt.engine.ui.webadmin.widget.renderer.VolumeCapacityRenderer;
+
+public class VolumeCapacityLabel<T extends Number> extends TextBoxLabelBase<T> 
{
+
+    public VolumeCapacityLabel(CommonApplicationConstants constants) {
+        super(new VolumeCapacityRenderer<Number>(constants));
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/VolumeCapacityRenderer.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/VolumeCapacityRenderer.java
new file mode 100644
index 0000000..18c7550
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/renderer/VolumeCapacityRenderer.java
@@ -0,0 +1,32 @@
+package org.ovirt.engine.ui.webadmin.widget.renderer;
+
+import org.ovirt.engine.core.common.utils.Pair;
+import org.ovirt.engine.core.common.utils.SizeConverter;
+import org.ovirt.engine.core.common.utils.SizeConverter.SizeUnit;
+import org.ovirt.engine.ui.common.CommonApplicationConstants;
+
+import com.google.gwt.i18n.client.NumberFormat;
+import com.google.gwt.text.shared.AbstractRenderer;
+
+public class VolumeCapacityRenderer<T extends Number> extends 
AbstractRenderer<T> {
+
+    private final CommonApplicationConstants constants;
+
+    public VolumeCapacityRenderer(CommonApplicationConstants constants) {
+        this.constants = constants;
+    }
+
+    @Override
+    public String render(T size) {
+        if (size != null) {
+            Pair<SizeUnit, Double> sizeWithUnits = 
SizeConverter.autoConvert(size.longValue(), SizeUnit.BYTES);
+            return formatSize(sizeWithUnits.getSecond()) + " " + 
sizeWithUnits.getFirst();//$NON-NLS-1$
+        } else {
+            return constants.notAvailableLabel();
+        }
+    }
+
+    public String formatSize(double size) {
+        return NumberFormat.getFormat("#.##").format(size);//$NON-NLS-1$
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/BrickCapacityCell.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/BrickCapacityCell.java
new file mode 100644
index 0000000..7876719
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/BrickCapacityCell.java
@@ -0,0 +1,20 @@
+package org.ovirt.engine.ui.webadmin.widget.table.column;
+
+import org.ovirt.engine.core.common.businessentities.gluster.BrickProperties;
+import org.ovirt.engine.core.common.utils.SizeConverter.SizeUnit;
+
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
+
+public class BrickCapacityCell<P extends BrickProperties> extends 
GlusterCapacityCell<P> {
+
+    @Override
+    public void render(Context context, BrickProperties value, SafeHtmlBuilder 
sb) {
+        if(value != null) {
+            setFreeSize(value.getFreeSize());
+            setTotalSize(value.getTotalSize());
+            setUsedSize(value.getTotalSize() - value.getFreeSize());
+            setInUnit(SizeUnit.MB);
+        }
+        super.render(context, value == null ? null : value, sb);
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/GlusterCapacityCell.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/GlusterCapacityCell.java
new file mode 100644
index 0000000..44b4271
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/GlusterCapacityCell.java
@@ -0,0 +1,96 @@
+package org.ovirt.engine.ui.webadmin.widget.table.column;
+
+import java.io.Serializable;
+
+import org.ovirt.engine.core.common.utils.Pair;
+import org.ovirt.engine.core.common.utils.SizeConverter;
+import org.ovirt.engine.core.common.utils.SizeConverter.SizeUnit;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationMessages;
+import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
+
+import com.google.gwt.cell.client.AbstractCell;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.i18n.client.NumberFormat;
+import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
+
+public abstract class GlusterCapacityCell<P extends Serializable> extends 
AbstractCell<P>{
+
+    protected static final ApplicationConstants constants = 
GWT.create(ApplicationConstants.class);
+    protected static final ApplicationTemplates templates = 
GWT.create(ApplicationTemplates.class);
+    protected static final ApplicationMessages messages = 
GWT.create(ApplicationMessages.class);
+
+    private Double freeSize;
+    private Double totalSize;
+    private Double usedSize;
+    private SizeUnit inUnit;
+
+    protected String getSizeString(Double size, SizeUnit inUnit) {
+        if(size == null) {
+            return constants.notAvailableLabel();
+        } else {
+            Pair<SizeUnit, Double> sizeWithUnits = 
SizeConverter.autoConvert(size.longValue(), inUnit);
+            return formatSize(sizeWithUnits.getSecond()) + " " + 
sizeWithUnits.getFirst().toString();//$NON-NLS-1$
+        }
+    }
+
+    private String formatSize(double size) {
+        return NumberFormat.getFormat("#.##").format(size);//$NON-NLS-1$
+    }
+
+    protected String getProgressText(Double freeSize, Double totalSize) {
+        if(freeSize == null || totalSize == null) {
+            return "?";//$NON-NLS-1$
+        } else {
+            return ((int)(getPercentageUsage(freeSize, totalSize))) + 
"%";//$NON-NLS-1$
+        }
+    }
+
+    protected int getProgressValue(Double freeSize, Double totalSize) {
+        if(freeSize == null || totalSize == null) {
+            return 0;
+        }
+        return (int)(Math.round(getPercentageUsage(freeSize, totalSize)));
+    }
+
+    private double getPercentageUsage(Double freeSize, Double totalSize) {
+        return (((totalSize - freeSize)  * 100 )/totalSize);
+    }
+
+    protected void setFreeSize(Double freeSize) {
+        this.freeSize = freeSize;
+    }
+
+    protected void setTotalSize(Double totalSize) {
+        this.totalSize = totalSize;
+    }
+
+    protected void setInUnit(SizeUnit inUnit) {
+        this.inUnit = inUnit;
+    }
+
+    protected void setUsedSize(Double usedSize) {
+        this.usedSize = usedSize;
+    }
+
+    public void clearAll() {
+        setFreeSize(null);
+        setTotalSize(null);
+        setUsedSize(null);
+        setInUnit(null);
+    }
+
+    @Override
+    public void render(Context context, Serializable value, SafeHtmlBuilder 
sb) {
+        if(value == null) {
+            clearAll();
+        }
+        int progress = getProgressValue(freeSize, totalSize);
+        String sizeString = getProgressText(freeSize, totalSize);
+        String color = progress < 70 ? "#669966" : progress < 95 ? "#FF9900" : 
"#FF0000"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+        String toolTip = messages.glusterCapacityInfo(getSizeString(freeSize, 
inUnit), getSizeString(usedSize, inUnit), getSizeString(totalSize, inUnit));
+        SafeHtml safeHtml = templates.glusterCapcityProgressBar(progress, 
sizeString, color, toolTip);
+        sb.append(safeHtml);
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeCapacityCell.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeCapacityCell.java
index fed948c..5ee501c 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeCapacityCell.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VolumeCapacityCell.java
@@ -1,43 +1,27 @@
 package org.ovirt.engine.ui.webadmin.widget.table.column;
 
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeAdvancedDetails;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSizeInfo;
-import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
-import org.ovirt.engine.ui.webadmin.gin.ClientGinjectorProvider;
+import org.ovirt.engine.core.common.utils.SizeConverter.SizeUnit;
 
-import com.google.gwt.cell.client.AbstractCell;
-import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 
-public class VolumeCapacityCell extends AbstractCell<GlusterVolumeEntity> {
-
-    private ApplicationTemplates templates = 
ClientGinjectorProvider.getApplicationTemplates();
+public class VolumeCapacityCell<P extends GlusterVolumeEntity> extends 
GlusterCapacityCell<P> {
 
     @Override
     public void render(Context context, GlusterVolumeEntity object, 
SafeHtmlBuilder sb) {
+        GlusterVolumeAdvancedDetails advancedDetails = 
object.getAdvancedDetails();
         GlusterVolumeSizeInfo sizeInfo = null;
-        int progress;
-        if (! (object.getAdvancedDetails() == null || 
object.getAdvancedDetails().getCapacityInfo() == null)) {
-            sizeInfo = object.getAdvancedDetails().getCapacityInfo();
-            progress = getProgressValue(sizeInfo);
-        } else {
-            progress = 0;
+        if (advancedDetails != null) {
+            sizeInfo = advancedDetails.getCapacityInfo();
+            if (sizeInfo != null) {
+                setFreeSize(sizeInfo.getFreeSize().doubleValue());
+                setTotalSize(sizeInfo.getTotalSize().doubleValue());
+                setUsedSize(sizeInfo.getUsedSize().doubleValue());
+                setInUnit(SizeUnit.BYTES);
+            }
         }
-        String sizeString = getProgressText(sizeInfo);
-        String color = progress < 70 ? "#669966" : progress < 95 ? "#FF9900" : 
"#FF0000"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-        SafeHtml safeHtml = templates.progressBar(progress, sizeString, color);
-        sb.append(safeHtml);
-    }
-
-    private String getProgressText(GlusterVolumeSizeInfo sizeStats) {
-        if(sizeStats == null) {
-            return "?";//$NON-NLS-1$
-        } else {
-            return ((int)((sizeStats.getUsedSize().floatValue() / 
sizeStats.getTotalSize().floatValue()) * 100)) + "%";//$NON-NLS-1$
-        }
-    }
-
-    private Integer getProgressValue(GlusterVolumeSizeInfo sizeStats) {
-        return (int)(Math.round((sizeStats.getUsedSize().floatValue() / 
sizeStats.getTotalSize().floatValue()) * 100));
+        super.render(context, advancedDetails == null ? null : sizeInfo == 
null ? null : sizeInfo, sb);
     }
 }


-- 
To view, visit https://gerrit.ovirt.org/40351
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I983daf32966527cdfa7773e07aa055a24519fbe2
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5-gluster
Gerrit-Owner: anmolbabu <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to