Greg Sheremeta has uploaded a new change for review.

Change subject: userportal, webadmin: convert remaining widgets to PatternFly 
tooltips
......................................................................

userportal, webadmin: convert remaining widgets to PatternFly tooltips

Converted all remaining widgets from title-based tooltips to PatternFly
tooltips.

Change-Id: Ic247147c091f4fa6e6c09689c85b6901c74f11f3
Signed-off-by: Greg Sheremeta <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/CpuSummaryPanel.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/CpuSummaryPanel.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/MemorySummaryPanel.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/MemorySummaryPanel.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractUiCommandButton.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/UiCommandButton.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/UiCommandButton.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionButton.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionPanel.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractButtonDefinition.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ActionButton.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ActionButtonDefinition.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/DropdownActionButton.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ImageUiCommandButtonDefinition.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/SimpleActionButton.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/UiMenuBarButtonDefinition.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/AdvancedParametersExpander.java
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/generic/BaseEntityModelDetachableWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/form/key_value/KeyValueLineWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/TextBoxLabelBase.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/refresh/BaseRefreshPanel.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/cell/LinkCell.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tree/AbstractSubTabTree.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/popup/vm/VmInitWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/AbstractSanStorageList.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmDiskListModelTable.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicListItemView.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/DoublePercentageProgressBar.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaCPUProgressBar.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaMemoryProgressBar.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaProgressBar.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaStorageProgressBar.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/basic/MainTabBasicListItemActionButton.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/footer/TasksTree.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/cell/MenuCell.java
46 files changed, 349 insertions(+), 239 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/60/38360/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
index df4508f..8a5a5ea 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.ui.common.view.popup;
 
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
+
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
 import org.ovirt.engine.ui.common.CommonApplicationMessages;
 import org.ovirt.engine.ui.common.CommonApplicationResources;
@@ -12,6 +13,7 @@
 import org.ovirt.engine.ui.common.widget.WidgetWithInfo;
 import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
 import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelRadioButtonEditor;
+import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
 import 
org.ovirt.engine.ui.common.widget.uicommon.popup.console.EntityModelValueCheckBoxEditor;
 import 
org.ovirt.engine.ui.common.widget.uicommon.popup.console.EntityModelValueCheckbox.ValueCheckboxRenderer;
 import org.ovirt.engine.ui.uicommonweb.models.ConsolePopupModel;
@@ -33,6 +35,7 @@
 import com.google.gwt.user.client.ui.FlowPanel;
 import com.google.gwt.user.client.ui.Label;
 import com.google.inject.Inject;
+
 import org.ovirt.engine.ui.uicommonweb.models.vms.VncConsoleModel;
 
 public class ConsolePopupView extends 
