Lior Vernia has uploaded a new change for review.

Change subject: webadmin: Rendered checkbox headers resizeable
......................................................................

webadmin: Rendered checkbox headers resizeable

Previously, CheckboxHeader wasn't resizeable. Created a class
ResizeableCheckboxHeader to fix this, a wrapper for CheckboxHeader
that inherits from ResizableHeader (classic case for multiple
inheritance, but used composition due to Java limitations).

A CheckboxHeader is automatically wrapped with a
ResizeableCheckboxHeader when it is added to a ColumnResizeCellTable
that has column resizing enabled, as in such a case it would be
expected that the checkbox headers are resizeable as well.

Change-Id: Ie442350893282e7838e5216d277718e654f1d884
Bug-Url: https://bugzilla.redhat.com/1009745
Signed-off-by: Lior Vernia <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlCellWithTooltip.java
R 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/CheckboxHeader.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/ResizeableCheckboxHeader.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/resize/ColumnResizeCellTable.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/resize/ResizableHeader.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterManageNetworkPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ImportNetworksPopupView.java
8 files changed, 67 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/98/20698/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlCellWithTooltip.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlCellWithTooltip.java
index 95a160c..345900c 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlCellWithTooltip.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SafeHtmlCellWithTooltip.java
@@ -1,6 +1,5 @@
 package org.ovirt.engine.ui.common.widget.table.column;
 
-import com.google.gwt.dom.client.Element;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.user.client.ui.HTML;
@@ -28,12 +27,6 @@
             sb.append(value);
             sb.appendHtmlConstant("</div>"); //$NON-NLS-1$
         }
