diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindowToolbar.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindowToolbar.java index 23435b2006..970be8a714 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindowToolbar.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindowToolbar.java @@ -31,8 +31,10 @@ import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.action.Actions; import org.adempiere.webui.action.IAction; import org.adempiere.webui.component.FToolbar; +import org.adempiere.webui.component.Tabpanel; import org.adempiere.webui.component.ToolBarButton; import org.adempiere.webui.event.ToolbarListener; +import org.adempiere.webui.part.WindowContainer; import org.adempiere.webui.session.SessionManager; import org.adempiere.webui.theme.ThemeManager; import org.adempiere.webui.util.ZKUpdateUtil; @@ -829,6 +831,18 @@ public class ADWindowToolbar extends FToolbar implements EventListener "}"); addEventListener(Events.ON_AFTER_SIZE, (AfterSizeEvent evt) -> onAfterSize(evt)); + addCallback(AFTER_PAGE_ATTACHED, t -> afterPageAttached()); + } + + private void afterPageAttached() { + Component p = getParent(); + while (p != null) { + if (p instanceof Tabpanel) { + p.addEventListener(WindowContainer.ON_MOBILE_SET_SELECTED_TAB, evt -> this.invalidate()); + break; + } + p = p.getParent(); + } } private void onAfterSize(AfterSizeEvent evt) { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index d42c6e953e..b582207c43 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -3060,8 +3060,15 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements //dialog.setWidth("500px"); dialog.setBorder("normal"); getComponent().getParent().appendChild(dialog); - showBusyMask(dialog); - LayoutUtils.openOverlappedWindow(getComponent(), dialog, "middle_center"); + if (ClientInfo.isMobile()) + { + dialog.doHighlighted(); + } + else + { + showBusyMask(dialog); + LayoutUtils.openOverlappedWindow(getComponent(), dialog, "middle_center"); + } dialog.focus(); } else 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 eed77aa483..61d3b5710d 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 @@ -248,7 +248,7 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI } layout(); - + return true; } @@ -406,13 +406,13 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI bottomParameterLayout.appendChild(reportOptionLayout); freportType = new Listbox(); - freportType.setSclass("option-input-parameter"); + freportType.setSclass("option-input-parameter view-report-list"); chbIsSummary = new Checkbox(); chbIsSummary.setSclass("option-input-parameter"); Label lPrintFormat = new Label(Msg.translate(Env.getCtx(), "AD_PrintFormat_ID")); - lPrintFormat.setSclass("option-input-parameter"); + lPrintFormat.setSclass("option-input-parameter print-format-label"); Label lreportType = new Label(Msg.translate(Env.getCtx(), "view.report")); - lreportType.setSclass("option-input-parameter"); + lreportType.setSclass("option-input-parameter view-report-label"); Label lIsSummary = new Label(Msg.translate(Env.getCtx(), "Summary")); lIsSummary.setSclass("option-input-parameter"); @@ -427,7 +427,8 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI reportOptionLayout.appendChild(fLanguageType.getComponent()); ((Combobox)fLanguageType.getComponent()).setSclass("option-input-parameter"); } - fPrintFormat.getComponent().setSclass("option-input-parameter"); + fPrintFormat.getComponent().setSclass("option-input-parameter print-format-list"); + fPrintFormat.getComponent().setPlaceholder(lPrintFormat.getValue()); reportOptionLayout.appendChild(lreportType); reportOptionLayout.appendChild(freportType); reportOptionLayout.appendChild(lIsSummary); @@ -441,15 +442,19 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI } protected void savePrameterLayout(HtmlBasedComponent bottomParameterLayout) { - HtmlBasedComponent savePrameterLayout = new Hlayout(); + Hlayout savePrameterLayout = new Hlayout(); savePrameterLayout.setSclass("save-parameter-container"); bottomParameterLayout.appendChild(savePrameterLayout); + savePrameterLayout.setValign("middle"); lSaved = new Label(Msg.getMsg(Env.getCtx(), "SavedParameter")); + lSaved.setClass("saved-parameter-label"); savePrameterLayout.appendChild(lSaved); fSavedName = new Combobox(); fSavedName.addEventListener(Events.ON_CHANGE, this); savePrameterLayout.appendChild(fSavedName); + fSavedName.setPlaceholder(lSaved.getValue()); + fSavedName.setSclass("saved-parameter-list"); bSave.setEnabled(false); bSave.addActionListener(this); @@ -610,6 +615,7 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI if (component == runAsJobField && event.getName().equals(Events.ON_CHECK)) { notificationTypeField.getComponent().getParent().setVisible(runAsJobField.isChecked()); + mainParameterLayout.invalidate(); } else if (event.getName().equals(ON_COMPLETE)) 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 182800d101..a68116e8a2 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 @@ -18,14 +18,16 @@ package org.adempiere.webui.apps; import java.util.logging.Level; +import org.adempiere.webui.ClientInfo; import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.component.Window; import org.adempiere.webui.event.DialogEvents; -import org.adempiere.webui.session.SessionManager; +import org.adempiere.webui.util.ZKUpdateUtil; import org.compiere.process.ProcessInfo; import org.compiere.util.CLogger; import org.compiere.util.Env; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.HtmlBasedComponent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; @@ -49,6 +51,7 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi /** Logger */ private static CLogger log = CLogger.getCLogger(ProcessModalDialog.class); // + private String orientation; /** * @param aProcess @@ -82,8 +85,28 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi { init(Env.getCtx(), WindowNo, pi.getAD_Process_ID(), pi, autoStart, true); if (mainParameterLayout != null)// when auto start it's null - mainParameterLayout.setStyle("max-height:" + (SessionManager.getAppDesktop().getClientInfo().desktopHeight - 150) + "px"); - this.setSclass("popup-dialog"); + { + mainParameterLayout.setStyle("max-height:" + ClientInfo.get().desktopHeight + "px"); + ZKUpdateUtil.setVflex(mainParameterLayout, "min"); + } + if (topParameterLayout != null) + { + topParameterLayout.setStyle("max-height:" + (ClientInfo.get().desktopHeight-130) + "px"); + } + if (bottomParameterLayout != null) + { + for(Component c : bottomParameterLayout.getChildren()) + { + if (c instanceof HtmlBasedComponent) + ZKUpdateUtil.setVflex((HtmlBasedComponent) c, "min"); + } + } + this.setSclass("popup-dialog process-modal-dialog"); + if (ClientInfo.isMobile()) + { + orientation = ClientInfo.get().orientation; + ClientInfo.onClientInfo(this, this::onClientInfo); + } } catch(Exception ex) { @@ -183,5 +206,23 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi }else { super.onEvent(event); } - } + } + + protected void onClientInfo() { + if (getPage() != null) { + String newOrientation = ClientInfo.get().orientation; + if (!newOrientation.equals(orientation)) { + orientation = newOrientation; + if (mainParameterLayout != null)// when auto start it's null + { + mainParameterLayout.setStyle("max-height:" + ClientInfo.get().desktopHeight + "px"); + } + if (topParameterLayout != null) + { + topParameterLayout.setStyle("max-height:" + (ClientInfo.get().desktopHeight-130) + "px"); + } + this.invalidate(); + } + } + } } // ProcessModalDialog diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java index 5b9505e7b1..8ed12df463 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java @@ -62,8 +62,9 @@ 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.Div; -import org.zkoss.zul.Hbox; import org.zkoss.zul.Label; +import org.zkoss.zul.Space; +import org.zkoss.zul.impl.InputElement; import org.zkoss.zul.impl.XulElement; /** @@ -131,7 +132,7 @@ public class ProcessParameterPanel extends Panel implements // ranges private ArrayList m_mFields = new ArrayList(); private ArrayList m_mFields2 = new ArrayList(); - private ArrayList