com.pspdfkit.react.ConfigurationAdapter.java Source code

Java tutorial

Introduction

Here is the source code for com.pspdfkit.react.ConfigurationAdapter.java

Source

/*
 * ConfigurationAdapter.java
 *
 *   PSPDFKit
 *
 *   Copyright  2017-2019 PSPDFKit GmbH. All rights reserved.
 *
 *   THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
 *   AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT.
 *   UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
 *   This notice may not be removed from this file.
 */

package com.pspdfkit.react;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReadableMapKeySetIterator;
import com.pspdfkit.configuration.activity.PdfActivityConfiguration;
import com.pspdfkit.configuration.activity.ThumbnailBarMode;
import com.pspdfkit.configuration.activity.UserInterfaceViewMode;
import com.pspdfkit.configuration.page.PageFitMode;
import com.pspdfkit.configuration.page.PageLayoutMode;
import com.pspdfkit.configuration.page.PageScrollDirection;
import com.pspdfkit.configuration.page.PageScrollMode;

public class ConfigurationAdapter {
    private static final String PAGE_SCROLL_DIRECTION = "pageScrollDirection";
    private static final String PAGE_SCROLL_DIRECTION_HORIZONTAL = "horizontal";
    private static final String PAGE_SCROLL_DIRECTION_VERTICAL = "vertical";
    private static final String PAGE_SCROLL_CONTINUOUS = "scrollContinuously";
    private static final String FIT_PAGE_TO_WIDTH = "fitPageToWidth";
    private static final String IMMERSIVE_MODE = "immersiveMode";
    private static final String USER_INTERFACE_VIEW_MODE = "userInterfaceViewMode";
    private static final String USER_INTERFACE_VIEW_MODE_AUTOMATIC = "automatic";
    private static final String USER_INTERFACE_VIEW_MODE_AUTOMATIC_BORDER_PAGES = "automaticBorderPages";
    private static final String USER_INTERFACE_VIEW_MODE_ALWAYS_VISIBLE = "alwaysVisible";
    private static final String USER_INTERFACE_VIEW_MODE_ALWAYS_HIDDEN = "alwaysHidden";
    private static final String SHOW_SEARCH_ACTION = "showSearchAction";
    private static final String INLINE_SEARCH = "inlineSearch";
    private static final String SHOW_THUMBNAIL_BAR = "showThumbnailBar";
    private static final String SHOW_THUMBNAIL_BAR_DEFAULT = "default";
    private static final String SHOW_THUMBNAIL_BAR_SCROLLABLE = "scrollable";
    private static final String SHOW_THUMBNAIL_BAR_NONE = "none";
    private static final String SHOW_THUMBNAIL_GRID_ACTION = "showThumbnailGridAction";
    private static final String SHOW_OUTLINE_ACTION = "showOutlineAction";
    private static final String SHOW_ANNOTATION_LIST_ACTION = "showAnnotationListAction";
    private static final String SHOW_PAGE_NUMBER_OVERLAY = "showPageNumberOverlay";
    private static final String SHOW_PAGE_LABELS = "showPageLabels";
    private static final String INVERT_COLORS = "invertColors";
    private static final String GRAY_SCALE = "grayScale";
    private static final String START_PAGE = "startPage";
    private static final String ENABLE_ANNOTATION_EDITING = "enableAnnotationEditing";
    private static final String ENABLE_TEXT_SELECTION = "enableTextSelection";
    private static final String SHOW_SHARE_ACTION = "showShareAction";
    private static final String SHOW_PRINT_ACTION = "showPrintAction";
    private static final String SHOW_DOCUMENT_INFO_VIEW = "showDocumentInfoView";
    private static final String SHOW_DOCUMENT_TITLE_OVERLAY = "documentLabelEnabled";
    private static final String PAGE_MODE = "pageMode";
    private static final String PAGE_MODE_SINGLE = "single";
    private static final String PAGE_MODE_DOUBLE = "double";
    private static final String PAGE_MODE_AUTO = "automatic";
    private static final String FIRST_PAGE_ALWAYS_SINGLE = "firstPageAlwaysSingle";

