Moti Asayag has uploaded a new change for review.

Change subject: webadmin: Introduce a column for additional host statuses
......................................................................

webadmin: Introduce a column for additional host statuses

The new column will be used to present the additional host
statuses, such as updates available and external events.

The current patch adds the 'update available' icon, when
an upgrade is available for hosts.

Change-Id: I5797668b9875b5b4b90aa4dfb992b5cd15ccdb2c
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/cell/HostAdditionalStatusCell.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostAdditionalStatusColumn.java
4 files changed, 88 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/35/40635/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
index df8bb1b..ad6ba3e 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
@@ -2125,4 +2125,7 @@
 
     @DefaultStringValue("Creation Date")
     String permissionsCreationDate();
+
+    @DefaultStringValue("Update available")
+    String updateAvailable();
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
index 660c029..d40a751 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
@@ -4,7 +4,6 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import com.google.gwt.user.client.ui.HasHorizontalAlignment;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.core.common.businessentities.VdsSpmStatus;
@@ -39,6 +38,7 @@
 import 
org.ovirt.engine.ui.webadmin.widget.action.WebAdminMenuBarButtonDefinition;
 import org.ovirt.engine.ui.webadmin.widget.table.column.AbstractPercentColumn;
 import org.ovirt.engine.ui.webadmin.widget.table.column.CommentColumn;
+import 
org.ovirt.engine.ui.webadmin.widget.table.column.HostAdditionalStatusColumn;
 import org.ovirt.engine.ui.webadmin.widget.table.column.HostStatusColumn;
 import org.ovirt.engine.ui.webadmin.widget.table.column.ReasonColumn;
 import org.ovirt.engine.ui.webadmin.widget.table.column.VmCountColumn;
@@ -47,6 +47,7 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
+import com.google.gwt.user.client.ui.HasHorizontalAlignment;
 import com.google.inject.Inject;
 
 public class MainTabHostView extends AbstractMainTabWithDetailsTableView<VDS, 
HostListModel<Void>> implements MainTabHostPresenter.ViewDef {
@@ -104,6 +105,7 @@
         getTable().enableColumnResizing();
 
         getTable().addColumn(new HostStatusColumn<VDS>(), constants.empty(), 
"30px"); //$NON-NLS-1$
+        getTable().addColumn(new HostAdditionalStatusColumn<VDS>(), 
constants.empty(), "30px"); //$NON-NLS-1$
 
         AbstractTextColumn<VDS> nameColumn = new AbstractTextColumn<VDS>() {
             @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/cell/HostAdditionalStatusCell.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/cell/HostAdditionalStatusCell.java
new file mode 100644
index 0000000..14f88f3
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/cell/HostAdditionalStatusCell.java
@@ -0,0 +1,35 @@
+package org.ovirt.engine.ui.webadmin.widget.table.cell;
+
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.ui.common.widget.table.cell.AbstractCell;
+import org.ovirt.engine.ui.webadmin.ApplicationResources;
+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 HostAdditionalStatusCell extends AbstractCell<VDS> {
+
+    private final static ApplicationResources resources = 
AssetProvider.getResources();
+
+    @Override
+    public void render(Context context, VDS host, SafeHtmlBuilder sb, String 
id) {
+        // Nothing to render if no host is provided or if no updates are 
available:
+        if (host == null || !host.isUpdateAvailable()) {
+            return;
+        }
+
+        ImageResource statusImage = resources.updateAvailableImage();
+
+        // Generate the HTML for the image:
+        SafeHtml statusImageHtml =
+                
SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(statusImage).getHTML());
+        sb.append(statusImageHtml);
+
+        sb.appendHtmlConstant("<div id=\"" + id + "\" style=\"text-align: 
center;\">"); //$NON-NLS-1$ //$NON-NLS-2$
+        sb.appendHtmlConstant("</div>"); //$NON-NLS-1$
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostAdditionalStatusColumn.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostAdditionalStatusColumn.java
new file mode 100644
index 0000000..230766a
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostAdditionalStatusColumn.java
@@ -0,0 +1,47 @@
+package org.ovirt.engine.ui.webadmin.widget.table.column;
+
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.utils.PairQueryable;
+import org.ovirt.engine.ui.common.widget.table.column.AbstractColumn;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
+import org.ovirt.engine.ui.webadmin.widget.table.cell.HostAdditionalStatusCell;
+
+import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
+
+public class HostAdditionalStatusColumn<S> extends AbstractColumn<S, VDS> {
+
+    private final static ApplicationConstants constants = 
AssetProvider.getConstants();
+
+    public HostAdditionalStatusColumn() {
+        super(new HostAdditionalStatusCell());
+    }
+
+    @Override
+    public VDS getValue(S object) {
+        if (object instanceof VDS){
+            return (VDS) object;
+        }
+
+        if (object instanceof PairQueryable){
+            if (((PairQueryable<?, ?>) object).getSecond() instanceof VDS) {
+                return (VDS) ((PairQueryable<?, ?>) object).getSecond();
+            }
+        }
+
+        return null;
+    }
+
+    @Override
+    public SafeHtml getTooltip(S object) {
+        VDS host = getValue(object);
+
+        if (host != null && host.isUpdateAvailable()) {
+            String tooltip = constants.updateAvailable();
+            return SafeHtmlUtils.fromSafeConstant(tooltip);
+        }
+
+        return null;
+    }
+}


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5797668b9875b5b4b90aa4dfb992b5cd15ccdb2c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <masa...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to