Greg Sheremeta has uploaded a new change for review.

Change subject: userportal, webadmin: introduce Element ID capable CheckBoxCell
......................................................................

userportal, webadmin: introduce Element ID capable CheckBoxCell

(Patch 4z of 12)

Create CheckboxCell that extends GWT's CheckboxCell with Element ID
framework functionality.

Replaced all usages of GWT CheckboxCell with new CheckboxCell (drop-in
replacement).

Change-Id: I607298fb9f1b3b16cc255b19fc914d680c3b8630
Signed-off-by: Greg Sheremeta <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelCellTable.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelObjectCellTable.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/cell/CheckboxCell.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/CheckboxHeader.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/SelectAllCheckBoxHeader.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/SanStorageLunToTargetList.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/quota/QuotaPopupView.java
7 files changed, 98 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/17/38717/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelCellTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelCellTable.java
index 103cc12..1abcd08 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelCellTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EntityModelCellTable.java
@@ -8,6 +8,7 @@
 import org.ovirt.engine.ui.common.widget.HasEditorDriver;
 import org.ovirt.engine.ui.common.widget.IsEditorDriver;
 import org.ovirt.engine.ui.common.widget.table.ElementIdCellTable;
+import org.ovirt.engine.ui.common.widget.table.cell.CheckboxCell;
 import org.ovirt.engine.ui.common.widget.table.cell.EventHandlingCell;
 import org.ovirt.engine.ui.common.widget.table.cell.RadioboxCell;
 import org.ovirt.engine.ui.common.widget.table.header.SelectAllCheckBoxHeader;
@@ -16,7 +17,6 @@
 import org.ovirt.engine.ui.uicompat.external.StringUtils;
 
 import com.google.gwt.cell.client.Cell;
-import com.google.gwt.cell.client.CheckboxCell;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.BrowserEvents;
 import com.google.gwt.dom.client.Element;
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelObjectCellTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelObjectCellTable.java
index ead4fd3..a6cee6a 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelObjectCellTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/ListModelObjectCellTable.java
@@ -7,12 +7,12 @@
 import org.ovirt.engine.ui.common.PopupTableResources;
 import org.ovirt.engine.ui.common.widget.HasEditorDriver;
 import org.ovirt.engine.ui.common.widget.IsEditorDriver;
+import org.ovirt.engine.ui.common.widget.table.cell.CheckboxCell;
 import org.ovirt.engine.ui.common.widget.table.cell.RadioboxCell;
 import org.ovirt.engine.ui.common.widget.table.header.SelectAllCheckBoxHeader;
 import org.ovirt.engine.ui.common.widget.table.resize.ColumnResizeCellTable;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 
