IDEMPIERE-2853: Support for IADTabPanel as factory to add custom Tab … (#579)

* IDEMPIERE-2853: Support for IADTabPanel as factory to add custom Tab types
sh: q: command not found

* IDEMPIERE-2853: adding requested Java doc, fixing seq mismatch in oracle and postgresql, Using Interface method instead of manual isSortTab check,

* IDEMPIERE-2853: Adding default implementation for isEnableCustomizeButton in IADTabpanel

* IDEMPIERE-2853: renaming reference label and Added support for allowing implementor to update toolbar state.

* IDEMPIERE-2853: Fixing compilation issue due to merging to master branch
This commit is contained in:
Deepak Pansheriya 2021-08-30 17:26:34 +05:30 committed by GitHub
parent 24b4643597
commit 96baf0b7cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 792 additions and 112 deletions

View File

@ -7,7 +7,7 @@ CREATE OR REPLACE VIEW AD_TAB_V
READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID, ISSORTTAB,
ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection)
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection, AD_TabType)
AS
SELECT t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, t.Name, t.Description,
t.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
@ -18,7 +18,7 @@ SELECT t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, t.Name, t.Description,
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection, t.AD_TabType
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
WHERE t.IsActive='Y'

View File

@ -7,7 +7,7 @@ CREATE OR REPLACE VIEW AD_TAB_VT
COMMITWARNING, READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID,
ISSORTTAB, ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection)
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection, AD_TabType)
AS
SELECT trl.AD_Language, t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, trl.Name, trl.Description,
trl.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
@ -18,7 +18,7 @@ SELECT trl.AD_Language, t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, trl.Name, tr
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection, t.AD_TabType
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
INNER JOIN AD_Tab_Trl trl ON (t.AD_Tab_ID = trl.AD_Tab_ID)

View File

@ -7,7 +7,7 @@ CREATE OR REPLACE VIEW AD_TAB_V
READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID, ISSORTTAB,
ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection)
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection, AD_TabType)
AS
SELECT t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, t.Name, t.Description,
t.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
@ -18,7 +18,7 @@ SELECT t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, t.Name, t.Description,
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection, t.AD_TabType
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
WHERE t.IsActive='Y'

View File

@ -7,7 +7,7 @@ CREATE OR REPLACE VIEW AD_TAB_VT
COMMITWARNING, READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID,
ISSORTTAB, ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection)
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection, AD_TabType)
AS
SELECT trl.AD_Language, t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, trl.Name, trl.Description,
trl.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
@ -18,7 +18,7 @@ SELECT trl.AD_Language, t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, trl.Name, tr
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection, t.AD_TabType
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
INNER JOIN AD_Tab_Trl trl ON (t.AD_Tab_ID = trl.AD_Tab_ID)

View File

