anmolbabu has uploaded a new change for review.

Change subject: [WIP]webadmin : Volume Capacity popup
......................................................................

[WIP]webadmin : Volume Capacity popup

This patch provides UI for displaying the capacities
of selected volumes.

Change-Id: I04151d78838c1398cff42c84104e21d61d9c7747
Signed-off-by: Anmol Babu <[email protected]>
---
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeCapacityModel.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/ApplicationTemplates.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/VolumeCapacityPopupPresenterWidget.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeCapacityPopupView.ui.xml
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVolumeView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/SizeIndicatorColumn.java
7 files changed, 133 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/37/22537/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeCapacityModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeCapacityModel.java
new file mode 100644
index 0000000..352146d
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeCapacityModel.java
@@ -0,0 +1,7 @@
+package org.ovirt.engine.ui.uicommonweb.models.gluster;
+
+import org.ovirt.engine.ui.uicommonweb.models.Model;
+
+public class VolumeCapacityModel extends Model {
+
+}
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 863aa00..47fc9e5 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
@@ -2567,6 +2567,9 @@
     @DefaultStringValue("Remove")
     String removeVolume();
 
+    @DefaultStringValue("Capacity")
+    String volumeCapacity();
+
     @DefaultStringValue("Start")
     String startVolume();
 
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 bfcfea7..6c7acab 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
@@ -20,6 +20,25 @@
     SafeHtml progressBar(int progress, String text, String color);
 
     /**
+     * Creates a progress bar template.
+     *
+     * @param progress
+     *            Progress value in percent.
+     * @param text
+     *            Text to show within the progress bar.
+     * @param sizeString
+     *            Text to show below the progress bar.           
+     */
+
+    @Template(
+               "<div class='engine-progress-box'>" +
+                   "<div style='background: {2}; width: {0}%; height: 
100%'></div>" +
+                   "<div class='engine-progress-text'>{1}</div></div>"
+                   +
+                   "<div>{3}</div>")
+    SafeHtml progressBarWithBottomText(int progress, String text, String 
color, String sizeString);
+
+    /**
      * Creates a tree-item HTML
      *
      * @param imageHtml
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/VolumeCapacityPopupPresenterWidget.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/VolumeCapacityPopupPresenterWidget.java
new file mode 100644
index 0000000..aca5dea
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/gluster/VolumeCapacityPopupPresenterWidget.java
@@ -0,0 +1,19 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster;
+
+import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
+import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeCapacityModel;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+public class VolumeCapacityPopupPresenterWidget extends 
AbstractModelBoundPopupPresenterWidget<VolumeCapacityModel, 
VolumeCapacityPopupPresenterWidget.ViewDef> {
+
+       public interface ViewDef extends 
AbstractModelBoundPopupPresenterWidget.ViewDef<VolumeCapacityModel> {
+       }
+
+    @Inject
+    public VolumeCapacityPopupPresenterWidget(EventBus eventBus, ViewDef view) 
{
+        super(eventBus, view);
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeCapacityPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeCapacityPopupView.ui.xml
new file mode 100644
index 0000000..1c8f20d
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeCapacityPopupView.ui.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
+       xmlns:g="urn:import:com.google.gwt.user.client.ui" 
xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
+       xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" 
xmlns:w="urn:import:org.ovirt.engine.ui.common.widget">
+
+       <ui:style>
+               .generalTabTopDecorator {
+               background-color: #D3D3D3;
+               margin-bottom: 8px;
+               margin-top: 4px;
+               margin-right: 3px;
+               padding-top: 6px;
+               padding-bottom: 6px;
+               }
+
+               .tablePanel {
+               padding: 1px;
+               border: 1px solid #CED8DF;
+               }
+
+       </ui:style>
+
+       <d:SimpleDialogPanel width="200px" height="400px">
+               <d:content>
+                       <g:VerticalPanel>
+                               <e:EntityModelCellTable 
ui:field="volumeCapacityTable" />
+                       </g:VerticalPanel>
+                       <g:FlowPanel 
addStyleNames="{style.generalTabTopDecorator}">
+                               <g:HorizontalPanel>
+                                       <g:ScrollPanel 
addStyleNames="{style.tablePanel}">
+                                               <e:EntityModelCellTable 
ui:field="nearThresholdTable" />
+                                       </g:ScrollPanel>
+                                       <g:ScrollPanel 
addStyleNames="{style.tablePanel}">
+                                               <e:EntityModelCellTable 
ui:field="warningRangeTable" />
+                                       </g:ScrollPanel>
+                               </g:HorizontalPanel>
+                       </g:FlowPanel>
+               </d:content>
+       </d:SimpleDialogPanel>
+</ui:UiBinder>
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 5b0b2f6..19ebfdb 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
@@ -130,7 +130,6 @@
                 constants.activitiesOnVolume(),
                 "100px"); //$NON-NLS-1$
 
-
         getTable().addActionButton(new 
WebAdminButtonDefinition<GlusterVolumeEntity>(constants.newVolume()) {
             @Override
             protected UICommand resolveCommand() {
@@ -167,6 +166,14 @@
                 return getMainModel().getOptimizeForVirtStoreCommand();
             }
         });
+
+        getTable().addActionButton(new 
WebAdminButtonDefinition<GlusterVolumeEntity>(constants.volumeCapacity()) {
+
+                       @Override
+                       protected UICommand resolveCommand() {
+                               return null;
+                       }
+               });
     }
 
     private MenuCell<GlusterTaskSupport> 
getRebalanceActivityMenu(ApplicationConstants constants) {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/SizeIndicatorColumn.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/SizeIndicatorColumn.java
new file mode 100644
index 0000000..b2495a8
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/SizeIndicatorColumn.java
@@ -0,0 +1,36 @@
+package org.ovirt.engine.ui.webadmin.widget.table.column;
+
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSizeInfo;
+import org.ovirt.engine.core.common.utils.SizeConverter;
+import org.ovirt.engine.core.common.utils.SizeConverter.SizeUnit;
+import org.ovirt.engine.ui.common.widget.table.column.SafeHtmlColumn;
+import org.ovirt.engine.ui.webadmin.gin.ClientGinjectorProvider;
+
+import com.google.gwt.safehtml.shared.SafeHtml;
+
+public abstract class SizeIndicatorColumn<T> extends SafeHtmlColumn<T> {
+
+       @Override
+       public SafeHtml getValue(T object) {
+               Integer progressValue = getProgressValue(object);
+
+        int progress = progressValue != null ? progressValue : 0;
+        String text = getProgressText(object);
+
+        // Choose color by progress
+        String color = progress < 70 ? "#669966" : progress < 95 ? "#FF9900" : 
"#FF0000"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+        String sizeString = 
SizeConverter.autoConvert(((GlusterVolumeSizeInfo)object).getFreeSize(), 
SizeUnit.BYTES) + "of" + 
SizeConverter.autoConvert(((GlusterVolumeSizeInfo)object).getTotalSize(), 
SizeConverter.SizeUnit.BYTES);
+        return 
ClientGinjectorProvider.getApplicationTemplates().progressBarWithBottomText(progress,
 text, color, sizeString);
+    }
+
+    /**
+     * Returns the progress value in percent ({@code null} values will be 
interpreted as zeroes).
+     */
+    protected abstract Integer getProgressValue(T object);
+
+    /**
+     * Returns the text to show within the progress bar.
+     */
+    protected abstract String getProgressText(T object);
+}


-- 
To view, visit http://gerrit.ovirt.org/22537
To unsubscribe, visit http://gerrit.ovirt.org/settings

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

Reply via email to