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
