// Path: app/src/main/java/com/newegg/tr/dagger2prac/view/MainPageView.java
// public interface MainPageView {
// 
//     public void showActionResultText(String resultText);
// 
//     public void showInputMethodView(boolean isShow);
// 
//     public void showLoading();
// 
//     public void hideLoading();
// 
//     public void onActionError();
// }
// 
// Path: app/src/main/java/com/newegg/tr/dagger2prac/view/activity/MainActivity.java
// public class MainActivity extends BaseActivity implements MainPageView, AdapterView.OnItemSelectedListener {
// 
//     public static MainComponent component;
// 
//     @Inject
//     MainPresenter mPresenter;
// 
//     @InjectView(R.id.mainPage_messageText)
//     TextView messageTextView;
//     @InjectView(R.id.mainPage_actionSpinner)
//     Spinner actionSpinner;
//     @InjectView(R.id.mainPage_inputEditText)
//     EditText inputText;
//     @InjectView(R.id.mainPage_submitButton)
//     Button submitButton;
//     @InjectView(R.id.mainPage_progress)
//     View progress;
// 
//     @Override
//     protected void onCreateComponent() {
// 
//         MainComponent.Initializer.init(getApplication(), this).inject(this);
//     }
// 
//     @Override
//     protected void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         setContentView(R.layout.activity_main);
//         ButterKnife.inject(this);
// 
//         initSpinner();
//         initSubmitButton();
//     }
// 
//     @Override
//     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//         super.onActivityResult(requestCode, resultCode, data);
//         if (resultCode == Activity.RESULT_OK) {
//             mPresenter.updateUser();
//         }
//     }
// 
//     private void initSubmitButton() {
//         submitButton.setOnClickListener(new View.OnClickListener() {
//             @Override
//             public void onClick(View v) {
// 
//                 if(inputText.getText().toString().isEmpty()) {
//                     MainActivity.this.onActionError();
//                     return;
//                 }
// 
//                 mPresenter.calcFib(Integer.valueOf(inputText.getText().toString()));
//             }
//         });
//     }
// 
//     private void initSpinner() {
//         String[] actionTexts = {"Hello", "Bye", "Fibonacci"};
//         ArrayAdapter<String> actionTextArray = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, actionTexts);
//         actionSpinner.setAdapter(actionTextArray);
//         actionSpinner.setOnItemSelectedListener(this);
//     }
// 
//     @Override
//     public boolean onCreateOptionsMenu(Menu menu) {
//         getMenuInflater().inflate(R.menu.menu_main, menu);
//         return true;
//     }
// 
//     @Override
//     public boolean onOptionsItemSelected(MenuItem item) {
//         int id = item.getItemId();
// 
//         if (id == R.id.action_settings) {
//             Intent intent = new Intent(this, SettingActivity.class);
//             startActivityForResult(intent, 17);
//             return true;
//         }
// 
//         return super.onOptionsItemSelected(item);
//     }
// 
//     @Override
//     public void showActionResultText(String resultText) {
//         messageTextView.setText(resultText);
//     }
// 
//     @Override
//     public void showInputMethodView(boolean isShow) {
//         int status = (isShow) ? View.VISIBLE : View.GONE;
// 
//         inputText.setVisibility(status);
//         submitButton.setVisibility(status);
//     }
// 
//     @Override
//     public void showLoading() {
//         progress.setVisibility(View.VISIBLE);
//     }
// 
//     @Override
//     public void hideLoading() {
//         progress.setVisibility(View.GONE);
//     }
// 
//     @Override
//     public void onActionError() {
//         messageTextView.setText(getString(R.string.main_error));
//     }
// 
//     @Override
//     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//         switch (position) {
//             case 0:
//                 mPresenter.onActionSelected(ActionType.HELLO);
//                 break;
//             case 1:
//                 mPresenter.onActionSelected(ActionType.BYE);
//                 break;
//             case 2:
//                 mPresenter.onActionSelected(ActionType.FIBONACCI);
//                 break;
// 
//         }
//     }
// 
//     @Override
//     public void onNothingSelected(AdapterView<?> parent) {
// 
//     }
// }
// 
// Path: app/src/debug/java/com/newegg/tr/dagger2prac/view/MainTestCase.java
// public class MainTestCase extends ActivityInstrumentationTestCase2<MainActivity> {
// 
//     @Inject
//     protected Action mMockAction;
// 
//     public MainTestCase() {
//         super(MainActivity.class);
//     }
// 
// 
// }
// 
// Path: app/src/debug/java/com/newegg/tr/dagger2prac/view/module/TestMainModule.java
// @Module
// public class TestMainModule {
//     MainPageView mView;
// 
//     @Mock
//     Action mActionModel;
// 
//     public TestMainModule(MainPageView view) {
//         mView = view;
//         MockitoAnnotations.initMocks(this);
//     }
// 
//     @Provides
//     @Singleton
//     public MainPresenter getPresenter(Action action) {
// 
//         return new MainPresenterImpl(mView, action);
//     }
// 
//     @Provides
//     @Singleton
//     public Action getAction() {
//         return mActionModel;
//     }
// }


import android.app.Application;
import com.newegg.tr.dagger2prac.view.MainPageView;
import com.newegg.tr.dagger2prac.view.activity.MainActivity;
import com.newegg.tr.dagger2prac.view.MainTestCase;
import com.newegg.tr.dagger2prac.view.module.TestMainModule;
import javax.inject.Singleton;
import dagger.Component;
package com.newegg.tr.dagger2prac.view.component;






/**
 * Created by william on 15/1/29.
 */