@ -0,0 +1,195 @@
-- IDEMPIERE-2853: Panel tab as a factory
-- Jan 22, 2016 11:47:02 AM IST
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (202974,0,0,'Y',TO_DATE('2016-01-22 11:47:01','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-01-22 11:47:01','YYYY-MM-DD HH24:MI:SS'),100,'AD_TabType','Tab Type','Defines Tab Type','Tab Type','D','5c68092e-e403-4013-8c0f-ae3f1266d989')
;
-- Jan 22, 2016 11:50:50 AM IST
INSERT INTO AD_Reference (AD_Reference_ID,Name,Description,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200117,'TabTypeList','List of tab type','L',0,0,'Y',TO_DATE('2016-01-22 11:50:49','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-01-22 11:50:49','YYYY-MM-DD HH24:MI:SS'),100,'D','N','5cc837cc-e950-4a01-8044-4aa6a69d9515')
;
-- Jan 22, 2016 11:51:22 AM IST
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 (200347,'Form',200117,'FORM',0,0,'Y',TO_DATE('2016-01-22 11:51:21','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-01-22 11:51:21','YYYY-MM-DD HH24:MI:SS'),100,'D','590c7ccd-4400-4208-aca4-d86e508e0f4d')
;
-- Jan 22, 2016 11:51:36 AM IST
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 (200348,'Sort',200117,'SORT',0,0,'Y',TO_DATE('2016-01-22 11:51:36','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-01-22 11:51:36','YYYY-MM-DD HH24:MI:SS'),100,'D','47729861-5eed-4209-8228-7858e0ae7c13')
;
-- Jan 22, 2016 11:52:05 AM IST
INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure) VALUES (212616,0,'Tab Type','Defines Tab Type',106,'AD_TabType',40,'N','N','N','N','N',0,'N',17,200117,0,0,'Y',TO_DATE('2016-01-22 11:52:04','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-01-22 11:52:04','YYYY-MM-DD HH24:MI:SS'),100,202974,'Y','N','D','N','N','N','Y','41054b6a-58eb-427a-9748-a192f20f6efb','Y',0,'N','N')
;
-- Jan 22, 2016 11:52:18 AM IST
ALTER TABLE AD_Tab ADD AD_TabType VARCHAR2(40 CHAR) DEFAULT NULL
;
-- Jan 22, 2016 11:52:41 AM IST
INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (204121,'Tab Type','Defines Tab Type',106,212616,'Y',40,400,'N','N','N','N',0,0,'Y',TO_DATE('2016-01-22 11:52:40','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2016-01-22 11:52:40','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','644e396b-717a-4f99-a0d3-4007862a59c2','Y',330,2)
;
-- Dec 11, 2020, 4:10:34 PM IST
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=110, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204121
;
-- Dec 11, 2020, 4:10:34 PM IST
UPDATE AD_Field SET SeqNo=120, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=124
;
-- Dec 11, 2020, 4:10:34 PM IST
UPDATE AD_Field SET SeqNo=130, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=312
;
-- Dec 11, 2020, 4:10:34 PM IST
UPDATE AD_Field SET SeqNo=140, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202515
;
-- Dec 11, 2020, 4:10:34 PM IST
UPDATE AD_Field SET SeqNo=150, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11997
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=160, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=927
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=170, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5707
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=180, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=928
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=190, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206078
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=200, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206079
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=210, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5709
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=220, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5708
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=230, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1546
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=240, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206373
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=250, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57266
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=260, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2575
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=270, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11265
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=280, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=929
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=290, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11998
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=300, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=271
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=310, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11266
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=320, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1548
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=330, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1550
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=340, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1549
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=350, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=4956
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=360, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201811
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=370, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5131
;
CREATE OR REPLACE VIEW AD_TAB_V
(AD_TAB_ID, AD_WINDOW_ID, AD_TABLE_ID, NAME, DESCRIPTION,
HELP, SEQNO, ISSINGLEROW, HASTREE, ISINFOTAB,
REPLICATIONTYPE, TABLENAME, ACCESSLEVEL, ISSECURITYENABLED, ISDELETEABLE,
ISHIGHVOLUME, ISVIEW, HASASSOCIATION, ISTRANSLATIONTAB, ISREADONLY,
AD_IMAGE_ID, TABLEVEL, WHERECLAUSE, ORDERBYCLAUSE, COMMITWARNING,
READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID, ISSORTTAB,
ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection, AD_TabType)
AS
SELECT t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, t.Name, t.Description,
t.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
tbl.TableName, tbl.AccessLevel, tbl.IsSecurityEnabled, tbl.IsDeleteable,
tbl.IsHighVolume, tbl.IsView, cast('N' as char) AS HasAssociation, -- compatibility
t.IsTranslationTab, t.IsReadOnly, t.AD_Image_ID, t.TabLevel,
t.WhereClause, t.OrderByClause, t.CommitWarning, t.ReadOnlyLogic, t.DisplayLogic,
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection, t.AD_TabType
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
WHERE t.IsActive='Y'
AND tbl.IsActive='Y'
;
CREATE OR REPLACE VIEW AD_TAB_VT
(AD_LANGUAGE, AD_TAB_ID, AD_WINDOW_ID, AD_TABLE_ID, NAME,
DESCRIPTION, HELP, SEQNO, ISSINGLEROW, HASTREE,
ISINFOTAB, REPLICATIONTYPE, TABLENAME, ACCESSLEVEL, ISSECURITYENABLED,
ISDELETEABLE, ISHIGHVOLUME, ISVIEW, HASASSOCIATION, ISTRANSLATIONTAB,
ISREADONLY, AD_IMAGE_ID, TABLEVEL, WHERECLAUSE, ORDERBYCLAUSE,
COMMITWARNING, READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID,
ISSORTTAB, ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection, AD_TabType)
AS
SELECT trl.AD_Language, t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, trl.Name, trl.Description,
trl.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
tbl.TableName, tbl.AccessLevel, tbl.IsSecurityEnabled, tbl.IsDeleteable,
tbl.IsHighVolume, tbl.IsView, cast('N' as char) AS HasAssociation, -- compatibility
t.IsTranslationTab, t.IsReadOnly, t.AD_Image_ID, t.TabLevel,
t.WhereClause, t.OrderByClause, trl.CommitWarning, t.ReadOnlyLogic, t.DisplayLogic,
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection, t.AD_TabType
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
INNER JOIN AD_Tab_Trl trl ON (t.AD_Tab_ID = trl.AD_Tab_ID)
WHERE t.IsActive='Y'
AND tbl.IsActive='Y'
;
-- Jan 22, 2016 11:53:09 AM IST
SELECT register_migration_script('201601221200_IDEMPIERE-2853.sql') FROM dual
;

View File

@ -0,0 +1,11 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- Feb 14, 2021, 10:47:10 AM IST
UPDATE AD_Field SET IsActive='N', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2021-02-14 10:47:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5707
;
update AD_Tab set ad_tabtype='SORT' where isSortTab='Y';
SELECT register_migration_script('202102141100_IDEMPIERE-2853.sql') FROM dual
;

View File

@ -0,0 +1,195 @@
-- IDEMPIERE-2853: Panel tab as a factory
-- Jan 22, 2016 11:47:02 AM IST
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,PrintName,EntityType,AD_Element_UU) VALUES (202974,0,0,'Y',TO_TIMESTAMP('2016-01-22 11:47:01','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-01-22 11:47:01','YYYY-MM-DD HH24:MI:SS'),100,'AD_TabType','Tab Type','Defines Tab Type','Tab Type','D','5c68092e-e403-4013-8c0f-ae3f1266d989')
;
-- Jan 22, 2016 11:50:50 AM IST
INSERT INTO AD_Reference (AD_Reference_ID,Name,Description,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200117,'TabTypeList','List of tab type','L',0,0,'Y',TO_TIMESTAMP('2016-01-22 11:50:49','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-01-22 11:50:49','YYYY-MM-DD HH24:MI:SS'),100,'D','N','5cc837cc-e950-4a01-8044-4aa6a69d9515')
;
-- Jan 22, 2016 11:51:22 AM IST
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 (200347,'Form',200117,'FORM',0,0,'Y',TO_TIMESTAMP('2016-01-22 11:51:21','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-01-22 11:51:21','YYYY-MM-DD HH24:MI:SS'),100,'D','590c7ccd-4400-4208-aca4-d86e508e0f4d')
;
-- Jan 22, 2016 11:51:36 AM IST
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 (200348,'Sort',200117,'SORT',0,0,'Y',TO_TIMESTAMP('2016-01-22 11:51:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-01-22 11:51:36','YYYY-MM-DD HH24:MI:SS'),100,'D','47729861-5eed-4209-8228-7858e0ae7c13')
;
-- Jan 22, 2016 11:52:05 AM IST
INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure) VALUES (212616,0,'Tab Type','Defines Tab Type',106,'AD_TabType',40,'N','N','N','N','N',0,'N',17,200117,0,0,'Y',TO_TIMESTAMP('2016-01-22 11:52:04','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-01-22 11:52:04','YYYY-MM-DD HH24:MI:SS'),100,202974,'Y','N','D','N','N','N','Y','41054b6a-58eb-427a-9748-a192f20f6efb','Y',0,'N','N')
;
-- Jan 22, 2016 11:52:18 AM IST
ALTER TABLE AD_Tab ADD COLUMN AD_TabType VARCHAR(40) DEFAULT NULL
;
-- Jan 22, 2016 11:52:41 AM IST
INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (204121,'Tab Type','Defines Tab Type',106,212616,'Y',40,400,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2016-01-22 11:52:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2016-01-22 11:52:40','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','644e396b-717a-4f99-a0d3-4007862a59c2','Y',330,2)
;
-- Dec 11, 2020, 4:10:34 PM IST
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=110, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204121
;
-- Dec 11, 2020, 4:10:34 PM IST
UPDATE AD_Field SET SeqNo=120, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=124
;
-- Dec 11, 2020, 4:10:34 PM IST
UPDATE AD_Field SET SeqNo=130, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=312
;
-- Dec 11, 2020, 4:10:34 PM IST
UPDATE AD_Field SET SeqNo=140, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202515
;
-- Dec 11, 2020, 4:10:34 PM IST
UPDATE AD_Field SET SeqNo=150, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11997
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=160, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=927
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=170, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5707
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=180, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=928
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=190, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206078
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=200, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206079
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=210, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5709
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=220, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5708
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=230, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1546
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=240, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206373
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=250, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57266
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=260, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2575
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=270, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11265
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=280, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=929
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=290, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11998
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=300, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=271
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=310, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11266
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=320, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1548
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=330, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1550
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=340, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1549
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=350, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=4956
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=360, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201811
;
-- Dec 11, 2020, 4:10:35 PM IST
UPDATE AD_Field SET SeqNo=370, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-12-11 16:10:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5131
;
CREATE OR REPLACE VIEW AD_TAB_V
(AD_TAB_ID, AD_WINDOW_ID, AD_TABLE_ID, NAME, DESCRIPTION,
HELP, SEQNO, ISSINGLEROW, HASTREE, ISINFOTAB,
REPLICATIONTYPE, TABLENAME, ACCESSLEVEL, ISSECURITYENABLED, ISDELETEABLE,
ISHIGHVOLUME, ISVIEW, HASASSOCIATION, ISTRANSLATIONTAB, ISREADONLY,
AD_IMAGE_ID, TABLEVEL, WHERECLAUSE, ORDERBYCLAUSE, COMMITWARNING,
READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID, ISSORTTAB,
ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection, AD_TabType)
AS
SELECT t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, t.Name, t.Description,
t.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
tbl.TableName, tbl.AccessLevel, tbl.IsSecurityEnabled, tbl.IsDeleteable,
tbl.IsHighVolume, tbl.IsView, cast('N' as char) AS HasAssociation, -- compatibility
t.IsTranslationTab, t.IsReadOnly, t.AD_Image_ID, t.TabLevel,
t.WhereClause, t.OrderByClause, t.CommitWarning, t.ReadOnlyLogic, t.DisplayLogic,
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection, t.AD_TabType
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
WHERE t.IsActive='Y'
AND tbl.IsActive='Y'
;
CREATE OR REPLACE VIEW AD_TAB_VT
(AD_LANGUAGE, AD_TAB_ID, AD_WINDOW_ID, AD_TABLE_ID, NAME,
DESCRIPTION, HELP, SEQNO, ISSINGLEROW, HASTREE,
ISINFOTAB, REPLICATIONTYPE, TABLENAME, ACCESSLEVEL, ISSECURITYENABLED,
ISDELETEABLE, ISHIGHVOLUME, ISVIEW, HASASSOCIATION, ISTRANSLATIONTAB,
ISREADONLY, AD_IMAGE_ID, TABLEVEL, WHERECLAUSE, ORDERBYCLAUSE,
COMMITWARNING, READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID,
ISSORTTAB, ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection, AD_TabType)
AS
SELECT trl.AD_Language, t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, trl.Name, trl.Description,
trl.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
tbl.TableName, tbl.AccessLevel, tbl.IsSecurityEnabled, tbl.IsDeleteable,
tbl.IsHighVolume, tbl.IsView, cast('N' as char) AS HasAssociation, -- compatibility
t.IsTranslationTab, t.IsReadOnly, t.AD_Image_ID, t.TabLevel,
t.WhereClause, t.OrderByClause, trl.CommitWarning, t.ReadOnlyLogic, t.DisplayLogic,
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection, t.AD_TabType
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
INNER JOIN AD_Tab_Trl trl ON (t.AD_Tab_ID = trl.AD_Tab_ID)
WHERE t.IsActive='Y'
AND tbl.IsActive='Y'
;
-- Jan 22, 2016 11:53:09 AM IST
SELECT register_migration_script('201601221200_IDEMPIERE-2853.sql') FROM dual
;

View File

@ -0,0 +1,8 @@
-- Feb 14, 2021, 10:47:10 AM IST
UPDATE AD_Field SET IsActive='N', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-02-14 10:47:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5707
;
update AD_Tab set ad_tabtype='SORT' where isSortTab='Y';
SELECT register_migration_script('202102141100_IDEMPIERE-2853.sql') FROM dual
;

View File

@ -591,6 +591,15 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
// m_mTable.addTableModelListener(this);
} // enableEvents
/**
* get Tab Type
* @return String
*/
public String getTabType()
{
return m_vo.AD_TabType;
} // getTabType
/**
* Assemble whereClause and query MTable and position to row 0.
* <pre>

View File

@ -43,7 +43,7 @@ public class GridTabVO implements Evaluatee, Serializable
/**
*
*/
private static final long serialVersionUID = 2088372161131336289L;
private static final long serialVersionUID = 8781340605954851838L;
/**************************************************************************
* Create MTab VO
@ -288,6 +288,7 @@ public class GridTabVO implements Evaluatee, Serializable
vo.AD_ColumnSortOrder_ID = rs.getInt("AD_ColumnSortOrder_ID");
vo.AD_ColumnSortYesNo_ID = rs.getInt("AD_ColumnSortYesNo_ID");
}
vo.AD_TabType = rs.getString("AD_TabType");
//
// Replication Type - set R/O if Reference
try
@ -545,6 +546,8 @@ public class GridTabVO implements Evaluatee, Serializable
public boolean onlyCurrentRows = true;
/** Only Current Days - derived */
public int onlyCurrentDays = 0;
/** Tab type uses by IADTabpanel service to identify implementors*/
public String AD_TabType = null;
/** Fields contain MFieldVO entities */
private ArrayList<GridFieldVO> Fields = null;
@ -642,7 +645,7 @@ public class GridTabVO implements Evaluatee, Serializable
// Derived
clone.onlyCurrentRows = true;
clone.onlyCurrentDays = 0;
clone.AD_TabType = AD_TabType;
clone.Fields = new ArrayList<GridFieldVO>();
for (int i = 0; i < Fields.size(); i++)
{

View File

@ -161,6 +161,15 @@ public interface I_AD_Tab
*/
public int getAD_Tab_ID();
/** Column name AD_Tab_UU */
public static final String COLUMNNAME_AD_Tab_UU = "AD_Tab_UU";
/** Set AD_Tab_UU */
public void setAD_Tab_UU (String AD_Tab_UU);
/** Get AD_Tab_UU */
public String getAD_Tab_UU();
/** Column name AD_Table_ID */
public static final String COLUMNNAME_AD_Table_ID = "AD_Table_ID";
@ -176,14 +185,18 @@ public interface I_AD_Tab
public org.compiere.model.I_AD_Table getAD_Table() throws RuntimeException;
/** Column name AD_Tab_UU */
public static final String COLUMNNAME_AD_Tab_UU = "AD_Tab_UU";
/** Column name AD_TabType */
public static final String COLUMNNAME_AD_TabType = "AD_TabType";
/** Set AD_Tab_UU */
public void setAD_Tab_UU (String AD_Tab_UU);
/** Set Tab Type.
* Defines Tab Type
*/
public void setAD_TabType (String AD_TabType);
/** Get AD_Tab_UU */
public String getAD_Tab_UU();
/** Get Tab Type.
* Defines Tab Type
*/
public String getAD_TabType();
/** Column name AD_Window_ID */
public static final String COLUMNNAME_AD_Window_ID = "AD_Window_ID";

View File

@ -30,7 +30,7 @@ public class X_AD_Tab extends PO implements I_AD_Tab, I_Persistent
/**
*
*/
private static final long serialVersionUID = 20201220L;
private static final long serialVersionUID = 20210309L;
/** Standard Constructor */
public X_AD_Tab (Properties ctx, int AD_Tab_ID, String trxName)
@ -279,6 +279,20 @@ public class X_AD_Tab extends PO implements I_AD_Tab, I_Persistent
return ii.intValue();
}
/** Set AD_Tab_UU.
@param AD_Tab_UU AD_Tab_UU */
public void setAD_Tab_UU (String AD_Tab_UU)
{
set_Value (COLUMNNAME_AD_Tab_UU, AD_Tab_UU);
}
/** Get AD_Tab_UU.
@return AD_Tab_UU */
public String getAD_Tab_UU ()
{
return (String)get_Value(COLUMNNAME_AD_Tab_UU);
}
public org.compiere.model.I_AD_Table getAD_Table() throws RuntimeException
{
return (org.compiere.model.I_AD_Table)MTable.get(getCtx(), org.compiere.model.I_AD_Table.Table_Name)
@ -307,18 +321,28 @@ public class X_AD_Tab extends PO implements I_AD_Tab, I_Persistent
return ii.intValue();
}
/** Set AD_Tab_UU.
@param AD_Tab_UU AD_Tab_UU */
public void setAD_Tab_UU (String AD_Tab_UU)
/** AD_TabType AD_Reference_ID=200117 */
public static final int AD_TABTYPE_AD_Reference_ID=200117;
/** Form = FORM */
public static final String AD_TABTYPE_Form = "FORM";
/** Sort = SORT */
public static final String AD_TABTYPE_Sort = "SORT";
/** Set Tab Type.
@param AD_TabType
Defines Tab Type
*/
public void setAD_TabType (String AD_TabType)
{
set_Value (COLUMNNAME_AD_Tab_UU, AD_Tab_UU);
set_Value (COLUMNNAME_AD_TabType, AD_TabType);
}
/** Get AD_Tab_UU.
@return AD_Tab_UU */
public String getAD_Tab_UU ()
/** Get Tab Type.
@return Defines Tab Type
*/
public String getAD_TabType ()
{
return (String)get_Value(COLUMNNAME_AD_Tab_UU);
return (String)get_Value(COLUMNNAME_AD_TabType);
}
public org.compiere.model.I_AD_Window getAD_Window() throws RuntimeException

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.adempiere.webui.factory.DefaultTabPanelFactory">
<implementation class="org.adempiere.webui.factory.DefaultTabPanelFactory"/>
<property name="service.ranking" type="Integer" value="1"/>
<service>
<provide interface="org.adempiere.webui.factory.IADTabPanelFactory"/>
</service>
</scr:component>

