package com.reactnativenavigation.layouts; import android.support.v7.app.AppCompatActivity; import android.util.Log; import com.reactnativenavigation.params.ActivityParams; public class LayoutFactory { public static Layout create(AppCompatActivity activity, ActivityParams params) { switch (params.type) { case TabBased: return createBottomTabsScreenLayout(activity, params); case SingleScreen: default: return createSingleScreenLayout(activity, params); } } private static Layout createSingleScreenLayout(AppCompatActivity activity, ActivityParams params) { return new SingleScreenLayout(activity, params.leftSideMenuParams, params.rightSideMenuParams, params.screenParams); } private static Layout createBottomTabsScreenLayout(AppCompatActivity activity, ActivityParams params) { if (params.tabParams.size() > 5) { removeAllButTheFirst5Tabs(params); } return new BottomTabsLayout(activity, params); } private static void removeAllButTheFirst5Tabs(ActivityParams params) { Log.e("Navigation", "LayoutFactory:createBottomTabsScreenLayout() does not support more than 5 tabs, currently"); while (params.tabParams.size() > 5) { params.tabParams.remove(params.tabParams.size() - 1); } } }