@Singleton
@Component(
// Path: app/src/main/java/com/newegg/tr/dagger2prac/view/MainPageView.java
// public interface MainPageView {
// 
//     public void showActionResultText(String resultText);
// 
//     public void showInputMethodView(boolean isShow);
// 
//     public void showLoading();
// 
//     public void hideLoading();
// 
//     public void onActionError();
// }
// 
// Path: app/src/main/java/com/newegg/tr/dagger2prac/view/activity/MainActivity.java
// public class MainActivity extends BaseActivity implements MainPageView, AdapterView.OnItemSelectedListener {
// 
//     public static MainComponent component;
// 
//     @Inject
//     MainPresenter mPresenter;
// 
//     @InjectView(R.id.mainPage_messageText)
//     TextView messageTextView;
//     @InjectView(R.id.mainPage_actionSpinner)
//     Spinner actionSpinner;
//     @InjectView(R.id.mainPage_inputEditText)
//     EditText inputText;
//     @InjectView(R.id.mainPage_submitButton)
//     Button submitButton;
//     @InjectView(R.id.mainPage_progress)
//     View progress;
// 
//     @Override
//     protected void onCreateComponent() {
// 
//         MainComponent.Initializer.init(getApplication(), this).inject(this);
//     }
// 
//     @Override
//     protected void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         setContentView(R.layout.activity_main);
//         ButterKnife.inject(this);
// 
//         initSpinner();
//         initSubmitButton();
//     }
// 
//     @Override
//     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//         super.onActivityResult(requestCode, resultCode, data);
//         if (resultCode == Activity.RESULT_OK) {
//             mPresenter.updateUser();
//         }
//     }
// 
//     private void initSubmitButton() {
//         submitButton.setOnClickListener(new View.OnClickListener() {
//             @Override
//             public void onClick(View v) {
// 
//                 if(inputText.getText().toString().isEmpty()) {
//                     MainActivity.this.onActionError();
//                     return;
//                 }
// 
//                 mPresenter.calcFib(Integer.valueOf(inputText.getText().toString()));
//             }
//         });
//     }
// 
//     private void initSpinner() {
//         String[] actionTexts = {"Hello", "Bye", "Fibonacci"};
//         ArrayAdapter<String> actionTextArray = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, actionTexts);
//         actionSpinner.setAdapter(actionTextArray);
//         actionSpinner.setOnItemSelectedListener(this);
//     }
// 
//     @Override
//     public boolean onCreateOptionsMenu(Menu menu) {
//         getMenuInflater().inflate(R.menu.menu_main, menu);
//         return true;
//     }
// 
//     @Override
//     public boolean onOptionsItemSelected(MenuItem item) {
//         int id = item.getItemId();
// 
//         if (id == R.id.action_settings) {
//             Intent intent = new Intent(this, SettingActivity.class);
//             startActivityForResult(intent, 17);
//             return true;
//         }
// 
//         return super.onOptionsItemSelected(item);
//     }
// 
//     @Override
//     public void showActionResultText(String resultText) {
//         messageTextView.setText(resultText);
//     }
// 
//     @Override
//     public void showInputMethodView(boolean isShow) {
//         int status = (isShow) ? View.VISIBLE : View.GONE;
// 
//         inputText.setVisibility(status);
//         submitButton.setVisibility(status);
//     }
// 
//     @Override
//     public void showLoading() {
//         progress.setVisibility(View.VISIBLE);
//     }
// 
//     @Override
//     public void hideLoading() {
//         progress.setVisibility(View.GONE);
//     }
// 
//     @Override
//     public void onActionError() {
//         messageTextView.setText(getString(R.string.main_error));
//     }
// 
//     @Override
//     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//         switch (position) {
//             case 0:
//                 mPresenter.onActionSelected(ActionType.HELLO);
//                 break;
//             case 1:
//                 mPresenter.onActionSelected(ActionType.BYE);
//                 break;
//             case 2:
//                 mPresenter.onActionSelected(ActionType.FIBONACCI);
//                 break;
// 
//         }
//     }
// 
//     @Override
//     public void onNothingSelected(AdapterView<?> parent) {
// 
//     }
// }
// 
// Path: app/src/debug/java/com/newegg/tr/dagger2prac/view/MainTestCase.java
// public class MainTestCase extends ActivityInstrumentationTestCase2<MainActivity> {
// 
//     @Inject
//     protected Action mMockAction;
// 
//     public MainTestCase() {
//         super(MainActivity.class);
//     }
// 
// 
// }
// 
// Path: app/src/debug/java/com/newegg/tr/dagger2prac/view/module/TestMainModule.java
// @Module
// public class TestMainModule {
//     MainPageView mView;
// 
//     @Mock
//     Action mActionModel;
// 
//     public TestMainModule(MainPageView view) {
//         mView = view;
//         MockitoAnnotations.initMocks(this);
//     }
// 
//     @Provides
//     @Singleton
//     public MainPresenter getPresenter(Action action) {
// 
//         return new MainPresenterImpl(mView, action);
//     }
// 
//     @Provides
//     @Singleton
//     public Action getAction() {
//         return mActionModel;
//     }
// }


// Path: app/src/debug/java/com/newegg/tr/dagger2prac/view/component/MainComponent.java
import android.app.Application;
import com.newegg.tr.dagger2prac.view.MainPageView;
import com.newegg.tr.dagger2prac.view.activity.MainActivity;
import com.newegg.tr.dagger2prac.view.MainTestCase;
import com.newegg.tr.dagger2prac.view.module.TestMainModule;
import javax.inject.Singleton;
import dagger.Component;

package com.newegg.tr.dagger2prac.view.component;






/**
 * Created by william on 15/1/29.
 */
@Singleton
@Component(
        modules = TestMainModule.class