-
Notifications
You must be signed in to change notification settings - Fork 71
Expand file tree
/
Copy pathPluginUtils.java
More file actions
4580 lines (4188 loc) · 222 KB
/
PluginUtils.java
File metadata and controls
4580 lines (4188 loc) · 222 KB
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
package com.pdftron.pdftronflutter.helpers;
import android.content.ContentResolver;
import android.content.Context;
import android.graphics.Color;
import android.net.Uri;
import android.util.Base64;
import android.util.Log;
import android.util.SparseArray;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.pdftron.common.PDFNetException;
import com.pdftron.fdf.FDFDoc;
import com.pdftron.pdf.Annot;
import com.pdftron.pdf.Field;
import com.pdftron.pdf.PDFDoc;
import com.pdftron.pdf.PDFViewCtrl;
import com.pdftron.pdf.Page;
import com.pdftron.pdf.Rect;
import com.pdftron.pdf.ViewChangeCollection;
import com.pdftron.pdf.annots.Markup;
import com.pdftron.pdf.config.PDFViewCtrlConfig;
import com.pdftron.pdf.config.ToolConfig;
import com.pdftron.pdf.config.ToolManagerBuilder;
import com.pdftron.pdf.config.ViewerConfig;
import com.pdftron.pdf.controls.PdfViewCtrlTabFragment2;
import com.pdftron.pdf.controls.PdfViewCtrlTabHostFragment2;
import com.pdftron.pdf.controls.ReflowControl;
import com.pdftron.pdf.controls.ThumbnailsViewFragment;
import com.pdftron.pdf.controls.UserCropSelectionDialogFragment;
import com.pdftron.pdf.dialog.RotateDialogFragment;
import com.pdftron.pdf.dialog.ViewModePickerDialogFragment;
import com.pdftron.pdf.dialog.pdflayer.PdfLayerDialog;
import com.pdftron.pdf.dialog.signature.SignatureDialogFragment;
import com.pdftron.pdf.model.AnnotStyle;
import com.pdftron.pdf.tools.AdvancedShapeCreate;
import com.pdftron.pdf.tools.AnnotEditRectGroup;
import com.pdftron.pdf.tools.Eraser;
import com.pdftron.pdf.tools.FreehandCreate;
import com.pdftron.pdf.tools.QuickMenuItem;
import com.pdftron.pdf.tools.Tool;
import com.pdftron.pdf.tools.ToolManager;
import com.pdftron.pdf.tools.AnnotManager;
import com.pdftron.pdf.utils.AnalyticsHandlerAdapter;
import com.pdftron.pdf.utils.AnnotUtils;
import com.pdftron.pdf.utils.BookmarkManager;
import com.pdftron.pdf.utils.DialogGoToPage;
import com.pdftron.pdf.utils.CommonToast;
import com.pdftron.pdf.utils.PdfViewCtrlSettingsManager;
import com.pdftron.pdf.utils.StampManager;
import com.pdftron.pdf.utils.Utils;
import com.pdftron.pdf.utils.ViewerUtils;
import com.pdftron.pdf.widget.bottombar.builder.BottomBarBuilder;
import com.pdftron.pdf.widget.toolbar.builder.AnnotationToolbarBuilder;
import com.pdftron.pdf.widget.toolbar.builder.ToolbarButtonType;
import com.pdftron.pdf.widget.toolbar.component.DefaultToolbars;
import com.pdftron.pdftronflutter.R;
import com.pdftron.pdf.PDFDraw;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import io.flutter.plugin.common.EventChannel;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
public class PluginUtils {
public static final String KEY_LICENSE_KEY = "licenseKey";
public static final String KEY_DOCUMENT = "document";
public static final String KEY_PASSWORD = "password";
public static final String KEY_CONFIG = "config";
public static final String KEY_XFDF_COMMAND = "xfdfCommand";
public static final String KEY_XFDF = "xfdf";
public static final String KEY_BOOKMARK_JSON = "bookmarkJson";
public static final String KEY_PAGE_NUMBER = "pageNumber";
public static final String KEY_TOOL_MODE = "toolMode";
public static final String KEY_FIELD_NAMES = "fieldNames";
public static final String KEY_FLAG = "flag";
public static final String KEY_FLAG_VALUE = "flagValue";
public static final String KEY_FIELDS = "fields";
public static final String KEY_ANNOTATION_LIST = "annotations";
public static final String KEY_ANNOTATION = "annotation";
public static final String KEY_FORMS_ONLY = "formsOnly";
public static final String KEY_ANNOTATIONS_WITH_FLAGS = "annotationsWithFlags";
public static final String KEY_ANNOTATION_PROPERTIES = "annotationProperties";
public static final String KEY_LEADING_NAV_BUTTON_ICON = "leadingNavButtonIcon";
public static final String KEY_DPI = "dpi";
public static final String KEY_EXPORT_FORMAT = "exportFormat";
public static final String KEY_EXPORT_FORMAT_BMP = "BMP";
public static final String KEY_EXPORT_FORMAT_JPEG = "JPEG";
public static final String KEY_EXPORT_FORMAT_PNG = "PNG";
public static final String KEY_ZOOM_LIMIT_MODE = "zoomLimitMode";
public static final String KEY_MAXIMUM = "maximum";
public static final String KEY_MINIMUM = "minimum";
public static final String KEY_ZOOM_LIMIT_MODE_NONE = "none";
public static final String KEY_ZOOM_LIMIT_MODE_ABSOLUTE = "absolute";
public static final String KEY_ZOOM_LIMIT_MODE_RELATIVE = "relative";
public static final String KEY_RED = "red";
public static final String KEY_GREEN = "green";
public static final String KEY_BLUE = "blue";
public static final String KEY_ANIMATED = "animated";
public static final String KEY_REQUESTED_ORIENTATION = "requestedOrientation";
public static final String KEY_CONFIG_DISABLED_ELEMENTS = "disabledElements";
public static final String KEY_CONFIG_DISABLED_TOOLS = "disabledTools";
public static final String KEY_CONFIG_MULTI_TAB_ENABLED = "multiTabEnabled";
public static final String KEY_CONFIG_CUSTOM_HEADERS = "customHeaders";
public static final String KEY_CONFIG_FIT_MODE = "fitMode";
public static final String KEY_CONFIG_LAYOUT_MODE = "layoutMode";
public static final String KEY_CONFIG_TABLET_LAYOUT_ENABLED = "tabletLayoutEnabled";
public static final String KEY_CONFIG_INITIAL_PAGE_NUMBER = "initialPageNumber";
public static final String KEY_CONFIG_IS_BASE_64_STRING = "isBase64String";
public static final String KEY_CONFIG_BASE_64_FILE_EXTENSION = "base64FileExtension";
public static final String KEY_CONFIG_HIDE_THUMBNAIL_FILTER_MODES = "hideThumbnailFilterModes";
public static final String KEY_CONFIG_LONG_PRESS_MENU_ENABLED = "longPressMenuEnabled";
public static final String KEY_CONFIG_LONG_PRESS_MENU_ITEMS = "longPressMenuItems";
public static final String KEY_CONFIG_OVERRIDE_LONG_PRESS_MENU_BEHAVIOR = "overrideLongPressMenuBehavior";
public static final String KEY_CONFIG_HIDE_ANNOTATION_MENU = "hideAnnotationMenu";
public static final String KEY_CONFIG_ANNOTATION_MENU_ITEMS = "annotationMenuItems";
public static final String KEY_CONFIG_OVERRIDE_ANNOTATION_MENU_BEHAVIOR = "overrideAnnotationMenuBehavior";
public static final String KEY_CONFIG_EXCLUDED_ANNOTATION_LIST_TYPES = "excludedAnnotationListTypes";
public static final String KEY_CONFIG_EXPORT_PATH = "exportPath";
public static final String KEY_CONFIG_OPEN_URL_PATH = "openUrlPath";
public static final String KEY_CONFIG_OPEN_SAVED_COPY_IN_NEW_TAB = "openSavedCopyInNewTab";
public static final String KEY_CONFIG_MAX_TAB_COUNT = "maxTabCount";
public static final String KEY_CONFIG_AUTO_SAVE_ENABLED = "autoSaveEnabled";
public static final String KEY_CONFIG_SHOW_DOCUMENT_SAVED_TOAST = "showDocumentSavedToast";
public static final String KEY_CONFIG_PAGE_CHANGE_ON_TAP = "pageChangeOnTap";
public static final String KEY_CONFIG_SHOW_SAVED_SIGNATURES = "showSavedSignatures";
public static final String KEY_CONFIG_SIGNATURE_PHOTO_PICKER_ENABLED = "signaturePhotoPickerEnabled";
public static final String KEY_CONFIG_SIGNATURE_TYPING_ENABLED = "signatureTypingEnabled";
public static final String KEY_CONFIG_USE_STYLUS_AS_PEN = "useStylusAsPen";
public static final String KEY_CONFIG_SIGN_SIGNATURE_FIELD_WITH_STAMPS = "signSignatureFieldWithStamps";
public static final String KEY_CONFIG_SIGNATURE_COLORS = "signatureColors";
public static final String KEY_CONFIG_SELECT_ANNOTATION_AFTER_CREATION = "selectAnnotationAfterCreation";
public static final String KEY_CONFIG_PAGE_INDICATOR_ENABLED = "pageIndicatorEnabled";
public static final String KEY_CONFIG_SHOW_QUICK_NAVIGATION_BUTTON = "showQuickNavigationButton";
public static final String KEY_CONFIG_FOLLOW_SYSTEM_DARK_MODE = "followSystemDarkMode";
public static final String KEY_CONFIG_DOWNLOAD_DIALOG_ENABLED = "downloadDialogEnabled";
public static final String KEY_CONFIG_SINGLE_LINE_TOOLBAR = "singleLineToolbar";
public static final String KEY_CONFIG_ANNOTATION_TOOLBARS = "annotationToolbars";
public static final String KEY_CONFIG_HIDE_DEFAULT_ANNOTATION_TOOLBARS = "hideDefaultAnnotationToolbars";
public static final String KEY_CONFIG_HIDE_ANNOTATION_TOOLBAR_SWITCHER = "hideAnnotationToolbarSwitcher";
public static final String KEY_CONFIG_INITIAL_TOOLBAR = "initialToolbar";
public static final String KEY_CONFIG_HIDE_TOP_TOOLBARS = "hideTopToolbars";
public static final String KEY_CONFIG_HIDE_TOOLBARS_ON_TAP = "hideToolbarsOnTap";
public static final String KEY_CONFIG_HIDE_TOP_APP_NAV_BAR = "hideTopAppNavBar";
public static final String KEY_CONFIG_HIDE_BOTTOM_TOOLBAR = "hideBottomToolbar";
public static final String KEY_CONFIG_HIDE_PRESET_BAR = "hidePresetBar";
public static final String KEY_CONFIG_BOTTOM_TOOLBAR = "bottomToolbar";
public static final String KEY_CONFIG_SHOW_LEADING_NAV_BUTTON = "showLeadingNavButton";
public static final String KEY_CONFIG_REMEMBER_LAST_USED_TOOL = "rememberLastUsedTool";
public static final String KEY_CONFIG_DOCUMENT_SLIDER_ENABLED = "documentSliderEnabled";
public static final String KEY_CONFIG_READ_ONLY = "readOnly";
public static final String KEY_CONFIG_THUMBNAIL_VIEW_EDITING_ENABLED = "thumbnailViewEditingEnabled";
public static final String KEY_CONFIG_ANNOTATION_AUTHOR = "annotationAuthor";
public static final String KEY_CONFIG_CONTINUOUS_ANNOTATION_EDITING = "continuousAnnotationEditing";
public static final String KEY_CONFIG_ANNOTATION_PERMISSION_CHECK_ENABLED = "annotationPermissionCheckEnabled";
public static final String KEY_CONFIG_ANNOTATIONS_LIST_EDITING_ENABLED = "annotationsListEditingEnabled";
public static final String KEY_CONFIG_USER_BOOKMARKS_LIST_EDITING_ENABLED = "userBookmarksListEditingEnabled";
public static final String KEY_CONFIG_OUTLINE_LIST_EDITING_ENABLED = "outlineListEditingEnabled";
public static final String KEY_CONFIG_SHOW_NAVIGATION_LIST_AS_SIDE_PANEL_ON_LARGE_DEVICES = "showNavigationListAsSidePanelOnLargeDevices";
public static final String KEY_CONFIG_OVERRIDE_BEHAVIOR = "overrideBehavior";
public static final String KEY_CONFIG_TAB_TITLE = "tabTitle";
public static final String KEY_CONFIG_PERMANENT_PAGE_NUMBER_INDICATOR = "pageNumberIndicatorAlwaysVisible";
public static final String KEY_CONFIG_DISABLE_EDITING_BY_ANNOTATION_TYPE = "disableEditingByAnnotationType";
public static final String KEY_CONFIG_ANNOTATIONS_LIST_FILTER_ENABLED = "annotationsListFilterEnabled";
public static final String KEY_CONFIG_HIDE_VIEW_MODE_ITEMS = "hideViewModeItems";
public static final String KEY_CONFIG_DEFAULT_ERASER_TYPE = "defaultEraserType";
public static final String KEY_CONFIG_AUTO_RESIZE_FREE_TEXT_ENABLED = "autoResizeFreeTextEnabled";
public static final String KEY_CONFIG_RESTRICT_DOWNLOAD_USAGE = "restrictDownloadUsage";
public static final String KEY_CONFIG_REFLOW_ORIENTATION = "reflowOrientation";
public static final String KEY_CONFIG_IMAGE_IN_REFLOW_MODE_ENABLED = "imageInReflowModeEnabled";
public static final String KEY_CONFIG_ANNOTATION_MANAGER_ENABLED = "annotationManagerEnabled";
public static final String KEY_CONFIG_USER_ID = "userId";
public static final String KEY_CONFIG_USER_NAME = "userName";
public static final String KEY_CONFIG_ANNOTATION_MANAGER_UNDO_MODE = "annotationManagerUndoMode";
public static final String KEY_CONFIG_ANNOTATION_MANAGER_EDIT_MODE = "annotationManagerEditMode";
public static final String KEY_CONFIG_ANNOTATION_TOOLBAR_GRAVITY = "annotationToolbarAlignment";
public static final String KEY_CONFIG_QUICK_BOOKMARK_CREATION = "quickBookmarkCreation";
public static final String KEY_CONFIG_FULL_SCREEN_MODE_ENABLED = "fullScreenModeEnabled";
public static final String KEY_CONFIG_TOP_APP_NAV_BAR_RIGHT_BAR = "topAppNavBarRightBar";
// Hygen Generated Config Constants
public static final String KEY_CONFIG_MAX_SIGNATURE_COUNT = "maxSignatureCount";
public static final String KEY_X1 = "x1";
public static final String KEY_Y1 = "y1";
public static final String KEY_X2 = "x2";
public static final String KEY_Y2 = "y2";
public static final String KEY_X = "x";
public static final String KEY_Y = "y";
public static final String KEY_ZOOM = "zoom";
public static final String KEY_WIDTH = "width";
public static final String KEY_HEIGHT = "height";
public static final String KEY_RECT = "rect";
public static final String KEY_SUBJECT = "subject";
public static final String KEY_TITLE = "title";
public static final String KEY_CONTENTS = "contents";
public static final String KEY_CONTENT_RECT = "contentRect";
public static final String KEY_ROTATION = "rotation";
public static final String KEY_FIELD_NAME = "fieldName";
public static final String KEY_FIELD_VALUE = "fieldValue";
public static final String KEY_PREVIOUS_PAGE_NUMBER = "previousPageNumber";
public static final String KEY_ANNOTATION_ID = "id";
public static final String KEY_ACTION_ADD = "add";
public static final String KEY_ACTION_MODIFY = "modify";
public static final String KEY_ACTION_DELETE = "delete";
public static final String KEY_ACTION = "action";
public static final String KEY_DATA = "data";
public static final String KEY_ANNOTATION_FLAG_LISTS = "flags";
public static final String KEY_ANNOTATION_FLAG = "flag";
public static final String KEY_ANNOTATION_FLAG_VALUE = "flagValue";
public static final String BEHAVIOR_LINK_PRESS = "linkPress";
public static final String KEY_LINK_BEHAVIOR_DATA = "url";
public static final String KEY_ANNOTATION_MENU_ITEM = "annotationMenuItem";
public static final String KEY_LONG_PRESS_MENU_ITEM = "longPressMenuItem";
public static final String KEY_LONG_PRESS_TEXT = "longPressText";
public static final String KEY_PATH = "path";
public static final String KEY_GRAVITY_START = "GravityStart";
public static final String KEY_GRAVITY_END = "GravityEnd";
public static final String KEY_HORIZONTAL_SCROLL_POSITION = "horizontalScrollPosition";
public static final String KEY_VERTICAL_SCROLL_POSITION = "verticalScrollPosition";
public static final String KEY_SEARCH_STRING = "searchString";
public static final String KEY_MATCH_CASE = "matchCase";
public static final String KEY_MATCH_WHOLE_WORD = "matchWholeWord";
// Hygen Generated Method Parameters
public static final String EVENT_EXPORT_ANNOTATION_COMMAND = "export_annotation_command_event";
public static final String EVENT_EXPORT_BOOKMARK = "export_bookmark_event";
public static final String EVENT_DOCUMENT_LOADED = "document_loaded_event";
public static final String EVENT_DOCUMENT_ERROR = "document_error_event";
public static final String EVENT_ANNOTATION_CHANGED = "annotation_changed_event";
public static final String EVENT_ANNOTATIONS_SELECTED = "annotations_selected_event";
public static final String EVENT_FORM_FIELD_VALUE_CHANGED = "form_field_value_changed_event";
public static final String EVENT_BEHAVIOR_ACTIVATED = "behavior_activated_event";
public static final String EVENT_LONG_PRESS_MENU_PRESSED = "long_press_menu_pressed_event";
public static final String EVENT_ANNOTATION_MENU_PRESSED = "annotation_menu_pressed_event";
public static final String EVENT_LEADING_NAV_BUTTON_PRESSED = "leading_nav_button_pressed_event";
public static final String EVENT_PAGE_CHANGED = "page_changed_event";
public static final String EVENT_ZOOM_CHANGED = "zoom_changed_event";
public static final String EVENT_PAGE_MOVED = "page_moved_event";
public static final String EVENT_ANNOTATION_TOOLBAR_ITEM_PRESSED = "annotation_toolbar_item_pressed_event";
public static final String EVENT_SCROLL_CHANGED = "scroll_changed_event";
// Hygen Generated Event Listeners
public static final String EVENT_APP_BAR_BUTTON_PRESSED = "app_bar_button_pressed_event";
public static final String FUNCTION_GET_PLATFORM_VERSION = "getPlatformVersion";
public static final String FUNCTION_GET_VERSION = "getVersion";
public static final String FUNCTION_INITIALIZE = "initialize";
public static final String FUNCTION_OPEN_DOCUMENT = "openDocument";
public static final String FUNCTION_IMPORT_ANNOTATION_COMMAND = "importAnnotationCommand";
public static final String FUNCTION_IMPORT_BOOKMARK_JSON = "importBookmarkJson";
public static final String FUNCTION_SAVE_DOCUMENT = "saveDocument";
public static final String FUNCTION_COMMIT_TOOL = "commitTool";
public static final String FUNCTION_GET_PAGE_COUNT = "getPageCount";
public static final String FUNCTION_HANDLE_BACK_BUTTON = "handleBackButton";
public static final String FUNCTION_UNDO = "undo";
public static final String FUNCTION_REDO = "redo";
public static final String FUNCTION_CAN_UNDO = "canUndo";
public static final String FUNCTION_CAN_REDO = "canRedo";
public static final String FUNCTION_GET_PAGE_CROP_BOX = "getPageCropBox";
public static final String FUNCTION_SET_CURRENT_PAGE = "setCurrentPage";
public static final String FUNCTION_GET_DOCUMENT_PATH = "getDocumentPath";
public static final String FUNCTION_SET_TOOL_MODE = "setToolMode";
public static final String FUNCTION_SET_FLAG_FOR_FIELDS = "setFlagForFields";
public static final String FUNCTION_SET_VALUES_FOR_FIELDS = "setValuesForFields";
public static final String FUNCTION_IMPORT_ANNOTATIONS = "importAnnotations";
public static final String FUNCTION_EXPORT_ANNOTATIONS = "exportAnnotations";
public static final String FUNCTION_FLATTEN_ANNOTATIONS = "flattenAnnotations";
public static final String FUNCTION_DELETE_ANNOTATIONS = "deleteAnnotations";
public static final String FUNCTION_SELECT_ANNOTATION = "selectAnnotation";
public static final String FUNCTION_SET_FLAGS_FOR_ANNOTATIONS = "setFlagsForAnnotations";
public static final String FUNCTION_SET_PROPERTIES_FOR_ANNOTATION = "setPropertiesForAnnotation";
public static final String FUNCTION_SET_LEADING_NAV_BUTTON_ICON = "setLeadingNavButtonIcon";
public static final String FUNCTION_CLOSE_ALL_TABS = "closeAllTabs";
public static final String FUNCTION_DELETE_ALL_ANNOTATIONS = "deleteAllAnnotations";
public static final String FUNCTION_GET_PAGE_ROTATION = "getPageRotation";
public static final String FUNCTION_ROTATE_CLOCKWISE = "rotateClockwise";
public static final String FUNCTION_ROTATE_COUNTER_CLOCKWISE = "rotateCounterClockwise";
public static final String FUNCTION_EXPORT_AS_IMAGE = "exportAsImage";
public static final String FUNCTION_EXPORT_AS_IMAGE_FROM_FILE_PATH = "exportAsImageFromFilePath";
public static final String FUNCTION_OPEN_ANNOTATION_LIST = "openAnnotationList";
public static final String FUNCTION_SET_REQUESTED_ORIENTATION = "setRequestedOrientation";
public static final String FUNCTION_GO_TO_PREVIOUS_PAGE = "gotoPreviousPage";
public static final String FUNCTION_GO_TO_NEXT_PAGE = "gotoNextPage";
public static final String FUNCTION_GO_TO_FIRST_PAGE = "gotoFirstPage";
public static final String FUNCTION_GO_TO_LAST_PAGE = "gotoLastPage";
public static final String FUNCTION_ADD_BOOKMARK = "addBookmark";
public static final String FUNCTION_OPEN_BOOKMARK_LIST = "openBookmarkList";
public static final String FUNCTION_OPEN_OUTLINE_LIST = "openOutlineList";
public static final String FUNCTION_OPEN_LAYERS_LIST = "openLayersList";
public static final String FUNCTION_OPEN_THUMBNAILS_VIEW = "openThumbnailsView";
public static final String FUNCTION_OPEN_ROTATE_DIALOG = "openRotateDialog";
public static final String FUNCTION_OPEN_ADD_PAGES_VIEW = "openAddPagesView";
public static final String FUNCTION_OPEN_VIEW_SETTINGS = "openViewSettings";
public static final String FUNCTION_OPEN_CROP = "openCrop";
public static final String FUNCTION_OPEN_MANUAL_CROP = "openManualCrop";
public static final String FUNCTION_OPEN_SEARCH = "openSearch";
public static final String FUNCTION_OPEN_TAB_SWITCHER = "openTabSwitcher";
public static final String FUNCTION_OPEN_GO_TO_PAGE_VIEW = "openGoToPageView";
public static final String FUNCTION_OPEN_NAVIGATION_LISTS = "openNavigationLists";
public static final String FUNCTION_GET_CURRENT_PAGE = "getCurrentPage";
public static final String FUNCTION_GROUP_ANNOTATIONS = "groupAnnotations";
public static final String FUNCTION_UNGROUP_ANNOTATIONS = "ungroupAnnotations";
public static final String FUNCTION_START_SEARCH_MODE = "startSearchMode";
public static final String FUNCTION_EXIT_SEARCH_MODE = "exitSearchMode";
public static final String FUNCTION_ZOOM_WITH_CENTER = "zoomWithCenter";
public static final String FUNCTION_ZOOM_TO_RECT = "zoomToRect";
public static final String FUNCTION_GET_ZOOM = "getZoom";
public static final String FUNCTION_SET_ZOOM_LIMITS = "setZoomLimits";
public static final String FUNCTION_SMART_ZOOM = "smartZoom";
public static final String FUNCTION_GET_SAVED_SIGNATURES = "getSavedSignatures";
public static final String FUNCTION_GET_SAVED_SIGNATURE_FOLDER = "getSavedSignatureFolder";
public static final String FUNCTION_GET_SAVED_SIGNATURE_JPG_FOLDER = "getSavedSignatureJpgFolder";
public static final String FUNCTION_SET_BACKGROUND_COLOR = "setBackgroundColor";
public static final String FUNCTION_SET_DEFAULT_PAGE_COLOR = "setDefaultPageColor";
public static final String FUNCTION_GET_SCROLL_POS = "getScrollPos";
public static final String FUNCTION_SET_HORIZONTAL_SCROLL_POSITION = "setHorizontalScrollPosition";
public static final String FUNCTION_SET_VERTICAL_SCROLL_POSITION = "setVerticalScrollPosition";
public static final String FUNCTION_GET_VISIBLE_PAGES = "getVisiblePages";
// Kotlin Toast Method
public static final String FUNCTION_SHOW_MY_TOAST = "showMyToast";
// Hygen Generated Method Constants
public static final String FUNCTION_GET_ANNOTATIONS_ON_PAGE = "getAnnotationsOnPage";
public static final String BUTTON_TOOLS = "toolsButton";
public static final String BUTTON_SEARCH = "searchButton";
public static final String BUTTON_SHARE = "shareButton";
public static final String BUTTON_VIEW_CONTROLS = "viewControlsButton";
public static final String BUTTON_THUMBNAILS = "thumbnailsButton";
public static final String BUTTON_LISTS = "listsButton";
public static final String BUTTON_THUMBNAIL_SLIDER = "thumbnailSlider";
public static final String BUTTON_SAVE_COPY = "saveCopyButton";
public static final String BUTTON_SAVE_IDENTICAL_COPY = "saveIdenticalCopyButton";
public static final String BUTTON_SAVE_FLATTENED_COPY = "saveFlattenedCopyButton";
public static final String BUTTON_SAVE_REDUCED_COPY = "saveReducedCopyButton";
public static final String BUTTON_SAVE_CROPPED_COPY = "saveCroppedCopyButton";
public static final String BUTTON_SAVE_PASSWORD_COPY = "savePasswordCopyButton";
public static final String BUTTON_EDIT_PAGES = "editPagesButton";
public static final String BUTTON_PRINT = "printButton";
public static final String BUTTON_FILL_AND_SIGN = "fillAndSignButton";
public static final String BUTTON_PREPARE_FORM = "prepareFormButton";
public static final String BUTTON_REFLOW_MODE = "reflowModeButton";
public static final String BUTTON_CLOSE = "closeButton";
public static final String BUTTON_OUTLINE_LIST = "outlineListButton";
public static final String BUTTON_ANNOTATION_LIST = "annotationListButton";
public static final String BUTTON_USER_BOOKMARK_LIST = "userBookmarkListButton";
public static final String BUTTON_EDIT_MENU = "editMenuButton";
public static final String BUTTON_CROP_PAGE = "cropPageButton";
public static final String BUTTON_MORE_ITEMS = "moreItemsButton";
public static final String BUTTON_UNDO = "undo";
public static final String BUTTON_REDO = "redo";
public static final String BUTTON_EDIT_ANNOTATION_TOOLBAR = "editAnnotationToolButton";
public static final String BUTTON_VIEW_LAYERS = "viewLayersButton";
public static final String BUTTON_SHOW_FILE_ATTACHMENT = "showFileAttachmentButton";
public static final String TOOL_BUTTON_FREE_HAND = "freeHandToolButton";
public static final String TOOL_BUTTON_HIGHLIGHT = "highlightToolButton";
public static final String TOOL_BUTTON_UNDERLINE = "underlineToolButton";
public static final String TOOL_BUTTON_SQUIGGLY = "squigglyToolButton";
public static final String TOOL_BUTTON_STRIKEOUT = "strikeoutToolButton";
public static final String TOOL_BUTTON_RECTANGLE = "rectangleToolButton";
public static final String TOOL_BUTTON_ELLIPSE = "ellipseToolButton";
public static final String TOOL_BUTTON_LINE = "lineToolButton";
public static final String TOOL_BUTTON_ARROW = "arrowToolButton";
public static final String TOOL_BUTTON_POLYLINE = "polylineToolButton";
public static final String TOOL_BUTTON_POLYGON = "polygonToolButton";
public static final String TOOL_BUTTON_CLOUD = "cloudToolButton";
public static final String TOOL_BUTTON_SIGNATURE = "signatureToolButton";
public static final String TOOL_BUTTON_FREE_TEXT = "freeTextToolButton";
public static final String TOOL_BUTTON_STICKY = "stickyToolButton";
public static final String TOOL_BUTTON_CALLOUT = "calloutToolButton";
public static final String TOOL_BUTTON_STAMP = "stampToolButton";
public static final String TOOL_ANNOTATION_CREATE_FREE_HAND = "AnnotationCreateFreeHand";
public static final String TOOL_ANNOTATION_CREATE_TEXT_HIGHLIGHT = "AnnotationCreateTextHighlight";
public static final String TOOL_ANNOTATION_CREATE_TEXT_UNDERLINE = "AnnotationCreateTextUnderline";
public static final String TOOL_ANNOTATION_CREATE_TEXT_SQUIGGLY = "AnnotationCreateTextSquiggly";
public static final String TOOL_ANNOTATION_CREATE_TEXT_STRIKEOUT = "AnnotationCreateTextStrikeout";
public static final String TOOL_ANNOTATION_CREATE_RECTANGLE = "AnnotationCreateRectangle";
public static final String TOOL_ANNOTATION_CREATE_ELLIPSE = "AnnotationCreateEllipse";
public static final String TOOL_ANNOTATION_CREATE_LINE = "AnnotationCreateLine";
public static final String TOOL_ANNOTATION_CREATE_ARROW = "AnnotationCreateArrow";
public static final String TOOL_ANNOTATION_CREATE_POLYLINE = "AnnotationCreatePolyline";
public static final String TOOL_ANNOTATION_CREATE_POLYGON = "AnnotationCreatePolygon";
public static final String TOOL_ANNOTATION_CREATE_POLYGON_CLOUD = "AnnotationCreatePolygonCloud";
public static final String TOOL_ANNOTATION_CREATE_SIGNATURE = "AnnotationCreateSignature";
public static final String TOOL_ANNOTATION_CREATE_FREE_TEXT = "AnnotationCreateFreeText";
public static final String TOOL_ANNOTATION_CREATE_STICKY = "AnnotationCreateSticky";
public static final String TOOL_ANNOTATION_CREATE_CALLOUT = "AnnotationCreateCallout";
public static final String TOOL_ANNOTATION_CREATE_STAMP = "AnnotationCreateStamp";
public static final String TOOL_ANNOTATION_CREATE_DISTANCE_MEASUREMENT = "AnnotationCreateDistanceMeasurement";
public static final String TOOL_ANNOTATION_CREATE_PERIMETER_MEASUREMENT = "AnnotationCreatePerimeterMeasurement";
public static final String TOOL_ANNOTATION_CREATE_RECTANGLE_AREA_MEASUREMENT = "AnnotationCreateRectangleAreaMeasurement";
public static final String TOOL_ANNOTATION_CREATE_AREA_MEASUREMENT = "AnnotationCreateAreaMeasurement";
public static final String TOOL_ANNOTATION_CREATE_FILE_ATTACHMENT = "AnnotationCreateFileAttachment";
public static final String TOOL_TEXT_SELECT = "TextSelect";
public static final String TOOL_ANNOTATION_EDIT = "AnnotationEdit";
public static final String TOOL_ANNOTATION_CREATE_SOUND = "AnnotationCreateSound";
public static final String TOOL_ANNOTATION_CREATE_FREE_HIGHLIGHTER = "AnnotationCreateFreeHighlighter";
public static final String TOOL_ANNOTATION_CREATE_RUBBER_STAMP = "AnnotationCreateRubberStamp";
public static final String TOOL_ERASER = "Eraser";
public static final String TOOL_ANNOTATION_CREATE_REDACTION = "AnnotationCreateRedaction";
public static final String TOOL_ANNOTATION_CREATE_REDACTION_TEXT = "AnnotationCreateRedactionText";
public static final String TOOL_ANNOTATION_CREATE_LINK = "AnnotationCreateLink";
public static final String TOOL_ANNOTATION_CREATE_LINK_TEXT = "AnnotationCreateLinkText";
public static final String TOOL_FORM_CREATE_TEXT_FIELD = "FormCreateTextField";
public static final String TOOL_FORM_CREATE_CHECKBOX_FIELD = "FormCreateCheckboxField";
public static final String TOOL_FORM_CREATE_SIGNATURE_FIELD = "FormCreateSignatureField";
public static final String TOOL_FORM_CREATE_RADIO_FIELD = "FormCreateRadioField";
public static final String TOOL_FORM_CREATE_COMBO_BOX_FIELD = "FormCreateComboBoxField";
public static final String TOOL_FORM_CREATE_TOOL_BOX_FIELD = "FormCreateToolBoxField";
public static final String TOOL_FORM_CREATE_LIST_BOX_FIELD = "FormCreateListBoxField";
public static final String TOOL_ANNOTATION_SMART_PEN = "AnnotationSmartPen";
public static final String TOOL_ANNOTATION_LASSO = "AnnotationLasso";
public static final String ANNOTATION_FLAG_HIDDEN = "hidden";
public static final String ANNOTATION_FLAG_INVISIBLE = "invisible";
public static final String ANNOTATION_FLAG_LOCKED = "locked";
public static final String ANNOTATION_FLAG_LOCKED_CONTENTS = "lockedContents";
public static final String ANNOTATION_FLAG_NO_ROTATE = "noRotate";
public static final String ANNOTATION_FLAG_NO_VIEW = "noView";
public static final String ANNOTATION_FLAG_NO_ZOOM = "noZoom";
public static final String ANNOTATION_FLAG_PRINT = "print";
public static final String ANNOTATION_FLAG_READ_ONLY = "readOnly";
public static final String ANNOTATION_FLAG_TOGGLE_NO_VIEW = "toggleNoView";
private static final String LAYOUT_MODE_SINGLE = "Single";
private static final String LAYOUT_MODE_CONTINUOUS = "Continuous";
private static final String LAYOUT_MODE_FACING = "facing";
private static final String LAYOUT_MODE_FACING_CONTINUOUS = "facingContinuous";
private static final String LAYOUT_MODE_FACING_OVER = "facingOver";
private static final String LAYOUT_MODE_FACING_OVER_CONTINUOUS = "facingOverContinuous";
private static final String FIT_MODE_FIT_PAGE = "FitPage";
private static final String FIT_MODE_FIT_WIDTH = "FitWidth";
private static final String FIT_MODE_FIT_HEIGHT = "FitHeight";
private static final String FIT_MODE_ZOOM = "Zoom";
public static final String THUMBNAIL_FILTER_MODE_ANNOTATED = "annotated";
public static final String THUMBNAIL_FILTER_MODE_BOOKMARKED = "bookmarked";
public static final String MENU_ID_STRING_STYLE = "style";
public static final String MENU_ID_STRING_NOTE = "note";
public static final String MENU_ID_STRING_COPY = "copy";
public static final String MENU_ID_STRING_DELETE = "delete";
public static final String MENU_ID_STRING_FLATTEN = "flatten";
public static final String MENU_ID_STRING_TEXT = "text";
public static final String MENU_ID_STRING_EDIT_INK = "editInk";
public static final String MENU_ID_STRING_SEARCH = "search";
public static final String MENU_ID_STRING_SHARE = "share";
public static final String MENU_ID_STRING_MARKUP_TYPE = "markupType";
public static final String MENU_ID_STRING_SCREEN_CAPTURE = "screenCapture";
public static final String MENU_ID_STRING_PLAY_SOUND = "playSound";
public static final String MENU_ID_STRING_OPEN_ATTACHMENT = "openAttachment";
public static final String MENU_ID_STRING_READ = "read";
public static final String MENU_ID_STRING_CALIBRATE = "calibrate";
public static final String MENU_ID_STRING_REDACT = "redact";
public static final String MENU_ID_STRING_REDACTION = "redaction";
public static final String MENU_ID_STRING_UNDERLINE = "underline";
public static final String MENU_ID_STRING_STRIKEOUT = "strikeout";
public static final String MENU_ID_STRING_SQUIGGLY = "squiggly";
public static final String MENU_ID_STRING_LINK = "link";
public static final String MENU_ID_STRING_HIGHLIGHT = "highlight";
public static final String MENU_ID_STRING_SIGNATURE = "signature";
public static final String MENU_ID_STRING_RECTANGLE = "rectangle";
public static final String MENU_ID_STRING_LINE = "line";
public static final String MENU_ID_STRING_FREE_HAND = "freeHand";
public static final String MENU_ID_STRING_IMAGE = "image";
public static final String MENU_ID_STRING_FORM_TEXT = "formText";
public static final String MENU_ID_STRING_STICKY_NOTE = "stickyNote";
public static final String MENU_ID_STRING_OVERFLOW = "overflow";
public static final String MENU_ID_STRING_ERASER = "eraser";
public static final String MENU_ID_STRING_STAMP = "rubberStamp";
public static final String MENU_ID_STRING_PAGE_REDACTION = "pageRedaction";
public static final String MENU_ID_STRING_RECT_REDACTION = "rectRedaction";
public static final String MENU_ID_STRING_SEARCH_REDACTION = "searchRedaction";
public static final String MENU_ID_STRING_SHAPE = "shape";
public static final String MENU_ID_STRING_CLOUD = "cloud";
public static final String MENU_ID_STRING_POLYGON = "polygon";
public static final String MENU_ID_STRING_POLYLINE = "polyline";
public static final String MENU_ID_STRING_FREE_HIGHLIGHTER = "freeHighlighter";
public static final String MENU_ID_STRING_ARROW = "arrow";
public static final String MENU_ID_STRING_OVAL = "oval";
public static final String MENU_ID_STRING_CALLOUT = "callout";
public static final String MENU_ID_STRING_MEASUREMENT = "measurement";
public static final String MENU_ID_STRING_AREA_MEASUREMENT = "areaMeasurement";
public static final String MENU_ID_STRING_PERIMETER_MEASUREMENT = "perimeterMeasurement";
public static final String MENU_ID_STRING_RECT_AREA_MEASUREMENT = "rectAreaMeasurement";
public static final String MENU_ID_STRING_RULER = "ruler";
public static final String MENU_ID_STRING_FORM = "form";
public static final String MENU_ID_STRING_FORM_COMBO_BOX = "formComboBox";
public static final String MENU_ID_STRING_FORM_LIST_BOX = "formListBox";
public static final String MENU_ID_STRING_FORM_CHECK_BOX = "formCheckBox";
public static final String MENU_ID_STRING_FORM_SIGNATURE = "formSignature";
public static final String MENU_ID_STRING_FORM_RADIO_GROUP = "formRadioGroup";
public static final String MENU_ID_STRING_ATTACH = "attach";
public static final String MENU_ID_STRING_FILE_ATTACHMENT = "fileAttachment";
public static final String MENU_ID_STRING_SOUND = "sound";
public static final String MENU_ID_STRING_FREE_TEXT = "freeText";
public static final String MENU_ID_STRING_CROP = "crop";
public static final String MENU_ID_STRING_CROP_OK = "crossOK";
public static final String MENU_ID_STRING_CROP_CANCEL = "crossCancel";
public static final String MENU_ID_STRING_DEFINE = "define";
public static final String MENU_ID_STRING_FIELD_SIGNED = "fieldSigned";
public static final String MENU_ID_STRING_FIRST_ROW_GROUP = "firstRowGroup";
public static final String MENU_ID_STRING_SECOND_ROW_GROUP = "secondRowGroup";
public static final String MENU_ID_STRING_GROUP = "group";
public static final String MENU_ID_STRING_PASTE = "paste";
public static final String MENU_ID_STRING_RECT_GROUP_SELECT = "rectGroupSelect";
public static final String MENU_ID_STRING_SIGN_AND_SAVE = "signAndSave";
public static final String MENU_ID_STRING_THICKNESS = "thickness";
public static final String MENU_ID_STRING_TRANSLATE = "translate";
public static final String MENU_ID_STRING_UNGROUP = "ungroup";
// RGB colors
public static final String COLOR_RED = "red";
public static final String COLOR_GREEN = "green";
public static final String COLOR_BLUE = "blue";
// Toolbars
public static final String TAG_VIEW_TOOLBAR = "PDFTron_View";
public static final String TAG_ANNOTATE_TOOLBAR = "PDFTron_Annotate";
public static final String TAG_DRAW_TOOLBAR = "PDFTron_Draw";
public static final String TAG_INSERT_TOOLBAR = "PDFTron_Insert";
public static final String TAG_FILL_AND_SIGN_TOOLBAR = "PDFTron_Fill_and_Sign";
public static final String TAG_PREPARE_FORM_TOOLBAR = "PDFTron_Prepare_Form";
public static final String TAG_MEASURE_TOOLBAR = "PDFTron_Measure";
public static final String TAG_PENS_TOOLBAR = "PDFTron_Pens";
public static final String TAG_REDACTION_TOOLBAR = "PDFTron_redact";
public static final String TAG_FAVORITE_TOOLBAR = "PDFTron_Favorite";
// Custom toolbars
public static final String TOOLBAR_KEY_ID = "id";
public static final String TOOLBAR_KEY_NAME = "name";
public static final String TOOLBAR_KEY_ICON = "icon";
public static final String TOOLBAR_KEY_ITEMS = "items";
// Custom toolbar items
public static final String TOOLBAR_ITEM_KEY_ID = "id";
public static final String TOOLBAR_ITEM_KEY_NAME = "name";
public static final String TOOLBAR_ITEM_KEY_ICON = "icon";
// View Mode
public static final String VIEW_MODE_CROP = "viewModeCrop";
public static final String VIEW_MODE_ROTATION = "viewModeRotation";
public static final String VIEW_MODE_COLOR_MODE = "viewModeColorMode";
public static final String VIEW_MODE_VERTICAL_SCROLLING = "viewModeVerticalScrolling";
// Default Eraser Type
public static final String DEFAULT_ERASER_TYPE_ANNOTATION = "annotationEraser";
public static final String DEFAULT_ERASER_TYPE_HYBRID = "hybridEraser";
public static final String DEFAULT_ERASER_TYPE_INK = "inkEraser";
// Reflow Orientation
public static final String REFLOW_ORIENTATION_HORIZONTAL = "horizontal";
public static final String REFLOW_ORIENTATION_VERTICAL = "vertical";
// Annotation Manager Edit Mode
public static final String ANNOTATION_MANAGER_EDIT_MODE_OWN = "editModeOwn";
public static final String ANNOTATION_MANAGER_EDIT_MODE_ALL = "editModeAll";
// Annotation Manager Undo Mode
public static final String ANNOTATION_MANAGER_UNDO_MODE_OWN = "undoModeOwn";
public static final String ANNOTATION_MANAGER_UNDO_MODE_ALL = "undoModeAll";
// Scroll direction
public static final String SCROLL_HORIZONTAL = "horizontal";
public static final String SCROLL_VERTICAL = "vertical";
// Navigation List visibility
public static boolean isBookmarkListVisible = true;
public static boolean isOutlineListVisible = true;
public static boolean isAnnotationListVisible = true;
public static final AtomicInteger toolIdGenerator = new AtomicInteger(1000);
public static final SparseArray<String> mToolIdMap = new SparseArray<>();
private static AnnotManager.EditPermissionMode mAnnotationManagerEditMode = AnnotManager.EditPermissionMode.EDIT_OTHERS;
private static PDFViewCtrl.AnnotationManagerMode mAnnotationManagerUndoMode = PDFViewCtrl.AnnotationManagerMode.ADMIN_UNDO_OTHERS;
public static class ConfigInfo {
private int initialPageNumber;
private boolean isBase64;
private File tempFile;
private JSONObject customHeaderJson;
private Uri fileUri;
private ArrayList<String> longPressMenuItems;
private ArrayList<String> longPressMenuOverrideItems;
private ArrayList<String> hideAnnotationMenuTools;
private ArrayList<String> annotationMenuItems;
private ArrayList<String> annotationMenuOverrideItems;
private boolean autoSaveEnabled;
private boolean useStylusAsPen;
private boolean signSignatureFieldWithStamps;
private boolean showLeadingNavButton;
private boolean annotationManagerEnabled;
private String userId;
private String userName;
private ArrayList<String> actionOverrideItems;
private String tabTitle;
private String openUrlPath;
private String exportPath;
private ArrayList<String> appNavRightBarItems;
public ConfigInfo() {
this.initialPageNumber = -1;
this.isBase64 = false;
this.tempFile = null;
this.customHeaderJson = null;
this.fileUri = null;
this.longPressMenuItems = null;
this.longPressMenuOverrideItems = null;
this.hideAnnotationMenuTools = null;
this.annotationMenuItems = null;
this.annotationMenuOverrideItems = null;
this.autoSaveEnabled = true;
this.useStylusAsPen = true;
this.signSignatureFieldWithStamps = false;
this.showLeadingNavButton = true;
this.actionOverrideItems = null;
this.tabTitle = null;
this.openUrlPath = null;
this.exportPath = null;
this.annotationManagerEnabled = false;
this.userId = null;
this.userName = null;
}
public void setInitialPageNumber(int initialPageNumber) {
this.initialPageNumber = initialPageNumber;
}
public void setIsBase64(boolean isBase64) {
this.isBase64 = isBase64;
}
public void setExportPath(String exportPath) {
this.exportPath = exportPath;
}
public void setTempFile(File tempFile) {
this.tempFile = tempFile;
}
public void setCustomHeaderJson(JSONObject customHeaderJson) {
this.customHeaderJson = customHeaderJson;
}
public void setFileUri(Uri fileUri) {
this.fileUri = fileUri;
}
public void setLongPressMenuItems(ArrayList<String> longPressMenuItems) {
this.longPressMenuItems = longPressMenuItems;
}
public void setTopAppNavBarRightBar(ArrayList<String> rightBarItems) {
this.appNavRightBarItems = rightBarItems;
}
public void setLongPressMenuOverrideItems(ArrayList<String> longPressMenuOverrideItems) {
this.longPressMenuOverrideItems = longPressMenuOverrideItems;
}
public void setHideAnnotationMenuTools(ArrayList<String> hideAnnotationMenuTools) {
this.hideAnnotationMenuTools = hideAnnotationMenuTools;
}
public void setAnnotationMenuItems(ArrayList<String> annotationMenuItems) {
this.annotationMenuItems = annotationMenuItems;
}
public void setAnnotationMenuOverrideItems(ArrayList<String> annotationMenuOverrideItems) {
this.annotationMenuOverrideItems = annotationMenuOverrideItems;
}
public void setAutoSaveEnabled(boolean autoSaveEnabled) {
this.autoSaveEnabled = autoSaveEnabled;
}
public void setUseStylusAsPen(boolean useStylusAsPen) {
this.useStylusAsPen = useStylusAsPen;
}
public void setSignSignatureFieldWithStamps(boolean signSignatureFieldWithStamps) {
this.signSignatureFieldWithStamps = signSignatureFieldWithStamps;
}
public void setShowLeadingNavButton(boolean showLeadingNavButton) {
this.showLeadingNavButton = showLeadingNavButton;
}
public void setActionOverrideItems(ArrayList<String> behaviorOverrideItems) {
this.actionOverrideItems = behaviorOverrideItems;
}
public void setTabTitle(String tabTitle) {
this.tabTitle = tabTitle;
}
public void setOpenUrlPath(String openUrlPath) {
this.openUrlPath = openUrlPath;
}
public void setAnnotationManagerEnabled(boolean annotationManagerEnabled) {
this.annotationManagerEnabled = annotationManagerEnabled;
}
public void setUserId(String userId) {
this.userId = userId;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getInitialPageNumber() {
return initialPageNumber;
}
public boolean isBase64() {
return isBase64;
}
public String getExportPath() {
return exportPath;
}
public File getTempFile() {
return tempFile;
}
public JSONObject getCustomHeaderJson() {
return customHeaderJson;
}
public Uri getFileUri() {
return fileUri;
}
public ArrayList<String> getLongPressMenuItems() {
return longPressMenuItems;
}
public ArrayList<String> getLongPressMenuOverrideItems() {
return longPressMenuOverrideItems;
}
public ArrayList<String> getHideAnnotationMenuTools() {
return hideAnnotationMenuTools;
}
public ArrayList<String> getAnnotationMenuItems() {
return annotationMenuItems;
}
public ArrayList<String> getAnnotationMenuOverrideItems() {
return annotationMenuOverrideItems;
}
public boolean isAutoSaveEnabled() {
return autoSaveEnabled;
}
public boolean isUseStylusAsPen() {
return useStylusAsPen;
}
public boolean isSignSignatureFieldWithStamps() {
return signSignatureFieldWithStamps;
}
public boolean isShowLeadingNavButton() {
return showLeadingNavButton;
}
public boolean isAnnotationManagerEnabled() {
return annotationManagerEnabled;
}
public String getUserId() {
return userId;
}
public String getUserName() {
return userName;
}
public ArrayList<String> getActionOverrideItems() {
return actionOverrideItems;
}
public String getTabTitle() {
return tabTitle;
}
public String getOpenUrlPath() {
return openUrlPath;
}
public ArrayList<String> getAppNavRightBarItems() {
return appNavRightBarItems;
}
}
public static ConfigInfo handleOpenDocument(@NonNull ViewerConfig.Builder builder,
@NonNull ToolManagerBuilder toolManagerBuilder,
@NonNull PDFViewCtrlConfig pdfViewCtrlConfig, @NonNull String document, @NonNull Context context,
String configStr) {
builder
.maximumTabCount(Integer.MAX_VALUE)
.multiTabEnabled(false)
.showCloseTabOption(false)
.useSupportActionBar(false)
.skipReadOnlyCheck(true);
ConfigInfo configInfo = new ConfigInfo();
toolManagerBuilder.setOpenToolbar(true);
ArrayList<ToolManager.ToolMode> disabledTools = new ArrayList<>();
ArrayList<ViewModePickerDialogFragment.ViewModePickerItems> viewModePickerItems = new ArrayList<>();
boolean isBase64 = false;
String base64FileExtension = null;
if (configStr != null && !configStr.equals("null")) {
try {
JSONObject configJson = new JSONObject(configStr);
if (!configJson.isNull(KEY_CONFIG_DISABLED_ELEMENTS)) {
JSONArray array = configJson.getJSONArray(KEY_CONFIG_DISABLED_ELEMENTS);
disabledTools.addAll(disableElements(builder, toolManagerBuilder, array));
}
if (!configJson.isNull(KEY_CONFIG_DISABLED_TOOLS)) {
JSONArray array = configJson.getJSONArray(KEY_CONFIG_DISABLED_TOOLS);
disabledTools.addAll(disableTools(array));
}
if (!configJson.isNull(KEY_CONFIG_MULTI_TAB_ENABLED)) {
boolean val = configJson.getBoolean(KEY_CONFIG_MULTI_TAB_ENABLED);
builder.multiTabEnabled(val);
}
if (!configJson.isNull(KEY_CONFIG_CUSTOM_HEADERS)) {
JSONObject customHeaderJson = configJson.getJSONObject(KEY_CONFIG_CUSTOM_HEADERS);
configInfo.setCustomHeaderJson(customHeaderJson);
}
if (!configJson.isNull(KEY_CONFIG_FIT_MODE)) {
String fitString = configJson.getString(KEY_CONFIG_FIT_MODE);
PDFViewCtrl.PageViewMode fitMode = convStringToFitMode(fitString);
pdfViewCtrlConfig.setPageViewMode(fitMode);
}
if (!configJson.isNull(KEY_CONFIG_LAYOUT_MODE)) {
String layoutString = configJson.getString(KEY_CONFIG_LAYOUT_MODE);
String layoutMode = convStringToLayoutMode(layoutString);
PdfViewCtrlSettingsManager.updateViewMode(context, layoutMode);
}
if (!configJson.isNull(KEY_CONFIG_TABLET_LAYOUT_ENABLED)) {
boolean tabletLayoutEnabled = configJson.getBoolean(KEY_CONFIG_TABLET_LAYOUT_ENABLED);
builder.tabletLayoutEnabled(tabletLayoutEnabled);
}
if (!configJson.isNull(KEY_CONFIG_INITIAL_PAGE_NUMBER)) {
int initialPageNumber = configJson.getInt(KEY_CONFIG_INITIAL_PAGE_NUMBER);
configInfo.setInitialPageNumber(initialPageNumber);
}
if (!configJson.isNull(KEY_CONFIG_IS_BASE_64_STRING)) {
isBase64 = configJson.getBoolean(KEY_CONFIG_IS_BASE_64_STRING);
configInfo.setIsBase64(isBase64);
}
if (!configJson.isNull(KEY_CONFIG_BASE_64_FILE_EXTENSION)) {
base64FileExtension = configJson.getString(KEY_CONFIG_BASE_64_FILE_EXTENSION);
}
if (!configJson.isNull(KEY_CONFIG_HIDE_THUMBNAIL_FILTER_MODES)) {
JSONArray array = configJson.getJSONArray(KEY_CONFIG_HIDE_THUMBNAIL_FILTER_MODES);
ArrayList<ThumbnailsViewFragment.FilterModes> hideList = new ArrayList<>();
for (int i = 0; i < array.length(); i++) {
String filterModeString = array.getString(i);
if (filterModeString.equals(THUMBNAIL_FILTER_MODE_ANNOTATED)) {
hideList.add(ThumbnailsViewFragment.FilterModes.ANNOTATED);
} else if (filterModeString.equals(THUMBNAIL_FILTER_MODE_BOOKMARKED)) {
hideList.add(ThumbnailsViewFragment.FilterModes.BOOKMARKED);
}
}
builder.hideThumbnailFilterModes(hideList.toArray(new ThumbnailsViewFragment.FilterModes[0]));
}
if (!configJson.isNull(KEY_CONFIG_LONG_PRESS_MENU_ENABLED)) {
boolean longPressMenuEnabled = configJson.getBoolean(KEY_CONFIG_LONG_PRESS_MENU_ENABLED);
toolManagerBuilder = toolManagerBuilder.setDisableQuickMenu(!longPressMenuEnabled);
}
if (!configJson.isNull(KEY_CONFIG_LONG_PRESS_MENU_ITEMS)) {
JSONArray array = configJson.getJSONArray(KEY_CONFIG_LONG_PRESS_MENU_ITEMS);
ArrayList<String> longPressMenuItems = convertJSONArrayToArrayList(array);
configInfo.setLongPressMenuItems(longPressMenuItems);
}
if (!configJson.isNull(KEY_CONFIG_OVERRIDE_LONG_PRESS_MENU_BEHAVIOR)) {
JSONArray array = configJson.getJSONArray(KEY_CONFIG_OVERRIDE_LONG_PRESS_MENU_BEHAVIOR);
ArrayList<String> longPressMenuOverrideItems = convertJSONArrayToArrayList(array);
configInfo.setLongPressMenuOverrideItems(longPressMenuOverrideItems);
}
if (!configJson.isNull(KEY_CONFIG_HIDE_ANNOTATION_MENU)) {
JSONArray array = configJson.getJSONArray(KEY_CONFIG_HIDE_ANNOTATION_MENU);
ArrayList<String> hideAnnotationMenuTools = convertJSONArrayToArrayList(array);
configInfo.setHideAnnotationMenuTools(hideAnnotationMenuTools);
}
if (!configJson.isNull(KEY_CONFIG_ANNOTATION_MENU_ITEMS)) {
JSONArray array = configJson.getJSONArray(KEY_CONFIG_ANNOTATION_MENU_ITEMS);
ArrayList<String> annotationMenuItems = convertJSONArrayToArrayList(array);
configInfo.setAnnotationMenuItems(annotationMenuItems);
}
if (!configJson.isNull(KEY_CONFIG_OVERRIDE_ANNOTATION_MENU_BEHAVIOR)) {
JSONArray array = configJson.getJSONArray(KEY_CONFIG_OVERRIDE_ANNOTATION_MENU_BEHAVIOR);
ArrayList<String> annotationMenuOverrideItems = convertJSONArrayToArrayList(array);
configInfo.setAnnotationMenuOverrideItems(annotationMenuOverrideItems);
}
if (!configJson.isNull(KEY_CONFIG_EXCLUDED_ANNOTATION_LIST_TYPES)) {
JSONArray array = configJson.getJSONArray(KEY_CONFIG_EXCLUDED_ANNOTATION_LIST_TYPES);
ArrayList<String> excludedTypes = convertJSONArrayToArrayList(array);
int[] annotTypes = new int[excludedTypes.size()];
for (int i = 0; i < excludedTypes.size(); i++) {
String type = excludedTypes.get(i);
annotTypes[i] = convStringToAnnotType(type);
}
builder = builder.excludeAnnotationListTypes(annotTypes);
}
if (!configJson.isNull(KEY_CONFIG_EXPORT_PATH)) {
String exportPath = configJson.getString(KEY_CONFIG_EXPORT_PATH);
configInfo.setExportPath(exportPath);
} else {
String cacheDir = context.getCacheDir().getAbsolutePath();
configInfo.setExportPath(cacheDir);
}
if (!configJson.isNull(KEY_CONFIG_AUTO_SAVE_ENABLED)) {
boolean autoSaveEnabled = configJson.getBoolean(KEY_CONFIG_AUTO_SAVE_ENABLED);
configInfo.setAutoSaveEnabled(autoSaveEnabled);
}
if (!configJson.isNull(KEY_CONFIG_SHOW_DOCUMENT_SAVED_TOAST)) {
boolean showDocumentSavedToast = configJson.getBoolean(KEY_CONFIG_SHOW_DOCUMENT_SAVED_TOAST);
if (!showDocumentSavedToast) {
CommonToast.CommonToastHandler.getInstance().setCommonToastListener(new CommonToast.CommonToastListener() {
@Override
public boolean canShowToast(int stringRes, @Nullable CharSequence text) {
return stringRes != R.string.document_saved_toast_message &&
stringRes != R.string.document_save_error_toast_message;
}
});
}
}
if (!configJson.isNull(KEY_CONFIG_PAGE_CHANGE_ON_TAP)) {
boolean pageChangeOnTap = configJson.getBoolean(KEY_CONFIG_PAGE_CHANGE_ON_TAP);
PdfViewCtrlSettingsManager.setAllowPageChangeOnTap(context, pageChangeOnTap);
}
if (!configJson.isNull(KEY_CONFIG_SHOW_SAVED_SIGNATURES)) {
boolean showSavedSignatures = configJson.getBoolean(KEY_CONFIG_SHOW_SAVED_SIGNATURES);
toolManagerBuilder = toolManagerBuilder.setShowSavedSignatures(showSavedSignatures);
}
if (!configJson.isNull(KEY_CONFIG_SIGNATURE_PHOTO_PICKER_ENABLED)) {
boolean signaturePhotoPickerEnabled = configJson.getBoolean(KEY_CONFIG_SIGNATURE_PHOTO_PICKER_ENABLED);
toolManagerBuilder = toolManagerBuilder.setShowSignatureFromImage(signaturePhotoPickerEnabled);
}
if (!configJson.isNull(KEY_CONFIG_SIGNATURE_TYPING_ENABLED)) {
boolean signatureTypingEnabled = configJson.getBoolean(KEY_CONFIG_SIGNATURE_TYPING_ENABLED);