/****************************************************************************** * Copyright (C) 2008 Low Heng Sin * * Copyright (C) 2009 Idalica Corporation * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * * by the Free Software Foundation. This program is distributed in the hope * * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * *****************************************************************************/ package org.adempiere.webui; import java.util.logging.Level; import org.adempiere.util.Callback; import org.adempiere.webui.adwindow.ADWindow; import org.adempiere.webui.session.SessionManager; import org.adempiere.webui.theme.ThemeManager; import org.compiere.model.GridTab; import org.compiere.model.MQuery; import org.compiere.model.MRequest; import static org.compiere.model.SystemIDs.*; import org.compiere.util.CLogger; import org.compiere.util.Env; import org.compiere.util.Msg; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zul.Menuitem; import org.zkoss.zul.Menupopup; import org.zkoss.zul.Popup; /** * Handle Request Button Action. * Show Popup Menu. * * @author Jorg Janke * @version $Id: ARequest.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $ * * @author Teo Sarca, SC ARHIPAC SERVICE SRL *
  • BF [ 1904928 ] Request: Related Request field not filled */ public class WRequest implements EventListener { /** * Constructor * @param invoker invoker button * @param AD_Table_ID table * @param Record_ID record ID * @param Record_UU record UUID * @param C_BPartner_ID optional bp */ public WRequest (Component invoker, int AD_Table_ID, int Record_ID, String Record_UU, int C_BPartner_ID) { if (log.isLoggable(Level.CONFIG)) log.config("AD_Table_ID=" + AD_Table_ID + ", Record_ID=" + Record_ID + ", Record_UU=" + Record_UU); m_AD_Table_ID = AD_Table_ID; m_Record_ID = Record_ID; m_Record_UU = Record_UU; m_C_BPartner_ID = C_BPartner_ID; getRequests(invoker); } // WRequest /** * Constructor * @param invoker invoker button * @param AD_Table_ID table * @param Record_ID record * @param C_BPartner_ID optional bp */ public WRequest (Component invoker, int AD_Table_ID, int Record_ID, int C_BPartner_ID) { this(invoker, AD_Table_ID, Record_ID, null, C_BPartner_ID); } // WRequest /** The Table */ private int m_AD_Table_ID; /** The Record ID */ private int m_Record_ID; /** The Record UUID */ private String m_Record_UU; /** BPartner */ private int m_C_BPartner_ID; /** The Popup */ private Menupopup m_popup = new Menupopup(); private Menuitem m_new = null; private Menuitem m_active = null; private Menuitem m_all = null; /** Where Clause */ protected StringBuilder m_where = null; /** Logger */ private static final CLogger log = CLogger.getCLogger (WRequest.class); /** * Display Request Options - New/Existing. * @param invoker button */ private void getRequests (Component invoker) { m_new = new Menuitem(Msg.getMsg(Env.getCtx(), "RequestNew")); if (ThemeManager.isUseFontIconForImage()) m_new.setIconSclass("z-icon-New"); else m_new.setImage(ThemeManager.getThemeResource("images/New16.png")); m_new.addEventListener(Events.ON_CLICK, this); m_popup.appendChild(m_new); // m_where = new StringBuilder(); int[] counts = MRequest.getRequestCount(m_AD_Table_ID, m_Record_ID, m_Record_UU, m_where, null); int activeCount = counts[1]; int inactiveCount = counts[0]; if (activeCount > 0) { m_active = new Menuitem(Msg.getMsg(Env.getCtx(), "RequestActive") + " (" + activeCount + ")"); m_active.addEventListener(Events.ON_CLICK, this); m_popup.appendChild(m_active); } if (inactiveCount > 0) { m_all = new Menuitem(Msg.getMsg(Env.getCtx(), "RequestAll") + " (" + (activeCount + inactiveCount) + ")"); m_all.addEventListener(Events.ON_CLICK, this); m_popup.appendChild(m_all); } Popup popup = LayoutUtils.findPopup(invoker); if (popup != null) { popup.appendChild(m_popup); } else { m_popup.setPage(invoker.getPage()); LayoutUtils.autoDetachOnClose(m_popup); } m_popup.open(invoker, "after_start"); } @Override public void onEvent(final Event e) throws Exception { if (e.getTarget() instanceof Menuitem) { //open request window MQuery query = null; if (e.getTarget() == m_active) { query = new MQuery(""); String where = "(" + m_where + ") AND Processed='N'"; query.addRestriction(where); query.setRecordCount(0); } else if (e.getTarget() == m_all) { query = new MQuery(""); query.addRestriction(m_where.toString()); query.setRecordCount(0); } else if (e.getTarget() == m_new) { query = new MQuery(""); query.addRestriction("1=2"); query.setRecordCount(0); } int AD_Window_ID = WINDOW_REQUESTS_ALL; // 232=all - 201=my if (m_popup.getParent() instanceof Popup) { ((Popup)m_popup.getParent()).close(); } SessionManager.getAppDesktop().openWindow(AD_Window_ID, query, new Callback() { @Override public void onCallback(ADWindow result) { if(result == null) return; onNew(e, result); } }); } } /** * Set initial values for new request record * @param e * @param frame */ private void onNew(Event e, ADWindow frame) { // New - set Table/Record if (e.getTarget() == m_new) { GridTab tab = frame.getADWindowContent().getActiveGridTab(); MRequest.newRequest(tab, m_AD_Table_ID, m_Record_ID, m_Record_UU, m_C_BPartner_ID); } } }