From 1fb4248ab961cf15a0db6366d39cb6882dd1de2f Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 1 May 2023 16:44:51 +0200 Subject: [PATCH] IDEMPIERE-5706 Improvements to Tab Editor in Window Customization (#1817) --- .../oracle/202305011505_IDEMPIERE-5706.sql | 18 +++++ .../202305011505_IDEMPIERE-5706.sql | 15 ++++ .../org/compiere/model/X_AD_FieldGroup.java | 4 +- .../adempiere/webui/adwindow/ADTabpanel.java | 3 +- .../webui/apps/ProcessParameterPanel.java | 3 +- .../adempiere/webui/apps/form/WTabEditor.java | 3 +- .../src/org/compiere/apps/form/TabEditor.java | 68 +++++++++++-------- 7 files changed, 81 insertions(+), 33 deletions(-) create mode 100644 migration/iD10/oracle/202305011505_IDEMPIERE-5706.sql create mode 100644 migration/iD10/postgresql/202305011505_IDEMPIERE-5706.sql diff --git a/migration/iD10/oracle/202305011505_IDEMPIERE-5706.sql b/migration/iD10/oracle/202305011505_IDEMPIERE-5706.sql new file mode 100644 index 0000000000..e914a7b59e --- /dev/null +++ b/migration/iD10/oracle/202305011505_IDEMPIERE-5706.sql @@ -0,0 +1,18 @@ +-- IDEMPIERE-5706 Improvements to Tab Editor in Window Customization +SELECT register_migration_script('202305011505_IDEMPIERE-5706.sql') FROM dual; + +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- May 1, 2023, 3:05:28 PM CEST +INSERT INTO AD_FieldGroup (AD_FieldGroup_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,EntityType,IsCollapsedByDefault,AD_FieldGroup_UU) VALUES (200031,0,0,'Y',TO_TIMESTAMP('2023-05-01 15:05:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-01 15:05:27','YYYY-MM-DD HH24:MI:SS'),100,'( None )','D','N','b447882e-593a-4e5e-9491-a499e2edf11b') +; + +-- May 1, 2023, 3:12:43 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200636,'Do Nothing',53000,'D',0,0,'Y',TO_TIMESTAMP('2023-05-01 15:12:43','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-01 15:12:43','YYYY-MM-DD HH24:MI:SS'),100,'D','5621157f-37ae-4134-95b2-65a957b258a7') +; + +-- May 1, 2023, 3:26:21 PM CEST +UPDATE AD_FieldGroup SET FieldGroupType='D',Updated=TO_TIMESTAMP('2023-05-01 15:26:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_FieldGroup_ID=200031 +; + diff --git a/migration/iD10/postgresql/202305011505_IDEMPIERE-5706.sql b/migration/iD10/postgresql/202305011505_IDEMPIERE-5706.sql new file mode 100644 index 0000000000..4de6d92b1e --- /dev/null +++ b/migration/iD10/postgresql/202305011505_IDEMPIERE-5706.sql @@ -0,0 +1,15 @@ +-- IDEMPIERE-5706 Improvements to Tab Editor in Window Customization +SELECT register_migration_script('202305011505_IDEMPIERE-5706.sql') FROM dual; + +-- May 1, 2023, 3:05:28 PM CEST +INSERT INTO AD_FieldGroup (AD_FieldGroup_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,EntityType,IsCollapsedByDefault,AD_FieldGroup_UU) VALUES (200031,0,0,'Y',TO_TIMESTAMP('2023-05-01 15:05:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-01 15:05:27','YYYY-MM-DD HH24:MI:SS'),100,'( None )','D','N','b447882e-593a-4e5e-9491-a499e2edf11b') +; + +-- May 1, 2023, 3:12:43 PM CEST +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200636,'Do Nothing',53000,'D',0,0,'Y',TO_TIMESTAMP('2023-05-01 15:12:43','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-05-01 15:12:43','YYYY-MM-DD HH24:MI:SS'),100,'D','5621157f-37ae-4134-95b2-65a957b258a7') +; + +-- May 1, 2023, 3:26:21 PM CEST +UPDATE AD_FieldGroup SET FieldGroupType='D',Updated=TO_TIMESTAMP('2023-05-01 15:26:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_FieldGroup_ID=200031 +; + diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_FieldGroup.java b/org.adempiere.base/src/org/compiere/model/X_AD_FieldGroup.java index 21941bc965..9116933859 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_FieldGroup.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_FieldGroup.java @@ -31,7 +31,7 @@ public class X_AD_FieldGroup extends PO implements I_AD_FieldGroup, I_Persistent /** * */ - private static final long serialVersionUID = 20230409L; + private static final long serialVersionUID = 20230501L; /** Standard Constructor */ public X_AD_FieldGroup (Properties ctx, int AD_FieldGroup_ID, String trxName) @@ -173,6 +173,8 @@ public class X_AD_FieldGroup extends PO implements I_AD_FieldGroup, I_Persistent public static final int FIELDGROUPTYPE_AD_Reference_ID=53000; /** Collapse = C */ public static final String FIELDGROUPTYPE_Collapse = "C"; + /** Do Nothing = D */ + public static final String FIELDGROUPTYPE_DoNothing = "D"; /** Label = L */ public static final String FIELDGROUPTYPE_Label = "L"; /** Tab = T */ diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index 0354d42a48..dd55b2faad 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -649,7 +649,8 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer // field group String fieldGroup = field.getFieldGroup(); - if (!Util.isEmpty(fieldGroup) && !fieldGroup.equals(currentFieldGroup)) // group changed + if (!Util.isEmpty(fieldGroup) && !fieldGroup.equals(currentFieldGroup) + && !X_AD_FieldGroup.FIELDGROUPTYPE_DoNothing.equals(field.getFieldGroupType())) // group changed { currentFieldGroup = fieldGroup; 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 f5def9e567..9ecad4ccae 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 @@ -318,7 +318,8 @@ public class ProcessParameterPanel extends Panel implements field.setParentEvaluatee(this); String fieldGroup = field.getFieldGroup(); - if (!Util.isEmpty(fieldGroup) && !fieldGroup.equals(currentFieldGroup)) // group changed + if (!Util.isEmpty(fieldGroup) && !fieldGroup.equals(currentFieldGroup) + && !X_AD_FieldGroup.FIELDGROUPTYPE_DoNothing.equals(field.getFieldGroupType())) // group changed { currentFieldGroup = fieldGroup; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WTabEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WTabEditor.java index 7dfb174048..013835476b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WTabEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WTabEditor.java @@ -265,7 +265,8 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe // field group String fieldGroup = gridField.getFieldGroup(); - if (!Util.isEmpty(fieldGroup) && !fieldGroup.equals(currentFieldGroup)) // group changed + if (!Util.isEmpty(fieldGroup) && !fieldGroup.equals(currentFieldGroup) + && !X_AD_FieldGroup.FIELDGROUPTYPE_DoNothing.equals(gridField.getFieldGroupType())) // group changed { currentFieldGroup = fieldGroup; diff --git a/org.adempiere.ui/src/org/compiere/apps/form/TabEditor.java b/org.adempiere.ui/src/org/compiere/apps/form/TabEditor.java index 31c32356a4..6c24f9ffdb 100644 --- a/org.adempiere.ui/src/org/compiere/apps/form/TabEditor.java +++ b/org.adempiere.ui/src/org/compiere/apps/form/TabEditor.java @@ -282,39 +282,49 @@ public class TabEditor AD_UserDef_Field_ID = udfield.getAD_UserDef_Field_ID(); udfield = new MUserDefField(Env.getCtx(), AD_UserDef_Field_ID, null); - - if (field.getName() != null) - udfield.setName(field.getName()); - - if (field.getDescription() != null) - udfield.setDescription(field.getDescription()); - - if (field.getHelp() != null) - udfield.setHelp(field.getHelp()); - - if (field.getPlaceholder() != null) - udfield.setPlaceholder(field.getPlaceholder()); - - udfield.setIsActive(field.isActive()); - udfield.setDisplayLogic(field.getDisplayLogic()); - udfield.setDisplayLength(field.getDisplayLength()); - udfield.setIsDisplayed(field.isDisplayed() ? "Y" : "N"); - udfield.setIsReadOnly(field.isReadOnly() ? "Y" : "N"); udfield.setAD_Field_ID(field.get_ID()); - udfield.setSeqNo(field.getSeqNo()); - udfield.setXPosition(field.getXPosition()); - udfield.setNumLines(field.getNumLines()); - udfield.setColumnSpan(field.getColumnSpan()); udfield.setAD_UserDef_Tab_ID(AD_UserDef_Tab_ID); - udfield.setSortNo(field.getSortNo().intValue()); udfield.setAD_Org_ID(m_tab.getAD_Org_ID()); - udfield.setMandatoryLogic(field.getMandatoryLogic()); - udfield.setReadOnlyLogic(field.getReadOnlyLogic()); - if (field.getAD_FieldGroup_ID() > 0) - udfield.setAD_FieldGroup_ID(field.getAD_FieldGroup_ID()); - else - udfield.set_ValueOfColumn("ad_fieldgroup_id", null); + if (field.is_ValueChanged(MField.COLUMNNAME_Name)) + udfield.setName(field.getName()); + if (field.is_ValueChanged(MField.COLUMNNAME_Description)) + udfield.setDescription(field.getDescription()); + if (field.is_ValueChanged(MField.COLUMNNAME_Help)) + udfield.setHelp(field.getHelp()); + if (field.is_ValueChanged(MField.COLUMNNAME_Placeholder)) + udfield.setPlaceholder(field.getPlaceholder()); + if (field.is_ValueChanged(MField.COLUMNNAME_IsActive)) + udfield.setIsActive(field.isActive()); + if (field.is_ValueChanged(MField.COLUMNNAME_DisplayLogic)) + udfield.setDisplayLogic(field.getDisplayLogic()); + if (field.is_ValueChanged(MField.COLUMNNAME_DisplayLength)) + udfield.setDisplayLength(field.getDisplayLength()); + if (field.is_ValueChanged(MField.COLUMNNAME_IsDisplayed)) + udfield.setIsDisplayed(field.isDisplayed() ? "Y" : "N"); + if (field.is_ValueChanged(MField.COLUMNNAME_IsReadOnly)) + udfield.setIsReadOnly(field.isReadOnly() ? "Y" : "N"); + if (field.is_ValueChanged(MField.COLUMNNAME_SeqNo)) + udfield.setSeqNo(field.getSeqNo()); + if (field.is_ValueChanged(MField.COLUMNNAME_XPosition)) + udfield.setXPosition(field.getXPosition()); + if (field.is_ValueChanged(MField.COLUMNNAME_NumLines)) + udfield.setNumLines(field.getNumLines()); + if (field.is_ValueChanged(MField.COLUMNNAME_ColumnSpan)) + udfield.setColumnSpan(field.getColumnSpan()); + if (field.is_ValueChanged(MField.COLUMNNAME_SortNo)) + udfield.setSortNo(field.getSortNo().intValue()); + if (field.is_ValueChanged(MField.COLUMNNAME_MandatoryLogic)) + udfield.setMandatoryLogic(field.getMandatoryLogic()); + if (field.is_ValueChanged(MField.COLUMNNAME_ReadOnlyLogic)) + udfield.setReadOnlyLogic(field.getReadOnlyLogic()); + + if (field.is_ValueChanged(MField.COLUMNNAME_AD_FieldGroup_ID)) { + if (field.getAD_FieldGroup_ID() > 0) + udfield.setAD_FieldGroup_ID(field.getAD_FieldGroup_ID()); + else + udfield.setAD_FieldGroup_ID(0); + } udfield.saveEx();