-import com.google.gwt.cell.client.CheckboxCell;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.safehtml.shared.SafeHtml;
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/cell/CheckboxCell.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/cell/CheckboxCell.java
new file mode 100644
index 0000000..a18d53e
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/cell/CheckboxCell.java
@@ -0,0 +1,89 @@
+package org.ovirt.engine.ui.common.widget.table.cell;
+
+import org.ovirt.engine.ui.common.idhandler.CellWithElementId;
+import org.ovirt.engine.ui.common.utils.ElementIdUtils;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.safehtml.client.SafeHtmlTemplates;
+import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
+import com.google.gwt.user.client.DOM;
+
+/**
+ * <p>
+ * Base class for all Cells that would otherwise extend GWT CheckboxCell.
+ * Supports rendering Element ids via the oVirt Element-ID framework.
+ * </p>
+ */
+public class CheckboxCell extends com.google.gwt.cell.client.CheckboxCell 
implements CellWithElementId<Boolean> {
+
+    interface CellTemplate extends SafeHtmlTemplates {
+        @Template("<input id=\"{0}\" type=\"checkbox\" tabindex=\"-1\" 
checked/>")
+        SafeHtml inputChecked(String id);
+
+        @Template("<input id=\"{0}\" type=\"checkbox\" tabindex=\"-1\" />")
+        SafeHtml inputUnchecked(String id);
+    }
+
+    private static final CellTemplate templates = 
GWT.create(CellTemplate.class);
+
+    private String elementIdPrefix = DOM.createUniqueId(); // default
+    private String columnId;
+
+    public CheckboxCell(boolean dependsOnSelection, boolean handlesSelection) {
+        super(dependsOnSelection, handlesSelection);
+    }
+
+    /**
+     * Override the normal render to pass along an id.
+     *
+     * @see 
com.google.gwt.cell.client.AbstractCell#render(com.google.gwt.cell.client.Cell.Context,
 java.lang.Object, com.google.gwt.safehtml.shared.SafeHtmlBuilder)
+     */
+    public final void render(Context context, Boolean value, SafeHtmlBuilder 
sb) {
+        String id = 
ElementIdUtils.createTableCellElementId(getElementIdPrefix(), getColumnId(), 
context);
+        render(context, value, sb, id);
+    }
+
+    /**
+     * Render the cell. Using the value, the id, and the context, append some 
HTML to the
+     * SafeHtmlBuilder that will show in the cell when it is rendered.
+     *
+     * Override this and use the id in your render.
+     *
+     * TODO-GWT: this is copied from GWT's CheckboxCell, with ID injected. 
Keep in sync on GWT upgrade.
+     *
+     * @see 
org.ovirt.engine.ui.common.widget.table.cell.TooltipCell#render(com.google.gwt.cell.client.Cell.Context,
 java.lang.Object, com.google.gwt.safehtml.shared.SafeHtmlBuilder, 
java.lang.String)
+     */
+    public void render(Context context, Boolean value, SafeHtmlBuilder sb, 
String id) {
+        // Get the view data.
+        Object key = context.getKey();
+        Boolean viewData = getViewData(key);
+        if (viewData != null && viewData.equals(value)) {
+            clearViewData(key);
+            viewData = null;
+        }
+
+        if (value != null && ((viewData != null) ? viewData : value)) {
+            sb.append(templates.inputChecked(id));
+        } else {
+            sb.append(templates.inputUnchecked(id));
+        }
+    }
+
+    public void setElementIdPrefix(String elementIdPrefix) {
+        this.elementIdPrefix = elementIdPrefix;
+    }
+
+    public void setColumnId(String columnId) {
+        this.columnId = columnId;
+    }
+
+    public String getElementIdPrefix() {
+        return elementIdPrefix;
+    }
+
+    public String getColumnId() {
+        return columnId;
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/CheckboxHeader.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/CheckboxHeader.java
index 3673642..9d3ad6e 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/CheckboxHeader.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/CheckboxHeader.java
@@ -1,7 +1,8 @@
 package org.ovirt.engine.ui.common.widget.table.header;
 
+import org.ovirt.engine.ui.common.widget.table.cell.CheckboxCell;
+
 import com.google.gwt.cell.client.Cell.Context;
-import com.google.gwt.cell.client.CheckboxCell;
 import com.google.gwt.cell.client.ValueUpdater;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
@@ -25,8 +26,8 @@
     public CheckboxHeader(final SafeHtml title) {
         super(new CheckboxCell(true, false) {
             @Override
-            public void render(Context context, Boolean value, SafeHtmlBuilder 
sb) {
-                super.render(context, value, sb);
+            public void render(Context context, Boolean value, SafeHtmlBuilder 
sb, String id) {
+                super.render(context, value, sb, id);
                 sb.append(title);
             }
         });
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/SelectAllCheckBoxHeader.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/SelectAllCheckBoxHeader.java
index 34e7206..b2c8641 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/SelectAllCheckBoxHeader.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/SelectAllCheckBoxHeader.java
@@ -2,9 +2,9 @@
 
 import java.util.ArrayList;
 
+import org.ovirt.engine.ui.common.widget.table.cell.CheckboxCell;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 
-import com.google.gwt.cell.client.CheckboxCell;
 import com.google.gwt.cell.client.ValueUpdater;
 import com.google.gwt.user.cellview.client.Header;
 import com.google.gwt.view.client.SelectionModel;
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/SanStorageLunToTargetList.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/SanStorageLunToTargetList.java
index dc45615..7f9251d 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/SanStorageLunToTargetList.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/SanStorageLunToTargetList.java
@@ -4,6 +4,7 @@
 import java.util.List;
 
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
+import org.ovirt.engine.ui.common.widget.table.cell.CheckboxCell;
 import 
org.ovirt.engine.ui.common.widget.table.column.AbstractLunSelectionColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractLunTextColumn;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
@@ -15,7 +16,6 @@
 import org.ovirt.engine.ui.uicompat.IEventListener;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
 
-import com.google.gwt.cell.client.CheckboxCell;
 import com.google.gwt.cell.client.ValueUpdater;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Style.TableLayout;
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/quota/QuotaPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/quota/QuotaPopupView.java
index 3c6ac73..59663ee 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/quota/QuotaPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/quota/QuotaPopupView.java
@@ -21,6 +21,7 @@
 import org.ovirt.engine.ui.common.widget.form.Slider.SliderValueChange;
 import org.ovirt.engine.ui.common.widget.renderer.DiskSizeRenderer;
 import org.ovirt.engine.ui.common.widget.renderer.NameRenderer;
+import org.ovirt.engine.ui.common.widget.table.cell.CheckboxCell;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.quota.QuotaModel;
@@ -35,7 +36,6 @@
 import org.ovirt.engine.ui.webadmin.widget.table.cell.NullableButtonCell;
 import 
org.ovirt.engine.ui.webadmin.widget.table.column.QuotaUtilizationStatusColumn;
 
-import com.google.gwt.cell.client.CheckboxCell;
 import com.google.gwt.cell.client.FieldUpdater;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.editor.client.SimpleBeanEditorDriver;


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

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

Reply via email to