From fdf2f0299cdfa37dbbf45ff58aff2090d4742f79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Tak=C3=A1cs?= <93127072+PeterTakacs300@users.noreply.github.com> Date: Thu, 13 Apr 2023 16:45:44 +0200 Subject: [PATCH] IDEMPIERE-5664 - Report Renderer can Overwrite any Current Tab (#1777) * IDEMPIERE-5664 - Report Renderer can Overwrite any Current Tab * IDEMPIERE-5664 - fix issue on close - do not render the report if the tab is not found (e.g. closed already) * IDEMPIERE-5664 - pr1777 patch --- .../adempiere/webui/desktop/TabbedDesktop.java | 17 +++++++++++++---- .../adempiere/webui/part/WindowContainer.java | 6 ++++-- .../adempiere/webui/window/ZkReportViewer.java | 8 ++++---- .../webui/window/ZkReportViewerProvider.java | 17 +++++++++-------- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/TabbedDesktop.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/TabbedDesktop.java index 36410474a3..26adc13e8a 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/TabbedDesktop.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/TabbedDesktop.java @@ -274,12 +274,21 @@ public abstract class TabbedDesktop extends AbstractDesktop { String title = window.getTitle(); window.setTitle(null); preOpenNewTab(); - if (Window.INSERT_NEXT.equals(window.getAttribute(Window.INSERT_POSITION_KEY))) + if (Window.INSERT_NEXT.equals(window.getAttribute(Window.INSERT_POSITION_KEY))) { windowContainer.insertAfter(windowContainer.getSelectedTab(), tabPanel, title, true, true, null); - else if(Window.REPLACE.equals(window.getAttribute(Window.INSERT_POSITION_KEY))) - windowContainer.replace(windowContainer.getSelectedTab(), window, title); - else + } + else if(Window.REPLACE.equals(window.getAttribute(Window.INSERT_POSITION_KEY))) { + Tab refTab = windowContainer.getSelectedTab(); + Object windowNoAttribute = window.getAttribute(WindowContainer.REPLACE_WINDOW_NO); + if (windowNoAttribute != null && windowNoAttribute instanceof Integer) { + int windowNo = (Integer)windowNoAttribute; + refTab = windowContainer.getTab(windowNo); + } + windowContainer.replace(refTab, window, title); + } + else { windowContainer.addWindow(tabPanel, title, true, null); + } if (window instanceof IHelpContext) Events.sendEvent(new Event(WindowContainer.ON_WINDOW_CONTAINER_SELECTION_CHANGED_EVENT, window)); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/part/WindowContainer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/part/WindowContainer.java index 4e10a96e54..5cebdfc278 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/part/WindowContainer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/part/WindowContainer.java @@ -74,6 +74,8 @@ public class WindowContainer extends AbstractUIPart implements EventListener childrens = panels.getChildren(); for (Object child : childrens) @@ -647,7 +649,7 @@ public class WindowContainer extends AbstractUIPart implements EventListener, ITab ZKUpdateUtil.setHeight(findWindow, "100%"); else ZKUpdateUtil.setHeight(findWindow, "60%"); - findWindow.setSizable(false); - findWindow.setContentStyle("background-color: #fff; width: 99%; margin: auto;"); - } -} + findWindow.setSizable(false); + findWindow.setContentStyle("background-color: #fff; width: 99%; margin: auto;"); + } +} diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewerProvider.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewerProvider.java index dcd0ff32be..9897fa5677 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewerProvider.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewerProvider.java @@ -48,14 +48,15 @@ public class ZkReportViewerProvider implements ReportViewerProvider { } protected void openReportViewWindow (ReportEngine report) { - Window viewer = new ZkReportViewer(report, report.getName()); + ZkReportViewer viewer = new ZkReportViewer(report, report.getName()); - viewer.setAttribute(Window.MODE_KEY, Window.MODE_EMBEDDED); - viewer.setAttribute(Window.INSERT_POSITION_KEY, Window.INSERT_NEXT); - if(report.isReplaceTabContent()) - viewer.setAttribute(Window.INSERT_POSITION_KEY, Window.REPLACE); - - viewer.setAttribute(WindowContainer.DEFER_SET_SELECTED_TAB, Boolean.TRUE); - SessionManager.getAppDesktop().showWindow(viewer); + viewer.setAttribute(Window.MODE_KEY, Window.MODE_EMBEDDED); + viewer.setAttribute(Window.INSERT_POSITION_KEY, Window.INSERT_NEXT); + if(report.isReplaceTabContent()) { + viewer.setAttribute(Window.INSERT_POSITION_KEY, Window.REPLACE); + viewer.setAttribute(WindowContainer.REPLACE_WINDOW_NO, report.getWindowNo()); + } + viewer.setAttribute(WindowContainer.DEFER_SET_SELECTED_TAB, Boolean.TRUE); + SessionManager.getAppDesktop().showWindow(viewer); } } \ No newline at end of file