IDEMPIERE-2902 UX: Implement Radio buttons (#326)
* IDEMPIERE-2902 UX: Implement Radio buttons Integrate contribution from TrekGlobal TC-188 Port RadioGroup field editor from AP2-19 added "Radio Group List" field type * IDEMPIERE-2902 UX: Implement Radio buttons Peer review * Configure correctly wrong Validation Rule * Fix wrong DisplayLogic from this ticket and also from other recently added features on fields: Attribute > Attribute > Reference Key Attribute > Attribute > Dynamic Validation Info Window > Column > Reference Key Info Window > Column > Dynamic Validation Registration Attributes > Attribute > Reference Key Table and Column > Column > Dynamic Validation Table and Column > Column > Dynamic Validation (Lookup) Table and Column > Column > Reference Key Web Service Security > Web Service Field Input > Reference Key Window Customization > Field Customization > Reference Key Window Customization > Field Customization > Dynamic Validation Window Customization > Field Customization > Dynamic Validation (Lookup) Window, Tab & Field > Field > Reference Key Window, Tab & Field > Field > Dynamic Validation Window, Tab & Field > Field > Dynamic Validation (Lookup) * For testing and UX, configure as Radio Group: Broadcast Message > Broadcast Message > Target Field Group > Field group > Field Group Type * IDEMPIERE-2902 UX: Implement Radio buttons * For testing and UX, configure as Radio Group in detail tab: Info Window > Process > LayoutType * IDEMPIERE-2902 UX: Implement Radio buttons - Fix radio group editor lost track of selectedItem after page detached and attached - Standardized the construction of editors from editor factory - Remove unnecessary refresh for list/lookup based readonly editors created by grid view (fixed editor is not readonly during init()) Co-authored-by: Carlos Ruiz <carg67@gmail.com>
This commit is contained in:
parent
78393af99d
commit
00e94b12ef
|
@ -0,0 +1,27 @@
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- Apr 10, 2018 7:56:35 PM GMT+08:00
|
||||||
|
-- Radio Group List
|
||||||
|
INSERT INTO AD_Reference (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_UU,Created,CreatedBy,EntityType,IsActive,IsOrderByValue,Name,Updated,UpdatedBy,ValidationType) VALUES (0,0,200152,'bde88a42-3601-499e-a2ee-2185eb6fc785',TO_DATE('2018-04-10 19:56:29','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','N','Radio Group List',TO_DATE('2018-04-10 19:56:29','YYYY-MM-DD HH24:MI:SS'),100,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 10, 2018 7:57:56 PM GMT+08:00
|
||||||
|
UPDATE AD_Val_Rule SET Code='AD_Reference.ValidationType=CASE WHEN @AD_Reference_ID@ IN (17,28,200152) THEN ''L'' ELSE ''T'' END',Updated=TO_DATE('2018-04-10 19:57:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=115
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 10, 2018 8:00:03 PM GMT+08:00
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152', AD_Val_Rule_ID=NULL, AD_Reference_Value_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2018-04-10 20:00:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=171
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 10, 2018 8:01:28 PM GMT+08:00
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152', AD_Val_Rule_ID=NULL, AD_Reference_Value_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2018-04-10 20:01:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54402
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 10, 2018 8:02:27 PM GMT+08:00
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152', AD_Val_Rule_ID=NULL, AD_Reference_Value_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2018-04-10 20:02:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200855
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201804111700_TicketAP2-19.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- IDEMPIERE-2902 UX: Implement Radio buttons
|
||||||
|
-- Oct 24, 2020, 12:46:20 PM CEST
|
||||||
|
UPDATE AD_Val_Rule SET Code='AD_Reference.ValidationType=CASE WHEN @AD_Reference_ID@ IN (17,28,200152,200161) THEN ''L'' ELSE ''T'' END',Updated=TO_DATE('2020-10-24 12:46:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=115
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 12:47:54 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 12:47:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=171
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 12:48:35 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 12:48:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54402
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 12:49:14 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 12:49:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200855
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 12:58:30 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 12:58:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10225
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 12:59:32 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 12:59:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201622
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:01:26 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163 & @AttributeValueType@=''R''', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 13:01:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204144
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:01:51 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 13:01:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201895
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:22:34 PM CEST
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=200152,Updated=TO_DATE('2020-10-24 13:22:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=53002
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:26:26 PM CEST
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=200152,Updated=TO_DATE('2020-10-24 13:26:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200989
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:29:27 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 13:29:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=172
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:29:46 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 13:29:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206091
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:31:42 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 13:31:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54401
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:31:49 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 13:31:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206129
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:32:45 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 13:32:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203266
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:33:17 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163 & @AttributeValueType@=''R''', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 13:33:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206510
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:33:41 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 13:33:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201623
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:38:25 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2020-10-24 13:38:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206130
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:42:01 PM CEST
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=200152,Updated=TO_DATE('2020-10-24 13:42:01','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=211257
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('202010241339_IDEMPIERE-2902.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
-- Apr 10, 2018 7:56:35 PM GMT+08:00
|
||||||
|
-- Radio Group List
|
||||||
|
INSERT INTO AD_Reference (AD_Client_ID,AD_Org_ID,AD_Reference_ID,AD_Reference_UU,Created,CreatedBy,EntityType,IsActive,IsOrderByValue,Name,Updated,UpdatedBy,ValidationType) VALUES (0,0,200152,'bde88a42-3601-499e-a2ee-2185eb6fc785',TO_TIMESTAMP('2018-04-10 19:56:29','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','N','Radio Group List',TO_TIMESTAMP('2018-04-10 19:56:29','YYYY-MM-DD HH24:MI:SS'),100,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 10, 2018 7:57:56 PM GMT+08:00
|
||||||
|
UPDATE AD_Val_Rule SET Code='AD_Reference.ValidationType=CASE WHEN @AD_Reference_ID@ IN (17,28,200152) THEN ''L'' ELSE ''T'' END',Updated=TO_TIMESTAMP('2018-04-10 19:57:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=115
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 10, 2018 8:00:03 PM GMT+08:00
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152', AD_Val_Rule_ID=NULL, AD_Reference_Value_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2018-04-10 20:00:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=171
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 10, 2018 8:01:28 PM GMT+08:00
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152', AD_Val_Rule_ID=NULL, AD_Reference_Value_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2018-04-10 20:01:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54402
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 10, 2018 8:02:27 PM GMT+08:00
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152', AD_Val_Rule_ID=NULL, AD_Reference_Value_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2018-04-10 20:02:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200855
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('201804111700_TicketAP2-19.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
-- IDEMPIERE-2902 UX: Implement Radio buttons
|
||||||
|
-- Oct 24, 2020, 12:46:20 PM CEST
|
||||||
|
UPDATE AD_Val_Rule SET Code='AD_Reference.ValidationType=CASE WHEN @AD_Reference_ID@ IN (17,28,200152,200161) THEN ''L'' ELSE ''T'' END',Updated=TO_TIMESTAMP('2020-10-24 12:46:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=115
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 12:47:54 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 12:47:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=171
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 12:48:35 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 12:48:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54402
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 12:49:14 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 12:49:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200855
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 12:58:30 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 12:58:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10225
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 12:59:32 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 12:59:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201622
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:01:26 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163 & @AttributeValueType@=''R''', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 13:01:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204144
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:01:51 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=30 | @AD_Reference_ID@=28 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 13:01:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201895
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:22:34 PM CEST
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=200152,Updated=TO_TIMESTAMP('2020-10-24 13:22:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=53002
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:26:26 PM CEST
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=200152,Updated=TO_TIMESTAMP('2020-10-24 13:26:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200989
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:29:27 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 13:29:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=172
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:29:46 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 13:29:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206091
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:31:42 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 13:31:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54401
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:31:49 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 13:31:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206129
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:32:45 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 13:32:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203266
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:33:17 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163 & @AttributeValueType@=''R''', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 13:33:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206510
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:33:41 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 13:33:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201623
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:38:25 PM CEST
|
||||||
|
UPDATE AD_Field SET DisplayLogic='@AD_Reference_ID@=17 | @AD_Reference_ID@=18 | @AD_Reference_ID@=19 | @AD_Reference_ID@=28 | @AD_Reference_ID@=30 | @AD_Reference_ID@=200012 | @AD_Reference_ID@=31 | @AD_Reference_ID@=200152 | @AD_Reference_ID@=200161 | @AD_Reference_ID@=200162 | @AD_Reference_ID@=200163', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2020-10-24 13:38:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206130
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Oct 24, 2020, 1:42:01 PM CEST
|
||||||
|
UPDATE AD_Column SET AD_Reference_ID=200152,Updated=TO_TIMESTAMP('2020-10-24 13:42:01','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=211257
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT register_migration_script('202010241339_IDEMPIERE-2902.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -188,7 +188,7 @@ public class MLookupFactory
|
||||||
MLookupInfo info = null;
|
MLookupInfo info = null;
|
||||||
boolean needToAddSecurity = true;
|
boolean needToAddSecurity = true;
|
||||||
// List
|
// List
|
||||||
if (AD_Reference_ID == DisplayType.List || AD_Reference_ID == DisplayType.ChosenMultipleSelectionList) // 17
|
if (AD_Reference_ID == DisplayType.List || AD_Reference_ID == DisplayType.ChosenMultipleSelectionList || AD_Reference_ID == DisplayType.RadiogroupList) // 17
|
||||||
{
|
{
|
||||||
info = getLookup_List(language, AD_Reference_Value_ID);
|
info = getLookup_List(language, AD_Reference_Value_ID);
|
||||||
needToAddSecurity = false;
|
needToAddSecurity = false;
|
||||||
|
|
|
@ -127,6 +127,7 @@ public class SystemIDs
|
||||||
public final static int REFERENCE_DATATYPE_PRINTNAME = 42;
|
public final static int REFERENCE_DATATYPE_PRINTNAME = 42;
|
||||||
public final static int REFERENCE_DATATYPE_PRODUCTATTRIBUTE = 35;
|
public final static int REFERENCE_DATATYPE_PRODUCTATTRIBUTE = 35;
|
||||||
public final static int REFERENCE_DATATYPE_QUANTITY = 29;
|
public final static int REFERENCE_DATATYPE_QUANTITY = 29;
|
||||||
|
public final static int REFERENCE_DATATYPE_RADIOGROUP_LIST= 200152;
|
||||||
public final static int REFERENCE_DATATYPE_ROWID = 26;
|
public final static int REFERENCE_DATATYPE_ROWID = 26;
|
||||||
public final static int REFERENCE_DATATYPE_SEARCH = 30;
|
public final static int REFERENCE_DATATYPE_SEARCH = 30;
|
||||||
public final static int REFERENCE_DATATYPE_STRING = 10;
|
public final static int REFERENCE_DATATYPE_STRING = 10;
|
||||||
|
|
|
@ -21,11 +21,13 @@ import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_AMOUNT;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_ASSIGNMENT;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_ASSIGNMENT;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_BINARY;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_BINARY;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_BUTTON;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_BUTTON;
|
||||||
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_CHART;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_CHOSEN_MULTIPLE_SELECTION_LIST;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_CHOSEN_MULTIPLE_SELECTION_LIST;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_CHOSEN_MULTIPLE_SELECTION_TABLE;
|
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_CHOSEN_MULTIPLE_SELECTION_SEARCH;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_CHOSEN_MULTIPLE_SELECTION_SEARCH;
|
||||||
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_CHOSEN_MULTIPLE_SELECTION_TABLE;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_COLOR;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_COLOR;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_COSTPRICE;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_COSTPRICE;
|
||||||
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_DASHBOARD_CONTENT;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_DATE;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_DATE;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_DATETIME;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_DATETIME;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_FILENAME;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_FILENAME;
|
||||||
|
@ -37,13 +39,16 @@ import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_LIST;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_LOCATION;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_LOCATION;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_LOCATOR;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_LOCATOR;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_MEMO;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_MEMO;
|
||||||
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_MULTIPLE_SELECTION_GRID;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_NUMBER;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_NUMBER;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_PAYMENT;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_PAYMENT;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_PRINTNAME;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_PRINTNAME;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_PRODUCTATTRIBUTE;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_PRODUCTATTRIBUTE;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_QUANTITY;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_QUANTITY;
|
||||||
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_RADIOGROUP_LIST;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_ROWID;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_ROWID;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_SEARCH;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_SEARCH;
|
||||||
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_SINGLE_SELECTION_GRID;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_STRING;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_STRING;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TABLE;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TABLE;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TABLEDIR;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TABLEDIR;
|
||||||
|
@ -52,10 +57,6 @@ import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TEXTLONG;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TIME;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_TIME;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_URL;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_URL;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_YES_NO;
|
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_YES_NO;
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_CHART;
|
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_DASHBOARD_CONTENT;
|
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_SINGLE_SELECTION_GRID;
|
|
||||||
import static org.compiere.model.SystemIDs.REFERENCE_DATATYPE_MULTIPLE_SELECTION_GRID;
|
|
||||||
|
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
@ -163,6 +164,8 @@ public final class DisplayType
|
||||||
|
|
||||||
public static final int MultipleSelectionGrid = REFERENCE_DATATYPE_MULTIPLE_SELECTION_GRID;
|
public static final int MultipleSelectionGrid = REFERENCE_DATATYPE_MULTIPLE_SELECTION_GRID;
|
||||||
|
|
||||||
|
public static final int RadiogroupList = REFERENCE_DATATYPE_RADIOGROUP_LIST;
|
||||||
|
|
||||||
public static final int ChosenMultipleSelectionList = REFERENCE_DATATYPE_CHOSEN_MULTIPLE_SELECTION_LIST;
|
public static final int ChosenMultipleSelectionList = REFERENCE_DATATYPE_CHOSEN_MULTIPLE_SELECTION_LIST;
|
||||||
|
|
||||||
public static final int ChosenMultipleSelectionTable = REFERENCE_DATATYPE_CHOSEN_MULTIPLE_SELECTION_TABLE;
|
public static final int ChosenMultipleSelectionTable = REFERENCE_DATATYPE_CHOSEN_MULTIPLE_SELECTION_TABLE;
|
||||||
|
@ -311,6 +314,7 @@ public final class DisplayType
|
||||||
|| displayType == URL || displayType == PrinterName
|
|| displayType == URL || displayType == PrinterName
|
||||||
|| displayType == SingleSelectionGrid || displayType == Color
|
|| displayType == SingleSelectionGrid || displayType == Color
|
||||||
|| displayType == MultipleSelectionGrid
|
|| displayType == MultipleSelectionGrid
|
||||||
|
|| displayType == RadiogroupList
|
||||||
|| displayType == ChosenMultipleSelectionList
|
|| displayType == ChosenMultipleSelectionList
|
||||||
|| displayType == ChosenMultipleSelectionTable
|
|| displayType == ChosenMultipleSelectionTable
|
||||||
|| displayType == ChosenMultipleSelectionSearch)
|
|| displayType == ChosenMultipleSelectionSearch)
|
||||||
|
@ -370,6 +374,7 @@ public final class DisplayType
|
||||||
{
|
{
|
||||||
if (displayType == List || displayType == Table
|
if (displayType == List || displayType == Table
|
||||||
|| displayType == TableDir || displayType == Search
|
|| displayType == TableDir || displayType == Search
|
||||||
|
|| displayType == RadiogroupList
|
||||||
|| displayType == ChosenMultipleSelectionTable
|
|| displayType == ChosenMultipleSelectionTable
|
||||||
|| displayType == ChosenMultipleSelectionSearch
|
|| displayType == ChosenMultipleSelectionSearch
|
||||||
|| displayType == ChosenMultipleSelectionList)
|
|| displayType == ChosenMultipleSelectionList)
|
||||||
|
@ -655,7 +660,7 @@ public final class DisplayType
|
||||||
*/
|
*/
|
||||||
public static Class<?> getClass (int displayType, boolean yesNoAsBoolean)
|
public static Class<?> getClass (int displayType, boolean yesNoAsBoolean)
|
||||||
{
|
{
|
||||||
if (isText(displayType) || displayType == List || displayType == Payment)
|
if (isText(displayType) || displayType == List || displayType == Payment || displayType == RadiogroupList)
|
||||||
return String.class;
|
return String.class;
|
||||||
else if (isID(displayType) || displayType == Integer) // note that Integer is stored as BD
|
else if (isID(displayType) || displayType == Integer) // note that Integer is stored as BD
|
||||||
return Integer.class;
|
return Integer.class;
|
||||||
|
@ -744,7 +749,7 @@ public final class DisplayType
|
||||||
return getDatabase().getClobDataType();
|
return getDatabase().getClobDataType();
|
||||||
if (displayType == DisplayType.YesNo)
|
if (displayType == DisplayType.YesNo)
|
||||||
return getDatabase().getCharacterDataType()+"(1)";
|
return getDatabase().getCharacterDataType()+"(1)";
|
||||||
if (displayType == DisplayType.List || displayType == DisplayType.Payment) {
|
if (displayType == DisplayType.List || displayType == DisplayType.Payment || displayType == DisplayType.RadiogroupList) {
|
||||||
if (fieldLength == 1)
|
if (fieldLength == 1)
|
||||||
return getDatabase().getCharacterDataType()+"(" + fieldLength + ")";
|
return getDatabase().getCharacterDataType()+"(" + fieldLength + ")";
|
||||||
else
|
else
|
||||||
|
@ -809,6 +814,8 @@ public final class DisplayType
|
||||||
return "DateTime";
|
return "DateTime";
|
||||||
if (displayType == List)
|
if (displayType == List)
|
||||||
return "List";
|
return "List";
|
||||||
|
if (displayType == RadiogroupList)
|
||||||
|
return "RadiogroupList";
|
||||||
if (displayType == Table)
|
if (displayType == Table)
|
||||||
return "Table";
|
return "Table";
|
||||||
if (displayType == TableDir)
|
if (displayType == TableDir)
|
||||||
|
|
|
@ -28,6 +28,7 @@ import org.adempiere.webui.component.EditorBox;
|
||||||
import org.adempiere.webui.component.NumberBox;
|
import org.adempiere.webui.component.NumberBox;
|
||||||
import org.adempiere.webui.component.Textbox;
|
import org.adempiere.webui.component.Textbox;
|
||||||
import org.adempiere.webui.component.Urlbox;
|
import org.adempiere.webui.component.Urlbox;
|
||||||
|
import org.adempiere.webui.editor.IEditorConfiguration;
|
||||||
import org.adempiere.webui.editor.WButtonEditor;
|
import org.adempiere.webui.editor.WButtonEditor;
|
||||||
import org.adempiere.webui.editor.WEditor;
|
import org.adempiere.webui.editor.WEditor;
|
||||||
import org.adempiere.webui.editor.WEditorPopupMenu;
|
import org.adempiere.webui.editor.WEditorPopupMenu;
|
||||||
|
@ -109,6 +110,18 @@ public class GridTabRowRenderer implements RowRenderer<Object[]>, RowRendererExt
|
||||||
/** DefaultFocusField */
|
/** DefaultFocusField */
|
||||||
private WEditor defaultFocusField = null;
|
private WEditor defaultFocusField = null;
|
||||||
|
|
||||||
|
private final static IEditorConfiguration readOnlyEditorConfiguration = new IEditorConfiguration() {
|
||||||
|
@Override
|
||||||
|
public Boolean getReadonly() {
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean getMandatory() {
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param gridTab
|
* @param gridTab
|
||||||
|
@ -503,9 +516,8 @@ public class GridTabRowRenderer implements RowRenderer<Object[]>, RowRendererExt
|
||||||
}
|
}
|
||||||
|
|
||||||
//readonly for display text
|
//readonly for display text
|
||||||
WEditor readOnlyEditor = WebEditorFactory.getEditor(gridPanelFields[i], true);
|
WEditor readOnlyEditor = WebEditorFactory.getEditor(gridPanelFields[i], true, readOnlyEditorConfiguration);
|
||||||
if (readOnlyEditor != null) {
|
if (readOnlyEditor != null) {
|
||||||
readOnlyEditor.setReadWrite(false);
|
|
||||||
readOnlyEditors.put(gridPanelFields[i], readOnlyEditor);
|
readOnlyEditors.put(gridPanelFields[i], readOnlyEditor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -706,8 +718,10 @@ public class GridTabRowRenderer implements RowRenderer<Object[]>, RowRendererExt
|
||||||
{
|
{
|
||||||
popupMenu.addMenuListener((ContextMenuListener)editor);
|
popupMenu.addMenuListener((ContextMenuListener)editor);
|
||||||
div.appendChild(popupMenu);
|
div.appendChild(popupMenu);
|
||||||
popupMenu.addContextElement((XulElement) editor.getComponent());
|
Component editorComponent = editor.getComponent();
|
||||||
}
|
if (editorComponent instanceof XulElement)
|
||||||
|
popupMenu.addContextElement((XulElement) editorComponent);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Properties ctx = isDetailPane() ? new GridRowCtx(Env.getCtx(), gridTab)
|
Properties ctx = isDetailPane() ? new GridRowCtx(Env.getCtx(), gridTab)
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
/***********************************************************************
|
||||||
|
* This file is part of iDempiere ERP Open Source *
|
||||||
|
* http://www.idempiere.org *
|
||||||
|
* *
|
||||||
|
* Copyright (C) Contributors *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU General Public License *
|
||||||
|
* as published by the Free Software Foundation; either version 2 *
|
||||||
|
* of the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* 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., 51 Franklin Street, Fifth Floor, Boston, *
|
||||||
|
* MA 02110-1301, USA. *
|
||||||
|
* *
|
||||||
|
* Contributors: *
|
||||||
|
* - hengsin *
|
||||||
|
**********************************************************************/
|
||||||
|
package org.adempiere.webui.editor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface to override editor setting that's usually derived from GridField
|
||||||
|
* @author hengsin
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IEditorConfiguration {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a not null Boolean to override GridField.isReadOnly
|
||||||
|
* @return Boolean
|
||||||
|
*/
|
||||||
|
public default Boolean getReadonly() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a not null Boolean to override GridField.isMandatory
|
||||||
|
* @return Boolean
|
||||||
|
*/
|
||||||
|
public default Boolean getMandatory() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
/***********************************************************************
|
||||||
|
* This file is part of iDempiere ERP Open Source *
|
||||||
|
* http://www.idempiere.org *
|
||||||
|
* *
|
||||||
|
* Copyright (C) Contributors *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU General Public License *
|
||||||
|
* as published by the Free Software Foundation; either version 2 *
|
||||||
|
* of the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* 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., 51 Franklin Street, Fifth Floor, Boston, *
|
||||||
|
* MA 02110-1301, USA. *
|
||||||
|
* *
|
||||||
|
* Contributors: *
|
||||||
|
* - hengsin *
|
||||||
|
**********************************************************************/
|
||||||
|
package org.adempiere.webui.editor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for NumberEditor configuration
|
||||||
|
* @author hengsin
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface INumberEditorConfiguration extends IEditorConfiguration {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a not null value to override the integral setting from GridField.getDisplayType
|
||||||
|
* @return Boolean
|
||||||
|
*/
|
||||||
|
public default Boolean getIntegral() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -52,9 +52,24 @@ public class WAccountEditor extends WEditor implements ContextMenuListener
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static final CLogger log = CLogger.getCLogger(WAccountEditor.class);
|
private static final CLogger log = CLogger.getCLogger(WAccountEditor.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WAccountEditor(GridField gridField)
|
public WAccountEditor(GridField gridField)
|
||||||
{
|
{
|
||||||
super(new Combinationbox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WAccountEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(new Combinationbox(), gridField, tableEditor, editorConfiguration);
|
||||||
if (ThemeManager.isUseFontIconForImage())
|
if (ThemeManager.isUseFontIconForImage())
|
||||||
getComponent().getButton().setIconSclass("z-icon-Account");
|
getComponent().getButton().setIconSclass("z-icon-Account");
|
||||||
else
|
else
|
||||||
|
|
|
@ -48,8 +48,22 @@ public class WAssignmentEditor extends WEditor implements ContextMenuListener {
|
||||||
private DateFormat m_dateFormat = DisplayType.getDateFormat(DisplayType.DateTime);
|
private DateFormat m_dateFormat = DisplayType.getDateFormat(DisplayType.DateTime);
|
||||||
private NumberFormat m_qtyFormat = DisplayType.getNumberFormat(DisplayType.Quantity);
|
private NumberFormat m_qtyFormat = DisplayType.getNumberFormat(DisplayType.Quantity);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WAssignmentEditor(GridField gridField) {
|
public WAssignmentEditor(GridField gridField) {
|
||||||
super(new EditorBox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WAssignmentEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
|
super(new EditorBox(), gridField, tableEditor, editorConfiguration);
|
||||||
|
|
||||||
initComponents();
|
initComponents();
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,9 +45,24 @@ public class WBinaryEditor extends WEditor
|
||||||
|
|
||||||
private ADWindow adwindow;
|
private ADWindow adwindow;
|
||||||
|
|
||||||
public WBinaryEditor(GridField gridField)
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
|
public WBinaryEditor(GridField gridField)
|
||||||
|
{
|
||||||
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WBinaryEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(new Button(), gridField);
|
super(new Button(), gridField, tableEditor, editorConfiguration);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,13 +83,43 @@ public class WButtonEditor extends WEditor implements IProcessButton
|
||||||
|
|
||||||
private IADTabpanel adTabpanel;
|
private IADTabpanel adTabpanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WButtonEditor(GridField gridField)
|
public WButtonEditor(GridField gridField)
|
||||||
{
|
{
|
||||||
this(gridField, -1);
|
this(gridField, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param rowIndex
|
||||||
|
*/
|
||||||
public WButtonEditor(GridField gridField, int rowIndex) {
|
public WButtonEditor(GridField gridField, int rowIndex) {
|
||||||
super(new Button(), gridField, rowIndex);
|
this(gridField, rowIndex, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WButtonEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
|
this(gridField, -1, tableEditor, editorConfiguration);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param rowIndex
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WButtonEditor(GridField gridField, int rowIndex, boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
|
super(new Button(), gridField, rowIndex, tableEditor, editorConfiguration);
|
||||||
m_text = gridField.getHeader();
|
m_text = gridField.getHeader();
|
||||||
AD_Process_ID = gridField.getAD_Process_ID();
|
AD_Process_ID = gridField.getAD_Process_ID();
|
||||||
gridfield = gridField;
|
gridfield = gridField;
|
||||||
|
|
|
@ -53,9 +53,26 @@ public class WChartEditor extends WEditor
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private static final CLogger log = CLogger.getCLogger(WChartEditor.class);
|
private static final CLogger log = CLogger.getCLogger(WChartEditor.class);
|
||||||
|
|
||||||
public WChartEditor(GridField gridField, int windowNo)
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param windowNo
|
||||||
|
*/
|
||||||
|
public WChartEditor(GridField gridField, int windowNo)
|
||||||
|
{
|
||||||
|
this(gridField, windowNo, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param windowNo
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WChartEditor(GridField gridField, int windowNo, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(new Panel(), gridField);
|
super(new Panel(), gridField, tableEditor, editorConfiguration);
|
||||||
chartModel = new MChart(Env.getCtx(), gridField.getAD_Chart_ID(), null);
|
chartModel = new MChart(Env.getCtx(), gridField.getAD_Chart_ID(), null);
|
||||||
chartModel.setWindowNo(windowNo);
|
chartModel.setWindowNo(windowNo);
|
||||||
init();
|
init();
|
||||||
|
|
|
@ -71,14 +71,29 @@ public class WChosenboxListEditor extends WEditor implements ContextMenuListener
|
||||||
|
|
||||||
private ListModelList<ValueNamePair> model = new ListModelList<>();
|
private ListModelList<ValueNamePair> model = new ListModelList<>();
|
||||||
|
|
||||||
public WChosenboxListEditor(GridField gridField)
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
|
public WChosenboxListEditor(GridField gridField)
|
||||||
|
{
|
||||||
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WChosenboxListEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
this(new ChosenboxEditor(), gridField);
|
this(new ChosenboxEditor(), gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
private WChosenboxListEditor(Component comp, GridField gridField)
|
private WChosenboxListEditor(Component comp, GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(comp, gridField);
|
super(comp, gridField, tableEditor, editorConfiguration);
|
||||||
lookup = gridField.getLookup();
|
lookup = gridField.getLookup();
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,9 +73,24 @@ public class WChosenboxSearchEditor extends WEditor implements ContextMenuListen
|
||||||
private static final int MAX_AUTO_COMPLETE_ROWS = 50;
|
private static final int MAX_AUTO_COMPLETE_ROWS = 50;
|
||||||
private boolean onselecting;
|
private boolean onselecting;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WChosenboxSearchEditor (GridField gridField)
|
public WChosenboxSearchEditor (GridField gridField)
|
||||||
{
|
{
|
||||||
super(new ChosenSearchBox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WChosenboxSearchEditor (GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(new ChosenSearchBox(), gridField, tableEditor, editorConfiguration);
|
||||||
|
|
||||||
lookup = gridField.getLookup();
|
lookup = gridField.getLookup();
|
||||||
|
|
||||||
|
|
|
@ -33,11 +33,23 @@ public class WDashboardContentEditor extends WEditor {
|
||||||
private final static CLogger logger = CLogger.getCLogger(WDashboardContentEditor.class);
|
private final static CLogger logger = CLogger.getCLogger(WDashboardContentEditor.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param comp
|
*
|
||||||
* @param gridField
|
* @param gridField
|
||||||
|
* @param windowNo
|
||||||
*/
|
*/
|
||||||
public WDashboardContentEditor(GridField gridField, int windowNo) {
|
public WDashboardContentEditor(GridField gridField, int windowNo) {
|
||||||
super(new Panel(), gridField);
|
this(gridField, windowNo, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param windowNo
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WDashboardContentEditor(GridField gridField, int windowNo, boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
|
super(new Panel(), gridField, tableEditor, editorConfiguration);
|
||||||
dashboardController = new DashboardController();
|
dashboardController = new DashboardController();
|
||||||
content = new MDashboardContent(Env.getCtx(), gridField.getPA_DashboardContent_ID(), null);
|
content = new MDashboardContent(Env.getCtx(), gridField.getPA_DashboardContent_ID(), null);
|
||||||
Panelchildren pc = new Panelchildren();
|
Panelchildren pc = new Panelchildren();
|
||||||
|
|
|
@ -52,12 +52,23 @@ public class WDateEditor extends WEditor implements ContextMenuListener
|
||||||
private Timestamp oldValue = new Timestamp(0);
|
private Timestamp oldValue = new Timestamp(0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param gridField
|
* @param gridField
|
||||||
*/
|
*/
|
||||||
public WDateEditor(GridField gridField)
|
public WDateEditor(GridField gridField)
|
||||||
{
|
{
|
||||||
super(new Datebox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WDateEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(new Datebox(), gridField, tableEditor, editorConfiguration);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,13 +47,22 @@ public class WDatetimeEditor extends WEditor implements ContextMenuListener
|
||||||
|
|
||||||
private Timestamp oldValue = new Timestamp(0);
|
private Timestamp oldValue = new Timestamp(0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
|
public WDatetimeEditor(GridField gridField)
|
||||||
|
{
|
||||||
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param gridField
|
* @param gridField
|
||||||
*/
|
*/
|
||||||
public WDatetimeEditor(GridField gridField)
|
public WDatetimeEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(new DatetimeBox(), gridField);
|
super(new DatetimeBox(), gridField, tableEditor, editorConfiguration);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -94,7 +94,7 @@ public abstract class WEditor implements EventListener<Event>, PropertyChangeLis
|
||||||
|
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
private boolean readOnly;
|
protected boolean readOnly;
|
||||||
|
|
||||||
private String columnName;
|
private String columnName;
|
||||||
|
|
||||||
|
@ -154,16 +154,45 @@ public abstract class WEditor implements EventListener<Event>, PropertyChangeLis
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param comp
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WEditor(Component comp, GridField gridField) {
|
public WEditor(Component comp, GridField gridField) {
|
||||||
this(comp, gridField, -1);
|
this(comp, gridField, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param comp
|
* @param comp
|
||||||
* @param gridField
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
*/
|
*/
|
||||||
public WEditor(Component comp, GridField gridField, int rowIndex)
|
public WEditor(Component comp, GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
|
this(comp, gridField, -1, tableEditor, editorConfiguration);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param comp
|
||||||
|
* @param gridField
|
||||||
|
* @param rowIndex
|
||||||
|
*/
|
||||||
|
public WEditor(Component comp, GridField gridField, int rowIndex) {
|
||||||
|
this(comp, gridField, rowIndex, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param comp
|
||||||
|
* @param gridField
|
||||||
|
* @param rowIndex
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WEditor(Component comp, GridField gridField, int rowIndex, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
if (comp == null)
|
if (comp == null)
|
||||||
{
|
{
|
||||||
|
@ -175,7 +204,7 @@ public abstract class WEditor implements EventListener<Event>, PropertyChangeLis
|
||||||
throw new IllegalArgumentException("Grid field cannot be null");
|
throw new IllegalArgumentException("Grid field cannot be null");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setComponent(comp);
|
this.setComponent(comp);
|
||||||
this.gridField = gridField;
|
this.gridField = gridField;
|
||||||
if (gridField.getGridTab() != null) {
|
if (gridField.getGridTab() != null) {
|
||||||
comp.setClientAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, gridField.getGridTab().getTableName()+"0"+gridField.getColumnName());
|
comp.setClientAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, gridField.getGridTab().getTableName()+"0"+gridField.getColumnName());
|
||||||
|
@ -183,8 +212,15 @@ public abstract class WEditor implements EventListener<Event>, PropertyChangeLis
|
||||||
} else {
|
} else {
|
||||||
comp.setClientAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, gridField.getColumnName());
|
comp.setClientAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, gridField.getColumnName());
|
||||||
}
|
}
|
||||||
this.setMandatory(gridField.isMandatory(true));
|
if (editorConfiguration != null && editorConfiguration.getMandatory() != null)
|
||||||
this.readOnly = gridField.isReadOnly();
|
this.setMandatory(editorConfiguration.getMandatory());
|
||||||
|
else
|
||||||
|
this.setMandatory(gridField.isMandatory(true));
|
||||||
|
this.tableEditor = tableEditor;
|
||||||
|
if (editorConfiguration != null && editorConfiguration.getReadonly() != null)
|
||||||
|
this.readOnly = editorConfiguration.getReadonly();
|
||||||
|
else
|
||||||
|
this.readOnly = gridField.isReadOnly();
|
||||||
this.description = gridField.getDescription();
|
this.description = gridField.getDescription();
|
||||||
this.columnName = gridField.getColumnName();
|
this.columnName = gridField.getColumnName();
|
||||||
this.strLabel = gridField.getHeader();
|
this.strLabel = gridField.getHeader();
|
||||||
|
@ -613,6 +649,8 @@ public abstract class WEditor implements EventListener<Event>, PropertyChangeLis
|
||||||
} else {
|
} else {
|
||||||
label.setStyle(style);
|
label.setStyle(style);
|
||||||
}
|
}
|
||||||
|
// if (this instanceof WRadioGroupEditor)
|
||||||
|
// System.out.println(getComponent().getUuid() + " label stype="+label.getStyle());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,9 +39,24 @@ public class WFileDirectoryEditor extends WEditor
|
||||||
|
|
||||||
private String oldValue;
|
private String oldValue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WFileDirectoryEditor(GridField gridField)
|
public WFileDirectoryEditor(GridField gridField)
|
||||||
{
|
{
|
||||||
super(new FilenameBox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WFileDirectoryEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(new FilenameBox(), gridField, tableEditor, editorConfiguration);
|
||||||
if (ThemeManager.isUseFontIconForImage())
|
if (ThemeManager.isUseFontIconForImage())
|
||||||
getComponent().getButton().setIconSclass("z-icon-Open");
|
getComponent().getButton().setIconSclass("z-icon-Open");
|
||||||
else
|
else
|
||||||
|
|
|
@ -45,9 +45,24 @@ public class WFilenameEditor extends WEditor
|
||||||
|
|
||||||
private String oldValue;
|
private String oldValue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WFilenameEditor(GridField gridField)
|
public WFilenameEditor(GridField gridField)
|
||||||
{
|
{
|
||||||
super(new FilenameBox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WFilenameEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(new FilenameBox(), gridField, tableEditor, editorConfiguration);
|
||||||
if (ThemeManager.isUseFontIconForImage())
|
if (ThemeManager.isUseFontIconForImage())
|
||||||
getComponent().getButton().setIconSclass("z-icon-Open");
|
getComponent().getButton().setIconSclass("z-icon-Open");
|
||||||
else
|
else
|
||||||
|
|
|
@ -65,9 +65,24 @@ public class WHtmlEditor extends WEditor implements ContextMenuListener
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static final CLogger log = CLogger.getCLogger(WHtmlEditor.class);
|
private static final CLogger log = CLogger.getCLogger(WHtmlEditor.class);
|
||||||
|
|
||||||
public WHtmlEditor(GridField gridField)
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
|
public WHtmlEditor(GridField gridField)
|
||||||
|
{
|
||||||
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WHtmlEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(new Div(), gridField);
|
super(new Div(), gridField, tableEditor, editorConfiguration);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,22 @@ public class WImageEditor extends WEditor
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static final CLogger log = CLogger.getCLogger(WImageEditor.class);
|
private static final CLogger log = CLogger.getCLogger(WImageEditor.class);
|
||||||
|
|
||||||
public WImageEditor(GridField gridField)
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
|
public WImageEditor(GridField gridField)
|
||||||
|
{
|
||||||
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WImageEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(new Image() {
|
super(new Image() {
|
||||||
private static final long serialVersionUID = 8492629361709791256L;
|
private static final long serialVersionUID = 8492629361709791256L;
|
||||||
|
@ -70,7 +85,7 @@ public class WImageEditor extends WEditor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, gridField);
|
}, gridField, tableEditor, editorConfiguration);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,17 @@ public class WLocationEditor extends WEditor implements EventListener<Event>, Pr
|
||||||
* @param gridField
|
* @param gridField
|
||||||
*/
|
*/
|
||||||
public WLocationEditor(GridField gridField) {
|
public WLocationEditor(GridField gridField) {
|
||||||
super(new Locationbox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WLocationEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
|
super(new Locationbox(), gridField, tableEditor, editorConfiguration);
|
||||||
m_Location = (MLocationLookup)gridField.getLookup();
|
m_Location = (MLocationLookup)gridField.getLookup();
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,10 +108,21 @@ public class WLocatorEditor extends WEditor implements EventListener<Event>, Pro
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
*
|
||||||
* @param gridField
|
* @param gridField
|
||||||
*/
|
*/
|
||||||
public WLocatorEditor(GridField gridField) {
|
public WLocatorEditor(GridField gridField) {
|
||||||
super(new EditorBox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WLocatorEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
|
super(new EditorBox(), gridField, tableEditor, editorConfiguration);
|
||||||
m_mLocator = (MLocatorLookup)gridField.getLookup();
|
m_mLocator = (MLocatorLookup)gridField.getLookup();
|
||||||
|
|
||||||
if (ThemeManager.isUseFontIconForImage())
|
if (ThemeManager.isUseFontIconForImage())
|
||||||
|
|
|
@ -59,8 +59,6 @@ public class WNumberEditor extends WEditor implements ContextMenuListener
|
||||||
|
|
||||||
private int displayType;
|
private int displayType;
|
||||||
|
|
||||||
private boolean tableEditor;
|
|
||||||
|
|
||||||
private String originalStyle;
|
private String originalStyle;
|
||||||
|
|
||||||
public WNumberEditor()
|
public WNumberEditor()
|
||||||
|
@ -74,22 +72,41 @@ public class WNumberEditor extends WEditor implements ContextMenuListener
|
||||||
*/
|
*/
|
||||||
public WNumberEditor(GridField gridField)
|
public WNumberEditor(GridField gridField)
|
||||||
{
|
{
|
||||||
this(false, gridField);
|
this(gridField, false, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param gridField
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
*/
|
*/
|
||||||
public WNumberEditor(boolean tableEditor, GridField gridField)
|
public WNumberEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(new NumberBox(gridField.getDisplayType() == DisplayType.Integer, tableEditor),
|
super(newNumberBox(gridField, tableEditor, editorConfiguration),
|
||||||
gridField);
|
gridField, tableEditor, editorConfiguration);
|
||||||
this.displayType = gridField.getDisplayType();
|
this.displayType = gridField.getDisplayType();
|
||||||
this.tableEditor = tableEditor;
|
if (editorConfiguration != null && editorConfiguration instanceof INumberEditorConfiguration) {
|
||||||
|
INumberEditorConfiguration config = (INumberEditorConfiguration) editorConfiguration;
|
||||||
|
if (config.getIntegral() != null) {
|
||||||
|
if (config.getIntegral())
|
||||||
|
this.displayType = DisplayType.Integer;
|
||||||
|
else
|
||||||
|
this.displayType = DisplayType.Number;
|
||||||
|
}
|
||||||
|
}
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static NumberBox newNumberBox(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
|
if (editorConfiguration != null && editorConfiguration instanceof INumberEditorConfiguration) {
|
||||||
|
INumberEditorConfiguration config = (INumberEditorConfiguration) editorConfiguration;
|
||||||
|
if (config.getIntegral() != null)
|
||||||
|
return new NumberBox(config.getIntegral(), tableEditor);
|
||||||
|
}
|
||||||
|
return new NumberBox(gridField.getDisplayType() == DisplayType.Integer, tableEditor);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param gridField
|
* @param gridField
|
||||||
|
@ -97,9 +114,12 @@ public class WNumberEditor extends WEditor implements ContextMenuListener
|
||||||
*/
|
*/
|
||||||
public WNumberEditor(GridField gridField, boolean integral)
|
public WNumberEditor(GridField gridField, boolean integral)
|
||||||
{
|
{
|
||||||
super(new NumberBox(integral), gridField);
|
this(gridField, false, new INumberEditorConfiguration() {
|
||||||
this.displayType = integral ? DisplayType.Integer : DisplayType.Number;
|
@Override
|
||||||
init();
|
public Boolean getIntegral() {
|
||||||
|
return Boolean.valueOf(integral);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -61,9 +61,26 @@ public class WPAttributeEditor extends WEditor implements ContextMenuListener
|
||||||
/** No Instance Key */
|
/** No Instance Key */
|
||||||
private static Integer NO_INSTANCE = Integer.valueOf(0);
|
private static Integer NO_INSTANCE = Integer.valueOf(0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridTab
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WPAttributeEditor(GridTab gridTab, GridField gridField)
|
public WPAttributeEditor(GridTab gridTab, GridField gridField)
|
||||||
{
|
{
|
||||||
super(new PAttributebox(), gridField);
|
this(gridTab, gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridTab
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WPAttributeEditor(GridTab gridTab, GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(new PAttributebox(), gridField, tableEditor, editorConfiguration);
|
||||||
m_GridTab = gridTab;
|
m_GridTab = gridTab;
|
||||||
initComponents();
|
initComponents();
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,10 @@ import org.compiere.model.GridField;
|
||||||
*/
|
*/
|
||||||
public class WPasswordEditor extends WStringEditor
|
public class WPasswordEditor extends WStringEditor
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WPasswordEditor(GridField gridField)
|
public WPasswordEditor(GridField gridField)
|
||||||
{
|
{
|
||||||
super(gridField);
|
super(gridField);
|
||||||
|
@ -35,9 +38,25 @@ public class WPasswordEditor extends WStringEditor
|
||||||
setChangeEventWhenEditing (true);
|
setChangeEventWhenEditing (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
*/
|
||||||
public WPasswordEditor(GridField gridField, boolean tableEditor)
|
public WPasswordEditor(GridField gridField, boolean tableEditor)
|
||||||
{
|
{
|
||||||
super(gridField, tableEditor);
|
this(gridField, tableEditor, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WPasswordEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(gridField, tableEditor, editorConfiguration);
|
||||||
super.setTypePassword(true);
|
super.setTypePassword(true);
|
||||||
setChangeEventWhenEditing (false);
|
setChangeEventWhenEditing (false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,8 +58,22 @@ public class WPaymentEditor extends WEditor implements ListDataListener, Context
|
||||||
private MPaymentLookup lookup;
|
private MPaymentLookup lookup;
|
||||||
private Object oldValue;
|
private Object oldValue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WPaymentEditor(GridField gridField) {
|
public WPaymentEditor(GridField gridField) {
|
||||||
super(new Paymentbox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WPaymentEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
|
super(new Paymentbox(), gridField, tableEditor, editorConfiguration);
|
||||||
lookup = (MPaymentLookup) gridField.getLookup();
|
lookup = (MPaymentLookup) gridField.getLookup();
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,616 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Project: Trek Global ERP *
|
||||||
|
* Copyright (C) 2009-2018 Trek Global Corporation *
|
||||||
|
* *
|
||||||
|
* Product: Posterita Ajax UI *
|
||||||
|
* Copyright (C) 2007 Posterita Ltd. All Rights Reserved. *
|
||||||
|
* 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. *
|
||||||
|
* For the text or an alternative of this public license, you may reach us *
|
||||||
|
* Posterita Ltd., 3, Draper Avenue, Quatre Bornes, Mauritius *
|
||||||
|
* or via info@posterita.org or http://www.posterita.org/ *
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
package org.adempiere.webui.editor;
|
||||||
|
|
||||||
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import javax.swing.event.ListDataEvent;
|
||||||
|
import javax.swing.event.ListDataListener;
|
||||||
|
|
||||||
|
import org.adempiere.webui.ValuePreference;
|
||||||
|
import org.adempiere.webui.event.ContextMenuEvent;
|
||||||
|
import org.adempiere.webui.event.ContextMenuListener;
|
||||||
|
import org.adempiere.webui.event.ValueChangeEvent;
|
||||||
|
import org.adempiere.webui.window.WFieldRecordInfo;
|
||||||
|
import org.compiere.model.GridField;
|
||||||
|
import org.compiere.model.GridTable;
|
||||||
|
import org.compiere.model.Lookup;
|
||||||
|
import org.compiere.model.MColumn;
|
||||||
|
import org.compiere.model.MLookup;
|
||||||
|
import org.compiere.model.MRole;
|
||||||
|
import org.compiere.model.MTable;
|
||||||
|
import org.compiere.util.CLogger;
|
||||||
|
import org.compiere.util.DisplayType;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.KeyNamePair;
|
||||||
|
import org.compiere.util.NamePair;
|
||||||
|
import org.compiere.util.Util;
|
||||||
|
import org.compiere.util.ValueNamePair;
|
||||||
|
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.Hlayout;
|
||||||
|
import org.zkoss.zul.Radio;
|
||||||
|
import org.zkoss.zul.Radiogroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author hengsin
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class WRadioGroupEditor extends WEditor implements ContextMenuListener, ListDataListener
|
||||||
|
{
|
||||||
|
public final static String[] LISTENER_EVENTS = {Events.ON_CHECK};
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private static final CLogger logger;
|
||||||
|
|
||||||
|
static
|
||||||
|
{
|
||||||
|
logger = CLogger.getCLogger(WRadioGroupEditor.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Lookup lookup;
|
||||||
|
private Object oldValue;
|
||||||
|
|
||||||
|
private boolean onselecting = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
|
public WRadioGroupEditor(GridField gridField)
|
||||||
|
{
|
||||||
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WRadioGroupEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(new RadioGroupEditor(), gridField, tableEditor, editorConfiguration);
|
||||||
|
lookup = gridField.getLookup();
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor for use if a grid field is unavailable
|
||||||
|
*
|
||||||
|
* @param lookup Store of selectable data
|
||||||
|
* @param label column name (not displayed)
|
||||||
|
* @param description description of component
|
||||||
|
* @param mandatory whether a selection must be made
|
||||||
|
* @param readonly whether or not the editor is read only
|
||||||
|
* @param updateable whether the editor contents can be changed
|
||||||
|
*/
|
||||||
|
public WRadioGroupEditor(Lookup lookup, String label, String description, boolean mandatory, boolean readonly, boolean updateable)
|
||||||
|
{
|
||||||
|
super(new RadioGroupEditor(), label, description, mandatory, readonly, updateable);
|
||||||
|
if (lookup == null)
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Lookup cannot be null");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.lookup = lookup;
|
||||||
|
super.setColumnName(lookup.getColumnName());
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For ease of porting swing form
|
||||||
|
* @param columnName
|
||||||
|
* @param mandatory
|
||||||
|
* @param isReadOnly
|
||||||
|
* @param isUpdateable
|
||||||
|
* @param lookup
|
||||||
|
*/
|
||||||
|
public WRadioGroupEditor(String columnName, boolean mandatory, boolean isReadOnly, boolean isUpdateable,
|
||||||
|
Lookup lookup)
|
||||||
|
{
|
||||||
|
super(new RadioGroupEditor(), columnName, null, null, mandatory, isReadOnly, isUpdateable);
|
||||||
|
if (lookup == null)
|
||||||
|
{
|
||||||
|
throw new IllegalArgumentException("Lookup cannot be null");
|
||||||
|
}
|
||||||
|
this.lookup = lookup;
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void init()
|
||||||
|
{
|
||||||
|
boolean zoom= false;
|
||||||
|
if (lookup != null)
|
||||||
|
{
|
||||||
|
lookup.addListDataListener(this);
|
||||||
|
lookup.setMandatory(true);
|
||||||
|
lookup.setMandatory(isMandatory());
|
||||||
|
|
||||||
|
if ((lookup.getDisplayType() == DisplayType.List && Env.getContextAsInt(Env.getCtx(), "#AD_Role_ID") == 0)
|
||||||
|
|| lookup.getDisplayType() != DisplayType.List)
|
||||||
|
{
|
||||||
|
zoom= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//no need to refresh readonly lookup
|
||||||
|
if (isReadWrite())
|
||||||
|
lookup.refresh();
|
||||||
|
else
|
||||||
|
refreshList();
|
||||||
|
}
|
||||||
|
|
||||||
|
popupMenu = new WEditorPopupMenu(zoom, true, isShowPreference(), false, false, false, lookup);
|
||||||
|
addChangeLogMenu(popupMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDisplay()
|
||||||
|
{
|
||||||
|
|
||||||
|
String display = "";
|
||||||
|
Radio selItem = getComponent().getSelectedItem();
|
||||||
|
if (selItem != null)
|
||||||
|
{
|
||||||
|
display = selItem.getLabel();
|
||||||
|
}
|
||||||
|
return display;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getValue()
|
||||||
|
{
|
||||||
|
Object retVal = null;
|
||||||
|
Radio selItem = getComponent().getSelectedItem();
|
||||||
|
if (selItem != null)
|
||||||
|
{
|
||||||
|
retVal = selItem.getValue();
|
||||||
|
if ((retVal instanceof Integer) && (Integer)retVal == -1)
|
||||||
|
retVal = null;
|
||||||
|
else if ((retVal instanceof String) && "".equals(retVal))
|
||||||
|
retVal = null;
|
||||||
|
}
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(Object value)
|
||||||
|
{
|
||||||
|
if (onselecting) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value != null && (value instanceof Integer || value instanceof String || value instanceof Timestamp || value instanceof BigDecimal))
|
||||||
|
{
|
||||||
|
|
||||||
|
getComponent().setValue(value);
|
||||||
|
if (!getComponent().isSelected(value))
|
||||||
|
{
|
||||||
|
Object curValue = oldValue;
|
||||||
|
oldValue = value;
|
||||||
|
|
||||||
|
if (isReadWrite() && lookup != null)
|
||||||
|
{
|
||||||
|
lookup.refresh();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
refreshList();
|
||||||
|
}
|
||||||
|
|
||||||
|
//still not in list, reset to zero
|
||||||
|
if (!getComponent().isSelected(value))
|
||||||
|
{
|
||||||
|
if (value instanceof Integer && gridField != null && gridField.getDisplayType() != DisplayType.ID &&
|
||||||
|
(gridTab==null || !gridTab.getTableModel().isImporting())) // for IDs is ok to be out of the list
|
||||||
|
{
|
||||||
|
//if it is problem with record lock, just keep value (no trigger change) and set field readonly
|
||||||
|
MRole role = MRole.getDefault(Env.getCtx(), false);
|
||||||
|
int refTableID = -1;
|
||||||
|
if (gridTab != null) // fields process para don't represent a column ID
|
||||||
|
{
|
||||||
|
MColumn col = MColumn.get(Env.getCtx(), gridField.getAD_Column_ID());
|
||||||
|
if (col.get_ID() > 0) {
|
||||||
|
String refTable = col.getReferenceTableName();
|
||||||
|
if (refTable != null) {
|
||||||
|
MTable table = MTable.get(Env.getCtx(), refTable);
|
||||||
|
refTableID = table.getAD_Table_ID();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (refTableID > 0 && ! role.isRecordAccess(refTableID, (int)value, false))
|
||||||
|
{
|
||||||
|
oldValue = value;
|
||||||
|
setReadWrite(false);
|
||||||
|
gridField.setLockedRecord(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
getComponent().setValue(null);
|
||||||
|
if (curValue == null)
|
||||||
|
curValue = value;
|
||||||
|
ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), curValue, null);
|
||||||
|
super.fireValueChange(changeEvent);
|
||||||
|
oldValue = null;
|
||||||
|
if (gridField!=null)
|
||||||
|
gridField.setLockedRecord(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oldValue = value;
|
||||||
|
if (gridField!=null)
|
||||||
|
gridField.setLockedRecord(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
getComponent().setValue(null);
|
||||||
|
oldValue = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RadioGroupEditor getComponent() {
|
||||||
|
return (RadioGroupEditor) component;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isReadWrite() {
|
||||||
|
return getComponent().isEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setReadWrite(boolean readWrite) {
|
||||||
|
getComponent().setEnabled(readWrite);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshList()
|
||||||
|
{
|
||||||
|
if (getComponent().getItemCount() > 0)
|
||||||
|
getComponent().removeAllItems();
|
||||||
|
|
||||||
|
if (isReadWrite())
|
||||||
|
{
|
||||||
|
if (lookup != null)
|
||||||
|
{
|
||||||
|
lookup.refresh();
|
||||||
|
int size = lookup.getSize();
|
||||||
|
|
||||||
|
boolean found = false;
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
Object obj = lookup.getElementAt(i);
|
||||||
|
if (obj instanceof KeyNamePair)
|
||||||
|
{
|
||||||
|
KeyNamePair lookupKNPair = (KeyNamePair) obj;
|
||||||
|
getComponent().appendItem(lookupKNPair.getName(), lookupKNPair.getKey());
|
||||||
|
if (!found && oldValue != null && oldValue instanceof Integer &&
|
||||||
|
lookupKNPair.getKey() == (Integer)oldValue)
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (obj instanceof ValueNamePair)
|
||||||
|
{
|
||||||
|
ValueNamePair lookupKNPair = (ValueNamePair) obj;
|
||||||
|
getComponent().appendItem(lookupKNPair.getName(), lookupKNPair.getValue());
|
||||||
|
if (!found && oldValue != null && lookupKNPair.getValue().equals(oldValue.toString()))
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found && oldValue != null)
|
||||||
|
{
|
||||||
|
NamePair pair = lookup.getDirect(oldValue, false, true);
|
||||||
|
if (pair != null) {
|
||||||
|
if (pair instanceof KeyNamePair) {
|
||||||
|
int key = ((KeyNamePair)pair).getKey();
|
||||||
|
getComponent().appendItem(pair.getName(), key);
|
||||||
|
} else if (pair instanceof ValueNamePair) {
|
||||||
|
ValueNamePair valueNamePair = (ValueNamePair) pair;
|
||||||
|
getComponent().appendItem(valueNamePair.getName(), valueNamePair.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (lookup != null)
|
||||||
|
{
|
||||||
|
String trxName = null;
|
||||||
|
if ( gridField != null
|
||||||
|
&& gridField.getGridTab() != null
|
||||||
|
&& gridField.getGridTab().getTableModel() != null) {
|
||||||
|
GridTable gt = gridField.getGridTab().getTableModel();
|
||||||
|
if (gt.isImporting()) {
|
||||||
|
trxName = gt.get_TrxName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NamePair pair = lookup.getDirect(oldValue, false, false, trxName);
|
||||||
|
if (pair != null) {
|
||||||
|
if (pair instanceof KeyNamePair) {
|
||||||
|
int key = ((KeyNamePair)pair).getKey();
|
||||||
|
getComponent().appendItem(pair.getName(), key);
|
||||||
|
} else if (pair instanceof ValueNamePair) {
|
||||||
|
ValueNamePair valueNamePair = (ValueNamePair) pair;
|
||||||
|
getComponent().appendItem(valueNamePair.getName(), valueNamePair.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getComponent().setValue(oldValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onEvent(Event event)
|
||||||
|
{
|
||||||
|
if (Events.ON_CHECK.equalsIgnoreCase(event.getName()))
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
onselecting = true;
|
||||||
|
Object newValue = getValue();
|
||||||
|
if (isValueChange(newValue)) {
|
||||||
|
try {
|
||||||
|
if (gridField != null)
|
||||||
|
gridField.setLookupEditorSettingValue(true);
|
||||||
|
ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), oldValue, newValue);
|
||||||
|
super.fireValueChange(changeEvent);
|
||||||
|
oldValue = newValue;
|
||||||
|
getComponent().setValue(newValue);
|
||||||
|
} finally {
|
||||||
|
if (gridField != null)
|
||||||
|
gridField.setLookupEditorSettingValue(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
onselecting = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isValueChange(Object newValue) {
|
||||||
|
return (oldValue == null && newValue != null) || (oldValue != null && newValue == null)
|
||||||
|
|| ((oldValue != null && newValue != null) && !oldValue.equals(newValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getEvents()
|
||||||
|
{
|
||||||
|
return LISTENER_EVENTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void actionRefresh()
|
||||||
|
{
|
||||||
|
if (lookup != null)
|
||||||
|
{
|
||||||
|
Object curValue = getValue();
|
||||||
|
|
||||||
|
if (isReadWrite())
|
||||||
|
{
|
||||||
|
if (lookup instanceof MLookup)
|
||||||
|
((MLookup) lookup).refreshItemsAndCache();
|
||||||
|
else
|
||||||
|
lookup.refresh();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
refreshList();
|
||||||
|
if (curValue != null)
|
||||||
|
{
|
||||||
|
setValue(curValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Lookup getLookup()
|
||||||
|
{
|
||||||
|
return lookup;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onMenu(ContextMenuEvent evt)
|
||||||
|
{
|
||||||
|
if (WEditorPopupMenu.REQUERY_EVENT.equals(evt.getContextEvent()))
|
||||||
|
{
|
||||||
|
actionRefresh();
|
||||||
|
}
|
||||||
|
else if (WEditorPopupMenu.PREFERENCE_EVENT.equals(evt.getContextEvent()))
|
||||||
|
{
|
||||||
|
if (isShowPreference())
|
||||||
|
ValuePreference.start (getComponent(), this.getGridField(), getValue());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (WEditorPopupMenu.CHANGE_LOG_EVENT.equals(evt.getContextEvent()))
|
||||||
|
{
|
||||||
|
WFieldRecordInfo.start(gridField);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void propertyChange(PropertyChangeEvent evt)
|
||||||
|
{
|
||||||
|
if ("FieldValue".equals(evt.getPropertyName()))
|
||||||
|
{
|
||||||
|
setValue(evt.getNewValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dynamicDisplay(Properties ctx)
|
||||||
|
{
|
||||||
|
if (oldValue != null && getComponent().getItemCount() > 0 && getComponent().getSelectedItem() == null)
|
||||||
|
{
|
||||||
|
getComponent().setValue(oldValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lookup instanceof MLookup)
|
||||||
|
{
|
||||||
|
((MLookup) lookup).getLookupInfo().ctx = ctx;
|
||||||
|
}
|
||||||
|
if ((lookup != null) && (!lookup.isValidated() || !lookup.isLoaded()
|
||||||
|
|| (isReadWrite() && lookup.getSize() != getComponent().getItemCount())))
|
||||||
|
this.actionRefresh();
|
||||||
|
|
||||||
|
super.dynamicDisplay(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class RadioGroupEditor extends Hlayout {
|
||||||
|
/**
|
||||||
|
* generated serial id
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -8814498538711459900L;
|
||||||
|
private Radiogroup radioGroup;
|
||||||
|
private boolean enabled;
|
||||||
|
|
||||||
|
private RadioGroupEditor() {
|
||||||
|
newRadioGroup();
|
||||||
|
appendChild(radioGroup);
|
||||||
|
enabled = true;
|
||||||
|
setSpacing("0");
|
||||||
|
setStyle("white-space: normal");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void newRadioGroup() {
|
||||||
|
radioGroup = new Radiogroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabled(boolean readWrite) {
|
||||||
|
enabled = readWrite;
|
||||||
|
List<Radio> items = radioGroup.getItems();
|
||||||
|
for (Radio radio : items) {
|
||||||
|
radio.setDisabled(!readWrite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSelected(Object value) {
|
||||||
|
Radio radio = getSelectedItem();
|
||||||
|
if (radio != null && radio.getValue() != null && value != null) {
|
||||||
|
return radio.getValue().equals(value);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Radio getSelectedItem() {
|
||||||
|
return radioGroup.getSelectedItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedItem(Radio item) {
|
||||||
|
if (item != null && item.isSelected())
|
||||||
|
item.setSelected(false);
|
||||||
|
radioGroup.setSelectedItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeAllItems() {
|
||||||
|
List<Radio> items = radioGroup.getItems();
|
||||||
|
for (Radio radio : items) {
|
||||||
|
radio.detach();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(Object newValue) {
|
||||||
|
boolean found = false;
|
||||||
|
if (newValue != null) {
|
||||||
|
List<Radio> items = radioGroup.getItems();
|
||||||
|
for (Radio radio : items) {
|
||||||
|
if (radio.getValue() != null && radio.getValue().equals(newValue)) {
|
||||||
|
setSelectedItem(radio);
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found)
|
||||||
|
setSelectedItem(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getItemCount() {
|
||||||
|
return radioGroup.getItemCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void appendItem(String name, String value) {
|
||||||
|
if (Util.isEmpty(name))
|
||||||
|
return;
|
||||||
|
Radio radio = newRadio(name, value);
|
||||||
|
radioGroup.appendChild(radio);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Radio newRadio(String name, Object value) {
|
||||||
|
Radio radio = new Radio(name);
|
||||||
|
radio.setValue(value);
|
||||||
|
radio.setDisabled(!enabled);
|
||||||
|
radio.setStyle("padding-right:1em");
|
||||||
|
return radio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void appendItem(String name, int key) {
|
||||||
|
if (Util.isEmpty(name))
|
||||||
|
return;
|
||||||
|
Radio radio = newRadio(name, key);
|
||||||
|
radioGroup.appendChild(radio);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addEventListener(String evtnm, EventListener<? extends Event> listener) {
|
||||||
|
if (Events.ON_CHECK.equals(evtnm))
|
||||||
|
return radioGroup.addEventListener(evtnm, listener);
|
||||||
|
else
|
||||||
|
return super.addEventListener(evtnm, listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addEventListener(int priority, String evtnm, EventListener<? extends Event> listener) {
|
||||||
|
if (Events.ON_CHECK.equals(evtnm))
|
||||||
|
return radioGroup.addEventListener(priority, evtnm, listener);
|
||||||
|
else
|
||||||
|
return super.addEventListener(priority, evtnm, listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeEventListener(String evtnm, EventListener<? extends Event> listener) {
|
||||||
|
if (Events.ON_CHECK.equals(evtnm))
|
||||||
|
return radioGroup.removeEventListener(evtnm, listener);
|
||||||
|
else
|
||||||
|
return super.removeEventListener(evtnm, listener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void intervalAdded(ListDataEvent e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void intervalRemoved(ListDataEvent e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void contentsChanged(ListDataEvent e) {
|
||||||
|
refreshList();
|
||||||
|
}
|
||||||
|
}
|
|
@ -96,9 +96,24 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value
|
||||||
|
|
||||||
private ADWindow adwindow;
|
private ADWindow adwindow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WSearchEditor (GridField gridField)
|
public WSearchEditor (GridField gridField)
|
||||||
{
|
{
|
||||||
super(new CustomSearchBox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WSearchEditor (GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(new CustomSearchBox(), gridField, tableEditor, editorConfiguration);
|
||||||
|
|
||||||
lookup = gridField.getLookup();
|
lookup = gridField.getLookup();
|
||||||
|
|
||||||
|
|
|
@ -52,8 +52,6 @@ public class WStringEditor extends WEditor implements ContextMenuListener
|
||||||
|
|
||||||
private String oldValue;
|
private String oldValue;
|
||||||
|
|
||||||
private boolean tableEditor = false;
|
|
||||||
|
|
||||||
private AbstractADWindowContent adwindowContent;
|
private AbstractADWindowContent adwindowContent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -64,14 +62,33 @@ public class WStringEditor extends WEditor implements ContextMenuListener
|
||||||
this("String", false, false, true, 30, 30, "", null);
|
this("String", false, false, true, 30, 30, "", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WStringEditor(GridField gridField) {
|
public WStringEditor(GridField gridField) {
|
||||||
this(gridField, false);
|
this(gridField, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
*/
|
||||||
public WStringEditor(GridField gridField, boolean tableEditor)
|
public WStringEditor(GridField gridField, boolean tableEditor)
|
||||||
{
|
{
|
||||||
super(gridField.isAutocomplete() ? new Combobox() : new Textbox(), gridField);
|
this(gridField, tableEditor, null);
|
||||||
this.tableEditor = tableEditor;
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WStringEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(gridField.isAutocomplete() ? new Combobox() : new Textbox(), gridField, tableEditor, editorConfiguration);
|
||||||
|
|
||||||
if (gridField.getVFormat() != null && !gridField.getVFormat().isEmpty())
|
if (gridField.getVFormat() != null && !gridField.getVFormat().isEmpty())
|
||||||
getComponent().setWidgetListener("onBind", "jq(this).mask('" + gridField.getVFormat() + "');");
|
getComponent().setWidgetListener("onBind", "jq(this).mask('" + gridField.getVFormat() + "');");
|
||||||
|
|
|
@ -103,14 +103,24 @@ ContextMenuListener, IZoomableEditor
|
||||||
|
|
||||||
private boolean onselecting = false;
|
private boolean onselecting = false;
|
||||||
|
|
||||||
public WTableDirEditor(GridField gridField)
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
|
public WTableDirEditor(GridField gridField)
|
||||||
|
{
|
||||||
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WTableDirEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
this(gridField.isAutocomplete() ? new EditorAutoComplete() : new EditorCombobox(), gridField);
|
super(gridField.isAutocomplete() ? new EditorAutoComplete() : new EditorCombobox(), gridField, tableEditor, editorConfiguration);
|
||||||
}
|
|
||||||
|
|
||||||
private WTableDirEditor(Component comp, GridField gridField)
|
|
||||||
{
|
|
||||||
super(comp, gridField);
|
|
||||||
((ITableDirEditor)getComponent()).setEditor(this);
|
((ITableDirEditor)getComponent()).setEditor(this);
|
||||||
lookup = gridField.getLookup();
|
lookup = gridField.getLookup();
|
||||||
init();
|
init();
|
||||||
|
|
|
@ -45,12 +45,23 @@ public class WTimeEditor extends WEditor implements ContextMenuListener
|
||||||
private Timestamp oldValue = new Timestamp(0);
|
private Timestamp oldValue = new Timestamp(0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
|
public WTimeEditor(GridField gridField)
|
||||||
|
{
|
||||||
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
* @param gridField
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
*/
|
*/
|
||||||
public WTimeEditor(GridField gridField)
|
public WTimeEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(new Timebox(), gridField);
|
super(new Timebox(), gridField, tableEditor, editorConfiguration);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,24 @@ import org.compiere.model.GridField;
|
||||||
*/
|
*/
|
||||||
public class WUnknownEditor extends WStringEditor
|
public class WUnknownEditor extends WStringEditor
|
||||||
{
|
{
|
||||||
public WUnknownEditor(GridField gridField)
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
|
public WUnknownEditor(GridField gridField)
|
||||||
|
{
|
||||||
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WUnknownEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(gridField);
|
super(gridField, tableEditor, editorConfiguration);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,9 +33,24 @@ public class WUrlEditor extends WEditor implements ContextMenuListener
|
||||||
private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE, Events.ON_OK};
|
private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE, Events.ON_OK};
|
||||||
private String oldValue;
|
private String oldValue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WUrlEditor(GridField gridField)
|
public WUrlEditor(GridField gridField)
|
||||||
{
|
{
|
||||||
super(new Urlbox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WUrlEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(new Urlbox(), gridField, tableEditor, editorConfiguration);
|
||||||
if (ThemeManager.isUseFontIconForImage())
|
if (ThemeManager.isUseFontIconForImage())
|
||||||
getComponent().getButton().setIconSclass("z-icon-Online");
|
getComponent().getButton().setIconSclass("z-icon-Online");
|
||||||
else
|
else
|
||||||
|
|
|
@ -51,12 +51,36 @@ public class WYesNoEditor extends WEditor implements ContextMenuListener
|
||||||
|
|
||||||
private boolean oldValue = false;
|
private boolean oldValue = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WYesNoEditor(GridField gridField)
|
public WYesNoEditor(GridField gridField)
|
||||||
{
|
{
|
||||||
super(new Checkbox(), gridField);
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WYesNoEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
super(new Checkbox(), gridField, tableEditor, editorConfiguration);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param columnName
|
||||||
|
* @param label
|
||||||
|
* @param description
|
||||||
|
* @param mandatory
|
||||||
|
* @param readonly
|
||||||
|
* @param updateable
|
||||||
|
*/
|
||||||
public WYesNoEditor(String columnName, String label,
|
public WYesNoEditor(String columnName, String label,
|
||||||
String description, boolean mandatory, boolean readonly,
|
String description, boolean mandatory, boolean readonly,
|
||||||
boolean updateable) {
|
boolean updateable) {
|
||||||
|
|
|
@ -47,7 +47,19 @@ public class WebEditorFactory
|
||||||
*/
|
*/
|
||||||
public static WEditor getEditor(GridField gridField, boolean tableEditor)
|
public static WEditor getEditor(GridField gridField, boolean tableEditor)
|
||||||
{
|
{
|
||||||
return getEditor(gridField.getGridTab(), gridField, tableEditor);
|
return getEditor(gridField, tableEditor, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
* @return {@link WEditor}
|
||||||
|
*/
|
||||||
|
public static WEditor getEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
|
{
|
||||||
|
return getEditor(gridField.getGridTab(), gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final CCache<Long, IServiceReferenceHolder<IEditorFactory>> s_editorFactoryCache = new CCache<>(null, "IEditorFactory", 10, false);
|
private static final CCache<Long, IServiceReferenceHolder<IEditorFactory>> s_editorFactoryCache = new CCache<>(null, "IEditorFactory", 10, false);
|
||||||
|
@ -57,9 +69,22 @@ public class WebEditorFactory
|
||||||
* @param gridTab
|
* @param gridTab
|
||||||
* @param gridField
|
* @param gridField
|
||||||
* @param tableEditor
|
* @param tableEditor
|
||||||
* @return WEditor for GridField
|
* @return {@link WEditor}
|
||||||
*/
|
*/
|
||||||
public static WEditor getEditor(GridTab gridTab, GridField gridField, boolean tableEditor)
|
public static WEditor getEditor(GridTab gridTab, GridField gridField, boolean tableEditor)
|
||||||
|
{
|
||||||
|
return getEditor(gridTab, gridField, tableEditor, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridTab
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
* @return {@link WEditor}
|
||||||
|
*/
|
||||||
|
public static WEditor getEditor(GridTab gridTab, GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
List<Long> visitedIds = new ArrayList<Long>();
|
List<Long> visitedIds = new ArrayList<Long>();
|
||||||
if (!s_editorFactoryCache.isEmpty()) {
|
if (!s_editorFactoryCache.isEmpty()) {
|
||||||
|
@ -70,7 +95,7 @@ public class WebEditorFactory
|
||||||
IEditorFactory service = serviceReference.getService();
|
IEditorFactory service = serviceReference.getService();
|
||||||
if (service != null) {
|
if (service != null) {
|
||||||
visitedIds.add(key);
|
visitedIds.add(key);
|
||||||
WEditor editor = service.getEditor(gridTab, gridField, tableEditor);
|
WEditor editor = service.getEditor(gridTab, gridField, tableEditor, editorConfiguration);
|
||||||
if (editor != null)
|
if (editor != null)
|
||||||
return editor;
|
return editor;
|
||||||
} else {
|
} else {
|
||||||
|
@ -79,6 +104,7 @@ public class WebEditorFactory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WEditor editor = null;
|
WEditor editor = null;
|
||||||
List<IServiceReferenceHolder<IEditorFactory>> serviceReferences = Service.locator().list(IEditorFactory.class).getServiceReferences();
|
List<IServiceReferenceHolder<IEditorFactory>> serviceReferences = Service.locator().list(IEditorFactory.class).getServiceReferences();
|
||||||
for(IServiceReferenceHolder<IEditorFactory> serviceReference : serviceReferences)
|
for(IServiceReferenceHolder<IEditorFactory> serviceReference : serviceReferences)
|
||||||
|
@ -90,7 +116,7 @@ public class WebEditorFactory
|
||||||
if (service != null)
|
if (service != null)
|
||||||
{
|
{
|
||||||
s_editorFactoryCache.put(serviceId, serviceReference);
|
s_editorFactoryCache.put(serviceId, serviceReference);
|
||||||
editor = service.getEditor(gridTab, gridField, tableEditor);
|
editor = service.getEditor(gridTab, gridField, tableEditor, editorConfiguration);
|
||||||
if (editor != null)
|
if (editor != null)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.util.Set;
|
||||||
import org.adempiere.webui.ValuePreference;
|
import org.adempiere.webui.ValuePreference;
|
||||||
import org.adempiere.webui.component.Listbox;
|
import org.adempiere.webui.component.Listbox;
|
||||||
import org.adempiere.webui.component.Textbox;
|
import org.adempiere.webui.component.Textbox;
|
||||||
|
import org.adempiere.webui.editor.IEditorConfiguration;
|
||||||
import org.adempiere.webui.editor.WEditor;
|
import org.adempiere.webui.editor.WEditor;
|
||||||
import org.adempiere.webui.editor.WEditorPopupMenu;
|
import org.adempiere.webui.editor.WEditorPopupMenu;
|
||||||
import org.adempiere.webui.event.ContextMenuEvent;
|
import org.adempiere.webui.event.ContextMenuEvent;
|
||||||
|
@ -52,22 +53,38 @@ public class WGridTabMultiSelectionEditor extends WEditor implements ContextMenu
|
||||||
|
|
||||||
private Object oldValue;
|
private Object oldValue;
|
||||||
|
|
||||||
private boolean tableEditor = false;
|
|
||||||
|
|
||||||
private GridTab listViewGridTab = null;
|
private GridTab listViewGridTab = null;
|
||||||
|
|
||||||
private String currentLinkValue = null;
|
private String currentLinkValue = null;
|
||||||
|
|
||||||
private boolean readWrite;
|
private boolean readWrite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WGridTabMultiSelectionEditor(GridField gridField) {
|
public WGridTabMultiSelectionEditor(GridField gridField) {
|
||||||
this(gridField, false);
|
this(gridField, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public WGridTabMultiSelectionEditor(GridField gridField, boolean tableEditor)
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
*/
|
||||||
|
public WGridTabMultiSelectionEditor(GridField gridField, boolean tableEditor) {
|
||||||
|
this(gridField, tableEditor, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WGridTabMultiSelectionEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(tableEditor ? new Textbox() : new GridTabSelectionListView(true, gridField.getWindowNo()), gridField);
|
super(tableEditor ? new Textbox() : new GridTabSelectionListView(true, gridField.getWindowNo()), gridField, tableEditor, editorConfiguration);
|
||||||
this.tableEditor = tableEditor;
|
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ package org.adempiere.webui.editor.grid.selection;
|
||||||
|
|
||||||
import org.adempiere.webui.ValuePreference;
|
import org.adempiere.webui.ValuePreference;
|
||||||
import org.adempiere.webui.component.Textbox;
|
import org.adempiere.webui.component.Textbox;
|
||||||
|
import org.adempiere.webui.editor.IEditorConfiguration;
|
||||||
import org.adempiere.webui.editor.WEditor;
|
import org.adempiere.webui.editor.WEditor;
|
||||||
import org.adempiere.webui.editor.WEditorPopupMenu;
|
import org.adempiere.webui.editor.WEditorPopupMenu;
|
||||||
import org.adempiere.webui.event.ContextMenuEvent;
|
import org.adempiere.webui.event.ContextMenuEvent;
|
||||||
|
@ -45,22 +46,38 @@ public class WGridTabSingleSelectionEditor extends WEditor implements ContextMen
|
||||||
|
|
||||||
private Object oldValue;
|
private Object oldValue;
|
||||||
|
|
||||||
private boolean tableEditor = false;
|
|
||||||
|
|
||||||
private GridTab listViewGridTab = null;
|
private GridTab listViewGridTab = null;
|
||||||
|
|
||||||
private String currentLinkValue = null;
|
private String currentLinkValue = null;
|
||||||
|
|
||||||
private boolean readWrite;
|
private boolean readWrite;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public WGridTabSingleSelectionEditor(GridField gridField) {
|
public WGridTabSingleSelectionEditor(GridField gridField) {
|
||||||
this(gridField, false);
|
this(gridField, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public WGridTabSingleSelectionEditor(GridField gridField, boolean tableEditor)
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
*/
|
||||||
|
public WGridTabSingleSelectionEditor(GridField gridField, boolean tableEditor) {
|
||||||
|
this(gridField, tableEditor, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public WGridTabSingleSelectionEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
super(tableEditor ? new Textbox() : new GridTabSelectionListView(false, gridField.getWindowNo()), gridField);
|
super(tableEditor ? new Textbox() : new GridTabSelectionListView(false, gridField.getWindowNo()), gridField, tableEditor, editorConfiguration);
|
||||||
this.tableEditor = tableEditor;
|
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.adempiere.webui.factory;
|
package org.adempiere.webui.factory;
|
||||||
|
|
||||||
|
import org.adempiere.webui.editor.IEditorConfiguration;
|
||||||
import org.adempiere.webui.editor.WAccountEditor;
|
import org.adempiere.webui.editor.WAccountEditor;
|
||||||
import org.adempiere.webui.editor.WAssignmentEditor;
|
import org.adempiere.webui.editor.WAssignmentEditor;
|
||||||
import org.adempiere.webui.editor.WBinaryEditor;
|
import org.adempiere.webui.editor.WBinaryEditor;
|
||||||
|
@ -34,6 +35,7 @@ import org.adempiere.webui.editor.WNumberEditor;
|
||||||
import org.adempiere.webui.editor.WPAttributeEditor;
|
import org.adempiere.webui.editor.WPAttributeEditor;
|
||||||
import org.adempiere.webui.editor.WPasswordEditor;
|
import org.adempiere.webui.editor.WPasswordEditor;
|
||||||
import org.adempiere.webui.editor.WPaymentEditor;
|
import org.adempiere.webui.editor.WPaymentEditor;
|
||||||
|
import org.adempiere.webui.editor.WRadioGroupEditor;
|
||||||
import org.adempiere.webui.editor.WSearchEditor;
|
import org.adempiere.webui.editor.WSearchEditor;
|
||||||
import org.adempiere.webui.editor.WStringEditor;
|
import org.adempiere.webui.editor.WStringEditor;
|
||||||
import org.adempiere.webui.editor.WTableDirEditor;
|
import org.adempiere.webui.editor.WTableDirEditor;
|
||||||
|
@ -57,6 +59,12 @@ public class DefaultEditorFactory implements IEditorFactory {
|
||||||
@Override
|
@Override
|
||||||
public WEditor getEditor(GridTab gridTab, GridField gridField,
|
public WEditor getEditor(GridTab gridTab, GridField gridField,
|
||||||
boolean tableEditor) {
|
boolean tableEditor) {
|
||||||
|
return getEditor(gridTab, gridField, tableEditor, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WEditor getEditor(GridTab gridTab, GridField gridField,
|
||||||
|
boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
if (gridField == null)
|
if (gridField == null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
@ -78,14 +86,14 @@ public class DefaultEditorFactory implements IEditorFactory {
|
||||||
{
|
{
|
||||||
if (gridField.isEncryptedField())
|
if (gridField.isEncryptedField())
|
||||||
{
|
{
|
||||||
editor = new WPasswordEditor(gridField, tableEditor);
|
editor = new WPasswordEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gridField.isHtml())
|
if (gridField.isHtml())
|
||||||
editor = new WHtmlEditor(gridField);
|
editor = new WHtmlEditor(gridField, tableEditor, editorConfiguration);
|
||||||
else
|
else
|
||||||
editor = new WStringEditor(gridField, tableEditor);
|
editor = new WStringEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
//enable html5 color input type
|
//enable html5 color input type
|
||||||
if (displayType == DisplayType.Color)
|
if (displayType == DisplayType.Color)
|
||||||
|
@ -94,23 +102,23 @@ public class DefaultEditorFactory implements IEditorFactory {
|
||||||
/** File */
|
/** File */
|
||||||
else if (displayType == DisplayType.FileName)
|
else if (displayType == DisplayType.FileName)
|
||||||
{
|
{
|
||||||
editor = new WFilenameEditor(gridField);
|
editor = new WFilenameEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
/** File Path */
|
/** File Path */
|
||||||
else if (displayType == DisplayType.FilePath)
|
else if (displayType == DisplayType.FilePath)
|
||||||
{
|
{
|
||||||
editor = new WFileDirectoryEditor(gridField);
|
editor = new WFileDirectoryEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
/** Number */
|
/** Number */
|
||||||
else if (DisplayType.isNumeric(displayType))
|
else if (DisplayType.isNumeric(displayType))
|
||||||
{
|
{
|
||||||
editor = new WNumberEditor(tableEditor, gridField);
|
editor = new WNumberEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** YesNo */
|
/** YesNo */
|
||||||
else if (displayType == DisplayType.YesNo)
|
else if (displayType == DisplayType.YesNo)
|
||||||
{
|
{
|
||||||
editor = new WYesNoEditor(gridField);
|
editor = new WYesNoEditor(gridField, tableEditor, editorConfiguration);
|
||||||
if (tableEditor)
|
if (tableEditor)
|
||||||
((WYesNoEditor)editor).getComponent().setLabel("");
|
((WYesNoEditor)editor).getComponent().setLabel("");
|
||||||
}
|
}
|
||||||
|
@ -119,113 +127,115 @@ public class DefaultEditorFactory implements IEditorFactory {
|
||||||
else if (displayType == DisplayType.Text || displayType == DisplayType.Memo || displayType == DisplayType.TextLong || displayType == DisplayType.ID)
|
else if (displayType == DisplayType.Text || displayType == DisplayType.Memo || displayType == DisplayType.TextLong || displayType == DisplayType.ID)
|
||||||
{
|
{
|
||||||
if (gridField.isHtml())
|
if (gridField.isHtml())
|
||||||
editor = new WHtmlEditor(gridField);
|
editor = new WHtmlEditor(gridField, tableEditor, editorConfiguration);
|
||||||
else
|
else
|
||||||
editor = new WStringEditor(gridField, tableEditor);
|
editor = new WStringEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Date */
|
/** Date */
|
||||||
else if (DisplayType.isDate(displayType))
|
else if (DisplayType.isDate(displayType))
|
||||||
{
|
{
|
||||||
if (displayType == DisplayType.Time)
|
if (displayType == DisplayType.Time)
|
||||||
editor = new WTimeEditor(gridField);
|
editor = new WTimeEditor(gridField, tableEditor, editorConfiguration);
|
||||||
else if (displayType == DisplayType.DateTime)
|
else if (displayType == DisplayType.DateTime)
|
||||||
editor = new WDatetimeEditor(gridField);
|
editor = new WDatetimeEditor(gridField, tableEditor, editorConfiguration);
|
||||||
else
|
else
|
||||||
editor = new WDateEditor(gridField);
|
editor = new WDateEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Chart */
|
/** Chart */
|
||||||
else if(displayType == DisplayType.Chart)
|
else if(displayType == DisplayType.Chart)
|
||||||
{
|
{
|
||||||
editor = new WChartEditor(gridField, (gridTab == null ? 0 : gridTab.getWindowNo()));
|
editor = new WChartEditor(gridField, (gridTab == null ? 0 : gridTab.getWindowNo()), tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Dashboard Content */
|
/** Dashboard Content */
|
||||||
else if(displayType == DisplayType.DashboardContent)
|
else if(displayType == DisplayType.DashboardContent)
|
||||||
{
|
{
|
||||||
editor = new WDashboardContentEditor(gridField, (gridTab == null ? 0 : gridTab.getWindowNo()));
|
editor = new WDashboardContentEditor(gridField, (gridTab == null ? 0 : gridTab.getWindowNo()), tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Button */
|
/** Button */
|
||||||
else if (displayType == DisplayType.Button)
|
else if (displayType == DisplayType.Button)
|
||||||
{
|
{
|
||||||
editor = new WButtonEditor(gridField);
|
editor = new WButtonEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Table Direct */
|
/** Table Direct */
|
||||||
else if (displayType == DisplayType.TableDir ||
|
else if (displayType == DisplayType.TableDir ||
|
||||||
displayType == DisplayType.Table || displayType == DisplayType.List)
|
displayType == DisplayType.Table || displayType == DisplayType.List)
|
||||||
{
|
{
|
||||||
editor = new WTableDirEditor(gridField);
|
editor = new WTableDirEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (displayType == DisplayType.Payment)
|
else if (displayType == DisplayType.Payment)
|
||||||
{
|
{
|
||||||
editor = new WPaymentEditor(gridField);
|
editor = new WPaymentEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (displayType == DisplayType.URL)
|
else if (displayType == DisplayType.URL)
|
||||||
{
|
{
|
||||||
editor = new WUrlEditor(gridField);
|
editor = new WUrlEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (displayType == DisplayType.Search)
|
else if (displayType == DisplayType.Search)
|
||||||
{
|
{
|
||||||
editor = new WSearchEditor(gridField);
|
editor = new WSearchEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (displayType == DisplayType.Location)
|
else if (displayType == DisplayType.Location)
|
||||||
{
|
{
|
||||||
editor = new WLocationEditor(gridField);
|
editor = new WLocationEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else if (displayType == DisplayType.Locator)
|
else if (displayType == DisplayType.Locator)
|
||||||
{
|
{
|
||||||
editor = new WLocatorEditor(gridField);
|
editor = new WLocatorEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else if (displayType == DisplayType.Account)
|
else if (displayType == DisplayType.Account)
|
||||||
{
|
{
|
||||||
editor = new WAccountEditor(gridField);
|
editor = new WAccountEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else if (displayType == DisplayType.Image)
|
else if (displayType == DisplayType.Image)
|
||||||
{
|
{
|
||||||
editor = new WImageEditor(gridField);
|
editor = new WImageEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else if (displayType == DisplayType.Binary)
|
else if (displayType == DisplayType.Binary)
|
||||||
{
|
{
|
||||||
editor = new WBinaryEditor(gridField);
|
editor = new WBinaryEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else if (displayType == DisplayType.PAttribute)
|
else if (displayType == DisplayType.PAttribute)
|
||||||
{
|
{
|
||||||
editor = new WPAttributeEditor(gridTab, gridField);
|
editor = new WPAttributeEditor(gridTab, gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else if (displayType == DisplayType.Assignment)
|
else if (displayType == DisplayType.Assignment)
|
||||||
{
|
{
|
||||||
editor = new WAssignmentEditor(gridField);
|
editor = new WAssignmentEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else if (displayType == DisplayType.SingleSelectionGrid)
|
else if (displayType == DisplayType.SingleSelectionGrid)
|
||||||
{
|
{
|
||||||
editor = new WGridTabSingleSelectionEditor(gridField, tableEditor);
|
editor = new WGridTabSingleSelectionEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else if (displayType == DisplayType.MultipleSelectionGrid)
|
else if (displayType == DisplayType.MultipleSelectionGrid)
|
||||||
{
|
{
|
||||||
editor = new WGridTabMultiSelectionEditor(gridField, tableEditor);
|
editor = new WGridTabMultiSelectionEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else if (displayType == DisplayType.ChosenMultipleSelectionList || displayType == DisplayType.ChosenMultipleSelectionTable)
|
else if (displayType == DisplayType.ChosenMultipleSelectionList || displayType == DisplayType.ChosenMultipleSelectionTable)
|
||||||
{
|
{
|
||||||
editor = new WChosenboxListEditor(gridField);
|
editor = new WChosenboxListEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else if (displayType == DisplayType.ChosenMultipleSelectionSearch)
|
else if (displayType == DisplayType.ChosenMultipleSelectionSearch)
|
||||||
{
|
{
|
||||||
editor = new WChosenboxSearchEditor(gridField);
|
editor = new WChosenboxSearchEditor(gridField, tableEditor, editorConfiguration);
|
||||||
|
}
|
||||||
|
else if (displayType == DisplayType.RadiogroupList)
|
||||||
|
{
|
||||||
|
editor = new WRadioGroupEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
editor = new WUnknownEditor(gridField);
|
editor = new WUnknownEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
editor.setTableEditor(tableEditor);
|
|
||||||
|
|
||||||
return editor;
|
return editor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.adempiere.webui.factory;
|
package org.adempiere.webui.factory;
|
||||||
|
|
||||||
|
import org.adempiere.webui.editor.IEditorConfiguration;
|
||||||
import org.adempiere.webui.editor.WEditor;
|
import org.adempiere.webui.editor.WEditor;
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
import org.compiere.model.GridTab;
|
import org.compiere.model.GridTab;
|
||||||
|
@ -28,7 +29,17 @@ public interface IEditorFactory {
|
||||||
* @param gridTab
|
* @param gridTab
|
||||||
* @param gridField
|
* @param gridField
|
||||||
* @param tableEditor
|
* @param tableEditor
|
||||||
* @return WEditor
|
* @return {@link WEditor}
|
||||||
*/
|
*/
|
||||||
public WEditor getEditor(GridTab gridTab, GridField gridField, boolean tableEditor);
|
public WEditor getEditor(GridTab gridTab, GridField gridField, boolean tableEditor);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridTab
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
* @return {@link WEditor}
|
||||||
|
*/
|
||||||
|
public WEditor getEditor(GridTab gridTab, GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ import org.adempiere.base.Core;
|
||||||
import org.adempiere.util.Callback;
|
import org.adempiere.util.Callback;
|
||||||
import org.adempiere.webui.adwindow.ADWindow;
|
import org.adempiere.webui.adwindow.ADWindow;
|
||||||
import org.adempiere.webui.component.Button;
|
import org.adempiere.webui.component.Button;
|
||||||
|
import org.adempiere.webui.editor.IEditorConfiguration;
|
||||||
import org.adempiere.webui.editor.WEditor;
|
import org.adempiere.webui.editor.WEditor;
|
||||||
import org.adempiere.webui.window.FDialog;
|
import org.adempiere.webui.window.FDialog;
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
|
@ -57,13 +58,45 @@ public class SchedulerStateEditor extends WEditor {
|
||||||
|
|
||||||
private int schedulerState;
|
private int schedulerState;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
*/
|
||||||
public SchedulerStateEditor(GridField gridField)
|
public SchedulerStateEditor(GridField gridField)
|
||||||
|
{
|
||||||
|
this(gridField, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public SchedulerStateEditor(GridField gridField, boolean tableEditor, IEditorConfiguration editorConfiguration)
|
||||||
{
|
{
|
||||||
this(gridField, -1);
|
this(gridField, -1, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SchedulerStateEditor(GridField gridField, int rowIndex) {
|
/**
|
||||||
super(new Button(), gridField, rowIndex);
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param rowIndex
|
||||||
|
*/
|
||||||
|
public SchedulerStateEditor(GridField gridField, int rowIndex)
|
||||||
|
{
|
||||||
|
this(gridField, rowIndex, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param gridField
|
||||||
|
* @param rowIndex
|
||||||
|
* @param tableEditor
|
||||||
|
* @param editorConfiguration
|
||||||
|
*/
|
||||||
|
public SchedulerStateEditor(GridField gridField, int rowIndex, boolean tableEditor, IEditorConfiguration editorConfiguration) {
|
||||||
|
super(new Button(), gridField, rowIndex, tableEditor, editorConfiguration);
|
||||||
Button btn = getComponent();
|
Button btn = getComponent();
|
||||||
|
|
||||||
btn.addEventListener(ON_START_SCHEDULER_EVENT, evt -> {
|
btn.addEventListener(ON_START_SCHEDULER_EVENT, evt -> {
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
package org.adempiere.webui.scheduler;
|
package org.adempiere.webui.scheduler;
|
||||||
|
|
||||||
|
import org.adempiere.webui.editor.IEditorConfiguration;
|
||||||
import org.adempiere.webui.editor.WEditor;
|
import org.adempiere.webui.editor.WEditor;
|
||||||
import org.adempiere.webui.factory.IEditorFactory;
|
import org.adempiere.webui.factory.IEditorFactory;
|
||||||
import org.compiere.model.GridField;
|
import org.compiere.model.GridField;
|
||||||
|
@ -49,8 +50,14 @@ public class SchedulerStateEditorFactory implements IEditorFactory {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WEditor getEditor(GridTab gridTab, GridField gridField, boolean tableEditor) {
|
public WEditor getEditor(GridTab gridTab, GridField gridField, boolean tableEditor) {
|
||||||
|
return getEditor(gridTab, gridField, tableEditor, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WEditor getEditor(GridTab gridTab, GridField gridField, boolean tableEditor,
|
||||||
|
IEditorConfiguration editorConfiguration) {
|
||||||
if (gridField != null && gridField.getDisplayType() == SCHEDULER_STATE_AD_REFERENCE_ID) {
|
if (gridField != null && gridField.getDisplayType() == SCHEDULER_STATE_AD_REFERENCE_ID) {
|
||||||
return new SchedulerStateEditor(gridField);
|
return new SchedulerStateEditor(gridField, tableEditor, editorConfiguration);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue