From bf630f1907ef224ba49efe034d606dc89a59a5dc Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Sun, 28 Oct 2012 11:58:17 +0800 Subject: [PATCH] IDEMPIERE-474 Zk: Busy dialog sometime not dismissed after multiple execution of button action --- .../src/org/adempiere/webui/AdempiereWebUI.java | 4 ++++ .../adempiere/webui/apps/ProcessModalDialog.java | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java index 1ece6231f3..362170ccc3 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java @@ -308,6 +308,10 @@ public class AdempiereWebUI extends Window implements EventListener, IWeb ctx.put(ZK_DESKTOP_SESSION_KEY, this.getPage().getDesktop()); } + //ensure server push is on + if (!this.getPage().getDesktop().isServerPushEnabled()) + this.getPage().getDesktop().enableServerPush(true); + //update session context currSess.setAttribute(SessionContextListener.SESSION_CTX, ServerContext.getCurrentInstance()); 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 2aa9899175..8673b3d66d 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 @@ -447,9 +447,22 @@ public class ProcessModalDialog extends Window implements EventListener, @Override public void unlockUI(ProcessInfo pi) { - if (!isLocked || Executions.getCurrent() == null) + if (!isLocked) return; + if (Executions.getCurrent() == null) { + Executions.schedule(getDesktop(), new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + doUnlockUI(); + } + }, new Event("onUnLockUI")); + } else { + doUnlockUI(); + } + } + + private void doUnlockUI() { hideBusyDialog(); isLocked = false; }