Vojtech Szocs has uploaded a new change for review.

Change subject: webadmin: Fix missing sub tab panel
......................................................................

webadmin: Fix missing sub tab panel

In order for sub tab presenters and their parent presenters
to receive proper (consistent) life-cycle callbacks, we must
clear sub tab panel slot in MainContentPresenter when hiding
the sub tab panel from the view.

If we don't do the above, MainContentPresenter's sub tab panel
slot will still be occupied with obsolete sub tab presenter,
which will mess up sub tab presenter life-cycle callbacks,
such as onReveal not called each time when sub tab view is
shown in the view.

Change-Id: Ifc67def5083889deb360c9d48adf4d9e3b6786a9
Bug-Url: https://bugzilla.redhat.com/964949
Signed-off-by: Vojtech Szocs <vsz...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractSubTabPresenter.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractMainTabWithDetailsPresenter.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractSubTabPanelPresenter.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/MainContentPresenter.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabEventPresenter.java
5 files changed, 18 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/57/14957/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractSubTabPresenter.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractSubTabPresenter.java
index 74b29b0..9e9ec1d 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractSubTabPresenter.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractSubTabPresenter.java
@@ -150,7 +150,7 @@
         }
     }
 
-    boolean hasMainTabSelection() {
+    protected boolean hasMainTabSelection() {
         return mainTabSelectedItems != null && !mainTabSelectedItems.isEmpty();
     }
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractMainTabWithDetailsPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractMainTabWithDetailsPresenter.java
index 513d9eb..3f91f8e 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractMainTabWithDetailsPresenter.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractMainTabWithDetailsPresenter.java
@@ -52,16 +52,16 @@
                         // Let others know that the table selection has changed
                         fireTableSelectionChangeEvent();
 
-                        onSelection();
+                        // Reveal the appropriate place based on selection
+                        handlePlaceTransition();
                     }
                 }));
     }
 
-    protected void onSelection() {
-
-        // Reveal the appropriate place based on selection
+    protected void handlePlaceTransition() {
         if (hasSelection()) {
-            // Sub tab panel is shown upon revealing the sub tab
+            // Sub tab panel is shown upon revealing the sub tab, in order to 
avoid
+            // the 'flicker' effect due to the panel still showing previous 
content
             placeManager.revealPlace(getSubTabRequest());
         } else {
             // Hide sub tab panel when there is nothing selected
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractSubTabPanelPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractSubTabPanelPresenter.java
index 8477e47..c996768 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractSubTabPanelPresenter.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/AbstractSubTabPanelPresenter.java
@@ -35,7 +35,9 @@
     @Override
     protected void onReveal() {
         super.onReveal();
+
         // Show sub tab panel when revealing sub tab presenter
         UpdateMainContentLayoutEvent.fire(this, true);
     }
+
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/MainContentPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/MainContentPresenter.java
index 9df8bf1..d9d3902 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/MainContentPresenter.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/MainContentPresenter.java
@@ -45,7 +45,13 @@
 
     @ProxyEvent
     public void onUpdateMainContentLayout(UpdateMainContentLayoutEvent event) {
-        getView().setSubTabPanelVisible(event.isSubTabPanelVisible());
+        boolean subTabPanelVisible = event.isSubTabPanelVisible();
+        getView().setSubTabPanelVisible(subTabPanelVisible);
+
+        if (!subTabPanelVisible) {
+            // Clear sub tab panel slot to ensure consistent sub tab presenter 
lifecycle
+            clearSlot(TYPE_SetSubTabPanelContent);
+        }
     }
 
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabEventPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabEventPresenter.java
index de1b000..9a70e45 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabEventPresenter.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabEventPresenter.java
@@ -70,6 +70,8 @@
     }
 
     @Override
-    protected void onSelection() {
+    protected void handlePlaceTransition() {
+        // No-op, Event main tab has no sub tabs
     }
+
 }


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

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