Vojtech Szocs has uploaded a new change for review.

Change subject: userportal: Fix nasty issue in MenuPanelPopup
......................................................................

userportal: Fix nasty issue in MenuPanelPopup

When running UserPortal in web (compiled) mode, a very
nasty issue occurs in MenuPanelPopup constructor. This
issue occurs *only* in web mode and causes UserPortal
login screen to hang after successful authentication.

JS stacktrace points to MenuPanelPopup using UiBinder:
- UiBinder-generated code does SimplePanel.add(widget)
  as per <g:SimplePanel> in MenuPanelPopup.ui.xml
- for some reason, 'widget' is an instance of
  DecoratedPopupPanel, instead of expected PopupPanel
- JS TypeError occurs with following message:
  DecoratedPopupPanel.decPanel field is not initialized

This patch fixes this issue by removing UiBinder usage
from MenuPanelPopup. This isn't a big deal, since
MenuPanelPopup uses UiBinder *only* to apply CSS styles,
its widgets are declared using @UiField(provided=true).

Change-Id: Ic3f9c3318234bb5315f950c0cba44e6eaa8cb24f
Bug-Url: https://bugzilla.redhat.com/992960
Signed-off-by: Vojtech Szocs <vsz...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/MenuPanelPopup.java
D 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/MenuPanelPopup.ui.xml
A 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/MenuPanelPopup.css
3 files changed, 52 insertions(+), 50 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/28/18228/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/MenuPanelPopup.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/MenuPanelPopup.java
index af63f4f..37e14cc 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/MenuPanelPopup.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/MenuPanelPopup.java
@@ -7,25 +7,34 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NodeList;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.resources.client.ClientBundle;
+import com.google.gwt.resources.client.CssResource;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.MenuItem;
 import com.google.gwt.user.client.ui.MenuItemSeparator;
-import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.SimplePanel;
 
 public class MenuPanelPopup extends Composite {
 
-    interface WidgetUiBinder extends UiBinder<Widget, MenuPanelPopup> {
-        WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
+    public interface Resources extends ClientBundle {
+
+        @Source("org/ovirt/engine/ui/common/css/MenuPanelPopup.css")
+        Style style();
+
     }
 
-    @UiField(provided = true)
-    PopupPanel panel;
+    public interface Style extends CssResource {
 
-    @UiField(provided = true)
-    MenuBar menu;
+        String actionPanelPopupPanel();
 
+        String actionPanelPopupMenuBar();
+
+    }
+
+    private static final Resources resources = GWT.create(Resources.class);
+
+    private final PopupPanel panel;
+    private final MenuBar menu;
 
     public MenuPanelPopup(boolean autoHide) {
         panel = new PopupPanel(autoHide);
@@ -44,8 +53,12 @@
                 return super.addSeparator(separator);
             }
         };
-        initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
         panel.setWidget(menu);
+        initWidget(new SimplePanel(panel));
+
+        resources.style().ensureInjected();
+        panel.setStylePrimaryName(resources.style().actionPanelPopupPanel());
+        menu.setStylePrimaryName(resources.style().actionPanelPopupMenuBar());
 
         NodeList<Element> table = 
menu.getElement().getElementsByTagName("table"); //$NON-NLS-1$
         table.getItem(0).getStyle().setProperty("width", "100%"); 
//$NON-NLS-1$ //$NON-NLS-2$
@@ -58,4 +71,5 @@
     public MenuBar getMenuBar() {
         return menu;
     }
+
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/MenuPanelPopup.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/MenuPanelPopup.ui.xml
deleted file mode 100644
index c747e43..0000000
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/MenuPanelPopup.ui.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<!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:style>
-               .actionPanelPopupMenuBar {
-               background-color: white;
-               border: 1px solid #96B7D6;
-               }
-
-               .actionPanelPopupPanel {
-               background-color: white;
-               }
-
-               @external .menuItem;
-               .menuItem {
-               color: black;
-               background-color: white;
-               cursor: pointer;
-               border-bottom: 1px solid #E0E9F2;
-               }
-
-               @external .menuItem-selected;
-               .menuItem-selected {
-               background-color: #E1E8F2;
-               }
-
-               @external .menuItem-disabled;
-               .menuItem-disabled {
-               color: #C0C0C0
-               }
-       </ui:style>
-
-       <g:SimplePanel>
-               <g:PopupPanel ui:field="panel" 
stylePrimaryName='{style.actionPanelPopupPanel}'>
-                       <g:MenuBar ui:field="menu" 
stylePrimaryName='{style.actionPanelPopupMenuBar}'>
-                       </g:MenuBar>
-               </g:PopupPanel>
-       </g:SimplePanel>
-
-</ui:UiBinder>
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/MenuPanelPopup.css
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/MenuPanelPopup.css
new file mode 100644
index 0000000..dd38fd3
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/css/MenuPanelPopup.css
@@ -0,0 +1,28 @@
+@external actionPanelPopupPanel;
+.actionPanelPopupPanel {
+       background-color: white;
+}
+
+@external actionPanelPopupMenuBar;
+.actionPanelPopupMenuBar {
+       background-color: white;
+       border: 1px solid #96B7D6;
+}
+
+@external menuItem;
+.menuItem {
+       color: black;
+       background-color: white;
+       cursor: pointer;
+       border-bottom: 1px solid #E0E9F2;
+}
+
+@external menuItem-selected;
+.menuItem-selected {
+       background-color: #E1E8F2;
+}
+
+@external menuItem-disabled;
+.menuItem-disabled {
+       color: #C0C0C0
+}
\ No newline at end of file


-- 
To view, visit http://gerrit.ovirt.org/18228
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic3f9c3318234bb5315f950c0cba44e6eaa8cb24f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Vojtech Szocs <vsz...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to