package example.com.pagetransformerdemo;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

import example.com.pagetransformerdemo.transformers.BasePageTransformer;
import example.com.pagetransformerdemo.transformers.ColorTransformer;
import example.com.pagetransformerdemo.transformers.CubeTransformer;
import example.com.pagetransformerdemo.transformers.DefaultTransformer;
import example.com.pagetransformerdemo.transformers.DownTransformer;
import example.com.pagetransformerdemo.transformers.RotationTransformer;
import example.com.pagetransformerdemo.transformers.TextSwitchColorTransformer;
import example.com.pagetransformerdemo.transformers.TextSwitchTransformer;
import example.com.pagetransformerdemo.transformers.TextTransformer;
import example.com.pagetransformerdemo.transformers.UpTransformer;

public class MainActivity extends AppCompatActivity {

	private static final BasePageTransformer[] PAGE_TRANSFORMERS = new BasePageTransformer[] {
			new DefaultTransformer(),
			new ColorTransformer(),
			new CubeTransformer(),
			new DownTransformer(),
			new UpTransformer(),
			new RotationTransformer(),
			new TextTransformer(),
			new TextSwitchTransformer(),
			new TextSwitchColorTransformer()
	};
	private ViewPager mViewPager;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
		setSupportActionBar(toolbar);
		//noinspection ConstantConditions
		getSupportActionBar().setDisplayShowTitleEnabled(false);

		setSpinner();

		mViewPager = (ViewPager) findViewById(R.id.viewPager);
		mViewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
		mViewPager.setPageTransformer(false, new ColorTransformer());
	}

	private void setSpinner() {
		final Spinner navigationSpinner = (Spinner) findViewById(R.id.spinner_nav);
		navigationSpinner.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item,
				PAGE_TRANSFORMERS));
		navigationSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
			@Override
			public void onItemSelected(final AdapterView<?> parent, final View view, final int position, final long
					id) {
				mViewPager.setPageTransformer(false, PAGE_TRANSFORMERS[position]);
			}

			@Override
			public void onNothingSelected(final AdapterView<?> parent) {
				mViewPager.setPageTransformer(false, PAGE_TRANSFORMERS[0]);
			}
		});
	}

	public enum Content {
		ONE("1", Color.GREEN),
		TWO("2", Color.YELLOW),
		THREE("3", Color.RED),
		FOUR("4", Color.BLUE),
		FIVE("5", Color.CYAN),
		SIX("6", Color.LTGRAY),
		SEVEN("7", Color.MAGENTA),
		EIGHT("8", Color.DKGRAY);

		private final String mText;
		private final int mColor;

		Content(final String text, final int color) {
			mText = text;
			mColor = color;
		}

		public String getText() {
			return mText;
		}

		public int getColor() {
			return mColor;
		}
	}

	private static class ViewPagerAdapter extends FragmentPagerAdapter {

		public ViewPagerAdapter(final FragmentManager fm) {
			super(fm);
		}

		@Override
		public Fragment getItem(final int position) {
			return PageFragment.newInstance(position);
		}

		@Override
		public int getCount() {
			return Content.values().length;
		}
	}
}