Greg Sheremeta has uploaded a new change for review. Change subject: webadmin: use new element-id-capable SortedColumn for vm statustext ......................................................................
webadmin: use new element-id-capable SortedColumn for vm statustext In the VM main tab, the 'status text' column lost its static element id, probably when it was made into a SortedColumn or a composite column. Added infrastructure for a SortedColumnWithElementId and switched the column to that. Change-Id: I97bb0a04d46e94efede5f46af35ebcee01a9dd70 Bug-Url: https://bugzilla.redhat.com/1148530 Signed-off-by: Greg Sheremeta <gsher...@redhat.com> --- A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractCellWithElementId.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CellWithElementId.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CompositeCellWithElementId.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SortableColumnWithElementId.java R frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StatusCompositeCellWithElementId.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java 6 files changed, 156 insertions(+), 12 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/80/34280/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractCellWithElementId.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractCellWithElementId.java new file mode 100644 index 0000000..fe0f463 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractCellWithElementId.java @@ -0,0 +1,37 @@ +package org.ovirt.engine.ui.common.widget.table.column; + +import com.google.gwt.cell.client.AbstractCell; +import com.google.gwt.user.client.DOM; + +/** + * A cell that sets an ID when it renders. Convenience implementation of CellWithElementId. + * + * @param <C> + * Cell data type. + */ +public abstract class AbstractCellWithElementId<C> extends AbstractCell<C> implements CellWithElementId<C> { + + public AbstractCellWithElementId(String... consumedEvents) { + super(consumedEvents); + } + + private String elementIdPrefix = DOM.createUniqueId(); // default + private String columnId; + + 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/column/CellWithElementId.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CellWithElementId.java new file mode 100644 index 0000000..fb50a69 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CellWithElementId.java @@ -0,0 +1,31 @@ +package org.ovirt.engine.ui.common.widget.table.column; + +import com.google.gwt.cell.client.Cell; + +// TODO I think all of our custom cells should implement this. No reason +// not to have IDs on every table cell. + +/** + * A cell that sets an ID when it renders. + * + * @param <C> + * Cell data type. + */ +public interface CellWithElementId<C> extends Cell<C> { + + /** + * Set the element id prefix. + * @param elementIdPrefix + */ + public void setElementIdPrefix(String elementIdPrefix); + + /** + * Set the column id. + * @param columnId + */ + public void setColumnId(String columnId); + + public String getElementIdPrefix(); + + public String getColumnId(); +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CompositeCellWithElementId.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CompositeCellWithElementId.java new file mode 100644 index 0000000..fddea0a --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/CompositeCellWithElementId.java @@ -0,0 +1,41 @@ +package org.ovirt.engine.ui.common.widget.table.column; + +import java.util.List; + +import com.google.gwt.cell.client.CompositeCell; +import com.google.gwt.cell.client.HasCell; +import com.google.gwt.user.client.DOM; + +/** + * A composite cell that sets an ID when it renders. + * + * @param <C> + * Cell data type. + */ +public class CompositeCellWithElementId<C> extends CompositeCell<C> implements CellWithElementId<C> { + + public CompositeCellWithElementId(List<HasCell<C, ?>> hasCells) { + super(hasCells); + } + + // DOM element ID settings for text container element + private String elementIdPrefix = DOM.createUniqueId(); + private String columnId; + + 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/column/SortableColumnWithElementId.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SortableColumnWithElementId.java new file mode 100644 index 0000000..bb5152f --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/SortableColumnWithElementId.java @@ -0,0 +1,28 @@ +package org.ovirt.engine.ui.common.widget.table.column; + +/** + * A {@link SortableColumn} that implements ColumnWithElementId (has an id). + * + * @param <T> + * Table row data type. + * @param <C> + * Cell data type. + */ +public abstract class SortableColumnWithElementId<T, C> extends SortableColumn<T, C> implements ColumnWithElementId { + + public SortableColumnWithElementId(CellWithElementId<C> cell) { + super(cell); + } + + @Override + public CellWithElementId<C> getCell() { + return (CellWithElementId<C>) super.getCell(); + } + + @Override + public void configureElementId(String elementIdPrefix, String columnId) { + getCell().setElementIdPrefix(elementIdPrefix); + getCell().setColumnId(columnId); + } + +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StatusCompositeCell.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StatusCompositeCellWithElementId.java similarity index 75% rename from frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StatusCompositeCell.java rename to frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StatusCompositeCellWithElementId.java index 75698bd..ac37cd7 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StatusCompositeCell.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/StatusCompositeCellWithElementId.java @@ -1,17 +1,18 @@ package org.ovirt.engine.ui.common.widget.table.column; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.ui.common.utils.ElementIdUtils; + import com.google.gwt.cell.client.Cell; -import com.google.gwt.cell.client.CompositeCell; import com.google.gwt.cell.client.HasCell; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.CssResource; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import org.ovirt.engine.core.common.businessentities.VM; -import java.util.List; - -public class StatusCompositeCell extends CompositeCell<VM> { +public class StatusCompositeCellWithElementId extends CompositeCellWithElementId<VM> implements CellWithElementId<VM>{ public interface StatusCompositeCellResources extends ClientBundle { @ClientBundle.Source("org/ovirt/engine/ui/common/css/StatusCompositeCell.css") StatusCompositeCellCss statusCompositeCellCss(); @@ -25,7 +26,7 @@ private final StatusCompositeCellCss style; private final List<HasCell<VM, ?>> hasCells; - public StatusCompositeCell(List<HasCell<VM, ?>> hasCells) { + public StatusCompositeCellWithElementId(List<HasCell<VM, ?>> hasCells) { super(hasCells); this.hasCells = hasCells; style = RESOURCES.statusCompositeCellCss(); @@ -34,9 +35,15 @@ @Override public void render(Cell.Context context, VM value, SafeHtmlBuilder sb) { + sb.appendHtmlConstant("<div id=\""); //$NON-NLS-1$ + sb.appendEscaped(ElementIdUtils.createTableCellElementId(getElementIdPrefix(), getColumnId(), context)); + sb.appendHtmlConstant("\">"); //$NON-NLS-1$ + for (HasCell<VM, ?> hasCell : hasCells) { render(context, value, sb, hasCell); } + + sb.appendHtmlConstant("</div>"); //$NON-NLS-1$ } protected <T> void render(Cell.Context context, VM value, diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java index 43d0c42..0b9c71f 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java @@ -4,8 +4,6 @@ import java.util.Arrays; import java.util.List; -import com.google.gwt.cell.client.CompositeCell; -import com.google.gwt.cell.client.HasCell; import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; @@ -15,9 +13,10 @@ import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider; import org.ovirt.engine.ui.common.widget.action.ActionButtonDefinition; import org.ovirt.engine.ui.common.widget.action.CommandLocation; +import org.ovirt.engine.ui.common.widget.table.column.CellWithElementId; import org.ovirt.engine.ui.common.widget.table.column.EnumColumn; -import org.ovirt.engine.ui.common.widget.table.column.SortableColumn; -import org.ovirt.engine.ui.common.widget.table.column.StatusCompositeCell; +import org.ovirt.engine.ui.common.widget.table.column.SortableColumnWithElementId; +import org.ovirt.engine.ui.common.widget.table.column.StatusCompositeCellWithElementId; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.uicommonweb.ReportInit; import org.ovirt.engine.ui.uicommonweb.UICommand; @@ -42,6 +41,7 @@ import org.ovirt.engine.ui.webadmin.widget.table.column.VmStatusColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.VmTypeColumn; +import com.google.gwt.cell.client.HasCell; import com.google.gwt.core.client.GWT; import com.google.inject.Inject; @@ -199,12 +199,12 @@ ReasonColumn<VM> reasonColumn = new ReasonColumn<VM>(); - CompositeCell<VM> compositeCell = new StatusCompositeCell( + CellWithElementId<VM> compositeCell = new StatusCompositeCellWithElementId( new ArrayList<HasCell<VM, ?>>(Arrays.asList( statusColumn, reasonColumn))); - SortableColumn<VM, VM> statusTextColumn = new SortableColumn<VM, VM>(compositeCell) { + SortableColumnWithElementId<VM, VM> statusTextColumn = new SortableColumnWithElementId<VM, VM>(compositeCell) { @Override public VM getValue(VM object) { return object; -- To view, visit http://gerrit.ovirt.org/34280 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I97bb0a04d46e94efede5f46af35ebcee01a9dd70 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Greg Sheremeta <gsher...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches