This repository has been archived by the owner on Feb 4, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from freefair/develop
develop -> master
- Loading branch information
Showing
41 changed files
with
558 additions
and
508 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 0 additions & 8 deletions
8
injection/src/main/java/io/freefair/android/injection/DefaultModule.java
This file was deleted.
Oops, something went wrong.
2 changes: 2 additions & 0 deletions
2
injection/src/main/java/io/freefair/android/injection/InjectionModule.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,7 @@ | ||
package io.freefair.android.injection; | ||
|
||
import io.freefair.android.injection.injector.InjectionContainer; | ||
|
||
public interface InjectionModule { | ||
void configure(InjectionContainer injectionContainer); | ||
} |
2 changes: 2 additions & 0 deletions
2
injection/src/main/java/io/freefair/android/injection/InjectionProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 2 additions & 0 deletions
2
injection/src/main/java/io/freefair/android/injection/InjectorProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,7 @@ | ||
package io.freefair.android.injection; | ||
|
||
import io.freefair.android.injection.injector.Injector; | ||
|
||
public interface InjectorProvider { | ||
Injector getInjector(); | ||
} |
23 changes: 0 additions & 23 deletions
23
injection/src/main/java/io/freefair/android/injection/TypeRegistration.java
This file was deleted.
Oops, something went wrong.
93 changes: 93 additions & 0 deletions
93
injection/src/main/java/io/freefair/android/injection/app/InjectionAppCompatActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
package io.freefair.android.injection.app; | ||
|
||
import android.content.res.Configuration; | ||
import android.os.Bundle; | ||
import android.support.v7.app.AppCompatActivity; | ||
import android.view.Menu; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
|
||
import io.freefair.android.injection.InjectorProvider; | ||
import io.freefair.android.injection.annotation.Inject; | ||
import io.freefair.android.injection.annotation.XmlLayout; | ||
import io.freefair.android.injection.annotation.XmlMenu; | ||
import io.freefair.android.injection.injector.ActivityInjector; | ||
import io.freefair.android.util.function.Optional; | ||
|
||
|
||
/** | ||
* An {@link AppCompatActivity} with support for dependency injection | ||
*/ | ||
@SuppressWarnings("unused") | ||
public class InjectionAppCompatActivity extends AppCompatActivity implements InjectorProvider { | ||
|
||
private ActivityInjector injector; | ||
|
||
@Inject | ||
protected Optional<XmlMenu> xmlMenuAnnotation; | ||
@Inject | ||
protected Optional<XmlLayout> xmlLayoutAnnotation; | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
injector = new ActivityInjector(this); | ||
injector.inject(this); | ||
|
||
if (xmlLayoutAnnotation.isPresent()) { | ||
setContentView(xmlLayoutAnnotation.get().value()); | ||
} | ||
|
||
injector.injectResources(); | ||
injector.injectAttributes(); | ||
} | ||
|
||
@Override | ||
public void setContentView(int layoutResID) { | ||
super.setContentView(layoutResID); | ||
injector.injectViews(); | ||
} | ||
|
||
@Override | ||
public void setContentView(View view) { | ||
super.setContentView(view); | ||
injector.injectViews(); | ||
} | ||
|
||
@Override | ||
public void setContentView(View view, ViewGroup.LayoutParams params) { | ||
super.setContentView(view, params); | ||
injector.injectViews(); | ||
} | ||
|
||
@Override | ||
public void onConfigurationChanged(Configuration newConfig) { | ||
super.onConfigurationChanged(newConfig); | ||
injector.injectResources(); | ||
injector.injectAttributes(); | ||
} | ||
|
||
@Override | ||
public void setTheme(int resid) { | ||
super.setTheme(resid); | ||
if (injector != null) { | ||
injector.injectResources(); | ||
injector.injectAttributes(); | ||
} | ||
} | ||
|
||
@Override | ||
public boolean onCreateOptionsMenu(Menu menu) { | ||
if (xmlMenuAnnotation.isPresent()) { | ||
getMenuInflater().inflate(xmlMenuAnnotation.get().value(), menu); | ||
super.onCreateOptionsMenu(menu); | ||
return true; | ||
} | ||
return super.onCreateOptionsMenu(menu); | ||
} | ||
|
||
@Override | ||
public ActivityInjector getInjector() { | ||
return injector; | ||
} | ||
} |
35 changes: 35 additions & 0 deletions
35
injection/src/main/java/io/freefair/android/injection/app/InjectionApplication.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package io.freefair.android.injection.app; | ||
|
||
import android.app.Application; | ||
|
||
import io.freefair.android.injection.InjectionModule; | ||
import io.freefair.android.injection.injector.InjectionContainer; | ||
import io.freefair.android.injection.InjectorProvider; | ||
import io.freefair.android.util.function.Suppliers; | ||
|
||
/** | ||
* An {@link Application} with support for dependency injection | ||
*/ | ||
@SuppressWarnings("unused") | ||
public class InjectionApplication extends Application implements InjectorProvider { | ||
|
||
private InjectionContainer injector = InjectionContainer.getInstance(); | ||
|
||
public InjectionApplication() { | ||
injector.registerSupplier(InjectionApplication.class, Suppliers.of(this)); | ||
} | ||
|
||
@Override | ||
public void onCreate() { | ||
super.onCreate(); | ||
injector.inject(this); | ||
} | ||
|
||
public InjectionContainer getInjector() { | ||
return injector; | ||
} | ||
|
||
public void addModule(InjectionModule injectionModule) { | ||
injectionModule.configure(getInjector()); | ||
} | ||
} |
83 changes: 83 additions & 0 deletions
83
injection/src/main/java/io/freefair/android/injection/app/InjectionFragment.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
package io.freefair.android.injection.app; | ||
|
||
import android.content.res.Configuration; | ||
import android.os.Bundle; | ||
import android.support.annotation.Nullable; | ||
import android.support.v4.app.Fragment; | ||
import android.view.LayoutInflater; | ||
import android.view.Menu; | ||
import android.view.MenuInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
|
||
import io.freefair.android.injection.injector.Injector; | ||
import io.freefair.android.injection.InjectorProvider; | ||
import io.freefair.android.injection.annotation.Inject; | ||
import io.freefair.android.injection.annotation.XmlLayout; | ||
import io.freefair.android.injection.annotation.XmlMenu; | ||
import io.freefair.android.injection.injector.FragmentInjector; | ||
import io.freefair.android.util.function.Optional; | ||
|
||
@SuppressWarnings("unused") | ||
public class InjectionFragment extends Fragment implements InjectorProvider { | ||
|
||
private FragmentInjector injector; | ||
|
||
@Inject | ||
Optional<XmlMenu> xmlMenuAnnotation; | ||
@Inject | ||
Optional<XmlLayout> xmlLayoutAnnotation; | ||
|
||
@Override | ||
public void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
|
||
Injector parentInjector = null; | ||
if (getActivity() instanceof InjectorProvider) { | ||
parentInjector = ((InjectorProvider) getActivity()).getInjector(); | ||
} | ||
injector = new FragmentInjector(this, parentInjector); | ||
injector.inject(this); | ||
if (xmlMenuAnnotation.isPresent()) { | ||
setHasOptionsMenu(true); | ||
} | ||
|
||
injector.injectResources(); | ||
injector.injectAttributes(); | ||
|
||
} | ||
|
||
@Override | ||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { | ||
if (xmlLayoutAnnotation.isPresent()) { | ||
return inflater.inflate(xmlLayoutAnnotation.get().value(), container, false); | ||
} | ||
return super.onCreateView(inflater, container, savedInstanceState); | ||
} | ||
|
||
@Override | ||
public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) { | ||
super.onViewCreated(view, savedInstanceState); | ||
injector.injectViews(); | ||
} | ||
|
||
@Override | ||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { | ||
if (xmlMenuAnnotation.isPresent()) { | ||
inflater.inflate(xmlMenuAnnotation.get().value(), menu); | ||
} | ||
super.onCreateOptionsMenu(menu, inflater); | ||
} | ||
|
||
@Override | ||
public void onConfigurationChanged(Configuration newConfig) { | ||
super.onConfigurationChanged(newConfig); | ||
injector.injectResources(); | ||
injector.injectAttributes(); | ||
} | ||
|
||
@Override | ||
public FragmentInjector getInjector() { | ||
return injector; | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
injection/src/main/java/io/freefair/android/injection/app/InjectionService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package io.freefair.android.injection.app; | ||
|
||
import android.app.Service; | ||
|
||
import io.freefair.android.injection.injector.Injector; | ||
import io.freefair.android.injection.InjectorProvider; | ||
import io.freefair.android.injection.injector.ServiceInjector; | ||
|
||
/** | ||
* A {@link Service} with support for dependency injection | ||
*/ | ||
@SuppressWarnings("unused") | ||
public abstract class InjectionService extends Service implements InjectorProvider { | ||
|
||
private ServiceInjector injector; | ||
|
||
@Override | ||
public void onCreate() { | ||
super.onCreate(); | ||
|
||
Injector parentInjector = null; | ||
if (getApplication() instanceof InjectionApplication) { | ||
parentInjector = ((InjectionApplication) getApplication()).getInjector(); | ||
} | ||
injector = new ServiceInjector(parentInjector, this); | ||
injector.inject(this); | ||
} | ||
|
||
@Override | ||
public Injector getInjector() { | ||
return injector; | ||
} | ||
} |
63 changes: 63 additions & 0 deletions
63
injection/src/main/java/io/freefair/android/injection/app/InjectionWearableActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
package io.freefair.android.injection.app; | ||
|
||
import android.app.Activity; | ||
import android.os.Bundle; | ||
import android.support.wearable.view.WatchViewStub; | ||
|
||
import io.freefair.android.injection.injector.InjectionContainer; | ||
import io.freefair.android.injection.injector.Injector; | ||
import io.freefair.android.injection.InjectorProvider; | ||
import io.freefair.android.injection.exceptions.ViewIdNotFoundException; | ||
import io.freefair.android.injection.injector.WatchViewStubActivityInjector; | ||
|
||
/** | ||
* @author Dennis Fricke | ||
*/ | ||
@SuppressWarnings("unused") | ||
public abstract class InjectionWearableActivity extends Activity implements InjectorProvider { | ||
WatchViewStubActivityInjector injector; | ||
|
||
Injector parentInjector; | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
parentInjector = InjectionContainer.getInstance(); | ||
parentInjector.inject(this); | ||
|
||
} | ||
|
||
public void setContentView(int layoutResID, int viewStubID) { | ||
super.setContentView(layoutResID); | ||
final WatchViewStub stub = (WatchViewStub) findViewById(viewStubID); | ||
|
||
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { | ||
@Override | ||
public void onLayoutInflated(WatchViewStub stub) { | ||
injector = new WatchViewStubActivityInjector(InjectionWearableActivity.this, stub, parentInjector); | ||
|
||
injector.injectResources(); | ||
injector.injectAttributes(); | ||
|
||
tryInjectViews(); | ||
|
||
onLayoutReady(); | ||
} | ||
}); | ||
} | ||
|
||
private void tryInjectViews() { | ||
try { | ||
injector.injectViews(); | ||
} catch (ViewIdNotFoundException e) { | ||
throw new RuntimeException(e); | ||
} | ||
} | ||
|
||
protected abstract void onLayoutReady(); | ||
|
||
@Override | ||
public WatchViewStubActivityInjector getInjector() { | ||
return injector; | ||
} | ||
} |
Oops, something went wrong.