// Path: app/src/main/java/com/github/aleksandermielczarek/napkinexample/module/ActivityModule.java
// @Module
// @ActivityScope
// public class ActivityModule extends NapkinActivityModule {
// 
//     public ActivityModule(AppCompatActivity activity) {
//         super(activity);
//     }
// 
//     @Provides
//     @ActivityString
//     String provideNapkinString() {
//         return "Hello Napkin in Activity!";
//     }
// }
// 
// Path: app/src/main/java/com/github/aleksandermielczarek/napkinexample/module/FragmentModule.java
// @Module
// @FragmentScope
// public class FragmentModule extends NapkinFragmentModule {
// 
//     public FragmentModule(Fragment fragment) {
//         super(fragment);
//     }
// 
//     @Provides
//     @FragmentString
//     String provideNapkinString() {
//         return "Hello Napkin in Fragment!";
//     }
// }
// 
// Path: app/src/main/java/com/github/aleksandermielczarek/napkinexample/ui/MainActivity.java
// public class MainActivity extends AppCompatActivity implements ComponentProvider<ActivityComponent> {
// 
//     @Inject
//     protected MainViewModel mainViewModel;
// 
//     private ActivityComponent activityComponent;
// 
//     @Override
//     protected void onCreate(@Nullable Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         activityComponent = Napkin.<AppComponent>provideAppComponent(this)
//                 .with(new ActivityModule(this));
// 
//         activityComponent.inject(this);
//         ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
//         binding.setViewModel(mainViewModel);
//     }
// 
//     @Override
//     public ActivityComponent provideComponent() {
//         return activityComponent;
//     }
// }


import com.github.aleksandermielczarek.napkin.scope.ActivityScope;
import com.github.aleksandermielczarek.napkinexample.module.ActivityModule;
import com.github.aleksandermielczarek.napkinexample.module.FragmentModule;
import com.github.aleksandermielczarek.napkinexample.ui.MainActivity;
import dagger.Subcomponent;
package com.github.aleksandermielczarek.napkinexample.component;




/**
 * Created by Aleksander Mielczarek on 13.05.2016.
 */
@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {

    FragmentComponent with(FragmentModule fragmentModule);

// Path: app/src/main/java/com/github/aleksandermielczarek/napkinexample/module/ActivityModule.java
// @Module
// @ActivityScope
// public class ActivityModule extends NapkinActivityModule {
// 
//     public ActivityModule(AppCompatActivity activity) {
//         super(activity);
//     }
// 
//     @Provides
//     @ActivityString
//     String provideNapkinString() {
//         return "Hello Napkin in Activity!";
//     }
// }
// 
// Path: app/src/main/java/com/github/aleksandermielczarek/napkinexample/module/FragmentModule.java
// @Module
// @FragmentScope
// public class FragmentModule extends NapkinFragmentModule {
// 
//     public FragmentModule(Fragment fragment) {
//         super(fragment);
//     }
// 
//     @Provides
//     @FragmentString
//     String provideNapkinString() {
//         return "Hello Napkin in Fragment!";
//     }
// }
// 
// Path: app/src/main/java/com/github/aleksandermielczarek/napkinexample/ui/MainActivity.java
// public class MainActivity extends AppCompatActivity implements ComponentProvider<ActivityComponent> {
// 
//     @Inject
//     protected MainViewModel mainViewModel;
// 
//     private ActivityComponent activityComponent;
// 
//     @Override
//     protected void onCreate(@Nullable Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         activityComponent = Napkin.<AppComponent>provideAppComponent(this)
//                 .with(new ActivityModule(this));
// 
//         activityComponent.inject(this);
//         ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
//         binding.setViewModel(mainViewModel);
//     }
// 
//     @Override
//     public ActivityComponent provideComponent() {
//         return activityComponent;
//     }
// }


// Path: app/src/main/java/com/github/aleksandermielczarek/napkinexample/component/ActivityComponent.java
import com.github.aleksandermielczarek.napkin.scope.ActivityScope;
import com.github.aleksandermielczarek.napkinexample.module.ActivityModule;
import com.github.aleksandermielczarek.napkinexample.module.FragmentModule;
import com.github.aleksandermielczarek.napkinexample.ui.MainActivity;
import dagger.Subcomponent;

package com.github.aleksandermielczarek.napkinexample.component;




/**
 * Created by Aleksander Mielczarek on 13.05.2016.
 */
@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {

    FragmentComponent with(FragmentModule fragmentModule);

    void inject(MainActivity mainActivity);