From 13e0c8e1a49d5bd5e931d5b5c719a1630bf5d7b8 Mon Sep 17 00:00:00 2001
From: PeterTakacs300 <93127072+PeterTakacs300@users.noreply.github.com>
Date: Fri, 13 May 2022 16:14:59 +0200
Subject: [PATCH] IDEMPIERE-5275 - Tabular Report Re-Query button/close
paramater window (#1306)
* IDEMPIERE-5275 - Tabular Report Re-Query button/close paramater window
* IDEMPIERE-5275 - fix bug with asynch. threads
* IDEMPIERE-5275 - BusyMask not showing correctly fix
* IDEMPIERE-5275 - icons added
* IDEMPIERE-5275 - sysconfig added
* IDEMPIERE-5275 - patch 1306_PeerReview applied
* IDEMPIERE-5275 - requested changes applied
* IDEMPIERE-5275 - small fixes
* IDEMPIERE-5275 - fixed wrong merge
---
.../oracle/202205120916_IDEMPIERE-5275.sql | 18 +++++
.../202205120916_IDEMPIERE-5275.sql | 15 +++++
.../src/org/compiere/model/MSysConfig.java | 3 +-
.../src/org/compiere/print/ReportEngine.java | 18 +++++
.../src/org/compiere/process/ProcessInfo.java | 21 +++++-
.../WEB-INF/src/metainfo/zk/lang-addon.xml | 3 +-
.../webui/apps/AbstractProcessDialog.java | 9 ++-
.../adempiere/webui/apps/ProcessDialog.java | 10 +--
.../webui/apps/ProcessModalDialog.java | 21 ++++++
.../org/adempiere/webui/component/Window.java | 2 +
.../webui/desktop/TabbedDesktop.java | 2 +
.../adempiere/webui/part/WindowContainer.java | 42 ++++++++++++
.../webui/window/ZkReportViewer.java | 63 +++++++++++++++++-
.../webui/window/ZkReportViewerProvider.java | 3 +
.../default/css/fragment/font-icons.css.dsp | 3 +
.../src/web/theme/default/images/ReRun10.png | Bin 0 -> 1016 bytes
.../src/web/theme/default/images/ReRun16.png | Bin 0 -> 1394 bytes
.../src/web/theme/default/images/ReRun24.png | Bin 0 -> 1990 bytes
.../src/web/theme/default/images/ReRun32.png | Bin 0 -> 2516 bytes
.../src/org/compiere/print/ReportCtl.java | 1 +
20 files changed, 221 insertions(+), 13 deletions(-)
create mode 100644 migration/iD10/oracle/202205120916_IDEMPIERE-5275.sql
create mode 100644 migration/iD10/postgresql/202205120916_IDEMPIERE-5275.sql
create mode 100644 org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun10.png
create mode 100644 org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun16.png
create mode 100644 org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun24.png
create mode 100644 org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun32.png
diff --git a/migration/iD10/oracle/202205120916_IDEMPIERE-5275.sql b/migration/iD10/oracle/202205120916_IDEMPIERE-5275.sql
new file mode 100644
index 0000000000..073f90a421
--- /dev/null
+++ b/migration/iD10/oracle/202205120916_IDEMPIERE-5275.sql
@@ -0,0 +1,18 @@
+-- IDEMPIERE-5275
+SELECT register_migration_script('202205120916_IDEMPIERE-5275.sql') FROM dual;
+
+SET SQLBLANKLINES ON
+SET DEFINE OFF
+
+-- May 12, 2022, 9:16:37 AM CEST
+INSERT INTO AD_SysConfig (AD_SysConfig_ID,AD_Client_ID,AD_Org_ID,Created,Updated,CreatedBy,UpdatedBy,IsActive,Name,Value,Description,EntityType,ConfigurationLevel,AD_SysConfig_UU) VALUES (200199,0,0,TO_TIMESTAMP('2022-05-12 09:16:36','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2022-05-12 09:16:36','YYYY-MM-DD HH24:MI:SS'),100,100,'Y','ZK_REPORT_TABLE_OPEN_IN_NEW_TAB','N','If set to ''N'', the report opens in the same tab, if ''Y'', it opens a new tab','D','C','7d2126fa-f45a-4aeb-ad0f-21c6e096a2c3')
+;
+
+-- May 12, 2022, 10:12:31 AM CEST
+INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('M','Run it again with new parameters',0,0,'Y',TO_TIMESTAMP('2022-05-12 10:12:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-05-12 10:12:31','YYYY-MM-DD HH24:MI:SS'),100,200750,'ReRun','D','144c6c0e-e253-459f-acda-c23f55fa1962')
+;
+
+-- May 12, 2022, 11:56:24 AM CEST
+INSERT INTO AD_ToolBarButton (AD_Client_ID,AD_Org_ID,Created,CreatedBy,ComponentName,IsActive,AD_ToolBarButton_ID,Name,Updated,UpdatedBy,IsCustomization,KeyStroke_KeyCode,KeyStroke_Modifiers,AD_ToolBarButton_UU,Action,IsAdvancedButton,IsAddSeparator,EntityType,IsShowMore) VALUES (0,0,TO_TIMESTAMP('2022-05-12 11:56:24','YYYY-MM-DD HH24:MI:SS'),100,'ReRun','Y',200120,'Report - ReRun',TO_TIMESTAMP('2022-05-12 11:56:24','YYYY-MM-DD HH24:MI:SS'),100,'N',0,0,'e4cf7b03-7c64-406d-a0bb-636618104786','R','N','N','D','N')
+;
+
diff --git a/migration/iD10/postgresql/202205120916_IDEMPIERE-5275.sql b/migration/iD10/postgresql/202205120916_IDEMPIERE-5275.sql
new file mode 100644
index 0000000000..9cf9772663
--- /dev/null
+++ b/migration/iD10/postgresql/202205120916_IDEMPIERE-5275.sql
@@ -0,0 +1,15 @@
+-- IDEMPIERE-5275
+SELECT register_migration_script('202205120916_IDEMPIERE-5275.sql') FROM dual;
+
+-- May 12, 2022, 9:16:37 AM CEST
+INSERT INTO AD_SysConfig (AD_SysConfig_ID,AD_Client_ID,AD_Org_ID,Created,Updated,CreatedBy,UpdatedBy,IsActive,Name,Value,Description,EntityType,ConfigurationLevel,AD_SysConfig_UU) VALUES (200199,0,0,TO_TIMESTAMP('2022-05-12 09:16:36','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2022-05-12 09:16:36','YYYY-MM-DD HH24:MI:SS'),100,100,'Y','ZK_REPORT_TABLE_OPEN_IN_NEW_TAB','N','If set to ''N'', the report opens in the same tab, if ''Y'', it opens a new tab','D','C','7d2126fa-f45a-4aeb-ad0f-21c6e096a2c3')
+;
+
+-- May 12, 2022, 10:12:31 AM CEST
+INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('M','Run it again with new parameters',0,0,'Y',TO_TIMESTAMP('2022-05-12 10:12:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2022-05-12 10:12:31','YYYY-MM-DD HH24:MI:SS'),100,200750,'ReRun','D','144c6c0e-e253-459f-acda-c23f55fa1962')
+;
+
+-- May 12, 2022, 11:56:24 AM CEST
+INSERT INTO AD_ToolBarButton (AD_Client_ID,AD_Org_ID,Created,CreatedBy,ComponentName,IsActive,AD_ToolBarButton_ID,Name,Updated,UpdatedBy,IsCustomization,KeyStroke_KeyCode,KeyStroke_Modifiers,AD_ToolBarButton_UU,"action",IsAdvancedButton,IsAddSeparator,EntityType,IsShowMore) VALUES (0,0,TO_TIMESTAMP('2022-05-12 11:56:24','YYYY-MM-DD HH24:MI:SS'),100,'ReRun','Y',200120,'Report - ReRun',TO_TIMESTAMP('2022-05-12 11:56:24','YYYY-MM-DD HH24:MI:SS'),100,'N',0,0,'e4cf7b03-7c64-406d-a0bb-636618104786','R','N','N','D','N')
+;
+
diff --git a/org.adempiere.base/src/org/compiere/model/MSysConfig.java b/org.adempiere.base/src/org/compiere/model/MSysConfig.java
index d23aec6e74..733809ae27 100644
--- a/org.adempiere.base/src/org/compiere/model/MSysConfig.java
+++ b/org.adempiere.base/src/org/compiere/model/MSysConfig.java
@@ -44,7 +44,7 @@ public class MSysConfig extends X_AD_SysConfig
/**
*
*/
- private static final long serialVersionUID = -4977677634921011590L;
+ private static final long serialVersionUID = -8518931184171552658L;
public static final String ADDRESS_VALIDATION = "ADDRESS_VALIDATION";
public static final String ALERT_SEND_ATTACHMENT_AS_XLS = "ALERT_SEND_ATTACHMENT_AS_XLS";
@@ -219,6 +219,7 @@ public class MSysConfig extends X_AD_SysConfig
public static final String ZK_REPORT_FORM_OUTPUT_TYPE = "ZK_REPORT_FORM_OUTPUT_TYPE";
public static final String ZK_REPORT_JASPER_OUTPUT_TYPE = "ZK_REPORT_JASPER_OUTPUT_TYPE";
public static final String ZK_REPORT_ONLY_PRINTFORMAT_LINKEDTO_REPORTVIEW = "ZK_REPORT_ONLY_PRINTFORMAT_LINKEDTO_REPORTVIEW";
+ public static final String ZK_REPORT_TABLE_OPEN_IN_NEW_TAB = "ZK_REPORT_TABLE_OPEN_IN_NEW_TAB";
public static final String ZK_REPORT_TABLE_OUTPUT_TYPE = "ZK_REPORT_TABLE_OUTPUT_TYPE";
public static final String ZK_ROOT_FOLDER_BROWSER = "ZK_ROOT_FOLDER_BROWSER";
public static final String ZK_SEARCH_AUTO_COMPLETE_MAX_ROWS = "ZK_SEARCH_AUTO_COMPLETE_MAX_ROWS";
diff --git a/org.adempiere.base/src/org/compiere/print/ReportEngine.java b/org.adempiere.base/src/org/compiere/print/ReportEngine.java
index 7cfdfab408..65ffd98c1e 100644
--- a/org.adempiere.base/src/org/compiere/print/ReportEngine.java
+++ b/org.adempiere.base/src/org/compiere/print/ReportEngine.java
@@ -238,6 +238,8 @@ public class ReportEngine implements PrintServiceAttributeListener
private String m_name = null;
+ private boolean m_isReplaceTabContent = false;
+
/**
* store all column has same css rule into a list
* for IDEMPIERE-2640
@@ -2390,6 +2392,22 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount)
return reportType;
}
+ /**
+ * Determines, if current tab content should be replaced, or a new tab should be opened
+ * @return
+ */
+ public boolean isReplaceTabContent() {
+ return m_isReplaceTabContent;
+ }
+
+ /**
+ * Sets, if current tab content should be replaced, or a new tab should be opened
+ * @param m_isReplaceTabContent
+ */
+ public void setIsReplaceTabContent(boolean m_isReplaceTabContent) {
+ this.m_isReplaceTabContent = m_isReplaceTabContent;
+ }
+
/**
* build css for table from mapCssInfo
* @param doc
diff --git a/org.adempiere.base/src/org/compiere/process/ProcessInfo.java b/org.adempiere.base/src/org/compiere/process/ProcessInfo.java
index 3218cde1fc..4b6cfc6e37 100644
--- a/org.adempiere.base/src/org/compiere/process/ProcessInfo.java
+++ b/org.adempiere.base/src/org/compiere/process/ProcessInfo.java
@@ -29,6 +29,7 @@ import org.compiere.model.MPInstance;
import org.compiere.model.MPInstancePara;
import org.compiere.model.MProcess;
import org.compiere.model.MSession;
+import org.compiere.model.MSysConfig;
import org.compiere.model.PO;
import org.compiere.model.Query;
import org.compiere.util.CLogger;
@@ -151,7 +152,10 @@ public class ProcessInfo implements Serializable
/** Export File */
private File m_exportFile = null;
-
+
+ /** Report Override Tab */
+ private boolean m_IsReplaceTabContent = false;
+
/** Row count */
private int m_rowCount;
@@ -938,5 +942,20 @@ public class ProcessInfo implements Serializable
public IProcessUI getProcessUI() {
return processUI;
}
+
+ /**
+ * Determines, if current tab content should be replaced, or a new tab should be opened
+ * @return true, if current tab content should be replaced
+ */
+ public boolean isReplaceTabContent() {
+ return m_IsReplaceTabContent;
+ }
+
+ /**
+ * Sets, if current tab content should be replaced, or a new tab should be opened
+ */
+ public void setReplaceTabContent() {
+ this.m_IsReplaceTabContent = !(MSysConfig.getBooleanValue(MSysConfig.ZK_REPORT_TABLE_OPEN_IN_NEW_TAB, false, Env.getAD_Client_ID(Env.getCtx())));
+ }
} // ProcessInfo
diff --git a/org.adempiere.ui.zk/WEB-INF/src/metainfo/zk/lang-addon.xml b/org.adempiere.ui.zk/WEB-INF/src/metainfo/zk/lang-addon.xml
index 4dcc9feb33..511ad53ae4 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/metainfo/zk/lang-addon.xml
+++ b/org.adempiere.ui.zk/WEB-INF/src/metainfo/zk/lang-addon.xml
@@ -56,5 +56,6 @@ Copyright (C) 2007 Ashley G Ramdass (ADempiere WebUI).
-
+
+
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AbstractProcessDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AbstractProcessDialog.java
index 1815f377a2..e55933ad54 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AbstractProcessDialog.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AbstractProcessDialog.java
@@ -201,8 +201,11 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI
this.setTitle(m_Name);
// Move from APanel.actionButton
- if (m_pi == null)
+ if (m_pi == null) {
m_pi = new WProcessInfo(m_Name, AD_Process_ID);
+ // Set Replace Tab Content
+ m_pi.setReplaceTabContent();
+ }
m_pi.setAD_User_ID (Env.getAD_User_ID(Env.getCtx()));
m_pi.setAD_Client_ID(Env.getAD_Client_ID(Env.getCtx()));
m_pi.setTitle(m_Name);
@@ -573,7 +576,7 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI
setReportTypeAndPrintFormat(getLastRun());
}
- private MPInstance getLastRun() {
+ protected MPInstance getLastRun() {
final String where = "AD_Process_ID = ? AND AD_User_ID = ? AND Name IS NULL ";
return new Query(Env.getCtx(), MPInstance.Table_Name, where, null)
.setOnlyActiveRecords(true).setClient_ID()
@@ -796,7 +799,7 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI
}
- private void loadSavedParams(MPInstance instance) {
+ protected void loadSavedParams(MPInstance instance) {
getParameterPanel().loadParameters(instance);
setReportTypeAndPrintFormat(instance);
}
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessDialog.java
index 31f53e68c8..d14386c61d 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessDialog.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessDialog.java
@@ -312,10 +312,12 @@ public class ProcessDialog extends AbstractProcessDialog implements EventListene
{
if (mask != null && mask.getParent() != null) {
mask.detach();
- StringBuilder script = new StringBuilder("(function(){let w=zk.Widget.$('#");
- script.append(getParent().getUuid()).append("');w.busy=false;");
- script.append("})()");
- Clients.response(new AuScript(script.toString()));
+ if(getParent() != null) {
+ StringBuilder script = new StringBuilder("(function(){let w=zk.Widget.$('#");
+ script.append(getParent().getUuid()).append("');w.busy=false;");
+ script.append("})()");
+ Clients.response(new AuScript(script.toString()));
+ }
}
}
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessModalDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessModalDialog.java
index b91f86a833..3eb5ba63c8 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessModalDialog.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessModalDialog.java
@@ -23,6 +23,7 @@ import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.component.Window;
import org.adempiere.webui.event.DialogEvents;
import org.adempiere.webui.util.ZKUpdateUtil;
+import org.compiere.model.MPInstance;
import org.compiere.print.MPrintFormat;
import org.compiere.process.ProcessInfo;
import org.compiere.util.CLogger;
@@ -68,6 +69,26 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi
this(null, WindowNo, pi, autoStart);
}
+ /**
+ * @param listener
+ * @param WindowNo
+ * @param pi
+ */
+ public ProcessModalDialog(EventListener listener, int WindowNo, ProcessInfo pi)
+ {
+ this(WindowNo, pi, false);
+ MPInstance instance = getLastRun();
+ if(instance != null) {
+ loadSavedParams(instance);
+ chooseSaveParameter(fSavedName.getRawText(), true);
+ }
+ if (listener != null)
+ {
+ addEventListener(ON_WINDOW_CLOSE, listener);
+ addEventListener(ON_BEFORE_RUN_PROCESS, listener);
+ }
+ }
+
/**
* @param listener
* @param WindowNo
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Window.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Window.java
index 2e88aded4d..79ab1ffa39 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Window.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Window.java
@@ -59,6 +59,8 @@ public class Window extends org.zkoss.zul.Window implements ISupportMask
public static final String INSERT_END = "insertEnd";
/*** Insert next to the active tab of the tabbed window container ***/
public static final String INSERT_NEXT = "insertNext";
+ /*** Replace current tab content ***/
+ public static final String REPLACE = "replace";
public Window()
{
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 559a77c59c..815efa1e08 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
@@ -282,6 +282,8 @@ public abstract class TabbedDesktop extends AbstractDesktop {
preOpenNewTab();
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
windowContainer.addWindow(tabPanel, title, true, null);
if (window instanceof IHelpContext)
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 ca37f00d9d..fa355fd35d 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
@@ -16,6 +16,8 @@ package org.adempiere.webui.part;
import java.util.List;
import org.adempiere.webui.ClientInfo;
+import org.adempiere.webui.adwindow.AbstractADWindowContent;
+import org.adempiere.webui.apps.ProcessDialog;
import org.adempiere.webui.component.Menupopup;
import org.adempiere.webui.component.Tab;
import org.adempiere.webui.component.Tab.DecorateInfo;
@@ -25,11 +27,13 @@ import org.adempiere.webui.component.Tabpanels;
import org.adempiere.webui.component.Tabs;
import org.adempiere.webui.component.ToolBar;
import org.adempiere.webui.component.ToolBarButton;
+import org.adempiere.webui.component.Window;
import org.adempiere.webui.desktop.TabbedDesktop;
import org.adempiere.webui.panel.IHelpContext;
import org.adempiere.webui.session.SessionManager;
import org.adempiere.webui.theme.ThemeManager;
import org.adempiere.webui.util.ZKUpdateUtil;
+import org.adempiere.webui.window.ZkReportViewer;
import org.compiere.model.MSysConfig;
import org.compiere.model.X_AD_CtxHelp;
import org.compiere.util.Env;
@@ -636,6 +640,44 @@ public class WindowContainer extends AbstractUIPart implements EventListener, ITab
protected Listbox previewType = new Listbox();
private ToolBarButton bRefresh = new ToolBarButton();
+ private ToolBarButton bReRun = new ToolBarButton();
private Iframe iframe;
private Checkbox summary = new Checkbox();
@@ -694,7 +697,30 @@ public class ZkReportViewer extends Window implements EventListener, ITab
bRefresh.addEventListener(Events.ON_CLICK, this);
if (ThemeManager.isUseFontIconForImage())
LayoutUtils.addSclass("medium-toolbarbutton", bRefresh);
-
+
+ MPrintFormat pf = m_reportEngine.getPrintFormat();
+ if (pf != null) {
+ if((!pf.isForm()) && (pf.getAD_ReportView_ID() > 0)) {
+ bReRun.setName("ReRun");
+ if (ThemeManager.isUseFontIconForImage())
+ bReRun.setIconSclass("z-icon-ReRun");
+ else
+ bReRun.setImage(ThemeManager.getThemeResource("images/ReRun24.png"));
+ bReRun.setTooltiptext(Util.cleanAmp(Msg.getMsg(Env.getCtx(), "ReRun")));
+ if (toolbarPopup != null)
+ {
+ toolbarPopupLayout.appendChild(bReRun);
+ bReRun.setLabel(bReRun.getTooltiptext());
+ }
+ else
+ toolBar.appendChild(bReRun);
+ bReRun.addEventListener(Events.ON_CLICK, this);
+ if (ThemeManager.isUseFontIconForImage())
+ LayoutUtils.addSclass("medium-toolbarbutton", bReRun);
+ }
+ }
+
+
bWizard.setName("Wizard");
if (ThemeManager.isUseFontIconForImage())
bWizard.setIconSclass("z-icon-Wizard");
@@ -1217,6 +1243,11 @@ public class ZkReportViewer extends Window implements EventListener, ITab
this.onCtrlKeyEvent(keyEvent);
}
}
+ else if (event.getTarget() instanceof ProcessModalDialog)
+ {
+ if(DialogEvents.ON_WINDOW_CLOSE.equals(event.getName()))
+ hideBusyMask();
+ }
}
private void cmd_upload() {
@@ -1274,6 +1305,8 @@ public class ZkReportViewer extends Window implements EventListener, ITab
cmd_Wizard();
else if (e.getTarget() == bRefresh)
cmd_report();
+ else if (e.getTarget() == bReRun)
+ cmd_reRun();
//
else if (e.getTarget() == m_ddM)
cmd_window(m_ddQ);
@@ -1458,6 +1491,30 @@ public class ZkReportViewer extends Window implements EventListener, ITab
postRenderReportEvent();
} // cmd_report
+ /**
+ * Refresh With Parameters
+ */
+ private void cmd_reRun() {
+ int AD_Process_ID = m_reportEngine.getPrintInfo() != null ? m_reportEngine.getPrintInfo().getAD_Process_ID() : 0;
+ if(AD_Process_ID <= 0)
+ return;
+ ProcessInfo pi = new ProcessInfo("RefreshWithParameters", AD_Process_ID);
+ pi.setReplaceTabContent();
+ ProcessModalDialog processModalDialog = new ProcessModalDialog(this, m_WindowNo, pi);
+ ZKUpdateUtil.setWindowWidthX(processModalDialog, 850);
+ this.getParent().appendChild(processModalDialog);
+ if (ClientInfo.isMobile())
+ {
+ processModalDialog.doHighlighted();
+ }
+ else
+ {
+ showBusyMask(processModalDialog);
+ LayoutUtils.openOverlappedWindow(this, processModalDialog, "middle_center");
+ }
+ processModalDialog.focus();
+} // cmd_reRun
+
protected void setLanguage (){
if (MClient.get(m_ctx).isMultiLingualDocument() && wLanguage.getValue() != null){
MLanguage language = new MLanguage (m_ctx, (int)wLanguage.getValue(), null);
@@ -1585,7 +1642,7 @@ public class ZkReportViewer extends Window implements EventListener, ITab
});
setupFindwindow(find);
}
- getParent().appendChild(find);
+ getParent().appendChild(find);
LayoutUtils.openHighlightedWindow(toolBar, find, "after_start");
LayoutUtils.sameWidth(find, this);
}
@@ -1698,7 +1755,7 @@ public class ZkReportViewer extends Window implements EventListener, ITab
} else {
script.append("w.busy=true;");
}
- script.append("})()");
+ script.append("})()");
Clients.response(new AuScript(script.toString()));
}
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 19034bfa8d..dcd0ff32be 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
@@ -52,6 +52,9 @@ public class ZkReportViewerProvider implements ReportViewerProvider {
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);
}
diff --git a/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/font-icons.css.dsp b/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/font-icons.css.dsp
index 66593413da..c57bef8ed1 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/font-icons.css.dsp
+++ b/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/css/fragment/font-icons.css.dsp
@@ -265,6 +265,9 @@
.z-icon-Request:before {
content: "\f046";
}
+.z-icon-ReRun:before {
+ content: "\f144";
+}
.z-icon-Reset:before {
content: "\f0e2";
}
diff --git a/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun10.png b/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun10.png
new file mode 100644
index 0000000000000000000000000000000000000000..9282daf7853a7250138ac3f75c23b9a891a426c6
GIT binary patch
literal 1016
zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4F%}28J29*~C-V}>QAqX(@?~JC
zQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb9A%)CkWsUtb0-Ae)1Ml~IU+
z8OUM;LIy@D239befx(MW8qN-4)PSmCVqj>`WMF}+i2~9fFad~xx}h}l0!D<13z*=l
zxfU=Z*dT414v`5!inG8YvY3HEOcjI~J%dy}08NX`42dX-@b$4u&d=3LOvz75)vL%Y
z0O?||sjvbvb5lza6)JLb@`|l0Y?Z(&tblBgu)dN4SV>8?tx|+mh4pF`@Az(B6?ba4!kkd&QZ?ak~c(t7^PxpnJ~9m(Kf~b91}8)Tms%wnV_SMy2IPM_{!ao!RS~?;Wo0=XJr_?5FL-S9Rqsewc)8$wrw@OU8@RI7Fa6%J
zL%h52S;O6xXO_MErq90rlv4ca$o_gWC%LJAb})Z#-@YhR$?#G1dEQ?$HSUD?=Jb|C
zZY-FPD}PscUbX0l6<-;0FL}vdUGZmjztLUR8!KL~I`rqQ)wN~q0TEmiBl#Dr9(JqW
zEVXn}2xDgGG+n8gGUhJ|GBcKMnmEbr;0^ubrslk!H$%GqTz_)v-A7q5zIiPwYZ|T}
z&f8bHY+_XZ{AIl1*L`kO8Sk7ktJd(st(6DwKD*p?^_1nL$H~1{*tR~4%6httduyuD
zl*9$gc~iR=|A@3?K0YP6)#9{E(~WbBtqYAlreF48bqdUx^z`J3eT$RT*8X9xHlNIV
TW%6YoP?Gj^^>bP0l+XkKU(ias
literal 0
HcmV?d00001
diff --git a/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun16.png b/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun16.png
new file mode 100644
index 0000000000000000000000000000000000000000..05dca0066cd099cf9adc688955e5e77a26797b1e
GIT binary patch
literal 1394
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|6p}rHd>I(3
z)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N#&bHNrE^*Ox&H$mU>RWfWpy
z2C^7|kbzN(ffdYVVDMs;hO>hhHK1yk7#P|!8CaldqJT6AOaNk_ZYa&XfDvKh0w%a>
zfd$M6Hb|RV?u2w8#aZAHSQ&?x
zfOIj~R9FF-xv3?I3Kh9IdBs*0wn|_XRzNmLSYJs2tfVB{Rw=?aK*2e`C{@8!&qU8a
z$&O1wLBXadCCw_x#SN+*$g@?-C@Cqh($_C9FV`zK*2^zS*Eh7ZwA42+(l;{F1**_3
zuFNY*tkBIXR)!b?Gsh*hIJqdZpd>RtPXT0ZVp4u-iLH_n$Rap^xU(cP4PjGWG1OZ?
z59)(t^bPe4^xP4@}=$5)7wkm>aT1Mt-#(0At^9=P*e!e?j
za(`tO$Gp=qY3I)T-1m8|CG(kWFQ(1hJE#6n-pB4_{#$9kKb(}DdGm{OVEnDhNB5kb
ze$i{Z&E{eLUG%sF%XYf|d51M7!Aix~ALQR(aVR}JCRyrSTA}5}D%TaR#=V8FbuOPc
zF(ddW-^r}?Y;NE4Y+fYKmYlG2_L=`qD;o}~h;CkLdt~XwOe3c3ZnnoW4{vET<=UoK
z8N9ZyzEyd4er4^G19_R5+);CS-Gz@oV0gYix>^1H`a|b}wB`18eY9t^>eX1ZJL*iz
z7MU*#SqhxKt<_sstjKn4q3#8PsKlp_%;x+p<9+ugqHo@wWATp-Kdm%9`9;L?qBG~+
ztb-5a=d!$Vnzpa~QB%s1!n2A>FJk{%*4^AGHvRXm4}VIX#WFXZYf&_cT;?=6%Oay*
zJ?^yoXXA&{4VCj-FC?7YV>7|x$*kFbIC~6*d%f-it?0OPcf-F+4?On@1+XsVa*MlG
z@a|Z>#jgcTeLF3CQv4LNH%Kj8Gtad)|KXil&QCp0LO)J7iqbxKB&3J?`us&Dj}-g<
zMIIFr+nyBL7V~2AFKOo4^Gu@4b2b$QE&uw@Jo6A+$-8GKmdyECC=o6nZfFv8d{Hao
zVa=o(85#ak96u1-`klIBV*WUwm^Da-T`8N%;DIVSDK&o4E;o)pA>3
zmGXSaQrr2yK^3DkarZq$yzGfxcO*{`G8pxc=h@
zbtbOXD&W6||Fpu)t{)z4*}Q$iB}
D$Ve1Q
literal 0
HcmV?d00001
diff --git a/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun24.png b/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun24.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba876a37f64b32a1a8ad5dc31d581e82923b8811
GIT binary patch
literal 1990
zcmY*adpwkB8-9nG$qYlGkEYl$h@u&0_%Oz_&c@l0Q(7}}8a3lEW1Y95oKhiH@;Q|<
z(_*YuX{&WuQrhU}oYp!M(T0!^`;L72zUTej?|nVjbKTed-0wecy0fD-3W-Jn0Dz*}
zSkS<%C<+NU_#TNeSp^e>L$fvmgdK-wzzycK4b1@nVh;lV?*ag$@(6m5dtR**m}qVZVFwuF1e
z1ncSGj4=<52*Bv$^l&;@3KE0CkR$v9Ni++qopNwzf(_v)h{Oh^|1)xoQ`0IahaiPjL4Va7aGYm!D2;?cGs7C
za+!f&JFz)CV}S$WMJIS&oDP218!RP@Sdvo&GXU%?@~7yMx0V0L?ernzMa}=`GG8X$
zX2DS@NHTu+vr&-tziW5_0L+$ZVd`ds`qBMl+KCg2n|-f?-gA_!gC0BiTgkokH_8`e
z-z<~2bV`&{cUz*vyq2=A<`*{EI%^#vT$K1GHas37<`VK4m8R-#V{}zDWGed3_0Dl4
zjxg?h@5lEE9fm`to6X+^mE7ywO4y355+Agyrv#SOc0cT26vXsirOeFNq4ff10KFt`R++WJ(PdFoy9
zhOn&)+A7Gqa%!cG8y901d+s^4)jd2!opq+Sh6GbWyjx1hrzy8q6nemqYbL)_=+~YW
z4>nulB`?uFI*MU$sQMKCvOMiKx$ZmT|5+PKZ|+&vYE?Y$)}!~r@Mr<=m(%kR<_3l}
ze|HtYeBrY*pR>`_=_bwj@?+M2rq{YYouwlO2+gA>q|SOXPrOsWOC47u-gP@L+2VI}
ztWj$CRbRvRO^+by6V<={C5dp?y)jJwj`_N)J23YxEf3|2o1Aea-^@ioGnCm
z`9q1UWHPIIuZxX20T%0-)Ys|LX?{4z_ewkK6g`r8>l)NcV>P5gm_0Hec0zn!^6mru
zpTg%R54>96IG@&?<7(hDaka
zYYz(0dF-ty=VRLTbnyt{1xq=T@68{pHkhKX%gHUs@+K#g!sZwgfxT}EB6vW(cQ`$;wuul
zM4fx3P^~B_*~1GhSAzW`)aT|Xnf)@pFf?oFSCxm=YR*TSk;jsuNPfP0QX4XPoy}*^
z&)@dOt$gmvl=u?IXS-ZqD@>7o
zNA6>o?-_0=QflGHbug?$;ew2jdiWkoF&Sv9R*A{zd>CWk4%4N9yA0gAY;UwE@JOVM+5{gp1zKPIyi&FQaWPnQ)UT`D76G
zDmK(mE6D26;{0a)r=N>d#eTXps=_aX=H%elL%hn)}~`B&8u+(ro%p
zsl8R2AfBlSUkEfx(Tg>1p(Q)8OwgNFY6ov+p{Pe=T5qeAcj`Y=y&`QwP*179n5lKa
zuh<-6#)m%UO&IP;exc&Ie&5}rB2gHlQadY?kf}TFfi=e1T9V{T0?+7c-=Npo+WIFd
z!&Qf)Kh)&VP`VQ-j?L9~N6P{}cZrX9xz&mblm~jm{(Wc=uCeUsjDi)jt)!irmAez~
zBpRz^!ZfCMO=_#AeedmTj>jM>qO2DzqbG;d_KtL_%|0qAV;mHaGZm24)>DmdR1v+E
zsG$Q*1I`bIUdpaRl``%x{MnUp;UCx&naVA&vAfpTOtdI6U!o4GZ0QLXjGpi%
w^XgLj$0O^9L+Co;)uud;!AbldTSXe14P)q28wust`Jx{b)zZ;IXhu)^2jZeEnE(I)
literal 0
HcmV?d00001
diff --git a/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun32.png b/org.adempiere.ui.zk/WEB-INF/src/web/theme/default/images/ReRun32.png
new file mode 100644
index 0000000000000000000000000000000000000000..63ec19eb771491fd6571555ab9b9b2eaa29218c7
GIT binary patch
literal 2516
zcmY*bdpy(c7yryXa!FBgo4Lz2Bh}ViV#;!zOEyJeo0hu`bIIM;Wo1dj@Qp-Q*Q636
zxsz0Cm1{-`71iP;<+oM8`u(2gbw20)obx{K^PK0ePo}fu0cpwYk^lfmV{I`md=D0w
zgc$!zjfwffcOa_E0V|+-Q01K<<7eyQ001#M0Famp0IU2^;w%6}7y-cCF#tdn0KnGJ
z;=4FBKaonpW62HPBB-{t(18RR&P7K(zyqoSf`?mE>Rk*0Euilpaf(g7cE
zxUF7-GtK~{h})q7$+3l6iEe2C3vonp#CN)HsygQ^SC#L2lQi^~{}wN0)hanzy5v_3AG$%=azj#1iErWLz+v&}ld5~g6s=k7Zw4su5IBj=iXEHXFyA(?hcF5CMcj=nZnUGT$(P|5dN)^j
znG;bKu2Sg-&lX@yeWTwF{%COHCFfEGhaiaj#1rIC+61?W)Z=VSoUVyDF5Y*!7n(mt
z64!>$*=ki?NsL-pXcfCUY{8m$Z`(J~H97S_DZaAZal)oX*6TTHw|98a$cKf|XRX~b
z%O9MMImRa1ZEP`^i<@0E=DyP;eslq)RNWDp(jhm5-tCt-Me*Z0tL}a1wUSr-W>@P@
zM9ibDt@GpFB?az6;kW;ZScv=P#px>9_T9K`e=g_mNx
z=MIr?mKU#06L;UL*=uNOvoU+Dj?y+aOJ7+GA{tC;u!h^x*rMb;r`3*>F(tXg8}Bz<0X}&rz5jESlA^;e=W8JA>;halfv!_Oz(>ari;#g
zeg`(IeV?(xa~c3n$;hd84zhWLpe8zTU)D?jz8)ri#w
z_aX@AWs*68nf
zpJKU}#gyEUS&5uHqG*YJ?U2!#UB}Ddr=0g
zqU%L&UMHEpcx%$(n6Y
zyVn?EK~yOcFq=j4>j&;D4_XI2?=Cs2)OB=R
zxgpFuFVYCZ2(n@1kiFRk8Tr^v!8A3gNq@A>XRvP2dVH*ubwtP&T~7VAMNEH5Vf6;|
z(glpX#}D3>ax_y}CJ%a$yTdc?)a0{8yv=DC4P5x90%3YjgjKD=7GpuxhJ^AMpqU?)T*j0#UtLA>DSU?
zdeS5Uf!J2Gl1QCsRZA)PF1=IsXhm6ZTSt(V*V{%d5QxPTeVFQ}P}rT@^8##7F;irMH?104?30_=&E0GmwyuFv~ERDn=$&pe3w~2dm^9M%^rS$4vjxGnU&yixvTpl
zgP?ZysCC1VNsJuiw0Xa>evbA-vrCVMuAZC_(g$x?JG6}+DfnH%+BjmWt&S!C2X5Um
A1ONa4
literal 0
HcmV?d00001
diff --git a/org.adempiere.ui/src/org/compiere/print/ReportCtl.java b/org.adempiere.ui/src/org/compiere/print/ReportCtl.java
index 4a71f81a8e..6c29867535 100644
--- a/org.adempiere.ui/src/org/compiere/print/ReportCtl.java
+++ b/org.adempiere.ui/src/org/compiere/print/ReportCtl.java
@@ -266,6 +266,7 @@ public class ReportCtl
}
re.setLanguageID(pi.getLanguageID());
re.setWindowNo(WindowNo);
+ re.setIsReplaceTabContent(pi.isReplaceTabContent());
createOutput(re, pi.isPrintPreview(), null);
return true;
} // startStandardReport