View File

@ -28,8 +28,10 @@ import java.util.stream.Collectors;
import org.adempiere.base.IServiceReferenceHolder;
import org.adempiere.base.Service;
import org.adempiere.base.ServiceQuery;
import org.adempiere.webui.adwindow.IADTabpanel;
import org.adempiere.webui.apps.IProcessParameterListener;
import org.adempiere.webui.apps.graph.IChartRendererService;
import org.adempiere.webui.factory.IADTabPanelFactory;
import org.adempiere.webui.factory.IDashboardGadgetFactory;
import org.adempiere.webui.factory.IFormFactory;
import org.adempiere.webui.factory.IMappedFormFactory;
@ -368,4 +370,24 @@ public class Extensions {
return null;
}
/**
* @param tabType
* @return {@link IADTabpanel}
*/
public static IADTabpanel getADTabPanel(String tabType)
{
IADTabpanel Object = null;
List<IADTabPanelFactory> factoryList = Service.locator().list(IADTabPanelFactory.class).getServices();
if (factoryList == null)
return null;
for (IADTabPanelFactory factory : factoryList)
{
Object = factory.getInstance(tabType);
if (Object != null)
return Object;
}
return null;
} // getADTabPanel
}

View File

@ -56,6 +56,7 @@ import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.Hlayout;
import org.zkoss.zul.Toolbar;
import org.zkoss.zul.event.ListDataEvent;
/**
@ -79,18 +80,26 @@ public class ADSortTab extends Panel implements IADTabpanel
/**
*
*/
private static final long serialVersionUID = -2238411612673317537L;
private static final long serialVersionUID = 4302282658814599752L;
public ADSortTab()
{
}
/**
* Sort Tab Constructor
*
* @param WindowNo Window No
* @param GridTab
* Initiate
*
* @param winPanel
* @param WindowNo
* @param gridTab
* @param gridWindow
*/
public ADSortTab(int WindowNo, GridTab gridTab)
@Override
public void init(AbstractADWindowContent winPanel, GridTab gridTab)
{
this.adWindowPanel = winPanel;
if (log.isLoggable(Level.CONFIG)) log.config("SortOrder=" + gridTab.getAD_ColumnSortOrder_ID() + ", SortYesNo=" + gridTab.getAD_ColumnSortYesNo_ID());
m_WindowNo = WindowNo;
m_WindowNo = winPanel.getWindowNo();
this.gridTab = gridTab;
m_AD_Table_ID = gridTab.getAD_Table_ID();
@ -102,7 +111,7 @@ public class ADSortTab extends Panel implements IADTabpanel
removeAttribute(ATTR_ON_ACTIVATE_POSTED);
}
});
} // ADSortTab
} // init
/** Logger */
protected static final CLogger log = CLogger.getCLogger(ADSortTab.class);
@ -1056,5 +1065,35 @@ public class ADSortTab extends Panel implements IADTabpanel
{
return false;
}
} //ADSortTab
@Override
public List<org.zkoss.zul.Button> getToolbarButtons()
{
return new ArrayList<org.zkoss.zul.Button>();
}
@Override
public boolean isEnableCustomizeButton()
{
return false;
}
@Override
public boolean isEnableProcessButton()
{
return false;
}
@Override
public void updateToolbar(ADWindowToolbar toolbar)
{
}
@Override
public void updateDetailToolbar(Toolbar toolbar)
{
}
} //ADSortTab

