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

Reply via email to