Greg Sheremeta has uploaded a new change for review.

Change subject: userportal, webadmin: convert all grid Headers to PatternFly 
tooltips
......................................................................

userportal, webadmin: convert all grid Headers to PatternFly tooltips

Converted all grid Headers from title-based tooltips to new PatternFly tooltips.
All grids now fully use the new tooltips, in both headers and rows.

Added infrastructure that simplifies adding a tooltip to any Header.
* Created a new SafeHtmlHeader object that encapsulates the Header text and 
tooltip.
  Most Headers are simple HTML and can use this directly. Simply pass the 
Header HTML
  and tooltip HTML to the constructor.
* Created a base class AbstractHeader that uses the template-method pattern. If 
you
  cannot use SafeHtmlHeader, implement AbstractHeader and override getTooltip() 
to
  provide the tooltip.

Change-Id: I33f5fbd37bdbdf7a60dee0b14bcd8dbc11ac5b24
Bug-Url: https://bugzilla.redhat.com/1067318
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
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/AbstractActionTable.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractCellWithElementId.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractImageResourceColumn.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/EnabledDisabledCheckboxCell.java
R 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/AbstractCheckboxHeader.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/AbstractHeader.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/ResizableHeader.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/ResizeableCheckboxHeader.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/SafeHtmlHeader.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/SelectAllCheckBoxHeader.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/TooltipHeader.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/uicommon/popup/AbstractVmPopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/template/TemplateInterfaceListModelTable.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/PoolInterfaceListModelTable.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmInterfaceListModelTable.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
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabClusterView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDataCenterView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabNetworkView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabPoolView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabStorageView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabTemplateView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVirtualMachineView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostInterfaceView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineNetworkInterfaceView.java
33 files changed, 408 insertions(+), 241 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/75/38175/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..f0de7f1 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
@@ -350,6 +350,7 @@
         return editorAdapter;
     }
 
+    // TODO this is a duplicate -- remove
     public void addEntityModelColumn(Column<EntityModel, ?> column, String 
headerString) {
         super.addColumn(column, headerString);
     }
@@ -377,11 +378,11 @@
      */
     @Override
     public void addColumn(Column column, String headerString, String width) {
-        addColumnAndSetWidth(column, headerString, width);
+        super.addColumnAndSetWidth(column, headerString, width);
     }
 
     public void addColumn(Column column, SafeHtml headerHtml, String width) {
-        addColumnAndSetWidth(column, headerHtml, width);
+        super.addColumnWithHtmlHeader(column, headerHtml, width);
     }
 
     public void addColumn(Column column, Header<?> header, String width) {
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..c1f0e55 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
@@ -167,7 +167,7 @@
     }
 
     public void addColumn(Column column, SafeHtml headerHtml, String width) {
-        addColumnAndSetWidth(column, headerHtml, width);
+        addColumnWithHtmlHeader(column, headerHtml, width);
     }
 
     public void addColumnAt(Column<T, ?> column, String headerText, String 
width, int position) {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/AbstractActionTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/AbstractActionTable.java
index a8c947d..951e0bd 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/AbstractActionTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/AbstractActionTable.java
@@ -12,6 +12,7 @@
 import org.ovirt.engine.ui.common.widget.action.AbstractActionPanel;
 import org.ovirt.engine.ui.common.widget.label.NoItemsLabel;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractColumn;
+import org.ovirt.engine.ui.common.widget.table.header.SafeHtmlHeader;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
 import org.ovirt.engine.ui.uicompat.IEventListener;
@@ -36,6 +37,7 @@
 import com.google.gwt.event.dom.client.ScrollHandler;
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.uibinder.client.UiHandler;
 import com.google.gwt.user.cellview.client.CellTable.Resources;
@@ -591,42 +593,34 @@
         tableHeader.setColumnWidth(column, width);
     }
 
-    /**
-     * Adds a new column, without specifying column width.
-     */
     public void addColumn(Column<T, ?> column, String headerText) {
         table.addColumn(column, headerText);
         tableHeader.addColumn(column, headerText);
     }
 
-    /**
-     * Adds a new column, setting the column width.
-     */
     public void addColumn(Column<T, ?> column, String headerText, String 
width) {
         addColumn(column, headerText);
         setColumnWidth(column, width);
     }
 
