package org.holoeverywhere.addon;
import android.os.Bundle;
import android.view.View;
import org.holoeverywhere.R;
import org.holoeverywhere.app.Activity;
import org.holoeverywhere.app.Fragment;
import org.holoeverywhere.app.TabSwipeController;
import org.holoeverywhere.app.TabSwipeController.TabInfo;
import org.holoeverywhere.app.TabSwipeInterface;
import org.holoeverywhere.widget.ViewPager;
public class AddonTabber extends IAddon {
public AddonTabber() {
registerActivity(AddonTabberA.class);
registerFragment(AddonTabberF.class);
}
public static interface AddonTabberCallback {
public void onHandleTabs();
}
public static class AddonTabberA extends IAddonActivity implements TabSwipeInterface<TabInfo> {
private TabSwipeController mController;
private AddonTabberCallback mTabberCallback;
@Override
public int getCurrentTab() {
return mController.getCurrentTab();
}
@Override
public void setCurrentTab(int position) {
mController.setCurrentTab(position);
}
@Override
public TabInfo getTabAt(int position) {
return mController.getTabAt(position);
}
@Override
public TabInfo addTab(CharSequence title, Class<? extends Fragment> fragmentClass) {
return mController.addTab(title, fragmentClass);
}
@Override
public TabInfo addTab(CharSequence title, Class<? extends Fragment> fragmentClass,
Bundle fragmentArguments) {
return mController.addTab(title, fragmentClass, fragmentArguments);
}
@Override
public TabInfo addTab(int title, Class<? extends Fragment> fragmentClass) {
return mController.addTab(title, fragmentClass);
}
@Override
public TabInfo addTab(int title, Class<? extends Fragment> fragmentClass,
Bundle fragmentArguments) {
return mController.addTab(title, fragmentClass, fragmentArguments);
}
@Override
public TabInfo addTab(TabInfo tabInfo) {
return mController.addTab(tabInfo);
}
@Override
public TabInfo addTab(TabInfo tabInfo, int position) {
return mController.addTab(tabInfo, position);
}
protected TabSwipeController createController() {
return new TabSwipeController(get(),
get().getSupportFragmentManager(), get().getSupportActionBar()) {
@Override
protected void onHandleTabs() {
AddonTabberA.this.onHandleTabs();
}
};
}
@Override
public OnTabSelectedListener getOnTabSelectedListener() {
return mController.getOnTabSelectedListener();
}
@Override
public void setOnTabSelectedListener(OnTabSelectedListener onTabSelectedListener) {
mController.setOnTabSelectedListener(onTabSelectedListener);
}
public AddonTabberCallback getTabberCallback() {
return mTabberCallback;
}
public void setTabberCallback(AddonTabberCallback tabberCallback) {
mTabberCallback = tabberCallback;
}
@Override
public boolean isSmoothScroll() {
return mController.isSmoothScroll();
}
@Override
public void setSmoothScroll(boolean smoothScroll) {
mController.setSmoothScroll(smoothScroll);
}
@Override
public boolean isSwipeEnabled() {
return mController.isSwipeEnabled();
}
@Override
public void setSwipeEnabled(boolean swipeEnabled) {
mController.setSwipeEnabled(swipeEnabled);
}
@Override
protected void onAttach(Activity object) {
super.onAttach(object);
if (object instanceof AddonTabberCallback) {
mTabberCallback = (AddonTabberCallback) object;
}
}
@Override
public void onContentChanged() {
final ViewPager viewPager = (ViewPager) get().findViewById(R.id.tabSwipePager);
if (viewPager == null) {
throw new IllegalStateException("Add ViewPager with id @+id/tabSwipePager to your "
+ this + " fragment");
}
if (mController == null) {
mController = createController();
}
mController.bind(viewPager);
}
protected void onHandleTabs() {
if (mTabberCallback != null) {
mTabberCallback.onHandleTabs();
}
}
@Override
public void onPostCreate(Bundle savedInstanceState) {
if (!get().isDecorViewInited()) {
get().setContentView(R.layout.tab_swipe);
}
}
@Override
public void reloadTabs() {
mController.reloadTabs();
}
@Override
public void removeAllTabs() {
mController.removeAllTabs();
}
@Override
public TabInfo removeTab(int position) {
return mController.removeTab(position);
}
@Override
public TabInfo removeTab(TabInfo tabInfo) {
return mController.removeTab(tabInfo);
}
}
public static class AddonTabberF extends IAddonFragment implements TabSwipeInterface<TabInfo> {
private TabSwipeController mController;
private AddonTabberCallback mTabberCallback;
@Override
public int getCurrentTab() {
return mController.getCurrentTab();
}
@Override
public void setCurrentTab(int position) {
mController.setCurrentTab(position);
}
@Override
public TabInfo getTabAt(int position) {
return mController.getTabAt(position);
}
@Override
public TabInfo addTab(CharSequence title, Class<? extends Fragment> fragmentClass) {
return mController.addTab(title, fragmentClass);
}
@Override
public TabInfo addTab(CharSequence title, Class<? extends Fragment> fragmentClass,
Bundle fragmentArguments) {
return mController.addTab(title, fragmentClass, fragmentArguments);
}
@Override
public TabInfo addTab(int title, Class<? extends Fragment> fragmentClass) {
return mController.addTab(title, fragmentClass);
}
@Override
public TabInfo addTab(int title, Class<? extends Fragment> fragmentClass,
Bundle fragmentArguments) {
return mController.addTab(title, fragmentClass, fragmentArguments);
}
@Override
public TabInfo addTab(TabInfo tabInfo) {
return mController.addTab(tabInfo);
}
@Override
public TabInfo addTab(TabInfo tabInfo, int position) {
return mController.addTab(tabInfo, position);
}
protected TabSwipeController createController() {
return new TabSwipeController(get().getActivity(),
get().getChildFragmentManager(), get().getSupportActionBar()) {
@Override
protected void onHandleTabs() {
AddonTabberF.this.onHandleTabs();
}
};
}
@Override
public OnTabSelectedListener getOnTabSelectedListener() {
return mController.getOnTabSelectedListener();
}
@Override
public void setOnTabSelectedListener(OnTabSelectedListener onTabSelectedListener) {
mController.setOnTabSelectedListener(onTabSelectedListener);
}
public AddonTabberCallback getTabberCallback() {
return mTabberCallback;
}
public void setTabberCallback(AddonTabberCallback tabberCallback) {
mTabberCallback = tabberCallback;
}
@Override
public boolean isSmoothScroll() {
return mController.isSmoothScroll();
}
@Override
public void setSmoothScroll(boolean smoothScroll) {
mController.setSmoothScroll(smoothScroll);
}
@Override
public boolean isSwipeEnabled() {
return mController.isSwipeEnabled();
}
@Override
public void setSwipeEnabled(boolean swipeEnabled) {
mController.setSwipeEnabled(swipeEnabled);
}
@Override
protected void onAttach(Fragment object) {
super.onAttach(object);
if (object instanceof AddonTabberCallback) {
mTabberCallback = (AddonTabberCallback) object;
}
}
@Override
public void onDestroyView() {
if (mController != null) {
mController.onDestroyView();
}
}
protected void onHandleTabs() {
if (mTabberCallback != null) {
mTabberCallback.onHandleTabs();
}
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
final ViewPager viewPager = (ViewPager) view.findViewById(R.id.tabSwipePager);
if (viewPager == null) {
throw new IllegalStateException("Add ViewPager with id @+id/tabSwipePager to your "
+ this + " fragment");
}
mController = createController();
mController.bind(viewPager);
}
@Override
public void reloadTabs() {
mController.reloadTabs();
}
@Override
public void removeAllTabs() {
mController.removeAllTabs();
}
@Override
public TabInfo removeTab(int position) {
return mController.removeTab(position);
}
@Override
public TabInfo removeTab(TabInfo tabInfo) {
return mController.removeTab(tabInfo);
}
}
}