From e4808398c95f16574ea93e9a8ef8a1afd055772f Mon Sep 17 00:00:00 2001 From: hengsin Date: Fri, 13 Sep 2024 03:08:45 +0800 Subject: [PATCH] IDEMPIERE-6225 Improve IsSingleRow logic when opening 1 record (#2454) --- .../webui/adwindow/AbstractADWindowContent.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 856681fdb4..2dc3e8ab74 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 @@ -34,6 +34,7 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.TreeMap; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Level; import java.util.stream.Collectors; @@ -700,6 +701,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements final GridTab gTab = gridWindow.getTab(tabIndex); Env.setContext(ctx, curWindowNo, tabIndex, GridTab.CTX_TabLevel, Integer.toString(gTab.getTabLevel())); + AtomicBoolean zoomQuery = new AtomicBoolean(false); // Query first tab if (tabIndex == 0) { @@ -732,6 +734,8 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements initQueryOnNew(result); } + if (query != null && query == result) + zoomQuery.set(true); } }); @@ -774,6 +778,15 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements //fallback to ADTabpanel ADTabpanel fTabPanel = new ADTabpanel(); initTabPanel(query, tabIndex, gTab, fTabPanel); + // force single row mode for zoom query that return 1 record + if (query != null && zoomQuery.get()) + { + if (gTab.getRowCount() == 1 && !gTab.isNew() && adTabbox.getSelectedTabpanel().isGridView() + && adTabbox.getSelectedTabpanel().getGridTab() == gTab) + { + adTabbox.getSelectedTabpanel().switchRowPresentation(); + } + } } return gTab;