    private final PdfActivityConfiguration.Builder configuration;

    public ConfigurationAdapter(@NonNull Context context, ReadableMap configuration) {
        ReadableMapKeySetIterator iterator = configuration.keySetIterator();
        boolean hasConfiguration = iterator.hasNextKey();
        this.configuration = new PdfActivityConfiguration.Builder(context);
        if (hasConfiguration) {
            if (configuration.hasKey(PAGE_SCROLL_DIRECTION)) {
                configurePageScrollDirection(configuration.getString(PAGE_SCROLL_DIRECTION));
            }
            if (configuration.hasKey(PAGE_SCROLL_CONTINUOUS)) {
                configurePageScrollContinuous(configuration.getBoolean(PAGE_SCROLL_CONTINUOUS));
            }
            if (configuration.hasKey(FIT_PAGE_TO_WIDTH)) {
                configureFitPageToWidth(configuration.getBoolean(FIT_PAGE_TO_WIDTH));
            }
            if (configuration.hasKey(INLINE_SEARCH)) {
                configureInlineSearch(configuration.getBoolean(INLINE_SEARCH));
            }
            if (configuration.hasKey(USER_INTERFACE_VIEW_MODE)) {
                configureUserInterfaceViewMode(configuration.getString(USER_INTERFACE_VIEW_MODE));
            }
            if (configuration.hasKey(START_PAGE)) {
                configureStartPage(configuration.getInt(START_PAGE));
            }
            if (configuration.hasKey(SHOW_SEARCH_ACTION)) {
                configureShowSearchAction(configuration.getBoolean(SHOW_SEARCH_ACTION));
            }
            if (configuration.hasKey(IMMERSIVE_MODE)) {
                configureImmersiveMode(configuration.getBoolean(IMMERSIVE_MODE));
            }
            if (configuration.hasKey(SHOW_THUMBNAIL_GRID_ACTION)) {
                configureShowThumbnailGridAction(configuration.getBoolean(SHOW_THUMBNAIL_GRID_ACTION));
            }
            if (configuration.hasKey(SHOW_OUTLINE_ACTION)) {
                configureShowOutlineAction(configuration.getBoolean(SHOW_OUTLINE_ACTION));
            }
            if (configuration.hasKey(SHOW_ANNOTATION_LIST_ACTION)) {
                configureShowAnnotationListAction(configuration.getBoolean(SHOW_ANNOTATION_LIST_ACTION));
            }
            if (configuration.hasKey(SHOW_PAGE_NUMBER_OVERLAY)) {
                configureShowPageNumberOverlay(configuration.getBoolean(SHOW_PAGE_NUMBER_OVERLAY));
            }
            if (configuration.hasKey(SHOW_PAGE_LABELS)) {
                configureShowPageLabels(configuration.getBoolean(SHOW_PAGE_LABELS));
            }
            if (configuration.hasKey(GRAY_SCALE)) {
                configureGrayScale(configuration.getBoolean(GRAY_SCALE));
            }
            if (configuration.hasKey(INVERT_COLORS)) {
                configureInvertColors(configuration.getBoolean(INVERT_COLORS));
            }
            if (configuration.hasKey(ENABLE_ANNOTATION_EDITING)) {
                configureEnableAnnotationEditing(configuration.getBoolean(ENABLE_ANNOTATION_EDITING));
            }
            if (configuration.hasKey(SHOW_SHARE_ACTION)) {
                configureShowShareAction(configuration.getBoolean(SHOW_SHARE_ACTION));
            }
            if (configuration.hasKey(SHOW_PRINT_ACTION)) {
                configureShowPrintAction(configuration.getBoolean(SHOW_PRINT_ACTION));
            }
            if (configuration.hasKey(ENABLE_TEXT_SELECTION)) {
                configureEnableTextSelection(configuration.getBoolean(ENABLE_TEXT_SELECTION));
            }
            if (configuration.hasKey(SHOW_THUMBNAIL_BAR)) {
                configureShowThumbnailBar(configuration.getString(SHOW_THUMBNAIL_BAR));
            }
            if (configuration.hasKey(SHOW_DOCUMENT_INFO_VIEW)) {
                configureDocumentInfoView(configuration.getBoolean(SHOW_DOCUMENT_INFO_VIEW));
            }
            if (configuration.hasKey(SHOW_DOCUMENT_TITLE_OVERLAY)) {
                configureShowDocumentTitleOverlay(configuration.getBoolean(SHOW_DOCUMENT_TITLE_OVERLAY));
            }
            if (configuration.hasKey(PAGE_MODE)) {
                configurePageMode(configuration.getString(PAGE_MODE));
            }
            if (configuration.hasKey(FIRST_PAGE_ALWAYS_SINGLE)) {
                configureFirstPageAlwaysSingle(configuration.getBoolean(FIRST_PAGE_ALWAYS_SINGLE));
            }
        }
    }