-    /**
-     * Adds a new column with HTML header text, without specifying column 
width.
-     * <p>
-     * {@code headerHtml} must honor the SafeHtml contract as specified in
-     * {@link 
com.google.gwt.safehtml.shared.SafeHtmlUtils#fromSafeConstant(String) 
SafeHtmlUtils.fromSafeConstant}.
-     */
-    public void addColumnWithHtmlHeader(Column<T, ?> column, String 
headerHtml) {
+    public void addColumnWithHtmlHeader(Column<T, ?> column, SafeHtml 
headerHtml) {
         table.addColumnWithHtmlHeader(column, headerHtml);
         tableHeader.addColumnWithHtmlHeader(column, headerHtml);
     }
 
-    /**
-     * Adds a new column with HTML header text, setting the column width.
-     * <p>
-     * {@code headerHtml} must honor the SafeHtml contract as specified in
-     * {@link 
com.google.gwt.safehtml.shared.SafeHtmlUtils#fromSafeConstant(String) 
SafeHtmlUtils.fromSafeConstant}.
-     */
-    public void addColumnWithHtmlHeader(Column<T, ?> column, String 
headerHtml, String width) {
+    public void addColumnWithHtmlHeader(Column<T, ?> column, SafeHtml 
headerHtml, String width) {
         table.addColumnWithHtmlHeader(column, headerHtml, width);
         tableHeader.addColumnWithHtmlHeader(column, headerHtml, width);
+    }
+
+    public void addColumn(Column<T, ?> column, SafeHtmlHeader header) {
+        table.addColumn(column, header);
+        tableHeader.addColumn(column, header);
+    }
+
+    public void addColumn(Column<T, ?> column, SafeHtmlHeader header, String 
width) {
+        addColumn(column, header);
+        setColumnWidth(column, width);
     }
 
     /**
@@ -656,6 +650,26 @@
     }
 
     /**
+     * Ensures that the given column is added (or removed), unless it's 
already present (or absent).
+     * <p>
+     * This method also sets the column width in case the column needs to be 
added.
+     */
+    public void ensureColumnPresent(Column<T, ?> column, SafeHtml headerHtml, 
boolean present, String width) {
+        table.ensureColumnPresent(column, headerHtml, present, width);
+        tableHeader.ensureColumnPresent(column, headerHtml, present, width);
+    }
+
+    /**
+     * Ensures that the given column is added (or removed), unless it's 
already present (or absent).
+     * <p>
+     * This method also sets the column width in case the column needs to be 
added.
+     */
+    public void ensureColumnPresent(Column<T, ?> column, SafeHtmlHeader 
header, boolean present, String width) {
+        table.ensureColumnPresent(column, header, present, width);
+        tableHeader.ensureColumnPresent(column, header, present, width);
+    }
+
+    /**
      * Allows table columns to be resized by dragging their right-hand border 
using mouse.
      * <p>
      * This method should be called before calling any {@code addColumn} 
methods.
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
index 1460fcf..6f2b456 100644
--- 
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
@@ -6,6 +6,7 @@
 import com.google.gwt.user.client.DOM;
 
 /**
+ * TODO delete this -- AbstractTooltipCell already does this
  * A cell that sets an ID when it renders. Convenience implementation of 
CellWithElementId.
  *
  * @param <C>
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractImageResourceColumn.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractImageResourceColumn.java
index 9a024ff..721f726 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractImageResourceColumn.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/AbstractImageResourceColumn.java
@@ -6,6 +6,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.ui.AbstractImagePrototype;
 
@@ -38,14 +39,13 @@
         return null;
     }
 
-    public String getHeaderHtml() {
+    public SafeHtml getHeaderHtml() {
         if (getDefaultImage() == null) {
-            return CONSTANTS.empty();
+            return SafeHtmlUtils.fromSafeConstant(CONSTANTS.empty());
         }
 
-        // TODO tt (in follow-up header patch) users of 
AbstractImageResourceColumn will have to set the Header Tooltip
         return TEMPLATES.headerImage(SafeHtmlUtils.fromTrustedString(
-                
AbstractImagePrototype.create(getDefaultImage()).getHTML())).asString();
+                AbstractImagePrototype.create(getDefaultImage()).getHTML()));
     }
 
     protected CommonApplicationResources getCommonResources() {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/EnabledDisabledCheckboxCell.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/EnabledDisabledCheckboxCell.java
index 86cb3c6..39b4d9e 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/EnabledDisabledCheckboxCell.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/EnabledDisabledCheckboxCell.java
@@ -23,13 +23,17 @@
 /**
  * A Cell that renders a checkbox. Supports tooltips. Supports rendering 
Element ids via the oVirt Element-ID framework.
  */
-class EnabledDisabledCheckboxCell extends CheckboxCell implements 
EventHandlingCell, CellWithElementId<Boolean>, TooltipCell<Boolean> {
+public class EnabledDisabledCheckboxCell extends CheckboxCell implements 
EventHandlingCell, CellWithElementId<Boolean>, TooltipCell<Boolean> {
 
     private String elementIdPrefix = DOM.createUniqueId(); // default
     private String columnId;
 
     public EnabledDisabledCheckboxCell() {
         super(true, false);
+    }
+
+    public EnabledDisabledCheckboxCell(boolean dependsOnSelection, boolean 
handlesSelection) {
+        super(dependsOnSelection, handlesSelection);
     }
 
     @Override
@@ -46,6 +50,8 @@
     public Set<String> getConsumedEvents() {
         Set<String> set = new HashSet<String>();
         TooltipMixin.addTooltipsEvents(set);
+        set.add(BrowserEvents.CHANGE);
+        set.add(BrowserEvents.KEYDOWN);
         return set;
     }
 
@@ -56,8 +62,6 @@
      */
     public void onBrowserEvent(Context context, Element parent, Boolean value,
             SafeHtml tooltipContent, NativeEvent event, ValueUpdater<Boolean> 
valueUpdater) {
-
-        // TODO tt what about checkbox events?
 
         // if the Column did not provide a tooltip, give the Cell a chance to 
render one using the cell value C
         if (tooltipContent == null) {
@@ -75,6 +79,9 @@
         if (BrowserEvents.MOUSEDOWN.equals(event.getType())) {
             TooltipMixin.hideAllTooltips();
         }
+
+        // let CheckboxCell handle its events
+        super.onBrowserEvent(context, parent, value, event, valueUpdater);
     }
 
     /**
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/AbstractCheckboxHeader.java
similarity index 72%
rename from 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/CheckboxHeader.java
rename to 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/AbstractCheckboxHeader.java
index 3673642..ca7b40a 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/AbstractCheckboxHeader.java
@@ -1,14 +1,14 @@
 package org.ovirt.engine.ui.common.widget.table.header;
 
+import 
org.ovirt.engine.ui.common.widget.table.column.EnabledDisabledCheckboxCell;
+
 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;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
-import com.google.gwt.user.cellview.client.Header;
 
-public abstract class CheckboxHeader extends Header<Boolean> {
+public abstract class AbstractCheckboxHeader extends AbstractHeader<Boolean> {
 
     private static final SafeHtml INPUT_CHECKED_DISABLED = 
SafeHtmlUtils.fromSafeConstant(
             "<input type=\"checkbox\" disabled=\"\" tabindex=\"-1\" 
tabindex=\"-1\" checked/>"); //$NON-NLS-1$
@@ -16,18 +16,11 @@
     private static final SafeHtml INPUT_UNCHECKED_DISABLED = 
SafeHtmlUtils.fromSafeConstant(
             "<input type=\"checkbox\" disabled=\"\" tabindex=\"-1\"/>"); 
//$NON-NLS-1$
 
-    private final SafeHtml title;
-
-    public SafeHtml getTitle() {
-        return title;
-    }
-
-    public CheckboxHeader(final SafeHtml title) {
-        super(new CheckboxCell(true, false) {
+    public AbstractCheckboxHeader() {
+        super(new EnabledDisabledCheckboxCell(true, false) {
             @Override
-            public void render(Context context, Boolean value, SafeHtmlBuilder 
sb) {
-                super.render(context, value, sb);
-                sb.append(title);
+            public void render(Context context, Boolean value, SafeHtmlBuilder 
sb, String id) {
+                super.render(context, value, sb, id);
             }
         });
 
@@ -37,8 +30,6 @@
                 selectionChanged(value);
             }
         });
-
-        this.title = title;
     }
 
     @Override
@@ -46,10 +37,8 @@
         if (!isEnabled()) {
             if (getValue()) {
                 sb.append(INPUT_CHECKED_DISABLED);
-                sb.append(title);
             } else {
                 sb.append(INPUT_UNCHECKED_DISABLED);
-                sb.append(title);
             }
         } else {
             super.render(context, sb);
@@ -60,4 +49,7 @@
 
     abstract public boolean isEnabled();
 
+    @Override
+    public abstract SafeHtml getTooltip();
+
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/AbstractHeader.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/AbstractHeader.java
new file mode 100644
index 0000000..30fb805
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/AbstractHeader.java
@@ -0,0 +1,48 @@
+package org.ovirt.engine.ui.common.widget.table.header;
+
+import org.ovirt.engine.ui.common.widget.table.cell.TooltipCell;
+import org.ovirt.engine.ui.common.widget.table.column.ColumnWithElementId;
+
+import com.google.gwt.cell.client.ValueUpdater;
+import com.google.gwt.cell.client.Cell.Context;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.user.cellview.client.Header;
+
+/**
+ * A {@link Header}. Supports tooltips. Supports element-id framework.
+ * <em>All oVirt table headers should extend this.</em>
+ *
+ * @param <H> Cell data type.
+ */
+public abstract class AbstractHeader<H> extends Header<H> implements 
ColumnWithElementId, TooltipHeader {
+
+    ValueUpdater<H> updater = null;
+
+    public AbstractHeader(TooltipCell<H> cell) {
+        super(cell);
+    }
+
+    public TooltipCell<H> getCell() {
+        return (TooltipCell<H>) super.getCell();
+    }
+
+    /**
+     * This is copied from GWT's Header, but we also inject the tooltip 
content into the cell.
+     * TODO-GWT: make sure that this method is in sync with 
Header::onBroswerEvent.
+     */
+    public void onBrowserEvent(Context context, Element elem, NativeEvent 
event) {
+        getCell().onBrowserEvent(context, elem, getValue(), getTooltip(), 
event, updater);
+    }
+
+    @Override
+    public void configureElementId(String elementIdPrefix, String columnId) {
+        getCell().setElementIdPrefix(elementIdPrefix);
+        getCell().setColumnId(columnId);
+    }
+
+    public void setUpdater(ValueUpdater<H> updater) {
+        this.updater = updater;
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/ResizableHeader.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/ResizableHeader.java
index ad74240..34ef1f0 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/ResizableHeader.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/ResizableHeader.java
@@ -7,7 +7,6 @@
 import org.ovirt.engine.ui.common.widget.table.resize.ColumnResizeHandler;
 import org.ovirt.engine.ui.common.widget.table.resize.HasResizableColumns;
 
-import com.google.gwt.cell.client.Cell;
 import com.google.gwt.cell.client.Cell.Context;
 import com.google.gwt.core.shared.GWT;
 import com.google.gwt.dom.client.BrowserEvents;
@@ -20,17 +19,15 @@
 import com.google.gwt.safehtml.client.SafeHtmlTemplates;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.user.cellview.client.Column;
-import com.google.gwt.user.cellview.client.Header;
 
 /**
- * A {@link Header} that allows the user to resize the associated column by 
dragging its right-hand border using mouse.
- * <p>
- * This header has its value rendered through safe HTML markup.
+ * A Header that allows the user to resize the associated column by dragging 
its right-hand
+ * border using mouse. Renders SafeHtml. Supports tooltips.
  *
  * @param <T>
  *            Table row data type.
  */
-public class ResizableHeader<T> extends Header<SafeHtml> {
+public class ResizableHeader<T> extends SafeHtmlHeader {
 
     /**
      * The template interface that defines the wrapper around the content. 
This is so we can
@@ -87,10 +84,6 @@
     public static final int RESIZE_BAR_WIDTH = 7;
 
     /**
-     * The content text.
-     */
-    private final SafeHtml text;
-    /**
      * The resize-able column.
      */
     private final Column<T, ?> column;
@@ -107,12 +100,13 @@
 
     /**
      * Constructor.
-     * @param text The contents of the header.
+     * @param safeHtmlHeader The header.
      * @param column The column associated with the header.
+     * @param applyStyle Whether to apply default styling.
      * @param table The table containing the header/column.
      */
-    public ResizableHeader(SafeHtml text, Column<T, ?> column, 
HasResizableColumns<T> table, boolean applyStyle) {
-        this(text, column, table,
+    public ResizableHeader(SafeHtmlHeader safeHtmlHeader, Column<T, ?> column, 
HasResizableColumns<T> table, boolean applyStyle) {
+        this(safeHtmlHeader, column, table,
                 new SafeHtmlCell() {
                     @Override
                     public Set<String> getConsumedEvents() {
@@ -126,30 +120,19 @@
 
     /**
      * Constructor.
-     * @param text The contents of the header.
+     * @param safeHtmlHeader The header.
      * @param column The column associated with the header.
      * @param table The table containing the header/column.
-     * @param cell The cell that defines the header cell.
-     */
-    public ResizableHeader(SafeHtml text, Column<T, ?> column, 
HasResizableColumns<T> table,
-            Cell<SafeHtml> cell) {
-        this(text, column, table, cell, true);
-    }
-
-    /**
-     * Constructor.
-     * @param text The contents of the header.
-     * @param column The column associated with the header.
-     * @param table The table containing the header/column.
-     * @param cell The cell that defines the header cell.
+     * @param cell cell that renders the header
      * @param applyStyle Whether to apply default styling.
      */
-    public ResizableHeader(SafeHtml text, Column<T, ?> column, 
HasResizableColumns<T> table,
-            Cell<SafeHtml> cell, boolean applyStyle) {
+    public ResizableHeader(SafeHtmlHeader safeHtmlHeader, Column<T, ?> column, 
HasResizableColumns<T> table,
+            SafeHtmlCell cell, boolean applyStyle) {
         super(cell);
         style = RESOURCES.resizableHeaderCss();
         style.ensureInjected();
-        this.text = text;
+        setValue(safeHtmlHeader.getValue());
+        setTooltip(safeHtmlHeader.getTooltip());
         this.column = column;
         this.table = table;
         this.applyStyle = applyStyle;
@@ -157,7 +140,7 @@
 
     @Override
     public SafeHtml getValue() {
-        return applyStyle ? 
TEMPLATE.templatedContent(style.cellTableHeaderContent(), text) : text;
+        return applyStyle ? 
TEMPLATE.templatedContent(style.cellTableHeaderContent(), super.getValue()) : 
super.getValue();
     }
 
     @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
index 83d93bc..275ed8a 100644
--- 
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
@@ -11,15 +11,17 @@
 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.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.cellview.client.Column;
 
 public class ResizeableCheckboxHeader<T> extends ResizableHeader<T> {
 
-    private final CheckboxHeader checkboxHeaderDelegate;
+    private final AbstractCheckboxHeader checkboxHeaderDelegate;
 
-    public ResizeableCheckboxHeader(CheckboxHeader checkboxHeader,
+    public ResizeableCheckboxHeader(AbstractCheckboxHeader checkboxHeader,
             Column<T, ?> column, HasResizableColumns<T> table) {
-        super(checkboxHeader.getTitle(), column, table,
+        super(new SafeHtmlHeader(SafeHtmlUtils.fromSafeConstant(""), 
checkboxHeader.getTooltip()), //$NON-NLS-1$
+                column, table,
                 new SafeHtmlCell() {
                     @Override
                     public Set<String> getConsumedEvents() {
@@ -30,7 +32,7 @@
                         set.addAll(super.getConsumedEvents());
                         return set;
                     }
-                });
+                }, true);
         this.checkboxHeaderDelegate = checkboxHeader;
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/SafeHtmlHeader.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/SafeHtmlHeader.java
new file mode 100644
index 0000000..d6c7708
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/SafeHtmlHeader.java
@@ -0,0 +1,64 @@
+package org.ovirt.engine.ui.common.widget.table.header;
+
+import org.ovirt.engine.ui.common.widget.table.cell.SafeHtmlCell;
+import org.ovirt.engine.ui.common.widget.table.column.ColumnWithElementId;
+
+import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
+
+/**
+ * A Header that renders SafeHtml. Supports tooltips. Supports element-id 
framework.
+ *
+ * @param <H> Cell data type.
+ */
+public class SafeHtmlHeader extends AbstractHeader<SafeHtml> implements 
ColumnWithElementId, TooltipHeader {
+
+    private SafeHtml headerText;
+    private SafeHtml tooltipText;
+
+    public static final SafeHtmlHeader BLANK_HEADER = new 
SafeHtmlHeader(SafeHtmlUtils.fromSafeConstant("")); //$NON-NLS-1$
+
+    public SafeHtmlHeader(SafeHtmlCell cell) {
+        super(cell);
+    }
+
+    public SafeHtmlHeader(SafeHtml headerText) {
+        super(new SafeHtmlCell());
+        this.headerText = headerText;
+    }
+
+    public SafeHtmlHeader(SafeHtml headerText, SafeHtml tooltipText) {
+        super(new SafeHtmlCell());
+        this.headerText = headerText;
+        this.tooltipText = tooltipText;
+    }
+
+    public static SafeHtmlHeader fromSafeConstant(String headerText) {
+        return new SafeHtmlHeader(SafeHtmlUtils.fromSafeConstant(headerText));
+    }
+
+    public SafeHtmlCell getCell() {
+        return (SafeHtmlCell) super.getCell();
+    }
+
+    @Override
+    public SafeHtml getTooltip() {
+        return tooltipText;
+    }
+
+    @Override
+    public SafeHtml getValue() {
+        return headerText;
+    }
+
+    protected void setValue(SafeHtml headerText) {
+        this.headerText = headerText;
+    }
+
+    protected void setTooltip(SafeHtml tooltipText) {
+        this.tooltipText = tooltipText;
+    }
+
+
+
+}
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..c175923 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
@@ -9,6 +9,13 @@
 import com.google.gwt.user.cellview.client.Header;
 import com.google.gwt.view.client.SelectionModel;
 
+/**
+ * SelectAllCheckboxHeader. Does not support tooltips.
+ *
+ * TODO rename to AbstractSelectAllCheckBoxHeader
+ *
+ * @param <T>
+ */
 public abstract class SelectAllCheckBoxHeader<T> extends Header<Boolean> {
 
     public SelectAllCheckBoxHeader() {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/TooltipHeader.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/TooltipHeader.java
new file mode 100644
index 0000000..f1b2cca
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/header/TooltipHeader.java
@@ -0,0 +1,20 @@
+package org.ovirt.engine.ui.common.widget.table.header;
+
+import com.google.gwt.safehtml.shared.SafeHtml;
+
+public interface TooltipHeader {
+
+    /**
+     * <p>
+     * Implement this to return tooltip content for a header. Since it's a 
table header,
+     * you'll likely use a constant.
+     * </p>
+     * <p>
+     * The tooltip cell will then use this value when rendering the header.
+     * </p>
+     *
+     * @param object
+     * @return tooltip content
+     */
+    public SafeHtml getTooltip();
+}
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 a6dea6d..b4753f9 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
@@ -8,11 +8,11 @@
 
 import org.ovirt.engine.ui.common.CommonApplicationTemplates;
 import org.ovirt.engine.ui.common.system.ClientStorage;
-import org.ovirt.engine.ui.common.widget.table.cell.SafeHtmlCell;
 import org.ovirt.engine.ui.common.widget.table.column.EmptyColumn;
-import org.ovirt.engine.ui.common.widget.table.header.CheckboxHeader;
+import org.ovirt.engine.ui.common.widget.table.header.AbstractCheckboxHeader;
 import org.ovirt.engine.ui.common.widget.table.header.ResizableHeader;
 import org.ovirt.engine.ui.common.widget.table.header.ResizeableCheckboxHeader;
+import org.ovirt.engine.ui.common.widget.table.header.SafeHtmlHeader;
 import org.ovirt.engine.ui.uicommonweb.models.GridController;
 
 import com.google.gwt.core.shared.GWT;
@@ -56,7 +56,7 @@
 
     private boolean columnResizingEnabled = false;
     private boolean columnResizePersistenceEnabled = false;
-    private boolean applyResizableHeaderStyle = true;
+    private boolean applyHeaderStyle = true;
 
     // used to store column width preferences
     private ClientStorage clientStorage;
@@ -98,16 +98,29 @@
         super(keyProvider);
     }
 
-    /**
-     * {@inheritDoc}
-     * <p>
-     * When calling this method, consider using a header that supports 
displaying tooltip in case the header content
-     * doesn't fit the header element.
-     */
     @Override
     public void addColumn(Column<T, ?> column, Header<?> header) {
-        super.addColumn(column, wrapHeader(header, column));
 
+        // build resizable headers, if necessary
+        if (columnResizingEnabled && header instanceof AbstractCheckboxHeader) 
{
+            header = createResizableCheckboxHeader(header, column);
+        }
+        else if (columnResizingEnabled) {
+            header = createResizableHeader(column, header);
+        }
+        else if (applyHeaderStyle && header instanceof SafeHtmlHeader) {
+            SafeHtmlHeader safeHtmlHeader = (SafeHtmlHeader) header;
+            // not using Resizeable header, but still want it to look that way.
+            // nonResizeableColumnHeader does that.
+            // TODO nonResizeableColumnHeader copy-pastes CSS. fix.
+            SafeHtml newValue = 
templates.nonResizeableColumnHeader(safeHtmlHeader.getValue());
+            header = new SafeHtmlHeader(newValue, safeHtmlHeader.getTooltip());
+        }
+
+        // actually add the column
+        super.addColumn(column, header);
+
+        // add emptyNoWidthColumn if necessary
         if (columnResizingEnabled) {
             if (emptyNoWidthColumn != null) {
                 removeColumn(emptyNoWidthColumn);
@@ -115,84 +128,42 @@
 
             // Add empty, no-width column as the last column
             emptyNoWidthColumn = new EmptyColumn<T>();
-            addColumn(emptyNoWidthColumn);
+            super.addColumn(emptyNoWidthColumn);
         }
     }
 
-    /**
-     * Adds a new column, without specifying column width.
-     */
-    @Override
+    public void addColumnAndSetWidth(Column<T, ?> column, Header<?> header, 
String width) {
+        addColumn(column, header);
+        setColumnWidth(column, width);
+    }
+
     public void addColumn(Column<T, ?> column, String headerText) {
-        addColumn(column, createHeader(column, headerText, false));
+        Header<?> header = new 
SafeHtmlHeader(SafeHtmlUtils.fromString(headerText));
+        addColumn(column, header);
     }
 
-    /**
-     * Adds a new column with SafeHtml header text, without specifying column 
width.
-     */
-    @Override
-    public void addColumn(Column<T, ?> column, SafeHtml headerHtml) {
-        addColumn(column, createHeader(column, headerHtml));
-    }
-
-    /**
-     * Adds a new column, setting the column width.
-     */
     public void addColumnAndSetWidth(Column<T, ?> column, String headerText, 
String width) {
         addColumn(column, headerText);
         setColumnWidth(column, width);
     }
 
-    /**
-     * Adds a new column with SafeHtml header text, setting the column width.
-     */
-    public void addColumnAndSetWidth(Column<T, ?> column, SafeHtml headerHtml, 
String width) {
-        addColumn(column, headerHtml);
+    public void addColumnWithHtmlHeader(Column<T, ?> column, SafeHtml 
headerHtml) {
+        Header<?> header = new SafeHtmlHeader(headerHtml);
+        addColumn(column, header);
+    }
+
+    public void addColumnWithHtmlHeader(Column<T, ?> column, SafeHtml 
headerHtml, String width) {
+        Header<?> header = new SafeHtmlHeader(headerHtml);
+        addColumn(column, header);
         setColumnWidth(column, width);
     }
 
-    /**
-     * Adds a new column with HTML header text, without specifying column 
width.
-     * <p>
-     * {@code headerHtml} must honor the SafeHtml contract as specified in
-     * {@link 
com.google.gwt.safehtml.shared.SafeHtmlUtils#fromSafeConstant(String) 
SafeHtmlUtils.fromSafeConstant}.
-     */
-    public void addColumnWithHtmlHeader(Column<T, ?> column, String 
headerHtml) {
-        addColumn(column, createHeader(column, headerHtml, true));
-    }
-
-    /**
-     * Adds a new column with HTML header text, setting the column width.
-     * <p>
-     * {@code headerHtml} must honor the SafeHtml contract as specified in
-     * {@link 
com.google.gwt.safehtml.shared.SafeHtmlUtils#fromSafeConstant(String) 
SafeHtmlUtils.fromSafeConstant}.
-     */
-    public void addColumnWithHtmlHeader(Column<T, ?> column, String 
headerHtml, String width) {
-        addColumnWithHtmlHeader(column, headerHtml);
-        setColumnWidth(column, width);
-    }
-
-    Header<?> createHeader(Column<T, ?> column, String headerTextOrHtml, 
boolean allowHtml) {
-        SafeHtml headerHtml = allowHtml ? 
SafeHtmlUtils.fromSafeConstant(headerTextOrHtml)
-                : SafeHtmlUtils.fromString(headerTextOrHtml);
-        return createHeader(column, headerHtml);
-    }
-
-    Header<?> createHeader(Column<T, ?> column, SafeHtml headerHtml) {
-        return columnResizingEnabled ? new ResizableHeader<T>(headerHtml, 
column, this, applyResizableHeaderStyle)
-                : createSafeHtmlHeader(headerHtml);
-    }
-
-    Header<?> createSafeHtmlHeader(final SafeHtml text) {
-        return new Header<SafeHtml>(new SafeHtmlCell()) {
-            @Override
-            public SafeHtml getValue() {
-                if (text != null && applyResizableHeaderStyle) {
-                    return templates.nonResizeableColumnHeader(text);
-                }
-                return text;
-            }
-        };
+    protected Header<?> createResizableHeader(Column<T, ?> column, Header<?> 
header) {
+        if (header instanceof SafeHtmlHeader) {
+            SafeHtmlHeader safeHtmlHeader = (SafeHtmlHeader) header;
+            return new ResizableHeader<T>(safeHtmlHeader, column, this, 
applyHeaderStyle);
+        }
+        return header;
     }
 
     /**
@@ -200,9 +171,11 @@
      * <p>
      * This method is called whenever a column is added to the table.
      */
-    Header<?> wrapHeader(Header<?> header, Column<T, ?> column) {
-        return (columnResizingEnabled && header instanceof CheckboxHeader)
-                ? new ResizeableCheckboxHeader<T>((CheckboxHeader) header, 
column, this) : header;
+    protected Header<?> createResizableCheckboxHeader(Header<?> header, 
Column<T, ?> column) {
+        if (header instanceof AbstractCheckboxHeader) {
+            return new ResizeableCheckboxHeader<T>((AbstractCheckboxHeader) 
header, column, this);
+        }
+        return header;
     }
 
     /**
@@ -214,22 +187,36 @@
 
     /**
      * Ensures that the given column is added (or removed), unless it's 
already present (or absent).
+     */
+    public void ensureColumnPresent(Column<T, ?> column, String headerText, 
boolean present, String width) {
+        ensureColumnPresent(column, new 
SafeHtmlHeader(SafeHtmlUtils.fromString(headerText)), present, null);
+    }
+
+    /**
+     * Ensures that the given column is added (or removed), unless it's 
already present (or absent).
+     */
+    public void ensureColumnPresent(Column<T, ?> column, SafeHtml headerHtml, 
boolean present, String width) {
+        ensureColumnPresent(column, new SafeHtmlHeader(headerHtml), present, 
null);
+    }
+
+    /**
+     * Ensures that the given column is added (or removed), unless it's 
already present (or absent).
      * <p>
      * This method also sets the column width in case the column needs to be 
added.
      * @param column The column to ensure is there.
-     * @param headerText The header text associated with the column.
+     * @param header The header
      * @param present If true make sure the column is there, if false make 
sure it is not.
      * @param width The width of the column.
      */
-    public void ensureColumnPresent(Column<T, ?> column, String headerText, 
boolean present, String width) {
+    public void ensureColumnPresent(Column<T, ?> column, SafeHtmlHeader 
header, boolean present, String width) {
         Integer index = getColumnIndex(column);
         boolean columnPresent = index != -1;
         if (!columnPresent) {
             // Add the column
             if (width == null) {
-                addColumnWithHtmlHeader(column, headerText);
+                addColumn(column, header);
             } else {
-                addColumnWithHtmlHeader(column, headerText, width);
+                addColumnAndSetWidth(column, header, width);
             }
             index = getColumnIndex(column);
         }
@@ -365,7 +352,7 @@
     }
 
     protected void dontApplyResizableHeaderStyle() {
-        applyResizableHeaderStyle = false;
+        applyHeaderStyle = false;
     }
 
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
index de0a778..7ea440c 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
@@ -974,7 +974,7 @@
 
         generateIds();
 
-        priorityEditor.addEntityModelColumn(new 
AbstractTextColumn<EntityModel>() {
+        priorityEditor.addColumn(new AbstractTextColumn<EntityModel>() {
             @Override
             public String getValue(EntityModel model) {
                 return model.getTitle();
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/template/TemplateInterfaceListModelTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/template/TemplateInterfaceListModelTable.java
index c797a78b..752b903 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/template/TemplateInterfaceListModelTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/template/TemplateInterfaceListModelTable.java
@@ -60,7 +60,7 @@
             }
         };
 
-        getTable().addColumnWithHtmlHeader(pluggedColumn, constants.plugged(), 
"90px"); //$NON-NLS-1$
+        getTable().addColumn(pluggedColumn, constants.plugged(), "90px"); 
//$NON-NLS-1$
 
         AbstractTextColumn<VmNetworkInterface> networkNameColumn = new 
AbstractTextColumn<VmNetworkInterface>() {
             @Override
@@ -102,7 +102,7 @@
                     }
                 };
 
-        getTable().addColumnWithHtmlHeader(linkStateColumn, 
constants.linkStateNetworkInterface(), "90px"); //$NON-NLS-1$
+        getTable().addColumn(linkStateColumn, 
constants.linkStateNetworkInterface(), "90px"); //$NON-NLS-1$
 
         AbstractTextColumn<VmNetworkInterface> typeColumn = new 
AbstractEnumColumn<VmNetworkInterface, VmInterfaceType>() {
             @Override
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/PoolInterfaceListModelTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/PoolInterfaceListModelTable.java
index e228c88..5bfd0ce 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/PoolInterfaceListModelTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/PoolInterfaceListModelTable.java
@@ -64,7 +64,7 @@
             }
         };
 
-        getTable().addColumnWithHtmlHeader(pluggedColumn, constants.plugged(), 
"60px"); //$NON-NLS-1$
+        getTable().addColumn(pluggedColumn, constants.plugged(), "60px"); 
//$NON-NLS-1$
 
         AbstractTextColumn<VmNetworkInterface> networkNameColumn = new 
AbstractTextColumn<VmNetworkInterface>() {
             @Override
@@ -107,7 +107,7 @@
                     }
                 };
 
-        getTable().addColumnWithHtmlHeader(linkStateColumn, 
constants.linkStateNetworkInterface(), "65px"); //$NON-NLS-1$
+        getTable().addColumn(linkStateColumn, 
constants.linkStateNetworkInterface(), "65px"); //$NON-NLS-1$
 
         AbstractTextColumn<VmNetworkInterface> typeColumn = new 
AbstractEnumColumn<VmNetworkInterface, VmInterfaceType>() {
             @Override
@@ -150,8 +150,7 @@
                 return null;
             }
         };
-        getTable().addColumnWithHtmlHeader(speedColumn,
-                templates.sub(constants.speedInterface(), 
constants.mbps()).asString());
+        getTable().addColumnWithHtmlHeader(speedColumn, 
templates.sub(constants.speedInterface(), constants.mbps()));
 
         AbstractTextColumn<VmNetworkInterface> rxColumn = new 
AbstractRxTxRateColumn<VmNetworkInterface>() {
             @Override
@@ -173,8 +172,7 @@
                 return null;
             }
         };
-        getTable().addColumnWithHtmlHeader(rxColumn,
-                templates.sub(constants.rxRate(), 
constants.mbps()).asString());
+        getTable().addColumnWithHtmlHeader(rxColumn, 
templates.sub(constants.rxRate(), constants.mbps()));
 
         AbstractTextColumn<VmNetworkInterface> txColumn = new 
AbstractRxTxRateColumn<VmNetworkInterface>() {
             @Override
@@ -196,8 +194,7 @@
                 return null;
             }
         };
-        getTable().addColumnWithHtmlHeader(txColumn,
-                templates.sub(constants.txRate(), 
constants.mbps()).asString());
+        getTable().addColumnWithHtmlHeader(txColumn, 
templates.sub(constants.txRate(), constants.mbps()));
 
         AbstractTextColumn<VmNetworkInterface> dropsColumn = new 
AbstractSumUpColumn<VmNetworkInterface>() {
             @Override
@@ -212,8 +209,7 @@
                 return null;
             }
         };
-        getTable().addColumnWithHtmlHeader(dropsColumn,
-                templates.sub(constants.dropsInterface(), 
constants.pkts()).asString(), null);
+        getTable().addColumnWithHtmlHeader(dropsColumn, 
templates.sub(constants.dropsInterface(), constants.pkts()));
     }
 
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmInterfaceListModelTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmInterfaceListModelTable.java
index 1e12416..b990d04 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmInterfaceListModelTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmInterfaceListModelTable.java
@@ -110,7 +110,7 @@
             }
         };
         pluggedColumn.makeSortable();
-        getTable().addColumnWithHtmlHeader(pluggedColumn, constants.plugged(), 
"60px"); //$NON-NLS-1$
+        getTable().addColumn(pluggedColumn, constants.plugged(), "60px"); 
//$NON-NLS-1$
 
         AbstractTextColumn<VmNetworkInterface> networkNameColumn = new 
AbstractTextColumn<VmNetworkInterface>() {
             @Override
@@ -168,7 +168,7 @@
                     }
                 };
         linkStateColumn.makeSortable();
-        getTable().addColumnWithHtmlHeader(linkStateColumn, 
constants.linkStateNetworkInterface(), "65px"); //$NON-NLS-1$
+        getTable().addColumn(linkStateColumn, 
constants.linkStateNetworkInterface(), "65px"); //$NON-NLS-1$
 
         AbstractTextColumn<VmNetworkInterface> typeColumn = new 
AbstractEnumColumn<VmNetworkInterface, VmInterfaceType>() {
             @Override
@@ -214,7 +214,7 @@
             }
         };
         speedColumn.makeSortable();
-        getTable().addColumnWithHtmlHeader(speedColumn,
+        getTable().addColumn(speedColumn,
                 templates.sub(constants.speedInterface(), 
constants.mbps()).asString(), "150px"); //$NON-NLS-1$
 
         getTable().addActionButton(new 
UiCommandButtonDefinition<VmNetworkInterface>(getEventBus(),
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 e0bcf33..a805a23 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
@@ -23,7 +23,7 @@
 import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractCheckboxColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
-import org.ovirt.engine.ui.common.widget.table.header.CheckboxHeader;
+import org.ovirt.engine.ui.common.widget.table.header.AbstractCheckboxHeader;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.TabName;
 import org.ovirt.engine.ui.uicommonweb.models.datacenters.NetworkClusterModel;
@@ -296,7 +296,7 @@
     }
 
     void initEntityModelCellTable(final ApplicationConstants constants, final 
ApplicationTemplates templates) {
-        CheckboxHeader assignAllHeader = new 
CheckboxHeader(templates.textForCheckBoxHeader(constants.attachAll())) {
+        AbstractCheckboxHeader assignAllHeader = new AbstractCheckboxHeader() {
             @Override
             protected void selectionChanged(Boolean value) {
                 for (NetworkClusterModel networkClusterModel : 
getClustersTableItems()) {
@@ -326,8 +326,13 @@
                 }
                 return false;
             }
+
+            @Override
+            public SafeHtml getTooltip() {
+                return templates.textForCheckBoxHeader(constants.attachAll());
+            }
         };
-        CheckboxHeader requiredAllHeader = new 
CheckboxHeader(templates.textForCheckBoxHeader(constants.requiredAll())) {
+        AbstractCheckboxHeader requiredAllHeader = new 
AbstractCheckboxHeader() {
             @Override
             protected void selectionChanged(Boolean value) {
                 for (NetworkClusterModel networkClusterModel : 
getClustersTableItems()) {
@@ -350,6 +355,11 @@
             public boolean isEnabled() {
                 return isRequiredChangeable();
             }
+
+            @Override
+            public SafeHtml getTooltip() {
+                return 
templates.textForCheckBoxHeader(constants.requiredAll());
+            }
         };
 
         clustersTable.addColumn(new AbstractTextColumn<NetworkClusterModel>() {
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 0a4a667..70c9efa 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
@@ -3,6 +3,24 @@
 import java.util.ArrayList;
 import java.util.Collections;
 
+import org.ovirt.engine.core.common.queries.ConfigurationValues;
+import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView;
+import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
+import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
+import 
org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable.SelectionMode;
+import org.ovirt.engine.ui.common.widget.table.column.AbstractCheckboxColumn;
+import org.ovirt.engine.ui.common.widget.table.column.AbstractSafeHtmlColumn;
+import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
+import org.ovirt.engine.ui.common.widget.table.header.AbstractCheckboxHeader;
+import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
+import 
org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkManageModel;
+import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+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.NetworkRoleColumnHelper;
+
 import com.google.gwt.cell.client.Cell.Context;
 import com.google.gwt.cell.client.FieldUpdater;
 import com.google.gwt.core.client.GWT;
@@ -14,23 +32,6 @@
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.ui.AbstractImagePrototype;
 import com.google.inject.Inject;
-import org.ovirt.engine.core.common.queries.ConfigurationValues;
-import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView;
-import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
-import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
-import 
org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable.SelectionMode;
-import org.ovirt.engine.ui.common.widget.table.column.AbstractCheckboxColumn;
-import org.ovirt.engine.ui.common.widget.table.column.AbstractSafeHtmlColumn;
-import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
-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.clusters.ClusterNetworkManageModel;
-import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkModel;
-import org.ovirt.engine.ui.webadmin.ApplicationConstants;
-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.NetworkRoleColumnHelper;
 
 public class ClusterManageNetworkPopupView extends 
AbstractModelBoundPopupView<ClusterNetworkManageModel>
         implements ClusterManageNetworkPopupPresenterWidget.ViewDef {
@@ -80,11 +81,11 @@
 
         networks.addColumn(
                 new AttachedIndicatorCheckboxColumn(new 
AttachedIndicatorFieldUpdater()),
-                new 
AttachedIndicatorCheckboxHeader(templates.textForCheckBoxHeader(constants.assignAll())),
 "90px"); //$NON-NLS-1$
+                new AttachedIndicatorCheckboxHeader(), "90px"); //$NON-NLS-1$
 
         networks.addColumn(
                 new RequiredIndicatorCheckboxColumn(new 
RequiredIndicatorFieldUpdater()),
-                new 
RequiredAllCheckboxHeader(templates.textForCheckBoxHeader(constants.requiredAll())),
 "110px"); //$NON-NLS-1$
+                new RequiredAllCheckboxHeader(), "110px"); //$NON-NLS-1$
 
         networks.addColumn(
                 new VmNetworkImageSafeHtmlWithSafeHtmlTooltipColumn(constants),
@@ -213,10 +214,7 @@
         }
     }
 
-    private final class RequiredAllCheckboxHeader extends CheckboxHeader {
-        private RequiredAllCheckboxHeader(SafeHtml title) {
-            super(title);
-        }
+    private final class RequiredAllCheckboxHeader extends 
AbstractCheckboxHeader {
 
         @Override
         protected void selectionChanged(Boolean value) {
@@ -249,6 +247,11 @@
                 }
             }
             return false;
+        }
+
+        @Override
+        public SafeHtml getTooltip() {
+              return templates.textForCheckBoxHeader(constants.requiredAll());
         }
     }
 
@@ -287,10 +290,7 @@
         }
     }
 
-    private final class AttachedIndicatorCheckboxHeader extends CheckboxHeader 
{
-        private AttachedIndicatorCheckboxHeader(SafeHtml title) {
-            super(title);
-        }
+    private final class AttachedIndicatorCheckboxHeader extends 
AbstractCheckboxHeader {
 
         @Override
         protected void selectionChanged(Boolean value) {
@@ -324,6 +324,11 @@
             }
             return false;
         }
+
+        @Override
+        public SafeHtml getTooltip() {
+            return templates.textForCheckBoxHeader(constants.assignAll());
+        }
     }
 
     private static final class MigrationNetworkIndicatorCheckboxColumn extends 
AbstractCheckboxColumn<ClusterNetworkModel> {
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 5d23218..0dc640b 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
@@ -16,7 +16,7 @@
 import org.ovirt.engine.ui.common.widget.table.column.AbstractEditTextColumn;
 import 
org.ovirt.engine.ui.common.widget.table.column.AbstractListModelListBoxColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
-import org.ovirt.engine.ui.common.widget.table.header.CheckboxHeader;
+import org.ovirt.engine.ui.common.widget.table.header.AbstractCheckboxHeader;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.ImportNetworksModel;
 import org.ovirt.engine.ui.uicommonweb.models.providers.ExternalNetwork;
@@ -170,8 +170,8 @@
         };
         importedNetworks.addColumn(dcColumn, constants.dcNetworkHeader());
 
-        CheckboxHeader publicAllHeader =
-                new 
CheckboxHeader(templates.textForCheckBoxHeader(constants.publicNetwork())) {
+        AbstractCheckboxHeader publicAllHeader =
+                new AbstractCheckboxHeader() {
                     @Override
                     protected void selectionChanged(Boolean value) {
                         for (ExternalNetwork model : getAllImportedNetworks()) 
{
@@ -202,6 +202,11 @@
                                 .getHTML()),
                                 constants.networkPublicUseLabel()));
                     }
+
+                    @Override
+                    public SafeHtml getTooltip() {
+                        return 
templates.textForCheckBoxHeader(constants.publicNetwork());
+                    }
                 };
 
         importedNetworks.addColumn(new 
AbstractCheckboxColumn<ExternalNetwork>(new FieldUpdater<ExternalNetwork, 
Boolean>() {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabClusterView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabClusterView.java
index 3a5cb280..ea60642 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabClusterView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabClusterView.java
@@ -9,6 +9,7 @@
 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.table.column.AbstractTextColumn;
+import org.ovirt.engine.ui.common.widget.table.header.SafeHtmlHeader;
 import org.ovirt.engine.ui.uicommonweb.ReportInit;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.ApplicationModeHelper;
@@ -28,6 +29,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.inject.Inject;
 
 public class MainTabClusterView extends 
AbstractMainTabWithDetailsTableView<VDSGroup, ClusterListModel> implements
@@ -64,7 +66,9 @@
         getTable().addColumn(nameColumn, constants.nameCluster(), "150px"); 
//$NON-NLS-1$
 
         CommentColumn<VDSGroup> commentColumn = new CommentColumn<VDSGroup>();
-        getTable().addColumnWithHtmlHeader(commentColumn, 
commentColumn.getHeaderHtml(), "30px"); //$NON-NLS-1$
+        getTable().addColumn(commentColumn,
+                new SafeHtmlHeader(commentColumn.getHeaderHtml(), 
SafeHtmlUtils.fromSafeConstant(constants.commentLabel())),
+                "30px"); //$NON-NLS-1$
 
         if (ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly) {
             AbstractTextColumn<VDSGroup> dataCenterColumn = new 
AbstractTextColumn<VDSGroup>() {
@@ -127,9 +131,9 @@
             @Override
             public String getValue(VDSGroup object) {
                 if (object.getGroupHostsAndVms() == null) {
-                    return "";
+                    return ""; //$NON-NLS-1$
                 }
-                return object.getGroupHostsAndVms().getHosts() + "";
+                return object.getGroupHostsAndVms().getHosts() + ""; 
//$NON-NLS-1$
             }
 
             @Override
@@ -144,9 +148,9 @@
             @Override
             public String getValue(VDSGroup object) {
                 if (object.getGroupHostsAndVms() == null) {
-                    return "";
+                    return ""; //$NON-NLS-1$
                 }
-                return object.getGroupHostsAndVms().getVms() + "";
+                return object.getGroupHostsAndVms().getVms() + ""; 
//$NON-NLS-1$
             }
 
             @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDataCenterView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDataCenterView.java
index acf4bee..8c98090 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDataCenterView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabDataCenterView.java
@@ -12,6 +12,7 @@
 import org.ovirt.engine.ui.common.widget.table.column.AbstractBooleanColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractEnumColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
+import org.ovirt.engine.ui.common.widget.table.header.SafeHtmlHeader;
 import org.ovirt.engine.ui.uicommonweb.ReportInit;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterListModel;
@@ -31,6 +32,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.inject.Inject;
 
 public class MainTabDataCenterView extends 
AbstractMainTabWithDetailsTableView<StoragePool, DataCenterListModel> 
implements MainTabDataCenterPresenter.ViewDef {
@@ -68,7 +70,9 @@
         getTable().addColumn(nameColumn, constants.nameDc(), "150px"); 
//$NON-NLS-1$
 
         CommentColumn<StoragePool> commentColumn = new 
CommentColumn<StoragePool>();
-        getTable().addColumnWithHtmlHeader(commentColumn, 
commentColumn.getHeaderHtml(), "30px"); //$NON-NLS-1$
+        getTable().addColumn(commentColumn,
+                new SafeHtmlHeader(commentColumn.getHeaderHtml(), 
SafeHtmlUtils.fromSafeConstant(constants.commentLabel())),
+                "30px"); //$NON-NLS-1$
 
         AbstractTextColumn<StoragePool> storageTypeColumn = new 
AbstractBooleanColumn<StoragePool>(
                 constants.storageTypeLocal(), constants.storageTypeShared()) {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
index 165442b..28257f3 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabHostView.java
@@ -15,6 +15,7 @@
 import org.ovirt.engine.ui.common.widget.table.SimpleActionTable;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractEnumColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
+import org.ovirt.engine.ui.common.widget.table.header.SafeHtmlHeader;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.ReportInit;
@@ -38,6 +39,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.inject.Inject;
 
 public class MainTabHostView extends AbstractMainTabWithDetailsTableView<VDS, 
HostListModel> implements MainTabHostPresenter.ViewDef {
@@ -112,7 +114,9 @@
         getTable().addColumn(nameColumn, constants.nameHost(), "150px"); 
//$NON-NLS-1$
 
         CommentColumn<VDS> commentColumn = new CommentColumn<VDS>();
-        getTable().addColumnWithHtmlHeader(commentColumn, 
commentColumn.getHeaderHtml(), "30px"); //$NON-NLS-1$
+        getTable().addColumn(commentColumn,
+                new SafeHtmlHeader(commentColumn.getHeaderHtml(), 
SafeHtmlUtils.fromSafeConstant(constants.commentLabel())),
+                "30px"); //$NON-NLS-1$
 
         AbstractTextColumn<VDS> hostColumn = new AbstractTextColumn<VDS>() {
             @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabNetworkView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabNetworkView.java
index cbba878..d787b07 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabNetworkView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabNetworkView.java
@@ -11,6 +11,7 @@
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.ui.AbstractImagePrototype;
 import com.google.inject.Inject;
+
 import org.ovirt.engine.core.common.businessentities.network.NetworkView;
 import org.ovirt.engine.core.searchbackend.NetworkConditionFieldAutoCompleter;
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
@@ -18,6 +19,7 @@
 import org.ovirt.engine.ui.common.widget.table.column.AbstractLinkColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractSafeHtmlColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
+import org.ovirt.engine.ui.common.widget.table.header.SafeHtmlHeader;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
@@ -73,7 +75,9 @@
         getTable().addColumn(nameColumn, constants.nameNetwork(), "200px"); 
//$NON-NLS-1$
 
         CommentColumn<NetworkView> commentColumn = new CommentColumn<>();
-        getTable().addColumnWithHtmlHeader(commentColumn, 
commentColumn.getHeaderHtml(), "30px"); //$NON-NLS-1$
+        getTable().addColumn(commentColumn,
+                new SafeHtmlHeader(commentColumn.getHeaderHtml(), 
SafeHtmlUtils.fromSafeConstant(constants.commentLabel())),
+                "30px"); //$NON-NLS-1$
 
         AbstractTextColumn<NetworkView> dcColumn = new 
AbstractTextColumn<NetworkView>() {
             @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabPoolView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabPoolView.java
index a15440d..fa898f9 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabPoolView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabPoolView.java
@@ -7,6 +7,7 @@
 import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractEnumColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
+import org.ovirt.engine.ui.common.widget.table.header.SafeHtmlHeader;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.pools.PoolListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
@@ -17,6 +18,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.inject.Inject;
 
 public class MainTabPoolView extends 
AbstractMainTabWithDetailsTableView<VmPool, PoolListModel> implements 
MainTabPoolPresenter.ViewDef {
@@ -51,7 +53,9 @@
         getTable().addColumn(nameColumn, constants.namePool(), "150px"); 
//$NON-NLS-1$
 
         CommentColumn<VmPool> commentColumn = new CommentColumn<VmPool>();
-        getTable().addColumnWithHtmlHeader(commentColumn, 
commentColumn.getHeaderHtml(), "30px"); //$NON-NLS-1$
+        getTable().addColumn(commentColumn,
+                new SafeHtmlHeader(commentColumn.getHeaderHtml(), 
SafeHtmlUtils.fromSafeConstant(constants.commentLabel())),
+                "30px"); //$NON-NLS-1$
 
         AbstractTextColumn<VmPool> assignedColumn = new 
AbstractTextColumn<VmPool>() {
             @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabStorageView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabStorageView.java
index 9910974..ba3ac02 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabStorageView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabStorageView.java
@@ -14,6 +14,7 @@
 import org.ovirt.engine.ui.common.widget.table.column.AbstractEnumColumn;
 import 
org.ovirt.engine.ui.common.widget.table.column.AbstractStorageSizeColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
+import org.ovirt.engine.ui.common.widget.table.header.SafeHtmlHeader;
 import org.ovirt.engine.ui.uicommonweb.ReportInit;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel;
@@ -32,6 +33,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.inject.Inject;
 
 public class MainTabStorageView extends 
AbstractMainTabWithDetailsTableView<StorageDomain, StorageListModel> implements 
MainTabStoragePresenter.ViewDef {
@@ -69,7 +71,9 @@
         getTable().addColumn(nameColumn, constants.domainNameStorage(), 
"150px"); //$NON-NLS-1$
 
         CommentColumn<StorageDomain> commentColumn = new 
CommentColumn<StorageDomain>();
-        getTable().addColumnWithHtmlHeader(commentColumn, 
commentColumn.getHeaderHtml(), "30px"); //$NON-NLS-1$
+        getTable().addColumn(commentColumn,
+                new SafeHtmlHeader(commentColumn.getHeaderHtml(), 
SafeHtmlUtils.fromSafeConstant(constants.commentLabel())),
+                "30px"); //$NON-NLS-1$
 
         AbstractTextColumn<StorageDomain> domainTypeColumn = new 
AbstractEnumColumn<StorageDomain, StorageDomainType>() {
             @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabTemplateView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabTemplateView.java
index 5803f78..c5026b4 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabTemplateView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabTemplateView.java
@@ -10,6 +10,7 @@
 import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractEnumColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
+import org.ovirt.engine.ui.common.widget.table.header.SafeHtmlHeader;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
@@ -21,6 +22,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.inject.Inject;
 
 public class MainTabTemplateView extends 
AbstractMainTabWithDetailsTableView<VmTemplate, TemplateListModel> implements 
MainTabTemplatePresenter.ViewDef {
@@ -75,7 +77,9 @@
         getTable().addColumn(versionNameColumn, constants.versionTemplate(), 
"150px"); //$NON-NLS-1$
 
         CommentColumn<VmTemplate> commentColumn = new 
CommentColumn<VmTemplate>();
-        getTable().addColumnWithHtmlHeader(commentColumn, 
commentColumn.getHeaderHtml(), "30px"); //$NON-NLS-1$
+        getTable().addColumn(commentColumn,
+                new SafeHtmlHeader(commentColumn.getHeaderHtml(), 
SafeHtmlUtils.fromSafeConstant(constants.commentLabel())),
+                "30px"); //$NON-NLS-1$
 
         AbstractTextColumn<VmTemplate> creationDateColumn = new 
AbstractGeneralDateTimeColumn<VmTemplate>() {
             @Override
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 91c2e2f..954a5e9 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
@@ -16,6 +16,7 @@
 import org.ovirt.engine.ui.common.widget.table.column.AbstractEnumColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractSafeHtmlColumn;
 import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
+import org.ovirt.engine.ui.common.widget.table.header.SafeHtmlHeader;
 import org.ovirt.engine.ui.uicommonweb.ReportInit;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
@@ -95,7 +96,9 @@
         getTable().addColumn(nameColumn, constants.nameVm(), "120px"); 
//$NON-NLS-1$
 
         CommentColumn<VM> commentColumn = new CommentColumn<VM>();
-        getTable().addColumnWithHtmlHeader(commentColumn, 
commentColumn.getHeaderHtml(), "30px"); //$NON-NLS-1$
+        getTable().addColumn(commentColumn,
+                new SafeHtmlHeader(commentColumn.getHeaderHtml(), 
SafeHtmlUtils.fromSafeConstant(constants.commentLabel())),
+                "30px"); //$NON-NLS-1$
 
         AbstractTextColumn<VM> hostColumn = new AbstractTextColumn<VM>() {
             @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java
index 4b9f2f3..1a274e9 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java
@@ -124,7 +124,7 @@
                     }
                 };
         portMirroringColumn.makeSortable();
-        getTable().addColumnWithHtmlHeader(portMirroringColumn, 
constants.portMirroringVnicProfile(), "85px"); //$NON-NLS-1$
+        getTable().addColumn(portMirroringColumn, 
constants.portMirroringVnicProfile(), "85px"); //$NON-NLS-1$
 
         AbstractTextColumn<VnicProfileView> descriptionColumn = new 
AbstractTextColumn<VnicProfileView>() {
             @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostInterfaceView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostInterfaceView.java
index 9225f4c..9e03c0e 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostInterfaceView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostInterfaceView.java
@@ -94,18 +94,12 @@
 
         // Statistics Panel
         table.addColumn(new EmptyColumn(), constants.macInterface(), "120px"); 
//$NON-NLS-1$
-        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.speedInterface(), constants.mbps())
-                .asString(), "100px"); //$NON-NLS-1$
-        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.rxRate(), constants.mbps())
-                .asString(), "100px"); //$NON-NLS-1$
-        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.txRate(), constants.mbps())
-                .asString(), "100px"); //$NON-NLS-1$
-        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.rxTotal(), constants.bytes())
-                .asString(), "150px"); //$NON-NLS-1$
-        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.txTotal(), constants.bytes())
-                .asString(), "150px"); //$NON-NLS-1$
-        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.dropsInterface(), constants.pkts())
-                .asString(), "100px"); //$NON-NLS-1$
+        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.speedInterface(), constants.mbps()), "100px"); 
//$NON-NLS-1$
+        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.rxRate(), constants.mbps()), "100px"); //$NON-NLS-1$
+        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.txRate(), constants.mbps()), "100px"); //$NON-NLS-1$
+        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.rxTotal(), constants.bytes()), "150px"); //$NON-NLS-1$
+        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.txTotal(), constants.bytes()), "150px"); //$NON-NLS-1$
+        table.addColumnWithHtmlHeader(new EmptyColumn(), 
templates.sub(constants.dropsInterface(), constants.pkts()), "100px"); 
//$NON-NLS-1$
 
         table.addActionButton(new 
WebAdminButtonDefinition<HostInterfaceLineModel>(constants.addEditInterface()) {
             @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java
index 7d29aa2..319f99e 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java
@@ -126,7 +126,7 @@
                     }
                 };
         portMirroringColumn.makeSortable();
-        getTable().addColumnWithHtmlHeader(portMirroringColumn, 
constants.portMirroringVnicProfile(), "85px"); //$NON-NLS-1$
+        getTable().addColumn(portMirroringColumn, 
constants.portMirroringVnicProfile(), "85px"); //$NON-NLS-1$
 
         AbstractTextColumn<VnicProfileView> descriptionColumn =
                 new AbstractTextColumn<VnicProfileView>() {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineNetworkInterfaceView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineNetworkInterfaceView.java
index a457722..93933ee 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineNetworkInterfaceView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineNetworkInterfaceView.java
@@ -55,7 +55,7 @@
                             }
                         };
                 portMirroringColumn.makeSortable();
-                getTable().addColumnWithHtmlHeader(portMirroringColumn, 
constants.portMirroring(), "85px"); //$NON-NLS-1$
+                getTable().addColumn(portMirroringColumn, 
constants.portMirroring(), "85px"); //$NON-NLS-1$
             }
         });
         ViewIdHandler.idHandler.generateAndSetIds(this);


-- 
To view, visit https://gerrit.ovirt.org/38175
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I33f5fbd37bdbdf7a60dee0b14bcd8dbc11ac5b24
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

Reply via email to