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