From 4c9c52bca751e5cecc76a570dd988680badf8cd8 Mon Sep 17 00:00:00 2001 From: hieplq Date: Tue, 18 Jul 2017 21:03:28 +0700 Subject: [PATCH] IDEMPIERE-3426:improve tab behavior close by selected sequence confilix with close other tab menu --- .../WEB-INF/src/org/adempiere/webui/component/Tab.java | 2 +- .../WEB-INF/src/org/adempiere/webui/component/Tabbox.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Tab.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Tab.java index 30f383e3ea..b7fbe13ece 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Tab.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Tab.java @@ -180,7 +180,7 @@ public class Tab extends org.zkoss.zul.Tab } if (idTabbox != null && idTabbox.isActiveBySeq()) { - org.zkoss.zul.Tab nextActiveTab = idTabbox.getNextActiveBySeq(); + org.zkoss.zul.Tab nextActiveTab = idTabbox.getNextActiveBySeq(this); if (nextActiveTab != null) { nextActiveTab.setSelected(true); return nextActiveTab; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Tabbox.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Tabbox.java index ac897af16b..dadd2efade 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Tabbox.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Tabbox.java @@ -119,7 +119,7 @@ public class Tabbox extends org.zkoss.zul.Tabbox implements EventListener */ @Override public void setSelectedTab(Tab tab) { - if (getSelectedTab() != null) { + if (getSelectedTab() != null && getSelectedTab() != tab && isActiveBySeq()) {//DEFER SET SELECTED TAB activeTabSeq.push(getSelectedTab()); } super.setSelectedTab(tab); @@ -137,7 +137,7 @@ public class Tabbox extends org.zkoss.zul.Tabbox implements EventListener * select next active tab by order store on stack folow FILO * @return */ - public Tab getNextActiveBySeq () { + public Tab getNextActiveBySeq (Tab currentTab) { Tab cadidateTabActive = null; while ((cadidateTabActive = activeTabSeq.peek()) != null) { boolean canNotActive = cadidateTabActive.isDisabled() || !cadidateTabActive.isVisible(); @@ -145,7 +145,7 @@ public class Tabbox extends org.zkoss.zul.Tabbox implements EventListener // move disable item to last stack it can be active late cadidateTabActive = activeTabSeq.pop(); activeTabSeq.addLast(cadidateTabActive); - }else if (cadidateTabActive.getParent() == null) { + }else if (cadidateTabActive.getParent() == null || currentTab == cadidateTabActive) {// when call close other tab menu, remain tab = first tab on stack, so have to ignore it when find next tab activeTabSeq.pop();// this tab is close by code or by close at unselected state so just remove it from stack }else { return activeTabSeq.pop();