View File

@ -118,6 +118,7 @@ import org.zkoss.zul.Separator;
import org.zkoss.zul.South;
import org.zkoss.zul.Space;
import org.zkoss.zul.Style;
import org.zkoss.zul.Toolbar;
import org.zkoss.zul.Tabpanels;
import org.zkoss.zul.Tabs;
import org.zkoss.zul.TreeModel;
@ -153,7 +154,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
/**
*
*/
private static final long serialVersionUID = -6023888511495744589L;
private static final long serialVersionUID = -5335610241895151024L;
private static final String ON_SAVE_OPEN_PREFERENCE_EVENT = "onSaveOpenPreference";
@ -175,7 +176,6 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
private GridTab gridTab;
@SuppressWarnings("unused")
private GridWindow gridWindow;
private AbstractADWindowContent windowPanel;
@ -388,15 +388,12 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
/**
*
* @param winPanel
* @param windowNo
* @param gridTab
* @param gridWindow
*/
public void init(AbstractADWindowContent winPanel, int windowNo, GridTab gridTab,
GridWindow gridWindow)
public void init(AbstractADWindowContent winPanel, GridTab gridTab)
{
this.windowNo = windowNo;
this.gridWindow = gridWindow;
this.gridWindow = gridTab.getGridWindow();
this.windowNo = gridWindow.getWindowNo();
this.gridTab = gridTab;
// callout dialog ask for input - devCoffee #3390
gridTab.setCalloutUI(new CalloutDialog(Executions.getCurrent().getDesktop(), windowNo));
@ -2305,4 +2302,23 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
}
tabbox.setVisible(isGroupTabVisible);
}
@Override
public boolean isEnableCustomizeButton()
{
return isGridView();
}
@Override
public void updateToolbar(ADWindowToolbar toolbar)
{
}
@Override
public void updateDetailToolbar(Toolbar toolbar)
{
}
}