    private void configureShowPageNumberOverlay(boolean showPageNumberOverlay) {
        if (showPageNumberOverlay) {
            configuration.showPageNumberOverlay();
        } else {
            configuration.hidePageNumberOverlay();
        }
    }

    private void configurePageScrollDirection(final String pageScrollDirection) {
        if (pageScrollDirection.equals(PAGE_SCROLL_DIRECTION_HORIZONTAL)) {
            configuration.scrollDirection(PageScrollDirection.HORIZONTAL);
        } else if (pageScrollDirection.equals(PAGE_SCROLL_DIRECTION_VERTICAL)) {
            configuration.scrollDirection(PageScrollDirection.VERTICAL);
        }
    }

    private void configurePageScrollContinuous(final boolean pageScrollContinuous) {
        final PageScrollMode pageScrollMode = pageScrollContinuous ? PageScrollMode.CONTINUOUS
                : PageScrollMode.PER_PAGE;
        configuration.scrollMode(pageScrollMode);
    }

    private void configureFitPageToWidth(boolean fitPageToWidth) {
        final PageFitMode pageFitMode = fitPageToWidth ? PageFitMode.FIT_TO_WIDTH : PageFitMode.FIT_TO_SCREEN;
        configuration.fitMode(pageFitMode);
    }

    private void configureInlineSearch(boolean inlineSearch) {
        final int searchType = inlineSearch ? PdfActivityConfiguration.SEARCH_INLINE
                : PdfActivityConfiguration.SEARCH_MODULAR;
        configuration.setSearchType(searchType);
    }

    private void configureStartPage(int startPage) {
        configuration.page(startPage);
    }

    private void configureUserInterfaceViewMode(String userInterfaceViewMode) {
        UserInterfaceViewMode result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_AUTOMATIC;
        if (userInterfaceViewMode.equals(USER_INTERFACE_VIEW_MODE_AUTOMATIC)) {
            result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_AUTOMATIC;
        } else if (userInterfaceViewMode.equals(USER_INTERFACE_VIEW_MODE_AUTOMATIC_BORDER_PAGES)) {
            result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_AUTOMATIC_BORDER_PAGES;
        } else if (userInterfaceViewMode.equals(USER_INTERFACE_VIEW_MODE_ALWAYS_VISIBLE)) {
            result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_VISIBLE;
        } else if (userInterfaceViewMode.equals(USER_INTERFACE_VIEW_MODE_ALWAYS_HIDDEN)) {
            result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_HIDDEN;
        }
        configuration.setUserInterfaceViewMode(result);
    }

    private void configureShowSearchAction(boolean showSearchAction) {
        if (showSearchAction) {
            configuration.enableSearch();
        } else {
            configuration.disableSearch();
        }
    }

