diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ProcessInfoDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ProcessInfoDialog.java index ecfad116da..eab4ba0236 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ProcessInfoDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ProcessInfoDialog.java @@ -53,21 +53,46 @@ public class ProcessInfoDialog extends Window implements EventListener { private Button btnOk = ButtonFactory.createNamedButton(ConfirmPanel.A_OK); private Image img = new Image(); public static final String INFORMATION = "~./zul/img/msgbox/info-btn.png"; + public static final String ERROR = "~./zul/img/msgbox/info-btn.png"; + /** + * @deprecated Should use {@link #ProcessInfoDialog(String, String, ProcessInfo)} for flexible show message + * @param title + * @param header + * @param m_logs + */ public ProcessInfoDialog(String title, String header, ProcessInfoLog[] m_logs) { - init(title, header, m_logs); + init(title, header, null, m_logs); } - private void init(String title, String header, ProcessInfoLog[] m_logs) { + /** + * show result after run a process + * @param title + * @param header + * @param pi + */ + public ProcessInfoDialog(String title, String header, ProcessInfo pi, boolean needFillLogFromDb) { + if (needFillLogFromDb) + ProcessInfoUtil.setLogFromDB(pi); + init(pi.getTitle(), null, pi, null); + } + + /** + * + * @param title + * @param header + * @param m_logs + */ + private void init(String title, String header, ProcessInfo pi, ProcessInfoLog[] m_logs) { this.setTitle(title); this.setClosable(true); this.setSizable(true); this.setBorder("normal"); this.setContentStyle("background-color:#ffffff;"); - - this.setId(title); + + //this.setId(title); lblMsg.setEncode(false); lblMsg.setValue(header); @@ -81,51 +106,23 @@ public class ProcessInfoDialog extends Window implements EventListener { Separator sep = new Separator("horizontal"); pnlMessage.appendChild(sep); - for (int loopCtr = 0; loopCtr < m_logs.length; loopCtr++) { - ProcessInfoLog log = m_logs[loopCtr]; - if (log.getP_Msg() != null || log.getP_Date() != null || log.getP_Number() != null) { - SimpleDateFormat dateFormat = DisplayType.getDateFormat(DisplayType.DateTime); - StringBuffer sb = new StringBuffer (); - // - if (log.getP_Date() != null) - sb.append(dateFormat.format(log.getP_Date())) - .append(" \t"); - // - if (log.getP_Number() != null) - sb.append(log.getP_Number()) - .append(" \t"); - // - if (log.getP_Msg() != null) - sb.append(Msg.parseTranslation(Env.getCtx(), log.getP_Msg())); - // - - if (log.getAD_Table_ID() > 0 - && log.getRecord_ID() > 0) { - DocumentLink recordLink = new DocumentLink(sb.toString(), log.getAD_Table_ID(), log.getRecord_ID()); - - pnlMessage.appendChild(recordLink); - } else { - Text recordText = new Text(sb.toString()); - pnlMessage.appendChild(recordText); - } - pnlMessage.appendChild(new Separator("horizontal")); - } - } - Hbox pnlImage = new Hbox(); - img.setSrc(INFORMATION); + img.setSrc((pi != null && pi.isError()) ? ERROR:INFORMATION); pnlImage.setWidth("72px"); pnlImage.setAlign("center"); pnlImage.setPack("center"); pnlImage.appendChild(img); - + Hbox north = new Hbox(); north.setAlign("center"); north.setStyle("margin: 20pt 10pt 20pt 10pt;"); // trbl this.appendChild(north); north.appendChild(pnlImage); + + pnlMessage.appendChild(new Text(Msg.getMsg(Env.getCtx(), pi.isError()?"Error":"Success"))); + pnlMessage.appendChild(new Separator("horizontal")); + north.appendChild(pnlMessage); - Hbox pnlButtons = new Hbox(); pnlButtons.setHeight("52px"); pnlButtons.setAlign("center"); @@ -143,9 +140,55 @@ public class ProcessInfoDialog extends Window implements EventListener { south.setWidth("100%"); this.appendChild(south); south.appendChild(pnlButtons); + + if (pi != null){ + m_logs = pi.getLogs(); + String summary = pi.getSummary(); + if (summary != null && summary.indexOf('@') != -1) + summary = Msg.parseTranslation(Env.getCtx(), summary); + + if (summary != null && summary.trim().length() > 0 && !summary.trim().equalsIgnoreCase("Report")){ + pnlMessage.appendChild(new Text(summary)); + } + } + + if (m_logs != null && m_logs.length > 0){ + separator = new Separator(); + separator.setWidth("100%"); + separator.setBar(true); + pnlMessage.appendChild(separator); + for (int loopCtr = 0; loopCtr < m_logs.length; loopCtr++) { + ProcessInfoLog log = m_logs[loopCtr]; + if (log.getP_Msg() != null || log.getP_Date() != null || log.getP_Number() != null) { + SimpleDateFormat dateFormat = DisplayType.getDateFormat(DisplayType.DateTime); + StringBuffer sb = new StringBuffer (); + // + if (log.getP_Date() != null) + sb.append(dateFormat.format(log.getP_Date())) + .append(" \t"); + // + if (log.getP_Number() != null) + sb.append(log.getP_Number()) + .append(" \t"); + // + if (log.getP_Msg() != null) + sb.append(Msg.parseTranslation(Env.getCtx(), log.getP_Msg())); + // + + if (log.getAD_Table_ID() > 0 + && log.getRecord_ID() > 0) { + DocumentLink recordLink = new DocumentLink(sb.toString(), log.getAD_Table_ID(), log.getRecord_ID()); + + pnlMessage.appendChild(recordLink); + } else { + Text recordText = new Text(sb.toString()); + pnlMessage.appendChild(recordText); + } + pnlMessage.appendChild(new Separator("horizontal")); + } + } + } - this.setBorder("normal"); - this.setContentStyle("background-color:#ffffff;"); } public void onEvent(Event event) throws Exception { @@ -165,22 +208,13 @@ public class ProcessInfoDialog extends Window implements EventListener { * just pass false, other pass true to avoid duplicate message */ public static void showProcessInfo (ProcessInfo pi, int windowNo, final Component comp, boolean needFillLogFromDb) { - // Get Log Info - if (needFillLogFromDb) - ProcessInfoUtil.setLogFromDB(pi); - ProcessInfoLog m_logs[] = pi.getLogs(); - - if (m_logs != null && m_logs.length > 0) { - ProcessInfoDialog dialog = new ProcessInfoDialog(AEnv.getDialogHeader(Env.getCtx(), windowNo),AEnv.getDialogHeader(Env.getCtx(), windowNo), m_logs); - final ISupportMask supportMask = LayoutUtils.showWindowWithMask(dialog, comp, LayoutUtils.OVERLAP_PARENT);; - dialog.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { - @Override - public void onEvent(Event event) throws Exception { - supportMask.hideMask(); - } - }); - - } - + ProcessInfoDialog dialog = new ProcessInfoDialog(AEnv.getDialogHeader(Env.getCtx(), windowNo),AEnv.getDialogHeader(Env.getCtx(), windowNo), pi, needFillLogFromDb); + final ISupportMask supportMask = LayoutUtils.showWindowWithMask(dialog, comp, LayoutUtils.OVERLAP_PARENT);; + dialog.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + supportMask.hideMask(); + } + }); } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java index 9022f6de2f..376fda13ba 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java @@ -60,7 +60,6 @@ import org.adempiere.webui.factory.InfoManager; import org.adempiere.webui.part.ITabOnSelectHandler; import org.adempiere.webui.part.WindowContainer; import org.adempiere.webui.session.SessionManager; -import org.adempiere.webui.window.FDialog; import org.compiere.minigrid.ColumnInfo; import org.compiere.minigrid.IDColumn; import org.compiere.model.MInfoColumn; @@ -72,8 +71,6 @@ import org.compiere.model.MSysConfig; import org.compiere.model.MTable; import org.compiere.model.X_AD_CtxHelp; import org.compiere.process.ProcessInfo; -import org.compiere.process.ProcessInfoLog; -import org.compiere.process.ProcessInfoUtil; import org.compiere.util.CLogger; import org.compiere.util.DB; import org.compiere.util.Env; @@ -1550,27 +1547,11 @@ public abstract class InfoPanel extends Window implements EventListener, // enable or disable control button rely selected record status enableButtons(); }else if (m_pi.isError()){ - // show error info - ProcessInfoUtil.setLogFromDB(m_pi); - ProcessInfoLog m_logs[] = m_pi.getLogs(); - if (m_logs != null && m_logs.length > 0) { - ProcessInfoDialog.showProcessInfo(m_pi, p_WindowNo, InfoPanel.this, false); - }else{ - FDialog.error(p_WindowNo, m_pi.getSummary()); - } + ProcessInfoDialog.showProcessInfo(m_pi, p_WindowNo, InfoPanel.this, true); // enable or disable control button rely selected record status enableButtons(); }else if (!m_pi.isError()){ - ProcessInfoUtil.setLogFromDB(m_pi); - ProcessInfoLog m_logs[] = m_pi.getLogs(); - if (m_logs != null && m_logs.length > 0) { - ProcessInfoDialog.showProcessInfo(m_pi, p_WindowNo, InfoPanel.this, false); - - // when success, show summary if exists - }else if (m_pi.getSummary() != null && m_pi.getSummary().trim().length() > 0){ - FDialog.info(p_WindowNo, null, m_pi.getSummary()); - } - + ProcessInfoDialog.showProcessInfo(m_pi, p_WindowNo, InfoPanel.this, true); Clients.response(new AuEcho(InfoPanel.this, "onQueryCallback", m_results)); }