Skip to content

Commit

Permalink
Updated a few version numbers. Added automatic injection in custom views
Browse files Browse the repository at this point in the history
Conflicts:
	.gitignore
	astroboy/pom.xml
	roboguice/pom.xml
	roboguice/src/main/java/roboguice/activity/RoboActivity.java
	roboguice/src/test/java/roboguice/view/ViewInjectionTest.java
  • Loading branch information
stephanenicolas authored and Mike Burton committed Jan 9, 2014
1 parent 5e6ce9a commit f335f01
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 3 deletions.
4 changes: 4 additions & 0 deletions astroboy/res/layout/main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,8 @@
android:layout_gravity="center"
android:text="Self Destruct"/>

<org.roboguice.astroboy.view.CustomView
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>"

</LinearLayout>
21 changes: 21 additions & 0 deletions astroboy/res/layout/view_custom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >

<TextView
android:id="@+id/tv_status"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:text="TV is open" />

<Button
android:id="@+id/close_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Close TV" />

</LinearLayout>
59 changes: 59 additions & 0 deletions astroboy/src/main/java/org/roboguice/astroboy/view/CustomView.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package org.roboguice.astroboy.view;

import org.roboguice.astroboy.R;

import roboguice.inject.InjectView;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class CustomView extends LinearLayout {

@InjectView(R.id.close_tv)
private Button buttonCloseTv;
@InjectView(R.id.tv_status)
private TextView textviewStatus;

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private CustomView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initializeView(context);
}

public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
initializeView(context);
}

public CustomView(Context context) {
super(context);
initializeView(context);
}

public void initializeView(Context context) {
LayoutInflater.from(context).inflate(R.layout.view_custom, this, true);
}

@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
buttonCloseTv.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
textviewStatus.setText("Closed");
}
});
textviewStatus.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
textviewStatus.setText("Open");
}
});
}
}
49 changes: 46 additions & 3 deletions roboguice/src/main/java/roboguice/activity/RoboActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,23 @@
import android.os.Bundle;
import com.google.inject.Inject;
import com.google.inject.Key;
import java.lang.reflect.Constructor;
import java.util.HashMap;
import java.util.Map;

import roboguice.RoboGuice;
import roboguice.activity.event.*;
import roboguice.context.event.OnConfigurationChangedEvent;
import roboguice.context.event.OnCreateEvent;
import roboguice.context.event.OnDestroyEvent;
import roboguice.context.event.OnStartEvent;
import roboguice.activity.event.OnActivityResultEvent;
import roboguice.activity.event.OnContentChangedEvent;
import roboguice.activity.event.OnNewIntentEvent;
import roboguice.activity.event.OnPauseEvent;
import roboguice.activity.event.OnRestartEvent;
import roboguice.activity.event.OnResumeEvent;
import roboguice.activity.event.OnStopEvent;
import roboguice.event.EventManager;
import roboguice.inject.ContentViewListener;
import roboguice.inject.RoboInjector;
Expand All @@ -35,6 +46,10 @@
import java.util.HashMap;
import java.util.Map;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;

/**
* A {@link RoboActivity} extends from {@link Activity} to provide dynamic
* injection of collaborators, using Google Guice.<br />
Expand Down Expand Up @@ -63,9 +78,10 @@
*/
public class RoboActivity extends Activity implements RoboContext {
protected EventManager eventManager;
protected HashMap<Key<?>,Object> scopedObjects = new HashMap<Key<?>, Object>();
protected HashMap<Key<?>, Object> scopedObjects = new HashMap<Key<?>, Object>();

@Inject ContentViewListener ignored; // BUG find a better place to put this
@Inject
ContentViewListener ignored; // BUG find a better place to put this

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand Down Expand Up @@ -107,7 +123,7 @@ protected void onPause() {
}

@Override
protected void onNewIntent( Intent intent ) {
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
eventManager.fire(new OnNewIntentEvent(this));
}
Expand Down Expand Up @@ -158,4 +174,31 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
public Map<Key<?>, Object> getScopedObjectMap() {
return scopedObjects;
}

@Override
public View onCreateView(String name, Context context, AttributeSet attrs) {
try {
Class clazz = Class.forName(name);
Constructor constructor = clazz.getConstructor(Context.class, AttributeSet.class);
View view = (View) constructor.newInstance(context, attrs);
final RoboInjector injector = RoboGuice.getInjector(this);
injector.injectMembers(view);
return view;
} catch (Exception e) {
e.printStackTrace();
}
return super.onCreateView(name, context, attrs);
}

@Override
public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
View view = super.onCreateView(parent, name, context, attrs);
final RoboInjector injector = RoboGuice.getInjector(this);
try {
injector.injectMembers(view);
} catch (Exception e) {
e.printStackTrace();
}
return view;
}
}

0 comments on commit f335f01

Please sign in to comment.