From 090893e051d3f23ec0eafcbed3f719f5d5b6b05b Mon Sep 17 00:00:00 2001 From: Diego Ruiz <12065321+d-ruiz@users.noreply.github.com> Date: Mon, 18 Jul 2022 15:23:50 +0200 Subject: [PATCH] =?UTF-8?q?IDEMPIERE-5177=20-=20Fiixed=20search=20in=20det?= =?UTF-8?q?ail=20broken=20after=20navigating=20betw=E2=80=A6=20(#1396)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * IDEMPIERE-5177 - Fiixed search in detail broken after navigating between master records * IDEMPIERE-5177 - Fixed search in detail broken after navigating between master records --- .../adwindow/AbstractADWindowContent.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index bb39c1ec65..9ebe799dfe 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -2305,9 +2305,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements private void doOnFind() { // Gets Fields from AD_Field_v GridField[] findFields = adTabbox.getSelectedGridTab().getFields(); - if (getCurrentFindWindow() == null || !getCurrentFindWindow().validate(adTabbox.getSelectedGridTab().getWindowNo(), adTabbox.getSelectedGridTab().getName(), - adTabbox.getSelectedGridTab().getAD_Table_ID(), adTabbox.getSelectedGridTab().getTableName(), - adTabbox.getSelectedGridTab().getWhereExtended(), findFields, 1, adTabbox.getSelectedGridTab().getAD_Tab_ID())) { + if (!isCurrentFindWindowValid()) { if (!getFindWindow(findFields)) return; } @@ -2370,6 +2368,22 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements showBusyMask(getCurrentFindWindow()); LayoutUtils.openEmbeddedWindow(toolbar, getCurrentFindWindow(), "after_start"); } + + /** + * Validates if the current FindWindow corresponds to the actve tab and record + * @return true if the current find window is good to use + */ + private boolean isCurrentFindWindowValid() { + GridField[] findFields = adTabbox.getSelectedGridTab().getFields(); + return getCurrentFindWindow() != null && getCurrentFindWindow().validate(adTabbox.getSelectedGridTab().getWindowNo(), + adTabbox.getSelectedGridTab().getName(), + adTabbox.getSelectedGridTab().getAD_Table_ID(), + adTabbox.getSelectedGridTab().getTableName(), + adTabbox.getSelectedGridTab().getWhereExtended(), + findFields, + 1, + adTabbox.getSelectedGridTab().getAD_Tab_ID()); + } @Override public void onIgnore() @@ -3200,10 +3214,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements public void doOnQueryChange() { // Gets Fields from AD_Field_v GridField[] findFields = adTabbox.getSelectedGridTab().getFields(); - if (getCurrentFindWindow() == null || !getCurrentFindWindow().validate(adTabbox.getSelectedGridTab().getWindowNo(), adTabbox.getSelectedGridTab().getName(), - adTabbox.getSelectedGridTab().getAD_Table_ID(), adTabbox.getSelectedGridTab().getTableName(), - adTabbox.getSelectedGridTab().getWhereExtended(), findFields, 1, adTabbox.getSelectedGridTab().getAD_Tab_ID())) { - + if (!isCurrentFindWindowValid()) { if (!getFindWindow(findFields)) return; } @@ -3944,9 +3955,8 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements } public boolean getFindWindow(GridField[] findFields) { - FindWindow findWindow; - if (tabFindWindowHashMap.get(adTabbox.getSelectedGridTab()) != null) { - findWindow = tabFindWindowHashMap.get(adTabbox.getSelectedGridTab()); + FindWindow findWindow = getCurrentFindWindow(); + if (findWindow != null && isCurrentFindWindowValid()) { toolbar.setSelectedUserQuery(findWindow.getAD_UserQuery_ID()); } else { findWindow = new FindWindow (adTabbox.getSelectedGridTab().getWindowNo(), adTabbox.getSelectedGridTab().getTabNo(), adTabbox.getSelectedGridTab().getName(),