// Path: app/src/main/java/io/github/kobakei/anago/fragment/BaseFragment.java
// public abstract class BaseFragment extends RxFragment{
// 
//     private FragmentViewModel viewModel;
// 
//     /**
//      * DI
//      * @return
//      */
//     protected FragmentComponent getInjector() {
//         AnagoApplication application = (AnagoApplication) getContext().getApplicationContext();
//         return application.getInjector().fragmentComponent(new FragmentModule(this));
//     }
// 
//     /**
//      * ビューモデルをこのフラグメントにバインドする
//      * フラグメントのライフサイクルイベント発生時に、ビューモデルの対応するメソッドが呼ばれるようになります
//      * @param viewModel
//      */
//     protected void bindViewModel(FragmentViewModel viewModel) {
//         this.viewModel = viewModel;
//     }
// 
//     @Override
//     public void onStart() {
//         super.onStart();
//         checkViewModel();
//         viewModel.onStart();
//     }
// 
//     @Override
//     public void onResume() {
//         super.onResume();
//         checkViewModel();
//         viewModel.onResume();
//     }
// 
//     @Override
//     public void onPause() {
//         super.onPause();
//         checkViewModel();
//         viewModel.onPause();
//     }
// 
//     @Override
//     public void onStop() {
//         super.onStop();
//         checkViewModel();
//         viewModel.onStop();
//     }
// 
//     private void checkViewModel() {
//         if (viewModel == null) {
//             throw new IllegalStateException("Before resuming fragment, bindViewModel must be called.");
//         }
//     }
// }


import android.content.Context;
import android.support.annotation.NonNull;
import com.trello.rxlifecycle.LifecycleTransformer;
import io.github.kobakei.anago.fragment.BaseFragment;
package io.github.kobakei.anago.viewmodel.base;




/**
 * ビューモデルのベースクラス
 * 対応するビュー（Activity/Fragment/View）をコンストラクタで受け取ります。
 * これはActivity Contextへのアクセスと、RxLifecycleのLifecycleTransformerの取得に使うためです。
 * こうすることで、RxJavaのObservableをsubscribeする際に、ビューのライフサイクルに応じて自動的に非同期処理が中断されます。
 *
 * Created by keisuke on 2016/09/18.
 */

public abstract class FragmentViewModel {

    private final BaseFragment fragment;

    public FragmentViewModel(BaseFragment fragment) {
        this.fragment = fragment;
    }

    @Deprecated
// Path: app/src/main/java/io/github/kobakei/anago/fragment/BaseFragment.java
// public abstract class BaseFragment extends RxFragment{
// 
//     private FragmentViewModel viewModel;
// 
//     /**
//      * DI
//      * @return
//      */
//     protected FragmentComponent getInjector() {
//         AnagoApplication application = (AnagoApplication) getContext().getApplicationContext();
//         return application.getInjector().fragmentComponent(new FragmentModule(this));
//     }
// 
//     /**
//      * ビューモデルをこのフラグメントにバインドする
//      * フラグメントのライフサイクルイベント発生時に、ビューモデルの対応するメソッドが呼ばれるようになります
//      * @param viewModel
//      */
//     protected void bindViewModel(FragmentViewModel viewModel) {
//         this.viewModel = viewModel;
//     }
// 
//     @Override
//     public void onStart() {
//         super.onStart();
//         checkViewModel();
//         viewModel.onStart();
//     }
// 
//     @Override
//     public void onResume() {
//         super.onResume();
//         checkViewModel();
//         viewModel.onResume();
//     }
// 
//     @Override
//     public void onPause() {
//         super.onPause();
//         checkViewModel();
//         viewModel.onPause();
//     }
// 
//     @Override
//     public void onStop() {
//         super.onStop();
//         checkViewModel();
//         viewModel.onStop();
//     }
// 
//     private void checkViewModel() {
//         if (viewModel == null) {
//             throw new IllegalStateException("Before resuming fragment, bindViewModel must be called.");
//         }
//     }
// }


// Path: app/src/main/java/io/github/kobakei/anago/viewmodel/base/FragmentViewModel.java
import android.content.Context;
import android.support.annotation.NonNull;
import com.trello.rxlifecycle.LifecycleTransformer;
import io.github.kobakei.anago.fragment.BaseFragment;

package io.github.kobakei.anago.viewmodel.base;




/**
 * ビューモデルのベースクラス
 * 対応するビュー（Activity/Fragment/View）をコンストラクタで受け取ります。
 * これはActivity Contextへのアクセスと、RxLifecycleのLifecycleTransformerの取得に使うためです。
 * こうすることで、RxJavaのObservableをsubscribeする際に、ビューのライフサイクルに応じて自動的に非同期処理が中断されます。
 *
 * Created by keisuke on 2016/09/18.
 */

public abstract class FragmentViewModel {

    private final BaseFragment fragment;

    public FragmentViewModel(BaseFragment fragment) {
        this.fragment = fragment;
    }

    @Deprecated
    public BaseFragment getFragment() {