    private void configureImmersiveMode(boolean immersiveMode) {
        configuration.useImmersiveMode(immersiveMode);
    }

    private void configureShowThumbnailBar(String showThumbnailBar) {
        ThumbnailBarMode thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_DEFAULT;
        if (showThumbnailBar.equals(SHOW_THUMBNAIL_BAR_DEFAULT)) {
            thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_DEFAULT;
        } else if (showThumbnailBar.equals(SHOW_THUMBNAIL_BAR_SCROLLABLE)) {
            thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_SCROLLABLE;
        } else if (showThumbnailBar.equals(SHOW_THUMBNAIL_BAR_NONE)) {
            thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_NONE;
        }
        configuration.setThumbnailBarMode(thumbnailBarMode);
    }

    private void configureShowThumbnailGridAction(boolean showThumbnailGridAction) {
        if (showThumbnailGridAction) {
            configuration.showThumbnailGrid();
        } else {
            configuration.hideThumbnailGrid();
        }
    }

    private void configureShowOutlineAction(boolean showOutlineAction) {
        if (showOutlineAction) {
            configuration.enableOutline();
        } else {
            configuration.disableOutline();
        }
    }

    private void configureShowAnnotationListAction(boolean showAnnotationListAction) {
        if (showAnnotationListAction) {
            configuration.enableAnnotationList();
        } else {
            configuration.disableAnnotationList();
        }
    }

    private void configureShowPageLabels(boolean showPageLabels) {
        if (showPageLabels) {
            configuration.showPageLabels();
        } else {
            configuration.hidePageLabels();
        }
    }

    private void configureGrayScale(boolean grayScale) {
        configuration.toGrayscale(grayScale);
    }

    private void configureInvertColors(boolean invertColors) {
        configuration.invertColors(invertColors);
    }

    private void configureEnableAnnotationEditing(boolean enableAnnotationEditing) {
        if (enableAnnotationEditing) {
            configuration.enableAnnotationEditing();
        } else {
            configuration.disableAnnotationEditing();
        }
    }

    private void configureShowShareAction(boolean showShareAction) {
        if (showShareAction) {
            configuration.enableShare();
        } else {
            configuration.disableShare();
        }
    }

    private void configureShowPrintAction(boolean showPrintAction) {
        if (showPrintAction) {
            configuration.enablePrinting();
        } else {
            configuration.disablePrinting();
        }
    }

    private void configureEnableTextSelection(boolean enableTextSelection) {
        configuration.textSelectionEnabled(enableTextSelection);
    }

    private void configureDocumentInfoView(boolean enableDocumentInfoView) {
        if (enableDocumentInfoView) {
            configuration.enableDocumentInfoView();
        } else {
            configuration.disableDocumentInfoView();
        }
    }

    private void configureShowDocumentTitleOverlay(boolean showDocumentTitleOverlay) {
        if (showDocumentTitleOverlay) {
            configuration.showDocumentTitleOverlay();
        } else {
            configuration.hideDocumentTitleOverlay();
        }
    }

    private void configurePageMode(@Nullable final String pageMode) {
        PageLayoutMode pageLayoutMode = PageLayoutMode.AUTO;
        if (pageMode == null || pageMode.equalsIgnoreCase(PAGE_MODE_AUTO)) {
            pageLayoutMode = PageLayoutMode.AUTO;
        } else if (pageMode.equalsIgnoreCase(PAGE_MODE_SINGLE)) {
            pageLayoutMode = PageLayoutMode.SINGLE;
        } else if (pageMode.equalsIgnoreCase(PAGE_MODE_DOUBLE)) {
            pageLayoutMode = PageLayoutMode.DOUBLE;
        }
        configuration.layoutMode(pageLayoutMode);
    }

    private void configureFirstPageAlwaysSingle(final boolean firstPageAlwaysSingle) {
        configuration.firstPageAlwaysSingle(firstPageAlwaysSingle);
    }

    public PdfActivityConfiguration build() {
        return configuration.build();
    }
}