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