View File

@ -39,6 +39,7 @@ import org.adempiere.util.Callback;
import org.adempiere.webui.AdempiereIdGenerator;
import org.adempiere.webui.AdempiereWebUI;
import org.adempiere.webui.ClientInfo;
import org.adempiere.webui.Extensions;
import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.WArchive;
import org.adempiere.webui.WRequest;
@ -637,9 +638,23 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
gTab.setUpdateWindowContext(false);
}
if (gTab.isSortTab())
String type = gTab.getTabType();
if (!Util.isEmpty(type))
{
ADSortTab sortTab = new ADSortTab(curWindowNo, gTab);
IADTabpanel adTabPanal = Extensions.getADTabPanel(type);
if (adTabPanal != null)
{
initTabPanel(query, tabIndex, gTab, adTabPanal);
}
else
{
logger.log(Level.SEVERE, "No implementaton for tab type " + type + " Found", new Exception("No implementaton for tab type " + type + " Found"));
}
}
else if (gTab.isSortTab())
{
ADSortTab sortTab = new ADSortTab();
sortTab.init(this, gTab);
adTabbox.addTab(gTab, sortTab);
sortTab.registerAPanel(this);
if (tabIndex == 0) {
@ -654,14 +669,23 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
else
{
ADTabpanel fTabPanel = new ADTabpanel();
fTabPanel.addEventListener(ADTabpanel.ON_DYNAMIC_DISPLAY_EVENT, this);
gTab.addDataStatusListener(this);
fTabPanel.init(this, curWindowNo, gTab, gridWindow);
adTabbox.addTab(gTab, fTabPanel);
if (tabIndex == 0) {
fTabPanel.createUI();
if (!m_queryInitiating)
{
initTabPanel(query, tabIndex, gTab, fTabPanel);
}
return gTab;
} // initTab
private void initTabPanel(MQuery query, int tabIndex, final GridTab gTab, IADTabpanel adTabPanal)
{
adTabPanal.addEventListener(ADTabpanel.ON_DYNAMIC_DISPLAY_EVENT, this);
gTab.addDataStatusListener(this);
adTabPanal.init(this, gTab);
adTabbox.addTab(gTab, adTabPanal);
if (tabIndex == 0)
{
adTabPanal.createUI();
if (!m_queryInitiating)
{
try {
initFirstTabpanel();
} catch (Exception e) {
@ -669,17 +693,14 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
FDialog.error(curWindowNo, GridTable.LOAD_TIMEOUT_ERROR_MESSAGE);
}
}
}
}
if (!m_queryInitiating && tabIndex == 0)
{
initQueryOnNew(query);
}
}
}
return gTab;
}
if (!m_queryInitiating && tabIndex == 0)
{
initQueryOnNew(query);
}
} // initTabPanel
private void initFirstTabpanel() {
adTabbox.getSelectedTabpanel().query(m_onlyCurrentRows, m_onlyCurrentDays, adTabbox.getSelectedGridTab().getMaxQueryRecords());
@ -1112,9 +1133,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
public void onToggle()
{
adTabbox.getSelectedTabpanel().switchRowPresentation();
//Deepak-Enabling customize button IDEMPIERE-364
if(!(adTabbox.getSelectedTabpanel() instanceof ADSortTab))
toolbar.enableCustomize(((ADTabpanel)adTabbox.getSelectedTabpanel()).isGridView());
toolbar.enableCustomize(adTabbox.getSelectedTabpanel().isEnableCustomizeButton());
focusToActivePanel();
}
@ -1261,9 +1280,9 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
}
else if (ADTabpanel.ON_DYNAMIC_DISPLAY_EVENT.equals(event.getName()))
{
ADTabpanel adtab = (ADTabpanel) event.getTarget();
IADTabpanel adtab = (IADTabpanel) event.getTarget();
if (adtab == adTabbox.getSelectedTabpanel()) {
toolbar.enableProcessButton(adtab.getToolbarButtons().size() > 0 && !adTabbox.getSelectedGridTab().isNew());
toolbar.enableProcessButton(adtab.isEnableProcessButton());
toolbar.dynamicDisplay();
}
}
@ -1462,22 +1481,19 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
toolbar.enableQuickForm(adTabbox.getSelectedTabpanel().isEnableQuickFormButton() && !adTabbox.getSelectedGridTab().isReadOnly());
boolean isNewRow = adTabbox.getSelectedGridTab().getRowCount() == 0 || adTabbox.getSelectedGridTab().isNew();
//Deepak-Enabling customize button IDEMPIERE-364
if(adTabbox.getSelectedTabpanel() instanceof ADSortTab){//consistent with dataStatusChanged
toolbar.enableProcessButton (false);
toolbar.enableCustomize(false);
}else{
ADTabpanel adtab = (ADTabpanel) adTabbox.getSelectedTabpanel();
toolbar.enableProcessButton(!isNewRow && adtab != null && adtab.getToolbarButtons().size() > 0);
toolbar.enableCustomize(adtab.isGridView());
}
boolean isNewRow = adTabbox.getSelectedGridTab().getRowCount() == 0 || adTabbox.getSelectedGridTab().isNew();
IADTabpanel adtab = adTabbox.getSelectedTabpanel();
toolbar.enableProcessButton(adtab != null && adtab.isEnableProcessButton());
toolbar.enableCustomize(adtab.isEnableCustomizeButton());
toolbar.setPressed("Find",adTabbox.getSelectedGridTab().isQueryActive() ||
(!isNewRow && (m_onlyCurrentRows || m_onlyCurrentDays > 0)));
toolbar.refreshUserQuery(adTabbox.getSelectedGridTab().getAD_Tab_ID(), getCurrentFindWindow() != null ? getCurrentFindWindow().getAD_UserQuery_ID() : 0);
// update from customized implementation
adtab.updateToolbar(toolbar);
}
/**
@ -1879,15 +1895,10 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
toolbar.enableTabNavigation(breadCrumb.hasParentLink(), adTabbox.getSelectedDetailADTabpanel() != null);
//Deepak-Enabling customize button IDEMPIERE-364
if(adTabbox.getSelectedTabpanel() instanceof ADSortTab){//consistent with updateToolbar
toolbar.enableProcessButton (false);
toolbar.enableCustomize(false);
}else{
ADTabpanel adtab = (ADTabpanel) adTabbox.getSelectedTabpanel();
toolbar.enableProcessButton(!isNewRow && adtab != null && adtab.getToolbarButtons().size() > 0);
toolbar.enableCustomize(adtab.isGridView());
}
IADTabpanel adtab = adTabbox.getSelectedTabpanel();
toolbar.enableProcessButton(adtab != null && adtab.isEnableProcessButton());
toolbar.enableCustomize(adtab.isEnableCustomizeButton());
}
/**
@ -3699,7 +3710,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
public void onProcess() {
ProcessButtonPopup popup = new ProcessButtonPopup();
popup.setWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, "processButtonPopup");
ADTabpanel adtab = (ADTabpanel) adTabbox.getSelectedTabpanel();
IADTabpanel adtab = adTabbox.getSelectedTabpanel();
popup.render(adtab.getToolbarButtons());
if (popup.getChildren().size() > 0) {
popup.setPage(this.getComponent().getPage());

View File

@ -306,7 +306,7 @@ public class CompositeADTabbox extends AbstractADTabbox
headerTab.switchRowPresentation();
}
if (!headerTab.getGridTab().isSortTab())
if (!headerTab.getGridTab().isSortTab() && headerTab instanceof ADTabpanel)
headerTab.getGridTab().setCurrentRow(row, true);
if (headerTab.isGridView()) {
@ -998,11 +998,15 @@ public class CompositeADTabbox extends AbstractADTabbox
headerTab.getDetailPane().updateToolbar(false, true);
} else {
tabPanel.dynamicDisplay(0);
RowRenderer<Object[]> renderer = tabPanel.getGridView().getListbox().getRowRenderer();
GridTabRowRenderer gtr = (GridTabRowRenderer)renderer;
Row row = gtr.getCurrentRow();
if (row != null)
gtr.setCurrentRow(row);
if (tabPanel.getGridView() != null && tabPanel.getGridView().getListbox() != null) {
RowRenderer<Object[]> renderer = tabPanel.getGridView().getListbox().getRowRenderer();
if (renderer != null) {
GridTabRowRenderer gtr = (GridTabRowRenderer) renderer;
Row row = gtr.getCurrentRow();
if (row != null)
gtr.setCurrentRow(row);
}
}
}
if (wasForm) {
// maintain form on header when zooming to a detail tab

View File

@ -89,21 +89,21 @@ public class DetailPane extends Panel implements EventListener<Event>, IdSpace {
/**
* generated serial id
*/
private static final long serialVersionUID = -6839563468328913930L;
private static final long serialVersionUID = 6251897492168864784L;
private static final String BTN_PROCESS_ID = "BtnProcess";
public static final String BTN_PROCESS_ID = "BtnProcess";
private static final String BTN_DELETE_ID = "BtnDelete";
public static final String BTN_DELETE_ID = "BtnDelete";
private static final String BTN_EDIT_ID = "BtnEdit";
public static final String BTN_EDIT_ID = "BtnEdit";
private static final String BTN_NEW_ID = "BtnNew";
public static final String BTN_NEW_ID = "BtnNew";
private static final String BTN_SAVE_ID = "BtnSave";
public static final String BTN_SAVE_ID = "BtnSave";
private static final String BTN_QUICK_FORM_ID = "BtnQuickForm";
public static final String BTN_QUICK_FORM_ID = "BtnQuickForm";
private static final String BTN_CUSTOMIZE_ID = "BtnCustomize";
public static final String BTN_CUSTOMIZE_ID = "BtnCustomize";
private static final String BTN_TOGGLE_ID = "BtnToggle";
@ -570,8 +570,9 @@ public class DetailPane extends Panel implements EventListener<Event>, IdSpace {
*/
protected void onProcess(Component button) {
ProcessButtonPopup popup = new ProcessButtonPopup();
ADTabpanel adtab = (ADTabpanel) getSelectedADTabpanel();
popup.render(adtab.getToolbarButtons());
IADTabpanel adtab = getSelectedADTabpanel();
if (adtab.getToolbarButtons() != null && adtab.getToolbarButtons().size() > 0)
popup.render(adtab.getToolbarButtons());
if (popup.getChildren().size() > 0) {
popup.setPage(button.getPage());
popup.open(button, "after_start");
@ -885,8 +886,11 @@ public class DetailPane extends Panel implements EventListener<Event>, IdSpace {
}else {
btn.setVisible(true);
}
}
}
}
}
// update from customized implementation
adtab.updateDetailToolbar(toolbar);
}
private void updateProcessToolbar() {
@ -906,7 +910,8 @@ public class DetailPane extends Panel implements EventListener<Event>, IdSpace {
if (adtab.getGridTab().isSortTab()) {
btn.setDisabled(true);
} else {
btn.setDisabled(((ADTabpanel)adtab).getToolbarButtons().isEmpty());
boolean isToolbarDisabled = (adtab.getToolbarButtons() == null || adtab.getToolbarButtons().isEmpty());
btn.setDisabled(isToolbarDisabled);
}
break;
}

View File

@ -12,9 +12,13 @@
*****************************************************************************/
package org.adempiere.webui.adwindow;
import java.util.List;
import org.compiere.model.GridTab;
import org.compiere.util.Evaluatee;
import org.zkoss.zk.ui.Component;
import org.zkoss.zul.Button;
import org.zkoss.zul.Toolbar;
/**
* Interface for UI component that edit/display record using ad_tab definitions
@ -26,6 +30,14 @@ public interface IADTabpanel extends Component, Evaluatee {
public static final String ON_ACTIVATE_EVENT = "onActivate";
public static final String ATTR_ON_ACTIVATE_POSTED = "org.adempiere.webui.adwindow.IADTabpanel.onActivatePosted";
/**
* @param winPanel
* @param windowNo
* @param gridTab
* @param gridWindow
*/
public void init(AbstractADWindowContent winPanel, GridTab gridTab);
/**
* @return display logic
*/
@ -141,7 +153,7 @@ public interface IADTabpanel extends Component, Evaluatee {
*
* @return gridview instance
*/
public abstract GridView getGridView();
public GridView getGridView();
/**
*
@ -184,18 +196,18 @@ public interface IADTabpanel extends Component, Evaluatee {
/**
* reset detail data grid when parent tab current record is new and not saved yet
*/
public abstract void resetDetailForNewParentRecord();
public void resetDetailForNewParentRecord();
/**
* @return treepanel instance
*/
public abstract ADTreePanel getTreePanel();
public ADTreePanel getTreePanel();
/**
* @return Quick Form Button Enabled/Disabled
*/
public abstract boolean isEnableQuickFormButton();
public boolean isEnableQuickFormButton();
/**
* Get is detail pane visible
* @return boolean
@ -203,4 +215,37 @@ public interface IADTabpanel extends Component, Evaluatee {
public default boolean isDetailVisible() {
return false;
}
/**
* @return List of toolbar buttons
*/
public List<Button> getToolbarButtons();
/**
* @return customization enabled/disabled for tab
*/
public boolean isEnableCustomizeButton();
/**
* @return process Button Enabled/Disabled
*/
default public boolean isEnableProcessButton() {
boolean isNewRow = getGridTab().getRowCount() == 0 || getGridTab().isNew();
return getToolbarButtons().size() > 0 && !isNewRow;
}
/**
* Enabled/Disabled tab toolbar button
*
* @param toolbar - {@link ADWindowToolbar}
*/
public void updateToolbar(ADWindowToolbar toolbar);
/**
* Enabled/Disabled detail panel toolbar button
*
* @param toolbar - {@link Toolbar}
*/
public void updateDetailToolbar(Toolbar toolbar);
}

View File

@ -258,7 +258,7 @@ public class WTrxMaterial extends TrxMaterial
//
m_gridController = new ADTabpanel();
m_gridController.init(null, m_WindowNo, m_mTab, m_mWindow);
m_gridController.init(null, m_mTab);
if (!m_gridController.isGridView())
m_gridController.switchRowPresentation();
Center center = new Center();

View File

@ -0,0 +1,41 @@
/******************************************************************************
* Copyright (C) 2016 Logilite Technologies LLP *
* 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.factory;
import org.adempiere.webui.adwindow.ADSortTab;
import org.adempiere.webui.adwindow.ADTabpanel;
import org.adempiere.webui.adwindow.IADTabpanel;
import org.compiere.model.MTab;
/**
* @author Logilite Technologies
*/
public class DefaultTabPanelFactory implements IADTabPanelFactory
{
@Override
public IADTabpanel getInstance(String type)
{
if (type.equalsIgnoreCase(MTab.AD_TABTYPE_Sort))
{
return new ADSortTab();
}
else if (type.equalsIgnoreCase(MTab.AD_TABTYPE_Form))
{
return new ADTabpanel();
}
return null;
} // getInstance
}

View File

@ -0,0 +1,30 @@
/******************************************************************************
* Copyright (C) 2016 Logilite Technologies LLP *
* 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.factory;
import org.adempiere.webui.adwindow.IADTabpanel;
/**
* @author Logilite Technologies This interface implements OSGI service to
* retrieve ADTabPanel based on tab type.
*/
public interface IADTabPanelFactory
{
/**
*
* @param type Tab type
* @return Implementor of IADTabPanel
*/
public IADTabpanel getInstance(String type);
}

View File

@ -359,7 +359,7 @@ public final class WAccountDialog extends Window
}
// GridController
m_adTabPanel.init(null, m_WindowNo, m_mTab, null);
m_adTabPanel.init(null, m_mTab);
// Prepare Parameter
parameterLayout.makeNoStrip();

View File

@ -22,6 +22,7 @@ bin.includes = META-INF/,\
OSGI-INF/defaultformfactory.xml,\
OSGI-INF/feedbackservice.xml,\
OSGI-INF/banktransferparameterslistener.xml,\
OSGI-INF/tabpanelfactory.xml,\
sessiontimeout.zul,\
*.jsp,\
OSGI-INF/jfgchartrenderer.xml,\