-
Notifications
You must be signed in to change notification settings - Fork 7
/
BBjGridExWidget.bbj
3129 lines (3070 loc) · 127 KB
/
BBjGridExWidget.bbj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
rem package BBjGridExWidget
rem /**
rem * This file is part of the BBjGridExWidget plugin.
rem * (c) Basis Europe <eu@basis.com>
rem *
rem * For the full copyright and license information, please view the LICENSE
rem * file that was distributed with this source code.
rem */
use java.util.Arrays
use java.util.ArrayList
use java.util.HashSet
use com.google.gson.Gson
use com.google.gson.JsonParser
use com.google.gson.JsonObject
use com.google.gson.JsonArray
use com.basiscomponents.db.ResultSet
use com.basiscomponents.db.DataRow
use ::BBjWidget/BBjWidget.bbj::BBjWidget
use ::BBjGridExWidget/BBjGridExWidgetSelectRowEvent.bbj::BBjGridExWidgetSelectRowEvent
use ::BBjGridExWidget/BBjGridExWidgetState.bbj::BBjGridExWidgetState
use ::BBjGridExWidget/BBjGridWidgetCellEditingEvent.bbj::BBjGridWidgetCellEditingEvent
use ::BBjGridExWidget/BBjGridWidgetRowEditingEvent.bbj::BBjGridWidgetRowEditingEvent
use ::BBjGridExWidget/BBjGridExWidgetLanguageManager.bbj::BBjGridExWidgetLanguageManager
use ::BBjGridExWidget/BBjGridExWidgetSidebar.bbj::BBjGridExWidgetSidebar
use ::BBjGridExWidget/BBjGridExWidgetSidebar.bbj::BBjGridExWidgetDefaultSidebar
use ::BBjGridExWidget/BBjGridExWidgetSidebar.bbj::BBjGridExWidgetFiltersToolpanel
use ::BBjGridExWidget/BBjGridExWidgetStatusBar.bbj::BBjGridExWidgetStatusBar
use ::BBjGridExWidget/BBjGridExWidgetContextMenu.bbj::BBjGridContextMenu
use ::BBjGridExWidget/BBjGridExWidgetContextMenu.bbj::BBjGridDefaultContextMenu
use ::BBjGridExWidget/BBjGridExWidgetExpressions.bbj::BBjGridExWidgetExpressionInterface
use ::BBjGridExWidget/BBjGridExWidgetExpressions.bbj::BBjGridExWidgetExpression
use ::BBjGridExWidget/BBjGridExWidgetColumns.bbj::BBjGridExWidgetDefaultColumnDefinition
use ::BBjGridExWidget/BBjGridExWidgetColumns.bbj::BBjGridExWidgetAutoGroupColumn
use ::BBjGridExWidget/BBjGridExWidgetColumns.bbj::BBjGridExWidgetColumn
use ::BBjGridExWidget/BBjGridExWidgetColumns.bbj::BBjGridExWidgetDefaultColumnGroup
use ::BBjGridExWidget/BBjGridExWidgetColumns.bbj::BBjGridExWidgetColumnGroup
use ::BBjGridExWidget/BBjGridExWidgetColumns.bbj::BBjGridExWidgetColumnsManagerInterface
use ::BBjGridExWidget/BBjGridExWidgetColumns.bbj::BBjGridExWidgetColumnsManager
use ::BBjGridExWidget/BBjGridExWidgetRenderers.bbj::BBjGridExWidgetRendererImageRenderer
use ::BBjGridExWidget/BBjGridExWidgetClientJsonFactory.bbj::BBjGridExWidgetClientJsonFactory
use ::BBjGridExWidget/BBjGridExWidgetClientModels.bbj::BBjGridExWidgetClientRowModel
use ::BBjGridExWidget/BBjGridExWidgetClientEvents.bbj::BBjGridExWidgetClientEventsRowSelection
use ::BBjGridExWidget/BBjGridExWidgetClientEvents.bbj::BBjGridExWidgetClientEventsContextMenu
use ::BBjGridExWidget/BBjGridExWidgetClientEvents.bbj::BBjGridExWidgetClientEventsCell
use ::BBjGridExWidget/BBjGridExWidgetClientEvents.bbj::BBjGridExWidgetClientEventsRowEditing
rem /**
rem * The Grid Core Class.This class works as a columns manager and api provider.
rem * It contains a big number of methods and properties to configure the column from A..Z.
rem * Every property and method has one or more tag attached.
rem *
rem * The following is the meanging for each tag :<br><br>
rem *
rem *
rem * <table border="1" cellpadding="10">
rem * <tbody>
rem * <tr>
rem * <td><strong> Enterprise</strong></td>
rem * <td>The property/method is used only with the enterprise version· using it without having a valid license will<br />be ignored·</td>
rem * </tr>
rem * <tr>
rem * <td> <strong>Configuration</strong></td>
rem * <td>Properties and methods which are tagged with this tag are used to configure the grid before it is rendered on the client·<br />Changing these properties or calling these methods won't affect the grid which is displayed on the client·<br />In order to reflect your changes on the client, you need to rerender the whole grid <br />or rerender the column definition once again·</td>
rem * </tr>
rem * <tr>
rem * <td> <strong>API</strong></td>
rem * <td>Methods/properties tagged with this tag can be called before or after the grid is rendered on the client and they don't require a refresh·</td>
rem * </tr>
rem * <tr>
rem * <td><strong> ColumnsRerender</strong></td>
rem * <td>Changing this property or calling this method after the first render require columns rerender using <i>updateColumns()</i> method</td>
rem * </tr>
rem * <tr>
rem * <td><strong> GridRerender</strong></td>
rem * <td>Changing this property or calling this method after the first render require full rerender using <i>render()</i> method</td>
rem * </tr>
rem * </tbody>
rem * </table>
rem *
rem * @author Stephan Wald
rem * @author Hyyan Abo Fakher
rem */
class public BBjGridExWidget extends BBjWidget implements BBjGridExWidgetColumnsManagerInterface
rem /**
rem * Unique auto generate id for the grid instance· This id is used in the client to distinguish instances
rem */
field public BBjString GRIDID$ = java.util.UUID.randomUUID().toString()
rem /**
rem * The Grid enterprise key
rem */
field public static BBjString LicenseKey$
rem /**
rem * Contains column properties all columns will inherit·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjGridExWidgetDefaultColumnDefinition DefaultColumnDefinition! = new BBjGridExWidgetDefaultColumnDefinition()
rem /**
rem * Contains column group properties all column groups will inherit·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjGridExWidgetDefaultColumnGroup DefaultColumnGroupDefinition! = new BBjGridExWidgetDefaultColumnGroup()
rem /**
rem * Suppresses auto-sizing columns for columns· In other words, double clicking a columns headers edge will not auto-size·Default is false
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressAutoSize! = null()
rem /**
rem * How many pixels to add to a column width after the auto-sizing calculation· The default is 4 pixels· Set this if you want to add extra room to accommodate (for example) sort icons, or some other dynamic nature of the header·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber AutoSizePadding! = null()
rem /**
rem * If true, the ag-column-moving class is not added to the grid while columns are moving· In the default themes, this transpires to no animation for moving columns·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressColumnMoveAnimation! = null()
rem /**
rem * Set to true to suppress column moving· In other words, set to true to make the columns fixed position·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressMovableColumns! = null()
rem /**
rem * Set to true to show the 'no sort' icon·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber UnSortIcon! = null()
rem /**
rem * Set to true to suppress multi-sort when the user shift-clicks a column header·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressMultiSort! = null()
rem /**
rem * Set to true to always show the column menu button, rather than only showing when the mouse is over the column header·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressMenuHide! = null()
rem /**
rem * Allows specifying the group 'auto column' if you are not happy with the default·
rem * If grouping, this column def is included as the first column definition in the grid·
rem * If not grouping, this column is not included·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjGridExWidgetAutoGroupColumn AutoGroupColumnDefinition! = new BBjGridExWidgetAutoGroupColumn()
rem /**
rem * Set to true to suppress column events being raised when state is changed throw the API methods
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressSetColumnStateEvents! = null()
rem /**
rem * Set to true to specify that the sort should take into account accented characters, if this feature is turned on the sort will perform slower·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber AccentedSort! = null()
rem /**
rem * Set to true to suppress sorting of un-sorted data to match original row data
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressMaintainUnsortedOrder! = null()
rem /**
rem * Allow selection of multiple cells or rows· When true enable multiselection , disable otherwise
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber MultipleSelection! = 0
rem /**
rem * Set to true to allow multiple rows to be selected with a single click·
rem *
rem * E·g· if you click select one row, then click select another row, the first row will keep it's selection·
rem * Clicking a selected row in this mode will deselect the row·
rem * This is useful for touch devices where ctrl and shift clicking is
rem * not an option·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem * <br>
rem * <b>Note</b> that Despite the setting name , it works when MultipleSelection is enabled or disabled
rem */
field public BBjNumber RowMultiSelectWithClick! = 0
rem /**
rem * Set to true or false· If true, then rows will be deselected if you
rem * hold down ctrl + click the row· Normal behaviour with the grid disallows
rem * deselection of nodes (ie once a row is selected, it remains selected until
rem * another row is selected in its place)·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber RowDeselection! = 0
rem /**
rem * If true, rows won't be selected when clicked· Use, for example,
rem * when you want checkbox selection, and don't want to also select when the row
rem * is clicked·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressRowClickSelection! = 0
rem /**
rem * Set to true to enable Single Click Editing for cells, to start editing with a single click·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SingleClickEdit! = null()
rem /**
rem * Set to true so that neither single or double click starts editing·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressClickEdit! = null()
rem /**
rem * Set to 'fullRow' to enable Full Row Editing· Otherwise leave blank to edit one cell at a time·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem *
rem * @see GRID_EDITTYPE_ROW()
rem * @see GRID_EDITTYPE_CELL()
rem */
field public BBjString EditType! = #GRID_EDITTYPE_CELL()
rem /**
rem * Set this to true to stop cell editing when grid loses focus· The default is the grid stays editing until focus goes onto another cell· For inline (non-popup) editors only·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber StopEditingWhenGridLosesFocus! = null()
rem /**
rem * Set to true to have Enter key move focus to the cell below if not editing· The default is Enter key starts editing the currently focused cell·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber EnterMovesDown! = null()
rem /**
rem * Set to true to have Enter key move focus to the cell below after Enter is pressed while editing· The default is editing will stop and focus will remain on the editing cell·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber EnterMovesDownAfterEdit! = null()
rem /**
rem * The height for the row containing the column label header· If not specified the default is 25px·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber HeaderHeight! = null()
rem /**
rem * The height for the rows containing header column groups· If not specified, it uses headerHeight
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupHeaderHeight! = null()
rem /**
rem * The height for the row containing the floating filters· If not specified the default is 20px·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber FloatingFiltersHeight! = null()
rem /**
rem * The height for the row containing the columns when in pivot mode· If not specified, it uses headerHeight·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber PivotHeaderHeight! = null()
rem /**
rem * The height for the row containing header column groups when in pivot mode· If not specified, it uses groupHeaderHeight
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber PivotGroupHeaderHeight! = null()
rem /**
rem * If grouping, set to true or false (default is false)·
rem * If true, a group row will span all columns across the entire width of the table·
rem * If false, the cells will be rendered as normal and you will have the opportunity to include
rem * a grouping column (normally the first on the left) to show the group
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupUseEntireRow! = null()
rem /**
rem * If grouping, set to the number of levels to expand by default· Eg 0 for none, 1 first level only, etc· Default is 0 (expand none)· Set to -1 for expand everything
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupDefaultExpanded! = null()
rem /**
rem * If true, the grid will not swap in the grouping column when grouping is enabled·
rem * Use this if you want complete control on the column displayed and don't want the grids help·
rem * In other words, you already have a column in your column definitions that is responsible for displaying the groups
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupSuppressAutoColumn! = null()
rem /**
rem * If using auto column, set to true to have each group in its own column separate column, eg if group by Country then Year, two auto columns will be created, one for country and one for year
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupMultiAutoColumn! = null()
rem /**
rem * If true, the group row won't be displayed and the groups will be expanded by default with no ability to expand / contract the groups· Useful when you want to just 'group' the rows, but not add parent group row to each group
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupSuppressRow! = null()
rem /**
rem * When true, selecting a group will have the impact of selecting all its children
rem * When false, then the group is selectable independently of the child nodes·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem * <br>
rem * <b>Note</b>That this settings has no effect if MultipleSelection is disabled
rem */
field public BBjNumber GroupSelectsChildren! = null()
rem /**
rem * If grouping, whether to show a group footer when the group is expanded·
rem * If true, then by default, the footer will contain aggregate data (if any)
rem * when shown and the header will be blank·
rem * When closed, the header will contain the aggregate data regardless
rem * of this setting (as footer is hidden anyway)·
rem * This is handy for 'total' rows, that are displayed below the data when
rem * the group is open, and alongside the group when it is closed
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupIncludeFooter! = null()
rem /**
rem * Set to true to show a 'grand' total group footer across all groups·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupIncludeTotalFooter! = null()
rem /**
rem * If true, and showing footer, aggregate data will be displayed at both the header and footer levels always·
rem * This stops the possibly undesirable behaviour of the header details 'jumping' to the footer on expand·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupSuppressBlankHeader! = null()
rem /**
rem * If using groupSelectsChildren, then only the children that pass the current filter will get selected
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupSelectsFiltered! = null()
rem /**
rem * Set to true to collapse groups that only have one child·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupRemoveSingleChildren! = null()
rem /**
rem * Set to true to collapse lowest level groups that only have one child·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupRemoveLowestSingleChildren! = null()
rem /**
rem * Set to true to hide parents that are open· When used with multiple columns for showing groups, it can give more pleasing user experience
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber GroupHideOpenParents! = null()
rem /**
rem * When to show the 'row group panel' (where you drag rows to group) at the top· Default is never· Set to either 'always' or 'onlyWhenGrouping'
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem *
rem * @see GRID_GROUPPANEL_SHOW_HIDDEN()
rem * @see GRID_GROUPPANEL_SHOW_VISIBLE()
rem * @see GRID_GROUPPANEL_SHOW_ONGROUPING()
rem */
field public BBjString RowGroupPanelShow! = #GRID_GROUPPANEL_SHOW_ONGROUPING()
rem /**
rem * Set to true to enable pivot mode
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#API</small></b>
rem */
field public BBjNumber PivotMode! = null()
rem /**
rem * When to show the 'pivot panel' (where you drag rows to pivot) at the top·
rem * Default is never· Set to either 'always' or 'onlyWhenPivoting'·
rem * Note that the pivot panel will never show if pivotMode is off·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem *
rem * @see GRID_GROUPPANEL_SHOW_HIDDEN()
rem * @see GRID_GROUPPANEL_SHOW_VISIBLE()
rem * @see GRID_GROUPPANEL_SHOW_ONGROUPING()
rem */
field public BBjNumber PivotPanelShow! = null()
rem /**
rem * When true, if you set new data into the grid and have groups open, the grid will keep groups open if they exist in the new dataset
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber RememberGroupStateWhenNewData! = null()
rem /**
rem * When true, column headers won't include the aggFunc, eg 'sum(Bank Balance)' will just be 'Bank Balance'·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressAggFuncInHeader! = null()
rem /**
rem * When true, the aggregations won't be computed for root node of the grid
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressAggAtRootLevel! = null()
rem /**
rem * If true, then row group, pivot and value aggregation will be read only from the UI·
rem * The grid will display what values are used for each, but will not allow the use to change the selection
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#API</small></b>
rem */
field public BBjNumber FunctionsReadOnly! = null()
rem /**
rem * By default when a column is un-grouped, it is made visible·
rem * This property stops the column becoming visible again when un-grouping·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressMakeVisibleAfterUnGroup! = null()
rem /**
rem * Set to true to always show the vertical scrollbar·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber AlwaysShowVerticalScroll! = null()
rem /**
rem * When true, the grid will not scroll to the top when new row data is provided·
rem * Use this if you don't want the default behaviour of scrolling to the top every time you load new data·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressScrollOnNewData! = null()
rem /**
rem * When true, the grid will not use animation frames when drawing rows while scrolling·
rem * Use this if the grid is working fast enough that you don't need animations frame and you don't want the grid to flicker·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressAnimationFrame! = null()
rem /**
rem * Icons to use inside the grid instead of the grid's default icons·
rem *
rem * The icons can either be set on the grid options (all icons) or on the column definition (all except group)·
rem * If defined in both the grid options and column definitions, the column definition will get used·
rem * This allows you to specify defaults in the grid options to fall back on, and then provide individual icons for
rem * specific columns· This is handy if, for example, you want to include 'A··Z' as string sort icons
rem * and just the simple arrow for other columns·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>.
rem * <br>
rem * The icons are set as follows:
rem * <pre>
rem * <code>
rem * // column header items
rem * menu
rem * filter
rem * columns
rem * sortAscending
rem * sortDescending
rem * sortUnSort
rem *
rem * // expand / contract row group
rem * groupExpanded
rem * groupContracted
rem *
rem * // expand / contract column group
rem * columnGroupOpened
rem * columnGroupClosed
rem *
rem * // tool panel column group open / close
rem * columnSelectOpen
rem * columnSelectClosed
rem *
rem * // row checkbox selection and tool panel column selection
rem * checkboxChecked
rem * checkboxUnchecked
rem * checkboxIndeterminate
rem *
rem * // tool panel column selection, when read only (ie disabled checkboxes)
rem * checkboxCheckedReadOnly
rem * checkboxUncheckedReadOnly
rem * checkboxIndeterminateReadOnly
rem *
rem * // when moving columns
rem * columnMovePin // when column is to the left, before it gets pinned
rem * columnMoveAdd // when adding a column
rem * columnMoveHide // when removing a column
rem * columnMoveMove // when moving a column
rem * columnMoveLeft // when moving and scrolling left
rem * columnMoveRight // when moving and scrolling right
rem * columnMoveGroup // when about to drop into group panel
rem * columnMoveValue // when about to drop into value panel
rem * columnMovePivot // when about to drop into pivot panel
rem * dropNotAllowed // when trying to drop column into group/value/pivot panel and column doesn't support it
rem *
rem * // menu
rem * menuPin // beside the column pin menu item
rem * menuValue // beside the column value menu item
rem * menuAddRowGroup // beside the column row group menu item
rem * menuRemoveRowGroup // beside the column row group menu item
rem * clipboardCopy // beside the copy to clipboard menu item
rem * clipboardPaste // beside the paste from clipboard menu item
rem *
rem * // column drop panels
rem * rowGroupPanel // beside where to drop columns for row group
rem * pivotPanel // beside where to drop columns for pivot
rem * valuePanel // beside where to drop columns for value
rem * </code>
rem * </pre>
rem */
field public JsonObject Icons! = new JsonObject()
rem /**
rem * Default Row Height in pixels· Default is 25 pixels·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#API</small></b>
rem */
field public BBjNumber RowHeight! = null()
rem /**
rem * Set to true to enable Row Animation·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber AnimateRows! = null()
rem /**
rem * Property to set style for all rows· Set to an object of key (style names) and values (style values)
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public JsonObject RowStyle! = new JsonObject()
rem /**
rem * Property to set CSS class for all rows
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public ArrayList RowClass! = new ArrayList()
rem /**
rem * Rules which can be applied to include certain CSS classes for rows·
rem *
rem * These rules are provided as a JavaScript map where the keys are class names and the values are expressions that
rem * if evaluated to true, the class gets used· The expression is a string which is treated as a shorthand for a
rem * function by the grid.<br><b><small>#Configuration</small></b><br><b><small>#GridRerender</small></b>.
rem *
rem * The expression has the following attributes available: <br>
rem *
rem * <table border="1" cellpadding="10">
rem * <tbody>
rem * <tr>
rem * <td><strong> rowIndex</strong></td>
rem * <td> Maps the current row index</td>
rem * </tr>
rem * <tr>
rem * <td> <strong>data</strong></td>
rem * <td> Mapped from the DataRow</td>
rem * </tr>
rem * <tr>
rem * <td> <strong>ctx</strong></td>
rem * <td> The grid client context</td>
rem * </tr>
rem * </tbody>
rem * </table>
rem */
field public JsonObject RowClassRules! = new JsonObject()
rem /**
rem * Set to true to not highlight rows by adding the ag-row-hover CSS class·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressRowHoverHighlight! = null()
rem /**
rem * If true, then middle clicks will result in 'click' events for cell and row· Otherwise the browser will use middle click to scroll the grid·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressMiddleClickScrolls! = null()
rem /**
rem * Set to true to use the browser's default tooltip instead of using Ag-Grid's Tooltip Component·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber EnableBrowserTooltips! = null()
rem /**
rem * If true, when you drag a column out of the grid (eg to the group zone) the column is not hidden·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressDragLeaveHidesColumns! = null()
rem /**
rem * Set to true to operate grid in RTL (Right to Left) mode·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber EnableRtl! = null()
rem /**
rem * Set to true to not show context menu· Use if you don't want to use the default 'right click' context menu·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressContextMenu! = null()
rem /**
rem * Disables touch support (but does not remove the browsers efforts to simulate mouse events on touch)·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressTouch! = null()
rem /**
rem * When true enables the floating filters , disable otherwise
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber EnableFloatingFilter! = 0
rem /**
rem * When true, A selection box will be shown on the first column
rem * When false, no checkbox will be displayed·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem * <br>
rem * <b>Note</b> The first column can override this settings when it sets the <i>CheckboxSelection</i> to true
rem */
field public BBjNumber ShowSelectionCheckbox! = 0
rem /**
rem * When true, selection box will be show on the first column's header
rem * When false, no checkbox will be displayed·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem * <br>
rem * <b>Note</b> The first column can override this settings when it sets the <i>tHeaderCheckboxSelection</i> to true
rem * <b>Note</b> This option will ignore multi row selection option by default so it is always enabled
rem */
field public BBjNumber ShowHeaderSelectionCheckbox! = 0
rem /**
rem * Defines how users can move between rows using arrow keys·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem *
rem * @see GRID_NAVIGATION_BEHAVIOUR_NEXT_ROW()
rem * @see GRID_NAVIGATION_BEHAVIOUR_NEXT_CELL()
rem */
field public BBjString NavigationBehavior! = #GRID_NAVIGATION_BEHAVIOUR_NEXT_ROW()
rem /**
rem * The grid context menu
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjGridContextMenu ContextMenu! = new BBjGridDefaultContextMenu()
rem /**
rem * The resultset instance
rem */
field public ResultSet RS! = new ResultSet()
rem /**
rem * The unique string to use as row inedx· defualt is __ROW_INDEX
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjString RowNodeId$ = "__ROW_INDEX"
rem /**
rem * When true enable debug mode , disable otherwise
rem */
field public static BBjNumber Debug = 0
rem /**
rem * When true , the grid will render the UI on the client as soon as possible , put it in the loading state
rem * then send the data· once the data is sent and rendered , the grid will remove the loading state automatically·
rem *
rem * Use this mode if you have a large set of data(rows) which sending them to the client will take some time·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem *
rem * @deprecated You can control overlays using the api methods· @see Demo/ChunkRenderingDemo·bbj
rem */
field public BBjNumber ChunkRendering! = 0
rem /**
rem * By default when new columns are loaded into the grid, the following properties
rem * (Order,Aggregation Function , Width , Pivot , Row Group , Pinned ) are not used
rem *
rem * To change this behaviour and have column attributes above take effect each time the grid updates the columns,
rem * then set this option to true
rem *
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber DeltaColumnMode! = 0
rem /**
rem * When true the grid will render automatically when event processing starts, when false then the <i>render()</i> method
rem * or <i>setData(ResultSet , 1)</i> must be called·
rem *
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem * <br><b><small>#Experimental</small></b>
rem */
field public BBjNumber BlockRenderToReady! = 1
rem /**
rem * Disables the 'loading' overlay·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressLoadingOverlay! = null()
rem /**
rem * Disables the 'no rows' overlay·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber SuppressNoRowsOverlay! = null()
rem /**
rem * Provide a template for 'loading' overlay if not happy with the default one·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjString OverlayLoadingTemplate! = null()
rem /**
rem * Provide a template for 'no rows' overlay if not happy with the provided·
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjString OverlayNoRowsTemplate! = null()
rem /**
rem * Enable / Disable Tree Data mode
rem * <br><b><small>#Enterprise</small></b>
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjNumber TreeData! = null()
rem /**
rem * A string template which will be complied on the client to return an array
rem * for the tree hierarchy.
rem *
rem * <br><b><small>#Enterprise</small></b>
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#GridRerender</small></b>
rem */
field public BBjString DataPathTemplate! = null()
rem /**
rem * Set the grid theme
rem *
rem * <br><b><small>#Configuration</small></b>
rem * <br><b><small>#API</small></b>
rem */
field public BBjString Theme! = "balham"
rem /**
rem * The grid languages manager
rem */
field protected BBjGridExWidgetLanguageManager LanguageManager! = new BBjGridExWidgetLanguageManager()
rem /**
rem * The grid sidebar
rem */
field protected BBjGridExWidgetSidebar Sidebar! = new BBjGridExWidgetDefaultSidebar(#this!)
rem /**
rem * The grid statusbar
rem */
field protected BBjGridExWidgetStatusBar Statusbar! = new BBjGridExWidgetStatusBar(#this!)
rem /**
rem * Instnace of BBjGridExWidgetClientJsonFactory to convert client JSON strings to Client Models
rem */
field protected BBjGridExWidgetClientJsonFactory ClientJsonFactory! = new BBjGridExWidgetClientJsonFactory(#this!)
rem /**
rem * Columns Manager instance
rem */
field protected BBjGridExWidgetColumnsManager ColumnsManager! = new BBjGridExWidgetColumnsManager()
rem /**
rem * A json object which is used as context to configure the grid and it various components on the client
rem */
field protected JsonObject ClientContext! = new JsonObject()
rem /**
rem * The vector holds the registered events
rem */
field protected HashSet Interests! = new HashSet()
rem /**
rem * The client's HTML template to use in order to build the grid·
rem */
field protected BBjString Template$ = ""
field protected BBjHtmlView HTMLView!
field protected Boolean IsReady! = BBjAPI.FALSE
field protected BBjVector backlog! = new BBjVector()
field protected BBjString URL$
field protected BBjNumber newW!
field protected BBjNumber newH!
rem /**
rem * Constant value to define row selection event
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_ROW_CLICK()
methodret BBjAPI.ON_GRID_SELECT_ROW
methodend
rem /**
rem * Alias to <i>ON_GRID_ROW_CLICK()</i>
rem *
rem * @see ON_GRID_ROW_CLICK()
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_SELECT_ROW()
methodret #ON_GRID_ROW_CLICK()
methodend
rem /**
rem * Constant value to define row double click event
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_ROW_DOUBLE_CLICK()
methodret BBjAPI.ON_GRID_DOUBLE_CLICK
methodend
rem /**
rem * Alias to <i>ON_GRID_ROW_DOUBLE_CLICK()</i>
rem *
rem * @see ON_GRID_ROW_DOUBLE_CLICK()
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_DOUBLE_CLICK()
methodret #ON_GRID_ROW_DOUBLE_CLICK()
methodend
rem /**
rem * Constant value to define cell click event
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_CELL_CLICK()
methodret 5001
methodend
rem /**
rem * Constant value to define cell double click event
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_CELL_DOUBLE_CLICK()
methodret 5002
methodend
rem /**
rem * Constant value to define cell editing start event
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_CELL_EDITING_STARTED()
methodret 5003
methodend
rem /**
rem * Constant value to define cell editing stop event
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_CELL_EDITING_STOPPED()
methodret 5004
methodend
rem /**
rem * Constant value to define cell value changed event
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_CELL_VALUE_CHANGED()
methodret 5005
methodend
rem /**
rem * Constant value to define row editing start event
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_ROW_EDITING_STARTED()
methodret 5006
methodend
rem /**
rem * Constant value to define row editing stop event
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_ROW_EDITING_STOPPED()
methodret 5007
methodend
rem /**
rem * Constant value to define grid state changes
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_STATE_CHANGE()
methodret 5008
methodend
rem /**
rem * Alias for <i>ON_GRID_STATE_CHANGE()</i>
rem *
rem * @see ON_GRID_STATE_CHANGE()
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber ON_GRID_COLUMN_STATE_CHANGE()
methodret #ON_GRID_STATE_CHANGE()
methodend
rem /**
rem * Constant value to define left aligned column
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber GRID_ALIGN_LEFT()
methodret BBjGrid.GRID_ALIGN_LEFT
methodend
rem /**
rem * Constant value to define right aligned column
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber GRID_ALIGN_RIGHT()
methodret BBjGrid.GRID_ALIGN_RIGHT
methodend
rem /**
rem * Constant value to define centered column
rem *
rem * @return BBjNumber
rem */
method public static BBjNumber GRID_ALIGN_CENTER()
methodret BBjGrid.GRID_ALIGN_CENTER
methodend
rem /**
rem * Constant value to define row position
rem *
rem * @return BBjString
rem */
method public static BBjString GRID_ROWPOS_TOP()
methodret "top"
methodend
rem /**
rem * Constant value to define row position
rem *
rem * @return BBjString
rem */
method public static BBjString GRID_ROWPOS_MIDDLE()
methodret "middle"
methodend
rem /**
rem * Constant value to define row position
rem *
rem * @return BBjString
rem */
method public static BBjString GRID_ROWPOS_BOTTOM()
methodret "bottom"
methodend
rem /**
rem * Constant value to define editing mode "row"
rem *
rem * @return BBjString
rem */
method public static BBjString GRID_EDITTYPE_ROW()
methodret "fullRow"
methodend
rem /**
rem * Constant value to define editing mode "cell"
rem *
rem * @return BBjString
rem */
method public static BBjString GRID_EDITTYPE_CELL()
methodret ""
methodend
rem /**
rem * Constant value to define enter key behavior (Move to next cell)
rem *
rem * @return BBjString
rem */
method public static BBjString GRID_ENTER_NEXT_CELL()
methodret "next"
methodend
rem /**
rem * Constant value to define navigation behavior (Move to next cell)
rem *
rem * @return BBjString
rem */
method public static BBjString GRID_NAVIGATION_BEHAVIOUR_NEXT_CELL()
methodret "navigate_next_cell"
methodend
rem /**
rem * Constant value to define navigation behavior (Move to next row)
rem *
rem * @return BBjString
rem */
method public static BBjString GRID_NAVIGATION_BEHAVIOUR_NEXT_ROW()
methodret "navigate_next_row"
methodend
rem /**
rem * Constant value to define enter key behavior (Stop editing)
rem *
rem * @return BBjString
rem */
method public static BBjString GRID_ENTER_STOP_EDITING()
methodret "stop"
methodend
rem /**
rem * Constant value which defines that group panel must always be shown
rem *
rem * @return BBjString
rem */
method public static BBjString GRID_GROUPPANEL_SHOW_VISIBLE()
methodret "always"
methodend
rem /**
rem * Constant value which defines that group panel must be shown only when grouping
rem *