-    }
-
-    @Override
-    protected boolean contentOverflows(Element parent) {
-        // Perform content overflow detection on child DIV element
-        return super.contentOverflows(parent.getFirstChildElement());
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/CheckboxHeader.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/CheckboxHeader.java
similarity index 93%
rename from 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/CheckboxHeader.java
rename to 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/CheckboxHeader.java
index 0fe2d6d..3673642 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/CheckboxHeader.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/CheckboxHeader.java
@@ -1,4 +1,4 @@
-package org.ovirt.engine.ui.webadmin.widget.table.column;
+package org.ovirt.engine.ui.common.widget.table.header;
 
 import com.google.gwt.cell.client.Cell.Context;
 import com.google.gwt.cell.client.CheckboxCell;
@@ -18,6 +18,10 @@
 
     private final SafeHtml title;
 
+    public SafeHtml getTitle() {
+        return title;
+    }
+
     public CheckboxHeader(final SafeHtml title) {
         super(new CheckboxCell(true, false) {
             @Override
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/ResizeableCheckboxHeader.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/ResizeableCheckboxHeader.java
new file mode 100644
index 0000000..9f25204
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/ResizeableCheckboxHeader.java
@@ -0,0 +1,45 @@
+package org.ovirt.engine.ui.common.widget.table.header;
+
+import org.ovirt.engine.ui.common.widget.table.column.SafeHtmlCellWithTooltip;
+import org.ovirt.engine.ui.common.widget.table.resize.HasResizableColumns;
+import org.ovirt.engine.ui.common.widget.table.resize.ResizableHeader;
+
+import com.google.gwt.cell.client.Cell.Context;
+import com.google.gwt.dom.client.BrowserEvents;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
+import com.google.gwt.user.cellview.client.Column;
+
+public class ResizeableCheckboxHeader<T> extends ResizableHeader<T> {
+
+    CheckboxHeader checkboxHeaderDelegate;
+
+    public ResizeableCheckboxHeader(CheckboxHeader checkboxHeader,
+            Column<T, ?> column,
+            HasResizableColumns<T> table) {
+
+        super(checkboxHeader.getTitle(), column, table, new 
SafeHtmlCellWithTooltip(BrowserEvents.CLICK,
+                BrowserEvents.MOUSEDOWN,
+                BrowserEvents.MOUSEMOVE,
+                BrowserEvents.MOUSEOVER,
+                BrowserEvents.CHANGE,
+                BrowserEvents.KEYDOWN));
+
+        checkboxHeaderDelegate = checkboxHeader;
+    }
+
+    @Override
+    public void onBrowserEvent(Context context, Element target, NativeEvent 
event) {
+        if 
(checkboxHeaderDelegate.getCell().getConsumedEvents().contains(event.getType()))
 {
+            checkboxHeaderDelegate.onBrowserEvent(context, target, event);
+        }
+        super.onBrowserEvent(context, target, event);
+    }
+
+    @Override
+    public void render(Context context, SafeHtmlBuilder sb) {
+        checkboxHeaderDelegate.render(context, sb);
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/resize/ColumnResizeCellTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/resize/ColumnResizeCellTable.java
index 457e635..d700cdd 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/resize/ColumnResizeCellTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/resize/ColumnResizeCellTable.java
@@ -7,6 +7,8 @@
 import org.ovirt.engine.ui.common.system.ClientStorage;
 import org.ovirt.engine.ui.common.widget.table.column.EmptyColumn;
 import org.ovirt.engine.ui.common.widget.table.column.SafeHtmlCellWithTooltip;
+import org.ovirt.engine.ui.common.widget.table.header.CheckboxHeader;
+import org.ovirt.engine.ui.common.widget.table.header.ResizeableCheckboxHeader;
 import org.ovirt.engine.ui.uicommonweb.models.GridController;
 
 import com.google.gwt.dom.client.Element;
@@ -95,7 +97,7 @@
      */
     @Override
     public void addColumn(Column<T, ?> column, Header<?> header) {
-        super.addColumn(column, header);
+        super.addColumn(column, wrapHeader(header, column));
 
         if (columnResizingEnabled) {
             if (emptyNoWidthColumn != null) {
@@ -192,6 +194,11 @@
         };
     }
 
+    Header<?> wrapHeader(Header<?> header, Column<T, ?> column) {
+        return (columnResizingEnabled && header instanceof CheckboxHeader)
+                ? new ResizeableCheckboxHeader<T>((CheckboxHeader) header, 
column, this) : header;
+    }
+
     /**
      * Ensures that the given column is added (or removed), unless it's 
already present (or absent).
      */
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/resize/ResizableHeader.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/resize/ResizableHeader.java
index 19cea6f..ac289db 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/resize/ResizableHeader.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/resize/ResizableHeader.java
@@ -2,6 +2,7 @@
 
 import org.ovirt.engine.ui.common.widget.table.column.SafeHtmlCellWithTooltip;
 
+import com.google.gwt.cell.client.Cell;
 import com.google.gwt.cell.client.Cell.Context;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
@@ -28,7 +29,11 @@
     private final HasResizableColumns<T> table;
 
     public ResizableHeader(SafeHtml text, Column<T, ?> column, 
HasResizableColumns<T> table) {
-        super(new SafeHtmlCellWithTooltip("click", "mousedown", "mousemove", 
"mouseover")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+        this(text, column, table, new SafeHtmlCellWithTooltip("click", 
"mousedown", "mousemove", "mouseover")); //$NON-NLS-1$ //$NON-NLS-2$ 
//$NON-NLS-3$ //$NON-NLS-4$
+    }
+
+    public ResizableHeader(SafeHtml text, Column<T, ?> column, 
HasResizableColumns<T> table, Cell<SafeHtml> cell) {
+        super(cell);
         this.text = text;
         this.column = column;
         this.table = table;
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java
index 0b7bcc7..411f47d 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java
@@ -18,6 +18,7 @@
 import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer;
 import org.ovirt.engine.ui.common.widget.table.column.CheckboxColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.common.widget.table.header.CheckboxHeader;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.datacenters.NetworkClusterModel;
@@ -26,7 +27,6 @@
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
 import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.AbstractNetworkPopupPresenterWidget;
-import org.ovirt.engine.ui.webadmin.widget.table.column.CheckboxHeader;
 import org.ovirt.engine.ui.webadmin.widget.vnicProfile.VnicProfilesEditor;
 
 import com.google.gwt.cell.client.Cell.Context;
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterManageNetworkPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterManageNetworkPopupView.java
index 68c3c72..5735d44 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterManageNetworkPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterManageNetworkPopupView.java
@@ -9,6 +9,7 @@
 import 
org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable.SelectionMode;
 import org.ovirt.engine.ui.common.widget.table.column.CheckboxColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.common.widget.table.header.CheckboxHeader;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
@@ -18,7 +19,6 @@
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
 import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.ClusterManageNetworkPopupPresenterWidget;
-import org.ovirt.engine.ui.webadmin.widget.table.column.CheckboxHeader;
 
 import com.google.gwt.cell.client.Cell.Context;
 import com.google.gwt.cell.client.FieldUpdater;
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ImportNetworksPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ImportNetworksPopupView.java
index 70c6ec9..8acf487 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ImportNetworksPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ImportNetworksPopupView.java
@@ -15,6 +15,7 @@
 import 
org.ovirt.engine.ui.common.widget.table.column.EditTextColumnWithTooltip;
 import org.ovirt.engine.ui.common.widget.table.column.ListModelListBoxColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.common.widget.table.header.CheckboxHeader;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.ImportNetworksModel;
@@ -23,7 +24,6 @@
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
 import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider.ImportNetworksPopupPresenterWidget;
-import org.ovirt.engine.ui.webadmin.widget.table.column.CheckboxHeader;
 
 import com.google.gwt.cell.client.Cell.Context;
 import com.google.gwt.cell.client.FieldUpdater;


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

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

Reply via email to