AbstractModelBoundPopupView<ConsolePopupModel> implements 
ConsolePopupPresenterWidget.ViewDef {
@@ -164,6 +167,36 @@
     @WithElementId
     EntityModelValueCheckBoxEditor<ConsoleModel> wanEnabled;
 
+    @UiField
+    WidgetTooltip spiceRadioButtonTooltip;
+
+    @UiField
+    WidgetTooltip vncRadioButtonTooltip;
+
+    @UiField
+    WidgetTooltip remoteDesktopRadioButtonTooltip;
+
+    @UiField
+    WidgetTooltip spiceAutoImplRadioButtonTooltip;
+
+    @UiField
+    WidgetTooltip spiceNativeImplRadioButtonTooltip;
+
+    @UiField
+    WidgetTooltip spicePluginImplRadioButtonTooltip;
+
+    @UiField
+    WidgetTooltip spiceHtml5ImplRadioButtonTooltip;
+
+    @UiField
+    WidgetTooltip noVncImplRadioButtonTooltip;
+
+    @UiField
+    WidgetTooltip rdpPluginImplRadioButtonTooltip;
+
+    @UiField
+    WidgetTooltip enableSpiceProxyTooltip;
+
     private final CommonApplicationConstants constants;
 
     private final CommonApplicationMessages messages;
@@ -188,7 +221,7 @@
 
         spiceAutoImplRadioButton = new EntityModelRadioButtonEditor("2"); 
//$NON-NLS-1$
         spiceAutoImplRadioButton.setLabel(constants.auto());
-        spiceNativeImplRadioButton = new EntityModelRadioButtonEditor("2");// 
$NON-NLS-1$
+        spiceNativeImplRadioButton = new EntityModelRadioButtonEditor("2"); 
//$NON-NLS-1$
         spiceNativeImplRadioButton.setLabel(constants.nativeClient());
         spicePluginImplRadioButton = new EntityModelRadioButtonEditor("2"); 
//$NON-NLS-1$
         spicePluginImplRadioButton.setLabel(constants.browserPlugin());
@@ -202,7 +235,7 @@
 
         rdpAutoImplRadioButton = new EntityModelRadioButtonEditor("4"); 
//$NON-NLS-1$
         rdpAutoImplRadioButton.setLabel(constants.auto());
-        rdpNativeImplRadioButton = new EntityModelRadioButtonEditor("4");// 
$NON-NLS-1$
+        rdpNativeImplRadioButton = new EntityModelRadioButtonEditor("4"); 
//$NON-NLS-1$
         rdpNativeImplRadioButton.setLabel(constants.nativeClient());
         rdpPluginImplRadioButton = new EntityModelRadioButtonEditor("4"); 
//$NON-NLS-1$
         rdpPluginImplRadioButton.setLabel(constants.browserPlugin());
@@ -392,11 +425,11 @@
         private String html;
 
         private KeyValueHtmlRowMaker(String key, String val) {
-            html = "<b>" + key + "</b>: " + val;// $NON-NLS-1$// $NON-NLS-2$
+            html = "<b>" + key + "</b>: " + val; //$NON-NLS-1$ //$NON-NLS-2$
         }
 
         public KeyValueHtmlRowMaker append(String key, String val) {
-            html += "<br/>" + new KeyValueHtmlRowMaker(key, val).toString();// 
$NON-NLS-1$
+            html += "<br/>" + new KeyValueHtmlRowMaker(key, val).toString(); 
//$NON-NLS-1$
             return this;
         }
 
@@ -524,19 +557,19 @@
     @Override
     public void setSpiceAvailable(boolean visible) {
         spiceRadioButton.setEnabled(visible);
-        spiceRadioButton.setTitle(visible ? "" : 
constants.spiceNotAvailable());
+        spiceRadioButtonTooltip.setText(visible ? "" : 
constants.spiceNotAvailable()); //$NON-NLS-1$
     }
 
     @Override
     public void setRdpAvailable(boolean visible) {
         remoteDesktopRadioButton.setEnabled(visible);
-        remoteDesktopRadioButton.setTitle(visible ? "" : 
constants.rdpNotAvailable());
+        remoteDesktopRadioButtonTooltip.setText(visible ? "" : 
constants.rdpNotAvailable()); //$NON-NLS-1$
     }
 
     @Override
     public void setVncAvailable(boolean visible) {
         vncRadioButton.setEnabled(visible);
-        vncRadioButton.setTitle(visible ? "" : constants.vncNotAvailable());
+        vncRadioButtonTooltip.setText(visible ? "" : 
constants.vncNotAvailable()); //$NON-NLS-1$
     }
 
     @Override
@@ -599,7 +632,7 @@
     @Override
     public void setNoVncEnabled(boolean enabled, String reason) {
         noVncImplRadioButton.setEnabled(enabled);
-        noVncImplRadioButton.setTitle(enabled ? "" : reason);
+        noVncImplRadioButtonTooltip.setText(enabled ? "" : reason); 
//$NON-NLS-1$
     }
 
     abstract class SpiceRenderer implements 
ValueCheckboxRenderer<ConsoleModel> {
@@ -689,7 +722,7 @@
     @Override
     public void setSpiceProxyEnabled(boolean enabled, String reason) {
         enableSpiceProxy.setEnabled(enabled);
-        enableSpiceProxy.setTitle(reason);
+        enableSpiceProxyTooltip.setText(reason);
     }
 
     @Override
@@ -706,7 +739,7 @@
     public void setSpicePluginImplEnabled(boolean enabled, String reason) {
         spicePluginImplRadioButton.setEnabled(enabled);
         if (!enabled) {
-            spicePluginImplRadioButton.setTitle(reason);
+            spicePluginImplRadioButtonTooltip.setText(reason);
         }
     }
 
@@ -714,7 +747,7 @@
     public void setSpiceHtml5ImplEnabled(boolean enabled, String reason) {
         spiceHtml5ImplRadioButton.setEnabled(enabled);
         if (!enabled) {
-            spiceHtml5ImplRadioButton.setTitle(reason);
+            spiceHtml5ImplRadioButtonTooltip.setText(reason);
         }
     }
 
@@ -722,7 +755,7 @@
     public void setRdpPluginImplEnabled(boolean enabled, String reason) {
         rdpPluginImplRadioButton.setEnabled(enabled);
         if (!enabled) {
-            rdpPluginImplRadioButton.setTitle(reason);
+            rdpPluginImplRadioButtonTooltip.setText(reason);
         }
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.ui.xml
index 23bc4e2..6fb9240 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.ui.xml
@@ -6,7 +6,8 @@
 xmlns:v="urn:import:org.ovirt.engine.ui.common.widget"
 xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"
 xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
-xmlns:w="urn:import:org.ovirt.engine.ui.common.widget.uicommon.popup.console">
+xmlns:w="urn:import:org.ovirt.engine.ui.common.widget.uicommon.popup.console"
+xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.tooltip">
 
     <ui:with field='constants' 
type='org.ovirt.engine.ui.common.CommonApplicationConstants' />
 
@@ -53,24 +54,40 @@
                 <g:FlowPanel addStyleNames="{style.protocolPanel}">
                     <g:Label ui:field="consoleTitle" 
addStyleNames="{style.labelStyle}" />
                     <g:FlowPanel>
-                        <ge:EntityModelRadioButtonEditor 
ui:field="spiceRadioButton" addStyleNames="{style.protocolRadioButton}"/>
-                        <ge:EntityModelRadioButtonEditor 
ui:field="vncRadioButton" addStyleNames="{style.protocolRadioButton}"/>
-                        <ge:EntityModelRadioButtonEditor 
ui:field="remoteDesktopRadioButton" addStyleNames="{style.protocolRadioButton}" 
/>
+                        <t:WidgetTooltip ui:field="spiceRadioButtonTooltip">
+                            <ge:EntityModelRadioButtonEditor 
ui:field="spiceRadioButton" addStyleNames="{style.protocolRadioButton}"/>
+                        </t:WidgetTooltip>
+                        <t:WidgetTooltip ui:field="vncRadioButtonTooltip">
+                            <ge:EntityModelRadioButtonEditor 
ui:field="vncRadioButton" addStyleNames="{style.protocolRadioButton}"/>
+                        </t:WidgetTooltip>
+                        <t:WidgetTooltip 
ui:field="remoteDesktopRadioButtonTooltip">
+                            <ge:EntityModelRadioButtonEditor 
ui:field="remoteDesktopRadioButton" addStyleNames="{style.protocolRadioButton}" 
/>
+                        </t:WidgetTooltip>
                     </g:FlowPanel>
                 </g:FlowPanel>
 
                 <g:FlowPanel ui:field="spicePanel" 
addStyleNames="{style.protocolPanel} cpv_spicePanel_pfly_fix">
                     <v:WidgetWithInfo ui:field="spiceHeadline" />
-                    <ge:EntityModelRadioButtonEditor 
ui:field="spiceAutoImplRadioButton"/>
-                    <ge:EntityModelRadioButtonEditor 
ui:field="spiceNativeImplRadioButton"/>
-                    <ge:EntityModelRadioButtonEditor 
ui:field="spicePluginImplRadioButton"/>
-                    <ge:EntityModelRadioButtonEditor 
ui:field="spiceHtml5ImplRadioButton"/>
+                    <t:WidgetTooltip 
ui:field="spiceAutoImplRadioButtonTooltip">
+                        <ge:EntityModelRadioButtonEditor 
ui:field="spiceAutoImplRadioButton"/>
+                    </t:WidgetTooltip>
+                    <t:WidgetTooltip 
ui:field="spiceNativeImplRadioButtonTooltip">
+                        <ge:EntityModelRadioButtonEditor 
ui:field="spiceNativeImplRadioButton"/>
+                    </t:WidgetTooltip>
+                    <t:WidgetTooltip 
ui:field="spicePluginImplRadioButtonTooltip">
+                        <ge:EntityModelRadioButtonEditor 
ui:field="spicePluginImplRadioButton"/>
+                    </t:WidgetTooltip>
+                    <t:WidgetTooltip 
ui:field="spiceHtml5ImplRadioButtonTooltip">
+                        <ge:EntityModelRadioButtonEditor 
ui:field="spiceHtml5ImplRadioButton"/>
+                    </t:WidgetTooltip>
 
                     <g:Label ui:field="spiceTitle" 
text="{constants.spiceOptions}" addStyleNames="{style.labelStyle} 
cpv_spiceTitle_pfly_fix" />
                     <w:EntityModelValueCheckBoxEditor 
ui:field="remapCtrlAltDeleteSpice" />
                     <w:EntityModelValueCheckBoxEditor 
ui:field="enableUsbAutoshare" />
                     <w:EntityModelValueCheckBoxEditor 
ui:field="openInFullScreen" />
-                    <w:EntityModelValueCheckBoxEditor 
ui:field="enableSpiceProxy" />
+                    <t:WidgetTooltip ui:field="enableSpiceProxyTooltip">
+                        <w:EntityModelValueCheckBoxEditor 
ui:field="enableSpiceProxy" />
+                    </t:WidgetTooltip>
 
                     <g:FlowPanel ui:field="wanOptionsPanel" >
                         <w:EntityModelValueCheckBoxEditor 
ui:field="wanEnabled" />
@@ -84,7 +101,9 @@
                 <g:FlowPanel ui:field="vncPanel" 
addStyleNames="{style.protocolPanel}">
                     <v:WidgetWithInfo ui:field="vncHeadline" />
                     <ge:EntityModelRadioButtonEditor 
ui:field="vncNativeImplRadioButton" />
-                    <ge:EntityModelRadioButtonEditor 
ui:field="noVncImplRadioButton"/>
+                    <t:WidgetTooltip ui:field="noVncImplRadioButtonTooltip">
+                        <ge:EntityModelRadioButtonEditor 
ui:field="noVncImplRadioButton"/>
+                    </t:WidgetTooltip>
                     <g:Label ui:field="vncTitle" text="{constants.vncOptions}" 
addStyleNames="{style.labelStyle}" />
                     <w:EntityModelValueCheckBoxEditor 
ui:field="remapCtrlAltDeleteVnc" />
                 </g:FlowPanel>
@@ -93,7 +112,9 @@
                     <v:WidgetWithInfo ui:field="rdpHeadline" />
                     <ge:EntityModelRadioButtonEditor 
ui:field="rdpAutoImplRadioButton" />
                     <ge:EntityModelRadioButtonEditor 
ui:field="rdpNativeImplRadioButton" />
-                    <ge:EntityModelRadioButtonEditor 
ui:field="rdpPluginImplRadioButton" />
+                    <t:WidgetTooltip 
ui:field="rdpPluginImplRadioButtonTooltip">
+                        <ge:EntityModelRadioButtonEditor 
ui:field="rdpPluginImplRadioButton" />
+                    </t:WidgetTooltip>
                     <g:Label text="{constants.rdpOptions}" 
addStyleNames="{style.labelStyle}" />
                     <w:EntityModelValueCheckBoxEditor 
ui:field="useLocalDrives" />
                 </g:FlowPanel>
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/CpuSummaryPanel.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/CpuSummaryPanel.java
index 11c4989..e40881e 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/CpuSummaryPanel.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/CpuSummaryPanel.java
@@ -1,12 +1,12 @@
 package org.ovirt.engine.ui.common.view.popup.numa;
 
 import org.ovirt.engine.ui.common.CommonApplicationMessages;
+import org.ovirt.engine.ui.common.widget.label.LabelWithTextTruncation;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.Widget;
 import com.google.inject.Inject;
 
@@ -19,13 +19,13 @@
     private final CommonApplicationMessages messages;
 
     @UiField
-    Label nameLabel;
+    LabelWithTextTruncation nameLabel;
 
     @UiField
-    Label totalLabel;
+    LabelWithTextTruncation totalLabel;
 
     @UiField
-    Label percentageLabel;
+    LabelWithTextTruncation percentageLabel;
 
     @Inject
     public CpuSummaryPanel(CommonApplicationMessages messages) {
@@ -34,18 +34,13 @@
     }
 
     public void setName(String name) {
-        nameLabel.setTitle(name);
         nameLabel.setText(name);
     }
 
     public void setCpus(int totalCpus, int usedPercentage) {
         String totalCpusString = messages.numaTotalCpus(totalCpus);
-
-        totalLabel.setTitle(totalCpusString);
         totalLabel.setText(totalCpusString);
-
         String percentageUsed = messages.numaPercentUsed(usedPercentage);
-        percentageLabel.setTitle(percentageUsed);
         percentageLabel.setText(percentageUsed);
     }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/CpuSummaryPanel.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/CpuSummaryPanel.ui.xml
index f000281..a730ece 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/CpuSummaryPanel.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/CpuSummaryPanel.ui.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui">
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
+xmlns:l="urn:import:org.ovirt.engine.ui.common.widget.label">
 
     <ui:style>
         .cpuPanel {
@@ -34,11 +35,11 @@
 
     <g:FlowPanel addStyleNames="{style.cpuPanel}">
         <g:SimplePanel addStyleNames="{style.nameLabelContainer}">
-            <g:Label ui:field="nameLabel" addStyleNames="{style.mainText}"/>
+            <l:LabelWithTextTruncation ui:field="nameLabel" 
addStyleNames="{style.mainText}"/>
         </g:SimplePanel>
         <g:FlowPanel addStyleNames="{style.cpuLabelContainer}">
-            <g:Label ui:field="totalLabel" addStyleNames="{style.mainText}" />
-            <g:Label ui:field="percentageLabel" 
addStyleNames="{style.subText}" />
+            <l:LabelWithTextTruncation ui:field="totalLabel" 
addStyleNames="{style.mainText}" />
+            <l:LabelWithTextTruncation ui:field="percentageLabel" 
addStyleNames="{style.subText}" />
         </g:FlowPanel>
         <g:SimplePanel addStyleNames="{style.clearFloat}" />
     </g:FlowPanel>
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/MemorySummaryPanel.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/MemorySummaryPanel.java
index 59366a9..5035832 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/MemorySummaryPanel.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/MemorySummaryPanel.java
@@ -1,12 +1,12 @@
 package org.ovirt.engine.ui.common.view.popup.numa;
 
 import org.ovirt.engine.ui.common.CommonApplicationMessages;
+import org.ovirt.engine.ui.common.widget.label.LabelWithTextTruncation;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.Widget;
 import com.google.inject.Inject;
 
@@ -18,10 +18,10 @@
     private final CommonApplicationMessages messages;
 
     @UiField
-    Label totalLabel;
+    LabelWithTextTruncation totalLabel;
 
     @UiField
-    Label usedLabel;
+    LabelWithTextTruncation usedLabel;
 
     @Inject
     public MemorySummaryPanel(CommonApplicationMessages messages) {
@@ -31,11 +31,9 @@
 
     public void setMemoryStats(long totalMemory, long usedMemory) {
         String totalMemoryString = messages.numaMemory(totalMemory);
-        totalLabel.setTitle(totalMemoryString);
         totalLabel.setText(totalMemoryString);
 
         String usedMemoryString = messages.numaMemoryUsed(usedMemory);
-        usedLabel.setTitle(usedMemoryString);
         usedLabel.setText(usedMemoryString);
     }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/MemorySummaryPanel.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/MemorySummaryPanel.ui.xml
index 8c647c4..8dde536 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/MemorySummaryPanel.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/numa/MemorySummaryPanel.ui.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui">
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
+xmlns:l="urn:import:org.ovirt.engine.ui.common.widget.label">
 
     <ui:style>
         .memoryPanel {
@@ -29,8 +30,8 @@
 
     <g:FlowPanel addStyleNames="{style.memoryPanel}">
         <g:FlowPanel addStyleNames="{style.memoryLabelContainer}">
-            <g:Label ui:field="totalLabel" addStyleNames="{style.mainText}" />
-            <g:Label ui:field="usedLabel" addStyleNames="{style.subText}" />
+            <l:LabelWithTextTruncation ui:field="totalLabel" 
addStyleNames="{style.mainText}" />
+            <l:LabelWithTextTruncation ui:field="usedLabel" 
addStyleNames="{style.subText}" />
         </g:FlowPanel>
         <g:SimplePanel addStyleNames="{style.clearFloat}" />
     </g:FlowPanel>
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractUiCommandButton.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractUiCommandButton.java
index 25adda9..dd88b6a 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractUiCommandButton.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractUiCommandButton.java
@@ -69,33 +69,13 @@
         }
     }
 
-    void updateButton() {
+    protected void updateButton() {
         Widget widget = getButtonWidget();
         widget.setVisible(command.getIsAvailable() && command.getIsVisible());
         if (widget instanceof HasEnabled) {
             ((HasEnabled)widget).setEnabled(command.getIsExecutionAllowed());
         }
         String label = getLabel();
-        // Use prohibition reasons for tooltip if exist.
-        String title = "";  //$NON-NLS-1$
-        StringBuilder sb = new StringBuilder();
-        if (!command.getExecuteProhibitionReasons().isEmpty()) {
-            for (String reason : command.getExecuteProhibitionReasons()) {
-                sb.append(reason).append(",");  //$NON-NLS-1$
-            }
-            title = sb.toString();
-            if (title.length() != 0) {
-                title = title.substring(0, title.length() -1);
-            }
-        } else {
-            if (label != null && !label.isEmpty()) {
-                title = label;
-            }
-            else {
-                title = command.getTitle();
-            }
-        }
-        getButtonWidget().setTitle(title);
 
         if (command.getTitle() == null) {
             setLabel(""); //$NON-NLS-1$
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidget.java
index 83e62e7..89495df 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidget.java
@@ -27,7 +27,6 @@
         valid = true;
         applyCommonValidationStyles();
         getValidatedWidgetStyle().setBorderColor("gray"); //$NON-NLS-1$
-        getValidatedWidget().setTitle(null);
     }
 
     @Override
@@ -35,7 +34,6 @@
         valid = false;
         applyCommonValidationStyles();
         getValidatedWidgetStyle().setBorderColor("red"); //$NON-NLS-1$
-        getValidatedWidget().setTitle(getValidationTitle(validationHints));
     }
 
     protected void applyCommonValidationStyles() {
@@ -43,7 +41,7 @@
         getValidatedWidgetStyle().setBorderStyle(BorderStyle.SOLID);
     }
 
-    String getValidationTitle(List<String> validationHints) {
+    protected String getValidationTooltipText(List<String> validationHints) {
         return validationHints != null && validationHints.size() > 0 ? 
validationHints.get(0) : null;
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.java
index cd681d8..28db8c3 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.java
@@ -1,11 +1,14 @@
 package org.ovirt.engine.ui.common.widget;
 
+import java.util.List;
+
 import org.gwtbootstrap3.client.ui.FormLabel;
 import org.gwtbootstrap3.client.ui.constants.Styles;
 import org.ovirt.engine.ui.common.css.OvirtCss;
 import org.ovirt.engine.ui.common.idhandler.HasElementId;
 import org.ovirt.engine.ui.common.view.popup.FocusableComponentsContainer;
 import org.ovirt.engine.ui.common.widget.editor.EditorWidget;
+import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler;
@@ -20,6 +23,7 @@
 import com.google.gwt.event.logical.shared.ValueChangeEvent;
 import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.resources.client.CssResource;
+import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.DOM;
@@ -78,15 +82,20 @@
     SimplePanel contentWidgetContainer;
 
     @UiField
+    WidgetTooltip labelElementTooltip;
+
+    @UiField
+    WidgetTooltip contentWidgetContainerTooltip;
+
+    @UiField
     Style style;
+
+    protected String labelElementConfiguredTooltip = null;
+
+    protected String contentWidgetContainerConfiguredTooltip = null;
 
     // width in PX -- only used in legacy mode
     public static final int CONTENT_WIDTH_LEGACY = 230;
-
-    /**
-     * By default the tooltip gets erased when setEnabled is called. This 
switch disables that behavior.
-     */
-    private boolean setKeepTooltipOnSetEnabled = false;
 
     private VisibilityRenderer renderer;
 
@@ -273,22 +282,47 @@
         } else {
             
getFormLabel().getElement().replaceClassName(OvirtCss.LABEL_ENABLED, 
OvirtCss.LABEL_DISABLED);
         }
-
-        if (!setKeepTooltipOnSetEnabled) {
-            updateWidgetTitle(null);
-        }
     }
 
     @Override
     public void disable(String disabilityHint) {
         setEnabled(false);
-        updateWidgetTitle(disabilityHint);
+        setWidgetTooltip(disabilityHint);
     }
 
-    private void updateWidgetTitle(String title) {
-        contentWidget.asWidget().setTitle(title);
+    @Override
+    public void markAsValid() {
+        super.markAsValid();
+        labelElementTooltip.setText(labelElementConfiguredTooltip);
+        labelElementTooltip.reconfigure();
+        
contentWidgetContainerTooltip.setText(contentWidgetContainerConfiguredTooltip);
+        contentWidgetContainerTooltip.reconfigure();
     }
 
+    @Override
+    public void markAsInvalid(List<String> validationHints) {
+        super.markAsInvalid(validationHints);
+        String tooltipText = getValidationTooltipText(validationHints);
+        labelElementTooltip.setText(tooltipText);
+        labelElementTooltip.reconfigure();
+        contentWidgetContainerTooltip.setText(tooltipText);
+        contentWidgetContainerTooltip.reconfigure();
+    }
+
+    public void setWidgetTooltip(String text) {
+        contentWidgetContainerTooltip.setText(text);
+        labelElementTooltip.setText(text);
+    }
+
+    public void setContentWidgetContainerTooltip(String tooltipText) {
+        contentWidgetContainerConfiguredTooltip = tooltipText;
+        contentWidgetContainerTooltip.setText(tooltipText);
+    }
+
+    public void setLabelElementTooltip(String tooltipText) {
+        labelElementConfiguredTooltip = tooltipText;
+        labelElementTooltip.setText(tooltipText);
+    }
 
     // set styleNames on my components
 
@@ -359,10 +393,6 @@
 
     public void hideLabel() {
         getFormLabel().setVisible(false);
-    }
-
-    public void setKeepTooltipOnSetEnabled(boolean setKeepTooltipOnSetEnabled) 
{
-        this.setKeepTooltipOnSetEnabled = setKeepTooltipOnSetEnabled;
     }
 
     public VisibilityRenderer getRenderer() {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.ui.xml
index 3620256..1751d42 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.ui.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
-    xmlns:b="urn:import:org.gwtbootstrap3.client.ui">
+xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.tooltip"
+xmlns:b="urn:import:org.gwtbootstrap3.client.ui" >
 
     <ui:style 
type="org.ovirt.engine.ui.common.widget.AbstractValidatedWidgetWithLabel.Style">
         .wrapper_legacy {
@@ -29,8 +30,12 @@
     </ui:style>
 
     <g:HTMLPanel ui:field="wrapperPanel">
-        <b:FormLabel ui:field="label"/>
-        <g:SimplePanel ui:field="contentWidgetContainer" />
+        <t:WidgetTooltip ui:field="labelElementTooltip">
+            <b:FormLabel ui:field="label"/>
+        </t:WidgetTooltip>
+        <t:WidgetTooltip ui:field="contentWidgetContainerTooltip">
+            <g:SimplePanel ui:field="contentWidgetContainer" />
+        </t:WidgetTooltip>
         <div style="clear: both;" />
     </g:HTMLPanel>
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/UiCommandButton.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/UiCommandButton.java
index c921fee..83aaff5 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/UiCommandButton.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/UiCommandButton.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.ui.common.widget;
 
 import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogButton;
+import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.resources.client.ImageResource;
@@ -18,6 +19,9 @@
 
     @UiField
     SimpleDialogButton button;
+
+    @UiField
+    WidgetTooltip tooltip;
 
     public UiCommandButton() {
         initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
@@ -79,4 +83,30 @@
     public void setEnabled(boolean enabled) {
         getButtonWidget().setEnabled(enabled);
     }
+
+    @Override
+    protected void updateButton() {
+        super.updateButton();
+        tooltip.setText(buildTooltipText());
+        tooltip.reconfigure();
+    }
+
+    /**
+     * Use prohibition reasons for tooltip
+     */
+    protected String buildTooltipText() {
+        String tooltipText = null;
+
+        StringBuilder sb = new StringBuilder();
+        if (!getCommand().getExecuteProhibitionReasons().isEmpty()) {
+            for (String reason : getCommand().getExecuteProhibitionReasons()) {
+                sb.append(reason).append(", ");  //$NON-NLS-1$
+            }
+            tooltipText = sb.toString();
+            if (tooltipText.length() != 0) {
+                tooltipText = tooltipText.substring(0, tooltipText.length() 
-2);
+            }
+        }
+        return tooltipText;
+    }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/UiCommandButton.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/UiCommandButton.ui.xml
index 78e1a1a..36e13b7 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/UiCommandButton.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/UiCommandButton.ui.xml
@@ -1,14 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
-       xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog">
+    xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
+    xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.tooltip">
 
-       <ui:style>
-               .button {
-                       text-align: center;
-               }
-       </ui:style>
+    <ui:style>
+        .button {
+            text-align: center;
+        }
+    </ui:style>
 
-       <d:SimpleDialogButton ui:field="button" addStyleNames="{style.button}" 
/>
+    <g:FlowPanel>
+        <t:WidgetTooltip ui:field="tooltip">
+            <d:SimpleDialogButton ui:field="button" 
addStyleNames="{style.button}" />
+        </t:WidgetTooltip>
+    </g:FlowPanel>
 
 </ui:UiBinder>
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionButton.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionButton.java
index 0bd5718..f1dcff0 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionButton.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionButton.java
@@ -1,5 +1,7 @@
 package org.ovirt.engine.ui.common.widget.action;
 
+import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
+
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.safehtml.shared.SafeHtml;
@@ -19,6 +21,8 @@
 
     @UiField
     public ToggleButton button;
+
+    WidgetTooltip tooltip;
 
     @Override
     public void setEnabledHtml(SafeHtml html) {
@@ -47,8 +51,12 @@
     }
 
     @Override
-    public void setTitle(String title) {
-        button.setTitle(title);
+    public void setTooltipText(String tooltipText) {
+        if (tooltip == null) {
+            tooltip = new WidgetTooltip(this);
+        }
+        tooltip.setText(tooltipText);
+        tooltip.reconfigure();
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionPanel.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionPanel.java
index b046c8c..dbd7ea5 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionPanel.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionPanel.java
@@ -556,12 +556,12 @@
             if (buttonDef instanceof UiMenuBarButtonDefinition) {
                 UiMenuBarButtonDefinition<T> menuBarDef = 
((UiMenuBarButtonDefinition<T>) buttonDef);
                 if (menuBarDef.isAsTitle()) {
-                    MenuItemSeparator titleItem = new 
TitleMenuItemSeparator(buttonDef.getTitle());
+                    MenuItemSeparator titleItem = new 
TitleMenuItemSeparator(buttonDef.getText());
                     menuBar.addSeparator(titleItem);
                     
titleItem.setVisible(buttonDef.isVisible(getSelectedItems()));
                     updateContextMenu(menuBar, menuBarDef.getSubActions(), 
popupPanel, false);
                 } else {
-                    MenuItem newMenu = new MenuItem(buttonDef.getTitle(),
+                    MenuItem newMenu = new MenuItem(buttonDef.getText(),
                             updateContextMenu(new MenuBar(true),
                                     menuBarDef.getSubActions(),
                                     popupPanel));
@@ -570,7 +570,7 @@
                     menuBar.addItem(newMenu);
                 }
             } else {
-                MenuItem item = new MenuItem(buttonDef.getTitle(), new 
Command() {
+                MenuItem item = new MenuItem(buttonDef.getText(), new 
Command() {
                     @Override
                     public void execute() {
                         popupPanel.hide();
@@ -595,7 +595,9 @@
         button.asWidget().setVisible(buttonDef.isAccessible(getSelectedItems())
                 && buttonDef.isVisible(getSelectedItems()) && 
!buttonDef.isCascaded());
         button.setEnabled(buttonDef.isEnabled(getSelectedItems()));
-        button.setTitle(buttonDef.getButtonToolTip() != null ? 
buttonDef.getButtonToolTip() : buttonDef.getTitle());
+        if (buttonDef.getButtonToolTip() != null) {
+            button.setTooltipText(buttonDef.getButtonToolTip());
+        }
         originallyVisible.put(button.asWidget(), 
buttonDef.isAccessible(getSelectedItems())
                 && buttonDef.isVisible(getSelectedItems()));
     }
@@ -610,6 +612,7 @@
         item.setEnabled(buttonDef.isEnabled(getSelectedItems()));
 
         if (buttonDef.getMenuItemToolTip() != null) {
+            // TODO tt MenuItem is not a Widget, so have to use ElementTooltip 
on it
             item.setTitle(buttonDef.getMenuItemToolTip());
         }
     }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractButtonDefinition.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractButtonDefinition.java
index 5226995..93ba09f 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractButtonDefinition.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractButtonDefinition.java
@@ -116,7 +116,7 @@
     }
 
     @Override
-    public String getTitle() {
+    public String getText() {
         return title.asString();
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ActionButton.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ActionButton.java
index 937000c..323536e 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ActionButton.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ActionButton.java
@@ -14,7 +14,7 @@
     /**
      * Sets the tooltip of this button.
      */
-    void setTitle(String title);
+    void setTooltipText(String title);
 
     /**
      * Sets the HTML content presented when this button is enabled.
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ActionButtonDefinition.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ActionButtonDefinition.java
index f990f53..ed72bdb 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ActionButtonDefinition.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ActionButtonDefinition.java
@@ -56,9 +56,9 @@
     SafeHtml getDisabledHtml();
 
     /**
-     * Returns the title of this button, used in context menus and as the 
button tooltip.
+     * Returns the text of this button, used in context menus.
      */
-    String getTitle();
+    String getText();
 
     /**
      * Returns the ID that uniquely identifies this button or {@code null} if 
not available.
@@ -81,7 +81,7 @@
     boolean isSubTitledAction();
 
     /**
-     * Returns the tool-tip for this action button or {@code null} to use 
button title value.
+     * Returns the tooltip for this action button or {@code null} to use 
button tooltip text.
      */
     String getButtonToolTip();
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/DropdownActionButton.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/DropdownActionButton.java
index fdcacc1..afab6a0 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/DropdownActionButton.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/DropdownActionButton.java
@@ -42,6 +42,7 @@
     private final static CommonApplicationResources resources = 
GWT.create(CommonApplicationResources.class);
 
     public DropdownActionButton(List<ActionButtonDefinition<T>> actions, List 
selectedItems) {
+        super();
         initDropdownButton();
         initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
         initMenuPopup(actions, selectedItems);
@@ -66,7 +67,7 @@
         menuPopup = new MenuPanelPopup(true);
 
         for (final ActionButtonDefinition<T> buttonDef : actions) {
-            MenuItem menuItem = new MenuItem(buttonDef.getTitle(), new 
Command() {
+            MenuItem menuItem = new MenuItem(buttonDef.getText(), new 
Command() {
                 @Override
                 public void execute() {
                     menuPopup.asPopupPanel().hide();
@@ -94,6 +95,7 @@
     void updateMenuItem(MenuItem item, ActionButtonDefinition<T> buttonDef, 
List selectedItems) {
         item.setVisible(buttonDef.isAccessible(selectedItems) && 
buttonDef.isVisible(selectedItems));
         item.setEnabled(buttonDef.isEnabled(selectedItems));
+        // TODO tt MenuItem is not a Widget, so have to use ElementTooltip on 
it
         item.setTitle(buttonDef.getButtonToolTip() != null ? 
buttonDef.getButtonToolTip() : null);
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ImageUiCommandButtonDefinition.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ImageUiCommandButtonDefinition.java
index 1a0d6a6..63e1b48 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ImageUiCommandButtonDefinition.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/ImageUiCommandButtonDefinition.java
@@ -81,15 +81,15 @@
     @Override
     public SafeHtml getEnabledHtml() {
         return !showTitle ? enabledImage
-                : (!imageAfterTitle ? TEMPLATES.imageTextButton(enabledImage, 
getTitle())
-                        : TEMPLATES.textImageButton(getTitle(), enabledImage));
+                : (!imageAfterTitle ? TEMPLATES.imageTextButton(enabledImage, 
getText())
+                        : TEMPLATES.textImageButton(getText(), enabledImage));
     }
 
     @Override
     public SafeHtml getDisabledHtml() {
         return !showTitle ? disabledImage
-                : (!imageAfterTitle ? TEMPLATES.imageTextButton(disabledImage, 
getTitle())
-                        : TEMPLATES.textImageButton(getTitle(), 
disabledImage));
+                : (!imageAfterTitle ? TEMPLATES.imageTextButton(disabledImage, 
getText())
+                        : TEMPLATES.textImageButton(getText(), disabledImage));
     }
 
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/SimpleActionButton.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/SimpleActionButton.java
index 8ccabbf..19677de 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/SimpleActionButton.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/SimpleActionButton.java
@@ -22,6 +22,7 @@
     Style style;
 
     public SimpleActionButton() {
+        super();
         initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
 
         button.addClickHandler(new ClickHandler() {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/UiMenuBarButtonDefinition.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/UiMenuBarButtonDefinition.java
index 9bfb7cf..07da8ec 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/UiMenuBarButtonDefinition.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/UiMenuBarButtonDefinition.java
@@ -111,7 +111,7 @@
 
     @Override
     public String getUniqueId() {
-        return getTitle();
+        return getText();
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/AdvancedParametersExpander.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/AdvancedParametersExpander.java
index 238c00c..360f70a 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/AdvancedParametersExpander.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/AdvancedParametersExpander.java
@@ -88,6 +88,7 @@
         return nextTabIndex;
     }
 
+    // TODO rename "setTitleWhenExpanded"
     public void setTitleWhenExpended(String title) {
         titleExpended = title;
         initStyle();
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 f0de7f1..963f03c 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
@@ -336,6 +336,7 @@
 
             String error = errors.get(i);
             boolean valid = StringUtils.isEmpty(error);
+            // TODO tt Element is not a Widget, so have to use ElementTooltip 
on it
             element.setTitle(valid ? null : error);
             if (!valid) {
                 element.addClassName(style.invalidRow());
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/BaseEntityModelDetachableWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/BaseEntityModelDetachableWidget.java
index 50f074a..fa34252 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/BaseEntityModelDetachableWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/BaseEntityModelDetachableWidget.java
@@ -3,18 +3,24 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Style.Display;
 import com.google.gwt.resources.client.CssResource;
+import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.Image;
 import com.google.gwt.user.client.ui.UIObject;
+
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
 import org.ovirt.engine.ui.common.CommonApplicationResources;
 import org.ovirt.engine.ui.common.widget.HasDetachable;
+import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
 
 public abstract class BaseEntityModelDetachableWidget extends Composite 
implements HasDetachable {
 
     private static final CommonApplicationResources resource = 
GWT.create(CommonApplicationResources.class);
 
-    private Image attachedSeparatedImage;
+    @UiField(provided = true)
+    WidgetTooltip tooltip;
+
+    Image attachedSeparatedImage;
 
     private static final CommonApplicationConstants constants = 
GWT.create(CommonApplicationConstants.class);
 
@@ -28,10 +34,16 @@
 
     private UIObject decoratedWidget;
 
+    public BaseEntityModelDetachableWidget() {
+        this.tooltip = new WidgetTooltip();
+    }
+
     // can not be as a constructor because needs to be called after the 
widgets get bind properly in children
     protected void initialize(UIObject decoratedWidget, Image 
attachedSeparatedImage, BaseStyle style) {
         this.decoratedWidget = decoratedWidget;
         this.attachedSeparatedImage = attachedSeparatedImage;
+        this.tooltip.setWidget(attachedSeparatedImage);
+        this.tooltip.reconfigure();
         this.style = style;
 
         setAttached(true);
@@ -64,6 +76,8 @@
     @Override
     public void setAttached(boolean attached) {
         attachedSeparatedImage.setResource(attached ? resource.joinedIcon() : 
resource.separatedIcon());
-        attachedSeparatedImage.setTitle(attached ? 
constants.attachedToInstanceType() : constants.detachedFromInstanceType());
+
+        tooltip.setText(attached ? constants.attachedToInstanceType() : 
constants.detachedFromInstanceType());
+        tooltip.reconfigure();
     }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.ui.xml
index 9241a6c..c269997 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.ui.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui">
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
+    xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.tooltip">
 
     <ui:with field='resources' 
type='org.ovirt.engine.ui.common.CommonApplicationResources'/>
 
@@ -28,7 +29,9 @@
     <g:FlowPanel addStyleNames="{style.contentWrapper}">
         <g:Label ui:field="decorated"/>
         <g:FlowPanel addStyleNames="{style.image}">
-            <g:Image ui:field="attachedSeparatedImage" />
+            <t:WidgetTooltip ui:field="tooltip">
+                <g:Image ui:field="attachedSeparatedImage" />
+            </t:WidgetTooltip>
         </g:FlowPanel>
     </g:FlowPanel>
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.ui.xml
index f63d342..3df60df 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.ui.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
 <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
-             xmlns:w="urn:import:org.ovirt.engine.ui.common.widget">
+             xmlns:w="urn:import:org.ovirt.engine.ui.common.widget" 
xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.tooltip">
 
     <ui:with field='resources' 
type='org.ovirt.engine.ui.common.CommonApplicationResources' />
 
@@ -47,7 +47,9 @@
     <g:HTMLPanel ui:field="wrapperPanel" addStyleNames="{style.wrapper}">
         <g:FlowPanel ui:field="contentWrapper" 
addStyleNames="{style.contentWrapper}">
             <g:FlowPanel addStyleNames="{style.image}">
-                <g:Image ui:field="attachedSeparatedImage" />
+                <t:WidgetTooltip ui:field="tooltip">
+                    <g:Image ui:field="attachedSeparatedImage" />
+                </t:WidgetTooltip>
             </g:FlowPanel>
 
             <g:SimplePanel ui:field="contentWidgetContainer" 
addStyleNames="{style.contentWidgetContainer}" />
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.ui.xml
index 4f91e3f..bf8ac62 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.ui.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui">
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui"
+    xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.tooltip">
 
     <ui:with field='resources' 
type='org.ovirt.engine.ui.common.CommonApplicationResources' />
 
@@ -54,7 +55,9 @@
 
         <g:FlowPanel ui:field="contentWrapper" 
addStyleNames="{style.contentWrapper}">
             <g:FlowPanel addStyleNames="{style.image}">
-                <g:Image ui:field="attachedSeparatedImage" />
+                <t:WidgetTooltip ui:field="tooltip">
+                    <g:Image ui:field="attachedSeparatedImage" />
+                </t:WidgetTooltip>
             </g:FlowPanel>
 
             <g:SimplePanel ui:field="contentWidgetContainer"  />
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/form/key_value/KeyValueLineWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/form/key_value/KeyValueLineWidget.java
index b999bb3..cb648a8 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/form/key_value/KeyValueLineWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/form/key_value/KeyValueLineWidget.java
@@ -104,6 +104,7 @@
         if (selectedKey == null) {
             selectedKey = "";
         }
+        // TODO tt Element is not a Widget, so have to use ElementTooltip on it
         keyField.getElement().setTitle(selectedKey);
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/TextBoxLabelBase.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/TextBoxLabelBase.java
index 06bc208..7185918 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/TextBoxLabelBase.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/label/TextBoxLabelBase.java
@@ -27,7 +27,6 @@
 public abstract class TextBoxLabelBase<T> extends ValueBoxBase<T> {
 
     private T value;
-    private String tooltipCaption;
 
     private TextBoxLabelBase(Renderer<T> renderer, Parser<T> parser) {
         super(Document.get().createTextInputElement(), renderer, parser);
@@ -56,11 +55,6 @@
     @Override
     public void setText(String text) {
         super.setText(text);
-        String renderedText = text;
-        if (getTooltipCaption() != null) {
-            renderedText = getTooltipCaption() + ": " + renderedText; 
//$NON-NLS-1$
-        }
-        setTitle(renderedText);
     }
 
     @Override
@@ -86,14 +80,4 @@
             }
         }, MouseDownEvent.getType());
     }
-
-    public String getTooltipCaption() {
-        return tooltipCaption;
-    }
-
-    public void setTooltipCaption(String tooltipCaption) {
-        this.tooltipCaption = tooltipCaption;
-    }
-
-
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/refresh/BaseRefreshPanel.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/refresh/BaseRefreshPanel.java
index 1efed3d..cf924b1 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/refresh/BaseRefreshPanel.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/refresh/BaseRefreshPanel.java
@@ -290,6 +290,7 @@
     }
 
     public void showStatus(String status) {
+        // TODO tt Element is not a Widget, so have to use ElementTooltip on it
         setTitle(status);
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/cell/LinkCell.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/cell/LinkCell.java
index abf107a..b1e064e 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/cell/LinkCell.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/cell/LinkCell.java
@@ -32,7 +32,7 @@
     public void render(Context context, String value, SafeHtmlBuilder sb, 
String id) {
         if (value != null) {
             sb.appendHtmlConstant("<a href='javascript:;' style='display: 
inline-block'>"); //$NON-NLS-1$
-            super.render(context, value, sb);
+            super.render(context, value, sb, id);
             sb.appendHtmlConstant("</a>"); //$NON-NLS-1$
         }
     }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tree/AbstractSubTabTree.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tree/AbstractSubTabTree.java
index bb07446..0f6cfa4 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tree/AbstractSubTabTree.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tree/AbstractSubTabTree.java
@@ -11,6 +11,7 @@
 import org.ovirt.engine.ui.common.CommonApplicationTemplates;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
 import org.ovirt.engine.ui.common.widget.label.TextBoxLabel;
+import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
@@ -36,6 +37,8 @@
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
 import com.google.gwt.user.client.ui.ValueLabel;
@@ -307,9 +310,30 @@
         addItemToPanel(panel, item, width);
     }
 
+    protected void addTextBoxToPanel(HorizontalPanel panel, WidgetTooltip 
item, String text, String width) {
+        Widget w = item.getWidget();
+        if (w instanceof Label) {
+            Label label = (Label) item.getWidget();
+            label.setText(text);
+            addItemToPanel(panel, item, width);
+        }
+        else if (w instanceof TextBoxLabel) {
+            TextBoxLabel label = (TextBoxLabel) item.getWidget();
+            label.setText(text);
+            addItemToPanel(panel, item, width);
+        }
+        else {
+            throw new ClassCastException("tooltipped label contains unknown 
Widget: " + w.getClass()); //$NON-NLS-1$
+        }
+    }
+
     protected <T> void addValueLabelToPanel(HorizontalPanel panel, 
ValueLabel<T> item, T value, String width) {
         item.setValue(value);
         addItemToPanel(panel, item, width);
+    }
+
+    protected void addItemToPanel(HorizontalPanel panel, IsWidget item, String 
width) {
+        addItemToPanel(panel, item.asWidget(), width);
     }
 
     protected void addItemToPanel(HorizontalPanel panel, Widget item, String 
width) {
@@ -325,6 +349,7 @@
         element.getStyle().setColor("#999999"); //$NON-NLS-1$
 
         if (getNodeDisabledTooltip() != null) {
+            // TODO tt Element is not a Widget, so have to use ElementTooltip 
on it
             element.setTitle(getNodeDisabledTooltip());
         }
     }
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 7ea440c..a6f68dc 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
@@ -964,7 +964,6 @@
 
         expander.initWithContent(expanderContent.getElement());
         
vcpusAdvancedParameterExpander.initWithContent(vcpusAdvancedParameterExpanderContent.getElement());
-        editPrestartedVmsEditor.setKeepTooltipOnSetEnabled(true);
 
         applyStyles();
 
@@ -1068,9 +1067,6 @@
     protected void initPoolSpecificWidgets(CommonApplicationResources 
resources,
             final CommonApplicationMessages messages) {
         createNumOfDesktopEditors();
-
-        incraseNumOfVmsEditor.setKeepTooltipOnSetEnabled(true);
-        numOfVmsEditor.setKeepTooltipOnSetEnabled(true);
 
         newPoolPrestartedVmsIcon =
                 new 
InfoIcon(applicationTemplates.italicText(messages.prestartedHelp()), resources);
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmInitWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmInitWidget.java
index 7f604cf..cfc8305 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmInitWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmInitWidget.java
@@ -423,9 +423,9 @@
         sysprepDomainEditor.setLabel(constants.domainVmPopup());
         inputLocaleEditor.setLabel(constants.inputLocaleLabel());
         uiLanguageEditor.setLabel(constants.uiLanguageLabel());
-        sysprepScriptEditor.setTitle(constants.sysprepLabel());
+        sysprepScriptEditor.setWidgetTooltip(constants.sysprepLabel());
         activeDirectoryOUEditor.setLabel(constants.activeDirectoryOU());
-        activeDirectoryOUEditor.setTitle(constants.activeDirectoryOUToolTip());
+        
activeDirectoryOUEditor.setWidgetTooltip(constants.activeDirectoryOUToolTip());
         systemLocaleEditor.setLabel(constants.systemLocaleLabel());
         userLocaleEditor.setLabel(constants.userLocaleLabel());
         userNameEditor.setLabel(constants.cloudInitUserNameLabel());
@@ -460,28 +460,29 @@
         dnsServers.setLabel(constants.cloudInitDnsServersLabel());
         dnsSearchDomains.setLabel(constants.cloudInitDnsSearchDomainsLabel());
 
-        hostnameEditor.setTitle(constants.cloudInitHostnameToolTip());
-        windowsHostnameEditor.setTitle(constants.cloudInitHostnameToolTip());
-        
authorizedKeysEditor.setTitle(constants.cloudInitAuthorizedKeysToolTip());
-        
cloudInitPasswordSetEditor.setTitle(constants.vmInitPasswordSetToolTip());
-        
sysprepPasswordSetEditor.setTitle(constants.vmInitPasswordSetToolTip());
-        customScriptEditor.setTitle(constants.customScriptToolTip());
-        
regenerateKeysEnabledEditor.setTitle(constants.cloudInitRegenerateKeysToolTip());
-        timeZoneEditor.setTitle(constants.cloudInitTimeZoneToolTip());
-        
cloudInitRootPasswordEditor.setTitle(constants.cloudInitRootPasswordToolTip());
-        
cloudInitRootPasswordVerificationEditor.setTitle(constants.cloudInitRootPasswordVerificationToolTip());
-        
sysprepAdminPasswordEditor.setTitle(constants.sysprepAdminPasswordToolTip());
-        
sysprepAdminPasswordVerificationEditor.setTitle(constants.sysprepAdminPasswordVerificationToolTip());
+        hostnameEditor.setWidgetTooltip(constants.cloudInitHostnameToolTip());
+        
windowsHostnameEditor.setWidgetTooltip(constants.cloudInitHostnameToolTip());
+        
authorizedKeysEditor.setWidgetTooltip(constants.cloudInitAuthorizedKeysToolTip());
+        
cloudInitPasswordSetEditor.setWidgetTooltip(constants.vmInitPasswordSetToolTip());
+        
sysprepPasswordSetEditor.setWidgetTooltip(constants.vmInitPasswordSetToolTip());
+        customScriptEditor.setWidgetTooltip(constants.customScriptToolTip());
+        
regenerateKeysEnabledEditor.setWidgetTooltip(constants.cloudInitRegenerateKeysToolTip());
+        timeZoneEditor.setWidgetTooltip(constants.cloudInitTimeZoneToolTip());
+        
cloudInitRootPasswordEditor.setWidgetTooltip(constants.cloudInitRootPasswordToolTip());
+        
cloudInitRootPasswordVerificationEditor.setWidgetTooltip(constants.cloudInitRootPasswordVerificationToolTip());
+        
sysprepAdminPasswordEditor.setWidgetTooltip(constants.sysprepAdminPasswordToolTip());
+        
sysprepAdminPasswordVerificationEditor.setWidgetTooltip(constants.sysprepAdminPasswordVerificationToolTip());
 
-        networkListEditor.setTitle(constants.cloudInitNetworkToolTip());
-        networkNameEditor.setTitle(constants.cloudInitNetworkToolTip());
-        
networkBootProtocolEditor.setTitle(constants.cloudInitNetworkBootProtocolToolTip());
-        
networkIpAddressEditor.setTitle(constants.cloudInitNetworkIpAddressToolTip());
-        
networkNetmaskEditor.setTitle(constants.cloudInitNetworkNetmaskToolTip());
-        
networkGatewayEditor.setTitle(constants.cloudInitNetworkGatewayToolTip());
-        
networkStartOnBootEditor.setTitle(constants.cloudInitNetworkStartOnBootToolTip());
-        dnsServers.setTitle(constants.cloudInitDnsServersToolTip());
-        
dnsSearchDomains.setTitle(constants.cloudInitDnsSearchDomainsToolTip());
+        
networkListEditor.setWidgetTooltip(constants.cloudInitNetworkToolTip());
+        // TODO tt doesn't work on networkNameEditor. gets stuck open.
+        // 
networkNameEditor.setWidgetTooltip(constants.cloudInitNetworkToolTip());
+        
networkBootProtocolEditor.setWidgetTooltip(constants.cloudInitNetworkBootProtocolToolTip());
+        
networkIpAddressEditor.setWidgetTooltip(constants.cloudInitNetworkIpAddressToolTip());
+        
networkNetmaskEditor.setWidgetTooltip(constants.cloudInitNetworkNetmaskToolTip());
+        
networkGatewayEditor.setWidgetTooltip(constants.cloudInitNetworkGatewayToolTip());
+        
networkStartOnBootEditor.setWidgetTooltip(constants.cloudInitNetworkStartOnBootToolTip());
+        dnsServers.setWidgetTooltip(constants.cloudInitDnsServersToolTip());
+        
dnsSearchDomains.setWidgetTooltip(constants.cloudInitDnsSearchDomainsToolTip());
 
         
networkExpander.setTitleWhenExpended(constants.cloudInitNetworskLabel());
         
networkExpander.setTitleWhenCollapsed(constants.cloudInitNetworskLabel());
@@ -614,7 +615,7 @@
             public void eventRaised(Event<? extends PropertyChangedEventArgs> 
ev, Object sender, PropertyChangedEventArgs args) {
                 String propName = args.propertyName;
                 if ("IsChangable".equals(propName)) { //$NON-NLS-1$
-                    cloudInitPasswordSetEditor.setTitle(
+                    cloudInitPasswordSetEditor.setWidgetTooltip(
                             model.getCloudInitPasswordSet().getIsChangable() ?
                             constants.vmInitPasswordSetToolTip() : 
constants.vmInitPasswordNotSetToolTip()
                     );
@@ -627,7 +628,7 @@
             public void eventRaised(Event<? extends PropertyChangedEventArgs> 
ev, Object sender, PropertyChangedEventArgs args) {
                 String propName = args.propertyName;
                 if ("IsChangable".equals(propName)) { //$NON-NLS-1$
-                    sysprepPasswordSetEditor.setTitle(
+                    sysprepPasswordSetEditor.setWidgetTooltip(
                             model.getSysprepPasswordSet().getIsChangable() ?
                             constants.vmInitPasswordSetToolTip() : 
constants.vmInitPasswordNotSetToolTip()
                     );
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/AbstractSanStorageList.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/AbstractSanStorageList.java
index 069ff69..9612c84 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/AbstractSanStorageList.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/AbstractSanStorageList.java
@@ -145,6 +145,7 @@
         for (String reason : grayOutReasons) {
             title.append(reason).append(constants.space());
         }
+        // TODO tt Element not a Widget, need ElementTooltip here
         input.setTitle(title.toString());
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmDiskListModelTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmDiskListModelTable.java
index 0b4f53c..7c595d8 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmDiskListModelTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmDiskListModelTable.java
@@ -82,7 +82,7 @@
                         && !getModel().getIsDiskHotPlugSupported()) {
                     return constants.diskHotPlugNotSupported();
                 } else {
-                    return this.getTitle();
+                    return this.getText();
                 }
             }
         };
@@ -102,7 +102,7 @@
                     return constants.diskHotPlugNotSupported();
                 }
                 else {
-                    return this.getTitle();
+                    return this.getText();
                 }
             }
         };
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
index b6b64b1e..61ad614 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmSnapshotListModelTable.java
@@ -211,7 +211,7 @@
                             
commandVersionsInfo.getClusterVersion().toString(2) : ""; //$NON-NLS-1$
                     return messages.cloneVmNotSupported(minimalClusterVersion);
                 } else {
-                    return this.getTitle();
+                    return this.getText();
                 }
             }
         });
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicListItemView.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicListItemView.java
index cf1240c..a4b1402 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicListItemView.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicListItemView.java
@@ -163,7 +163,7 @@
 
     @Override
     public void updateRunButton(UICommand command, boolean isPool) {
-        runButton.setTitle(isPool ? constants.takeVm() : constants.runVm());
+        runButton.setTooltipText(isPool ? constants.takeVm() : 
constants.runVm());
         updateButton(runButton, command);
     }
 
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/DoublePercentageProgressBar.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/DoublePercentageProgressBar.java
index 340af6b..5e6e0db 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/DoublePercentageProgressBar.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/DoublePercentageProgressBar.java
@@ -1,11 +1,13 @@
 package org.ovirt.engine.ui.userportal.widget;
 
 import org.ovirt.engine.ui.common.idhandler.HasElementId;
+import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.editor.client.IsEditor;
 import com.google.gwt.editor.client.adapters.TakesValueEditor;
 import com.google.gwt.resources.client.CssResource;
+import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.TakesValue;
@@ -17,9 +19,10 @@
 public class DoublePercentageProgressBar extends Composite implements 
IsEditor<TakesValueEditor<Object>>, TakesValue<Object>, HasElementId {
 
     private static final String ZERO = "0%"; //$NON-NLS-1$
-    private String title;
     private static final int FULL_WIDTH = 99;
     private static final int MINIMUM_SIZE_TO_SHOW_TEXT = 10;
+
+    protected WidgetTooltip tooltip;
 
     interface WidgetUiBinder extends UiBinder<Widget, 
DoublePercentageProgressBar> {
         WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
@@ -27,6 +30,7 @@
 
     public DoublePercentageProgressBar() {
         initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
+        this.tooltip = new WidgetTooltip(percentageBarA);
     }
 
     private Integer valueA;
@@ -46,6 +50,8 @@
 
     @UiField
     FlowPanel percentageBarB;
+
+    private SafeHtml tooltipText;
 
     @Override
     public void setValue(Object value) {
@@ -69,7 +75,8 @@
         percentageBarB.setVisible(false);
         percentageBarB.setWidth("0px"); //$NON-NLS-1$
         percentageBarA.setVisible(true);
-        percentageBarA.setTitle(title);
+        tooltip.setText(tooltipText.toString());
+        tooltip.reconfigure();
         percentageBarA.setStyleName(style.empty());
         percentageBarA.setWidth(FULL_WIDTH + "%"); //$NON-NLS-1$
         percentageLabelA.setText(ZERO);
@@ -139,9 +146,7 @@
         String percentageLabel();
     }
 
-    @Override
-    public void setTitle(String title) {
-        this.title = title;
-        super.setTitle(title);
+    public void setTooltipText(SafeHtml tooltipText) {
+        this.tooltipText = tooltipText;
     }
 }
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaCPUProgressBar.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaCPUProgressBar.java
index 7874e28..ef97879 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaCPUProgressBar.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaCPUProgressBar.java
@@ -24,7 +24,7 @@
     @Override
     protected SafeHtml getTooltip() {
         if (quotaUsagePerUser.getVcpuLimit() == UNLIMITED) {
-            return EMPTY_HTML;
+            return null;
         }
         return 
templateWithLabels(String.valueOf(quotaUsagePerUser.getVcpuLimit()),
                 (int) (quotaUsagePerUser.getOthersVcpuUsagePercentage() + 
quotaUsagePerUser.getUserVcpuUsagePercentage()),
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaMemoryProgressBar.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaMemoryProgressBar.java
index 7cde26d..855289b 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaMemoryProgressBar.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaMemoryProgressBar.java
@@ -31,7 +31,7 @@
     @Override
     protected SafeHtml getTooltip() {
         if (quotaUsagePerUser.getMemoryLimit() == UNLIMITED) {
-            return EMPTY_HTML;
+            return null;
         }
         return 
templateWithLabels(renderMemory(quotaUsagePerUser.getMemoryLimit()),
                 (int) (quotaUsagePerUser.getOthersMemoryUsagePercentage() + 
quotaUsagePerUser.getUserMemoryUsagePercentage()),
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaProgressBar.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaProgressBar.java
index e66dc27..a2d9d0e 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaProgressBar.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaProgressBar.java
@@ -1,51 +1,32 @@
 package org.ovirt.engine.ui.userportal.widget;
 
 import org.ovirt.engine.core.common.businessentities.QuotaUsagePerUser;
-import org.ovirt.engine.ui.common.utils.PopupUtils;
+import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
 import org.ovirt.engine.ui.userportal.ApplicationConstants;
 import org.ovirt.engine.ui.userportal.ApplicationTemplates;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.HasMouseOutHandlers;
-import com.google.gwt.event.dom.client.HasMouseOverHandlers;
-import com.google.gwt.event.dom.client.MouseOutEvent;
-import com.google.gwt.event.dom.client.MouseOutHandler;
-import com.google.gwt.event.dom.client.MouseOverEvent;
-import com.google.gwt.event.dom.client.MouseOverHandler;
-import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.safehtml.shared.SafeHtml;
-import com.google.gwt.user.client.ui.DecoratedPopupPanel;
-import com.google.gwt.user.client.ui.HTML;
 
-public abstract class QuotaProgressBar extends DoublePercentageProgressBar 
implements HasMouseOutHandlers, HasMouseOverHandlers, MouseOutHandler, 
MouseOverHandler {
+public abstract class QuotaProgressBar extends DoublePercentageProgressBar {
 
     public static final int UNLIMITED = -1;
     private static final ApplicationConstants constants = 
GWT.create(ApplicationConstants.class);
-    protected static final SafeHtml EMPTY_HTML = new SafeHtml() {
-        @Override
-        public String asString() {
-            return ""; //$NON-NLS-1$
-        }
-    };
-    private final HTML tooltip = new HTML();
-    private final DecoratedPopupPanel tooltipPanel = new DecoratedPopupPanel();
+
     private final ApplicationTemplates templates = 
GWT.create(ApplicationTemplates.class);
 
     protected QuotaUsagePerUser quotaUsagePerUser;
 
+    protected WidgetTooltip tooltip;
+
     public QuotaProgressBar(QuotaUsagePerUser quotaUsagePerUser) {
+        this();
         setQuotaUsagePerUser(quotaUsagePerUser);
-        initToolTip();
     }
 
     public QuotaProgressBar() {
-        initToolTip();
-    }
-
-    private void initToolTip() {
-        tooltipPanel.setWidget(tooltip);
-        addMouseOutHandler(this);
-        addMouseOverHandler(this);
+        super();
+        tooltip = new WidgetTooltip(this);
     }
 
     public void setQuotaUsagePerUser(QuotaUsagePerUser quotaUsagePerUser) {
@@ -98,30 +79,10 @@
             setValueB(userConsumptionPercent);
             setBars();
         }
-    }
 
-    @Override
-    public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
-        return addDomHandler(handler, MouseOutEvent.getType());
-    }
-
-    @Override
-    public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
-        return addDomHandler(handler, MouseOverEvent.getType());
-    }
-
-    @Override
-    public void onMouseOut(MouseOutEvent event) {
-        tooltipPanel.hide(true);
-    }
-
-    @Override
-    public void onMouseOver(MouseOverEvent event) {
-        SafeHtml tooltipHtml = getTooltip();
-        if (!"".equals(tooltipHtml.asString())) { //$NON-NLS-1$
-            tooltip.setHTML(tooltipHtml);
-            PopupUtils.adjustPopupLocationToFitScreenAndShow(tooltipPanel, 
event.getClientX(), event.getClientY() + 20);
-        }
+        // update tooltip
+        tooltip.setText(getTooltip().asString());
+        tooltip.reconfigure();
     }
 
     protected abstract SafeHtml getTooltip();
@@ -138,9 +99,4 @@
                 constants.freeQuota(), freePercentage, free);
     }
 
-    @Override
-    protected void onDetach() {
-        super.onDetach();
-        tooltipPanel.hide(true);
-    }
 }
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaStorageProgressBar.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaStorageProgressBar.java
index c8b9fbe..ac05a32 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaStorageProgressBar.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/QuotaStorageProgressBar.java
@@ -29,7 +29,7 @@
     @Override
     protected SafeHtml getTooltip() {
         if (quotaUsagePerUser.getStorageLimit() == UNLIMITED) {
-            return EMPTY_HTML;
+            return null;
         }
         return 
templateWithLabels(renderStorage(quotaUsagePerUser.getStorageLimit()),
                 (int) (quotaUsagePerUser.getOthersStorageUsagePercentage() + 
quotaUsagePerUser.getUserStorageUsagePercentage()),
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/basic/MainTabBasicListItemActionButton.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/basic/MainTabBasicListItemActionButton.java
index 62e08f7..907b67a 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/basic/MainTabBasicListItemActionButton.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/basic/MainTabBasicListItemActionButton.java
@@ -29,10 +29,11 @@
     @UiField
     Panel stylableButtonHolder;
 
-    public MainTabBasicListItemActionButton(String title, ImageResource 
enabledImage, ImageResource disabledImage,
+    public MainTabBasicListItemActionButton(String tooltipText, ImageResource 
enabledImage, ImageResource disabledImage,
             String additionalStyle) {
+        super();
         initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
-        setTitle(title);
+        setTooltipText(tooltipText);
         
setEnabledHtml(SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(enabledImage).getHTML()));
         
setDisabledHtml(SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(disabledImage).getHTML()));
         stylableButtonHolder.addStyleName(additionalStyle);
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/footer/TasksTree.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/footer/TasksTree.java
index a95b517..2f2f359 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/footer/TasksTree.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/footer/TasksTree.java
@@ -9,6 +9,7 @@
 import org.ovirt.engine.ui.common.CommonApplicationResources;
 import org.ovirt.engine.ui.common.CommonApplicationTemplates;
 import org.ovirt.engine.ui.common.widget.label.TextBoxLabel;
+import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
 import org.ovirt.engine.ui.common.widget.tree.AbstractSubTabTree;
 import org.ovirt.engine.ui.uicommonweb.models.events.TaskListModel;
 import org.ovirt.engine.ui.webadmin.widget.label.FullDateTimeLabel;
@@ -46,10 +47,13 @@
         addValueLabelToPanel(panel, new FullDateTimeLabel(), 
task.getStartTime(), "150px"); //$NON-NLS-1$
         addTextBoxToPanel(panel, new TextBoxLabel(), task.getEndTime() == null 
? "" : constants.untilEndTime(), "80px"); //$NON-NLS-1$ //$NON-NLS-2$
         addValueLabelToPanel(panel, new FullDateTimeLabel(), 
task.getEndTime(), "150px"); //$NON-NLS-1$
-        TextBoxLabel corrIdTextBoxLabel = new TextBoxLabel();
-        corrIdTextBoxLabel.setTooltipCaption(constants.correltaionIdEvent());
+
+        WidgetTooltip corrIdTextBoxLabelTooltip = new WidgetTooltip(new 
TextBoxLabel());
+        corrIdTextBoxLabelTooltip.setText(constants.correltaionIdEvent());
+        corrIdTextBoxLabelTooltip.reconfigure();
+
         addTextBoxToPanel(panel,
-                corrIdTextBoxLabel,
+                corrIdTextBoxLabelTooltip,
                 task.getCorrelationId() != null && 
task.getCorrelationId().startsWith(TaskListModel._WEBADMIN_) ? 
task.getCorrelationId()
                         .split("_")[2] : task.getCorrelationId(), "100px"); 
//$NON-NLS-1$ //$NON-NLS-2$
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/cell/MenuCell.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/cell/MenuCell.java
index 5749f68..dc02481 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/cell/MenuCell.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/cell/MenuCell.java
@@ -91,7 +91,7 @@
     }
 
     public void addMenuItem(final ActionButtonDefinition<T> buttonDef) {
-        final MenuItem menuItem = new MenuItem(buttonDef.getTitle(), new 
Command() {
+        final MenuItem menuItem = new MenuItem(buttonDef.getText(), new 
Command() {
             @Override
             public void execute() {
                 menuPanelPopup.asPopupPanel().hide();


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

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