/*
 *    Copyright (C) 2015 Haruki Hasegawa
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

package com.h6ah4i.android.example.tablayouthelper;

import android.graphics.Color;
import androidx.annotation.NonNull;
import com.google.android.material.tabs.TabLayout;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;

import com.h6ah4i.android.tablayouthelper.TabLayoutHelper;

public class CustomTabLayoutHelper extends TabLayoutHelper {
    private static final int[] TAB_COLOR_MAP = new int[]{
            0xfff44336, // red
            0xffe91e63, // pink
            0xff9c27b0, // purple
            0xff7e57c2, // deep purple
            0xff3f51b5, // indigo
            0xff2196f3, // blue
            0xff03a9f4, // light blue
            0xff00bcd4, // cyan
            0xff009688, // teal
            0xff4caf50, // green
            0xff8bc34a, // light green
            0xffcddc39, // lime
            0xffffeb3b, // yellow
            0xffffc107, // amber
            0xffff9800, // orange
            0xffff5722, // deep orange
    };

    public CustomTabLayoutHelper(@NonNull TabLayout tabLayout, @NonNull ViewPager viewPager) {
        super(tabLayout, viewPager);
    }

    @Override
    protected TabLayout.Tab onCreateTab(TabLayout tabLayout, PagerAdapter adapter, int position) {
        // NOTE: should not call super method here!

        TabLayout.Tab tab = tabLayout.newTab();
        tab.setText(adapter.getPageTitle(position));
        View v = LayoutInflater.from(tabLayout.getContext()).inflate(R.layout.custom_tab, tabLayout, false);
        tab.setCustomView(v);

        return tab;
    }

    @Override
    protected void onUpdateTab(TabLayout.Tab tab) {
        super.onUpdateTab(tab);

        int position = tab.getPosition();
        View v = tab.getCustomView();
        TextView tv = (TextView) v.findViewById(R.id.text);

        tv.setTextColor(Color.WHITE);
        tv.setText(tab.getText());

        v.setBackgroundColor(getTabColor(position));
    }

    private static int getTabColor(int position) {
        return TAB_COLOR_MAP[position % TAB_COLOR_MAP.length];
    }
}
