From 9dccd5761734cf69847b70179253e36095a3fe60 Mon Sep 17 00:00:00 2001 From: hieplq Date: Sun, 4 Sep 2016 10:51:01 +0700 Subject: [PATCH] IDEMPIERE-3179:record should move to editing mode when user is editing first field --- .../webui/adwindow/ADWindowContent.java | 5 ++++ .../adwindow/AbstractADWindowContent.java | 11 ++++++--- org.adempiere.ui.zk/index.zul | 24 +++++++++++++++++++ 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindowContent.java index f4376f8a63..e0890144c4 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindowContent.java @@ -240,5 +240,10 @@ public class ADWindowContent extends AbstractADWindowContent SessionManager.getSessionApplication().getKeylistener().removeEventListener(Events.ON_CTRL_KEY, content); } catch (Exception e){} } + } + + @Override + protected void switchEditStatus(boolean editStatus) { + layout.setWidgetOverride("isEditting", "'" + String.valueOf(editStatus) + "'"); } } 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 953ec46f7b..7f4ba69ee0 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 @@ -267,6 +267,8 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements */ protected abstract IADTabbox createADTab(); + protected abstract void switchEditStatus(boolean editStatus); + private void focusToActivePanel() { IADTabpanel adTabPanel = adTabbox.getSelectedTabpanel(); focusToTabpanel(adTabPanel); @@ -1556,10 +1558,13 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements { adTabbox.updateDetailPaneToolbar(changed, readOnly); } - toolbar.enableIgnore(adTabbox.needSave(true, false) || + boolean isEditting = adTabbox.needSave(true, false) || adTabbox.getSelectedGridTab().isNew() || - (adTabbox.getSelectedDetailADTabpanel() != null && adTabbox.getSelectedDetailADTabpanel().getGridTab().isNew())); - + (adTabbox.getSelectedDetailADTabpanel() != null && adTabbox.getSelectedDetailADTabpanel().getGridTab().isNew()); + toolbar.enableIgnore(isEditting); + + switchEditStatus (isEditting); + if (changed && !readOnly && !toolbar.isSaveEnable() ) { if (tabPanel.getGridTab().getRecord_ID() > 0) { if (adTabbox.getSelectedIndex() == 0 && !detailTab) { diff --git a/org.adempiere.ui.zk/index.zul b/org.adempiere.ui.zk/index.zul index 53c679cf98..b58a14d7fd 100644 --- a/org.adempiere.ui.zk/index.zul +++ b/org.adempiere.ui.zk/index.zul @@ -40,6 +40,30 @@ Copyright (C) 2007 Ashley G Ramdass. } }); + zk.afterLoad('zul.wgt', function () { + // should filter out for only component inside standard window or component wish fire this event, + // or ever rise other event like start editting to distinguish with true onChange event + zk.override(zul.inp.InputWidget.prototype, "doInput_", function (evt) { + this.$doInput_(evt); + var domElemOfLayout = jq('#' + this.$n().id).closest(".adwindow-layout"); + if (domElemOfLayout == null){ + ;// do nothing + }else{ + var winLayoutWg = zk.Widget.$(domElemOfLayout); + if (winLayoutWg == null){ + ;// do nothing + }else{ + var isEditting = winLayoutWg.get ("isEditting"); + // winLayoutWg should cache to improve perfomance + if (isEditting == "false"){ + zAu.send(new zk.Event(zk.Widget.$(this), 'onChange',{"value":this.$n().value}));//fire change event to move to edit + } + } + } + }); + + }); + zk.afterLoad('zul.mesh', function () { zk.override(zul.mesh.Paging.prototype, "bind_", function () {