From 5e2d4a77caea81d3eddc72f6b8ce637a95fc725a Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 18 Apr 2012 13:45:26 +0800 Subject: [PATCH] IDEMPIERE-231 Zk6: Improve the tablet experience. Revert setPage call that cause intermitten javascript error. --- .../src/org/adempiere/webui/apps/AEnv.java | 6 ++++ .../webui/dashboard/DPFavourites.java | 29 ++++++++++++++++--- .../webui/dashboard/DPRecentItems.java | 19 ++++++++++-- .../webui/desktop/NavBarDesktop.java | 2 +- .../webui/desktop/TabbedDesktop.java | 2 -- .../org/adempiere/webui/panel/MenuPanel.java | 7 ----- .../org/adempiere/webui/panel/SidePanel.java | 7 ----- .../webui/window/ZkReportViewer.java | 2 -- 8 files changed, 48 insertions(+), 26 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java index 38908a50fe..ebab065448 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java @@ -772,4 +772,10 @@ public final class AEnv } } } + + public static Desktop getDesktop() { + boolean inUIThread = Executions.getCurrent() != null; + return inUIThread ? Executions.getCurrent().getDesktop() + : (Desktop) Env.getCtx().get(AdempiereWebUI.ZK_DESKTOP_SESSION_KEY); + } } // AEnv diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPFavourites.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPFavourites.java index f63cd223fa..886942c2c6 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPFavourites.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPFavourites.java @@ -16,6 +16,7 @@ package org.adempiere.webui.dashboard; import java.util.Enumeration; import org.adempiere.exceptions.DBException; +import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.event.TouchEventHelper; import org.adempiere.webui.session.SessionManager; import org.adempiere.webui.window.FDialog; @@ -25,6 +26,7 @@ import org.compiere.util.CLogger; import org.compiere.util.DB; import org.compiere.util.Env; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.DropEvent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; @@ -47,6 +49,8 @@ import org.zkoss.zul.Vbox; */ public class DPFavourites extends DashboardPanel implements EventListener { + private static final String ON_ADD_TAP_EVENT_LISTENER = "onAddTapEventListener"; + private static final String NODE_ID_ATTR = "Node_ID"; /** @@ -68,8 +72,6 @@ public class DPFavourites extends DashboardPanel implements EventListener { super(); - this.setPage(SessionManager.getAppDesktop().getComponent().getPage()); - Panel panel = new Panel(); this.appendChild(panel); @@ -128,7 +130,15 @@ public class DPFavourites extends DashboardPanel implements EventListener btnFavItem.addEventListener(Events.ON_CLICK, this); btnFavItem.addEventListener(Events.ON_DROP, this); btnFavItem.setSclass("menu-href"); - TouchEventHelper.addOnTapEventListener(btnFavItem, this); + + if (getPage() != null) + { + TouchEventHelper.addOnTapEventListener(btnFavItem, this); + } + else + { + Executions.schedule(AEnv.getDesktop(), this, new Event(ON_ADD_TAP_EVENT_LISTENER, btnFavItem, null)); + } } } } @@ -204,6 +214,10 @@ public class DPFavourites extends DashboardPanel implements EventListener } } } + else if (eventName.equals(ON_ADD_TAP_EVENT_LISTENER)) + { + TouchEventHelper.addOnTapEventListener(event.getTarget(), this); + } // } @@ -276,7 +290,14 @@ public class DPFavourites extends DashboardPanel implements EventListener btnFavItem.addEventListener(Events.ON_CLICK, this); btnFavItem.addEventListener(Events.ON_DROP, this); btnFavItem.setSclass("menu-href"); - TouchEventHelper.addOnTapEventListener(btnFavItem, this); + if (getPage() != null) + { + TouchEventHelper.addOnTapEventListener(btnFavItem, this); + } + else + { + Executions.schedule(AEnv.getDesktop(), this, new Event(ON_ADD_TAP_EVENT_LISTENER, btnFavItem, null)); + } bxFav.removeChild(lblMsg); bxFav.invalidate(); } else { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPRecentItems.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPRecentItems.java index 73be564747..9c3c7ac566 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPRecentItems.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPRecentItems.java @@ -15,6 +15,7 @@ package org.adempiere.webui.dashboard; import java.util.List; +import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.event.TouchEventHelper; import org.adempiere.webui.event.TouchEvents; import org.adempiere.webui.session.SessionManager; @@ -25,6 +26,7 @@ import org.compiere.model.MSysConfig; import org.compiere.model.MTable; import org.compiere.util.Env; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.DropEvent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; @@ -44,6 +46,8 @@ import org.zkoss.zul.Vbox; */ public class DPRecentItems extends DashboardPanel implements EventListener { + private static final String ON_ADD_TAP_EVENT_LISTENER = "onAddTapEventListener"; + private static final String AD_RECENT_ITEM_ID_ATTR = "AD_RecentItem_ID"; /** @@ -59,8 +63,6 @@ public class DPRecentItems extends DashboardPanel implements EventListener= maxri) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/NavBarDesktop.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/NavBarDesktop.java index 170b2bbd64..c9730d4aad 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/NavBarDesktop.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/NavBarDesktop.java @@ -144,7 +144,7 @@ public class NavBarDesktop extends TabbedDesktop implements MenuListener, Serial navigationPanel.setWidth("100%"); navigationPanel.setHeight("100%"); - SidePanel pnlSide = new SidePanel(parent.getPage()); + SidePanel pnlSide = new SidePanel(null); pnlSide.getMenuPanel().addMenuListener(this); navigationPanel.add(pnlSide, "Application Menu"); 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 3365cd40c6..fffd04a665 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 @@ -111,7 +111,6 @@ public abstract class TabbedDesktop extends AbstractDesktop { ADWindow adWindow = new ADWindow(Env.getCtx(), windowId); DesktopTabpanel tabPanel = new DesktopTabpanel(); - tabPanel.setPage(SessionManager.getAppDesktop().getComponent().getPage()); if (adWindow.createPart(tabPanel) != null) { preOpenNewTab(); windowContainer.addWindow(tabPanel, adWindow.getTitle(), true); @@ -132,7 +131,6 @@ public abstract class TabbedDesktop extends AbstractDesktop { ADWindow adWindow = new ADWindow(Env.getCtx(), windowId, query); DesktopTabpanel tabPanel = new DesktopTabpanel(); - tabPanel.setPage(SessionManager.getAppDesktop().getComponent().getPage()); if (adWindow.createPart(tabPanel) != null) { preOpenNewTab(); windowContainer.addWindow(tabPanel, adWindow.getTitle(), true); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/MenuPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/MenuPanel.java index a476eeeb61..37ffd5743a 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/MenuPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/MenuPanel.java @@ -35,7 +35,6 @@ import org.compiere.util.Env; import org.compiere.util.Msg; import org.compiere.util.Util; import org.zkoss.zk.ui.Component; -import org.zkoss.zk.ui.Page; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; @@ -72,12 +71,6 @@ public class MenuPanel extends Panel implements EventListener private ToolBarButton expandToggle; - public MenuPanel(Page page) - { - setPage(page); - init(); - } - public MenuPanel(Component parent) { if (parent != null) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/SidePanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/SidePanel.java index 4851c867ec..b763ecaa72 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/SidePanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/SidePanel.java @@ -19,7 +19,6 @@ package org.adempiere.webui.panel; import org.adempiere.webui.component.Panel; import org.zkoss.zk.ui.Component; -import org.zkoss.zk.ui.Page; /** * @@ -35,12 +34,6 @@ public class SidePanel extends Panel private static final long serialVersionUID = -3039805384016666481L; private MenuPanel pnlMenu; - public SidePanel(Page page) - { - setPage(page); - init(); - } - public SidePanel(Component parent) { setParent(parent); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java index e99c959f97..09cea48971 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java @@ -167,8 +167,6 @@ private A reportLink; public ZkReportViewer(ReportEngine re, String title) { super(); - setPage(SessionManager.getAppDesktop().getComponent().getPage()); - log.info(""); m_WindowNo = SessionManager.getAppDesktop().registerWindow(this); Env.setContext(re.getCtx(), m_WindowNo, "_WinInfo_IsReportViewer", "Y");