You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by sa...@apache.org on 2018/06/11 18:24:55 UTC

[2/6] incubator-taverna-mobile git commit: Dagger 2.8 implementation added

Dagger 2.8 implementation added


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/commit/c421e709
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/c421e709
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/c421e709

Branch: refs/heads/master
Commit: c421e7099219e17daae77b1124d33376ce22d410
Parents: 7a3ccba
Author: Sagar <ku...@gmail.com>
Authored: Mon Jun 11 23:09:53 2018 +0530
Committer: Sagar <ku...@gmail.com>
Committed: Mon Jun 11 23:09:53 2018 +0530

----------------------------------------------------------------------
 app/build.gradle                                |  5 ++
 app/src/main/AndroidManifest.xml                |  2 +-
 .../taverna/mobile/TavernaApplication.java      | 44 +++++++----
 .../apache/taverna/mobile/data/DataManager.java | 19 +++--
 .../taverna/mobile/data/local/DBHelper.java     |  6 +-
 .../mobile/data/local/PreferencesHelper.java    | 17 +++--
 .../taverna/mobile/data/model/Announcement.java | 11 ++-
 .../mobile/data/model/Announcements.java        |  1 -
 .../mobile/data/remote/BaseApiManager.java      | 15 +++-
 .../mobile/injection/ActivityContext.java       | 11 +++
 .../mobile/injection/ApplicationContext.java    | 11 +++
 .../taverna/mobile/injection/PerActivity.java   | 17 +++++
 .../injection/component/ActivityComponent.java  | 78 ++++++++++++++++++++
 .../component/ApplicationComponent.java         | 26 +++++++
 .../mobile/injection/module/ActivityModule.java | 30 ++++++++
 .../injection/module/ApplicationModule.java     | 40 ++++++++++
 .../taverna/mobile/ui/DashboardActivity.java    | 11 +--
 .../taverna/mobile/ui/DownloadingFragment.java  |  4 -
 .../taverna/mobile/ui/FlashScreenActivity.java  | 13 ++--
 .../mobile/ui/adapter/AnnouncementAdapter.java  |  3 +-
 .../ui/adapter/FavouriteWorkflowsAdapter.java   |  4 +-
 .../ui/adapter/TutorialSliderAdapter.java       |  7 +-
 .../mobile/ui/adapter/WorkflowAdapter.java      |  4 +-
 .../ui/anouncements/AnnouncementFragment.java   | 24 +++---
 .../ui/anouncements/AnnouncementPresenter.java  |  3 +
 .../taverna/mobile/ui/base/BaseActivity.java    | 27 +++++++
 .../FavouriteWorkflowsActivity.java             |  3 +-
 .../FavouriteWorkflowsFragment.java             | 24 +++---
 .../FavouriteWorkflowsPresenter.java            |  4 +-
 .../FavouriteWorkflowDetailActivity.java        |  3 +-
 .../FavouriteWorkflowDetailFragment.java        | 14 ++--
 .../FavouriteWorkflowDetailPresenter.java       |  3 +
 .../mobile/ui/imagezoom/ImageZoomActivity.java  |  3 +-
 .../mobile/ui/imagezoom/ImageZoomFragment.java  | 11 ++-
 .../mobile/ui/imagezoom/ImageZoomPresenter.java |  4 +-
 .../taverna/mobile/ui/login/LoginActivity.java  |  3 +-
 .../taverna/mobile/ui/login/LoginFragment.java  | 15 ++--
 .../taverna/mobile/ui/login/LoginPresenter.java |  4 +-
 .../ui/myworkflows/MyWorkflowActivity.java      | 61 +++++++++++++++
 .../ui/myworkflows/MyWorkflowFragment.java      | 19 ++---
 .../ui/myworkflows/MyWorkflowPresenter.java     |  4 +-
 .../ui/myworkflows/MyWorkflowsActivity.java     | 60 ---------------
 .../ui/playerlogin/PlayerLoginFragment.java     | 12 +--
 .../ui/playerlogin/PlayerLoginPresenter.java    |  3 +
 .../mobile/ui/tutorial/TutorialActivity.java    | 11 ++-
 .../ui/userprofile/UserProfileActivity.java     |  4 +-
 .../ui/userprofile/UserProfileFragment.java     | 14 ++--
 .../mobile/ui/workflow/WorkflowFragment.java    | 16 ++--
 .../mobile/ui/workflow/WorkflowPresenter.java   |  5 +-
 .../workflowdetail/WorkflowDetailActivity.java  |  3 +-
 .../workflowdetail/WorkflowDetailFragment.java  | 14 ++--
 .../workflowdetail/WorkflowDetailPresenter.java |  3 +
 .../ui/workflowrun/WorkflowRunActivity.java     | 22 +++---
 .../ui/workflowrun/WorkflowRunPresenter.java    |  4 +-
 app/src/main/res/layout/activity_usage.xml      |  1 -
 .../mobile/AnnouncementPresenterTest.java       |  2 +-
 build.gradle                                    |  1 +
 57 files changed, 553 insertions(+), 230 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/build.gradle
----------------------------------------------------------------------
diff --git a/app/build.gradle b/app/build.gradle
index 0daa6c6..597f937 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -127,4 +127,9 @@ dependencies {
     testImplementation "junit:junit:4.12"
     testImplementation "org.mockito:mockito-all:1.10.19"
 
+    //Dependencies for Dagger 2
+    implementation  "com.google.dagger:dagger:$rootProject.dagger"
+    annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger"
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/AndroidManifest.xml
----------------------------------------------------------------------
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e4290b7..1290302 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -103,7 +103,7 @@ limitations under the License.
         <activity android:name=".ui.usage.UsageActivity" />
         <activity android:name=".ui.userprofile.UserProfileActivity"/>
         <activity android:name=".ui.favouriteworkflow.FavouriteWorkflowsActivity"/>
-        <activity android:name=".ui.myworkflows.MyWorkflowsActivity"/>
+        <activity android:name=".ui.myworkflows.MyWorkflowActivity"/>
     </application>
 
 </manifest>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/TavernaApplication.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/TavernaApplication.java b/app/src/main/java/org/apache/taverna/mobile/TavernaApplication.java
index d2ab2af..41bd726 100644
--- a/app/src/main/java/org/apache/taverna/mobile/TavernaApplication.java
+++ b/app/src/main/java/org/apache/taverna/mobile/TavernaApplication.java
@@ -19,31 +19,30 @@
 package org.apache.taverna.mobile;
 
 
-import android.app.Application;
-import android.content.Context;
-
 import com.facebook.stetho.Stetho;
 import com.raizlabs.android.dbflow.config.FlowConfig;
 import com.raizlabs.android.dbflow.config.FlowManager;
 import com.squareup.leakcanary.LeakCanary;
 
-public class TavernaApplication extends Application {
+import org.apache.taverna.mobile.injection.component.ApplicationComponent;
+import org.apache.taverna.mobile.injection.component.DaggerApplicationComponent;
+import org.apache.taverna.mobile.injection.module.ApplicationModule;
 
-    private static TavernaApplication instance;
+import android.app.Application;
+import android.content.Context;
 
-    public static Context getContext() {
-        return instance;
-    }
+public class TavernaApplication extends Application {
+
+    ApplicationComponent mApplicationComponent;
 
     @Override
     public void onCreate() {
         super.onCreate();
-        if (instance == null) {
-            instance = this;
-        }
-        FlowManager.init(new FlowConfig.Builder(this).build());
 
-        Stetho.initializeWithDefaults(this);
+        FlowManager.init(new FlowConfig.Builder(this).build());
+        if(BuildConfig.DEBUG) {
+            Stetho.initializeWithDefaults(this);
+        }
 
         if (LeakCanary.isInAnalyzerProcess(this)) {
             return;
@@ -51,4 +50,23 @@ public class TavernaApplication extends Application {
         LeakCanary.install(this);
 
     }
+
+    public static TavernaApplication get(Context context) {
+        return (TavernaApplication) context.getApplicationContext();
+    }
+
+    public ApplicationComponent getComponent() {
+        if (mApplicationComponent == null) {
+            mApplicationComponent = DaggerApplicationComponent.builder()
+                    .applicationModule(new ApplicationModule(this))
+                    .build();
+        }
+        return mApplicationComponent;
+    }
+
+
+    public void setComponent(ApplicationComponent applicationComponent) {
+        mApplicationComponent = applicationComponent;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/data/DataManager.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/DataManager.java b/app/src/main/java/org/apache/taverna/mobile/data/DataManager.java
index f44b933..707857c 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/DataManager.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/DataManager.java
@@ -34,25 +34,34 @@ import org.apache.taverna.mobile.data.remote.BaseApiManager;
 import java.util.List;
 import java.util.Map;
 
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
 import io.reactivex.Observable;
 import io.reactivex.ObservableSource;
 import io.reactivex.functions.Function;
 import okhttp3.RequestBody;
 import okhttp3.ResponseBody;
 
+@Singleton
 public class DataManager {
 
-    public BaseApiManager mBaseApiManager = new BaseApiManager();
+    private BaseApiManager mBaseApiManager;
 
-    public DBHelper mDBHelper = new DBHelper();
+    private DBHelper mDBHelper;
 
     private PreferencesHelper mPreferencesHelper;
 
-    public DataManager() {
+    @Inject
+    public DataManager(BaseApiManager baseApiManager, DBHelper dbHelper, PreferencesHelper
+            mPreferencesHelper) {
+        this.mPreferencesHelper = mPreferencesHelper;
+        this.mBaseApiManager = baseApiManager;
+        this.mDBHelper = dbHelper;
     }
 
-    public DataManager(PreferencesHelper mPreferencesHelper) {
-        this.mPreferencesHelper = mPreferencesHelper;
+    public DBHelper getDBHelper() {
+        return mDBHelper;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/data/local/DBHelper.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/local/DBHelper.java b/app/src/main/java/org/apache/taverna/mobile/data/local/DBHelper.java
index 3e98c50..352c1d8 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/local/DBHelper.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/local/DBHelper.java
@@ -18,7 +18,6 @@
  */
 package org.apache.taverna.mobile.data.local;
 
-
 import android.support.annotation.Nullable;
 
 import com.raizlabs.android.dbflow.sql.language.SQLite;
@@ -30,16 +29,21 @@ import org.apache.taverna.mobile.data.model.Workflows;
 import java.util.List;
 import java.util.concurrent.Callable;
 
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
 import io.reactivex.Observable;
 import io.reactivex.ObservableSource;
 
 
+@Singleton
 public class DBHelper {
 
     public static final String SVG_URI = "svgURI";
 
     public static final String JPG_URI = "jpgURI";
 
+    @Inject
     public DBHelper() {
 
     }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/data/local/PreferencesHelper.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/local/PreferencesHelper.java b/app/src/main/java/org/apache/taverna/mobile/data/local/PreferencesHelper.java
index a4818bf..80e2f00 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/local/PreferencesHelper.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/local/PreferencesHelper.java
@@ -18,9 +18,10 @@
  */
 package org.apache.taverna.mobile.data.local;
 
-
 import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.model.User;
+import org.apache.taverna.mobile.injection.ActivityContext;
+import org.apache.taverna.mobile.injection.ApplicationContext;
 
 import android.content.Context;
 import android.content.SharedPreferences;
@@ -28,10 +29,14 @@ import android.preference.PreferenceManager;
 
 import java.util.concurrent.Callable;
 
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import dagger.Provides;
 import io.reactivex.Observable;
 import io.reactivex.ObservableSource;
 
-
+@Singleton
 public class PreferencesHelper {
 
     public static final String PREF_KEY_PLAYER_LOGGED_IN = "pref_player_logged_in";
@@ -63,17 +68,17 @@ public class PreferencesHelper {
 
     public static final String PREF_KEY_PLAYER_USER_PASSWORD = "pref_password";
 
+    private static final String IS_FIRST_TIME_LAUNCH = "IsFirstTimeLaunch";
+
     private final SharedPreferences sharedPref;
     private Context mContext;
 
-    private static final String IS_FIRST_TIME_LAUNCH = "IsFirstTimeLaunch";
-
-    public PreferencesHelper(Context context) {
+    @Inject
+    public PreferencesHelper(@ApplicationContext  Context context) {
         sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
         mContext = context;
     }
 
-
     public void clear() {
         sharedPref.edit().clear().apply();
     }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/data/model/Announcement.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/model/Announcement.java b/app/src/main/java/org/apache/taverna/mobile/data/model/Announcement.java
index d4f1201..ebea4eb 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/model/Announcement.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/model/Announcement.java
@@ -24,9 +24,12 @@ import org.simpleframework.xml.Text;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import javax.inject.Inject;
+import javax.inject.Singleton;
 
-public class Announcement implements Parcelable {
+import dagger.Provides;
 
+public class Announcement implements Parcelable {
 
     @Attribute(name = "resource", required = false)
     String resource;
@@ -40,8 +43,6 @@ public class Announcement implements Parcelable {
     @Text
     String content;
 
-
-
     public String getContent() {
         return content;
     }
@@ -87,10 +88,8 @@ public class Announcement implements Parcelable {
         dest.writeString(this.content);
     }
 
-    public Announcement() {
-    }
 
-    protected Announcement(Parcel in) {
+    public Announcement(Parcel in) {
         this.resource = in.readString();
         this.uri = in.readString();
         this.id = in.readString();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/data/model/Announcements.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/model/Announcements.java b/app/src/main/java/org/apache/taverna/mobile/data/model/Announcements.java
index 8ac3de4..c66b3e0 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/model/Announcements.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/model/Announcements.java
@@ -26,7 +26,6 @@ import android.os.Parcelable;
 
 import java.util.List;
 
-
 @Root(name = "announcements")
 public class Announcements implements Parcelable {
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/data/remote/BaseApiManager.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/remote/BaseApiManager.java b/app/src/main/java/org/apache/taverna/mobile/data/remote/BaseApiManager.java
index 84d5aed..83fe64b 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/remote/BaseApiManager.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/remote/BaseApiManager.java
@@ -18,21 +18,31 @@
  */
 package org.apache.taverna.mobile.data.remote;
 
-import org.apache.taverna.mobile.TavernaApplication;
 import org.apache.taverna.mobile.data.local.PreferencesHelper;
 
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
 import retrofit2.Retrofit;
 import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
 import retrofit2.converter.gson.GsonConverterFactory;
 import retrofit2.converter.simplexml.SimpleXmlConverterFactory;
 
 
+@Singleton
 public class BaseApiManager {
 
 
     public static final String MY_EXPERIMENT_END_POINT = "http://www.myexperiment.org/";
 
 
+    PreferencesHelper mPreferencesHelper;
+
+    @Inject
+    public BaseApiManager(PreferencesHelper preferencesHelper) {
+        mPreferencesHelper = preferencesHelper;
+    }
+
     /********
      * Helper class that sets up a new services with simplexml converter factory
      *******/
@@ -70,7 +80,6 @@ public class BaseApiManager {
     }
 
     public TavernaPlayerService getTavernaPlayerApi() {
-        return createJsonApi(TavernaPlayerService.class,
-                new PreferencesHelper(TavernaApplication.getContext()).getPlayerURL());
+        return createJsonApi(TavernaPlayerService.class, mPreferencesHelper.getPlayerURL());
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/injection/ActivityContext.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/injection/ActivityContext.java b/app/src/main/java/org/apache/taverna/mobile/injection/ActivityContext.java
new file mode 100644
index 0000000..1476b50
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/injection/ActivityContext.java
@@ -0,0 +1,11 @@
+package org.apache.taverna.mobile.injection;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import javax.inject.Qualifier;
+
+@Qualifier
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ActivityContext {
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/injection/ApplicationContext.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/injection/ApplicationContext.java b/app/src/main/java/org/apache/taverna/mobile/injection/ApplicationContext.java
new file mode 100644
index 0000000..e71f26a
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/injection/ApplicationContext.java
@@ -0,0 +1,11 @@
+package org.apache.taverna.mobile.injection;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import javax.inject.Qualifier;
+
+@Qualifier
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ApplicationContext {
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/injection/PerActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/injection/PerActivity.java b/app/src/main/java/org/apache/taverna/mobile/injection/PerActivity.java
new file mode 100755
index 0000000..e32dd59
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/injection/PerActivity.java
@@ -0,0 +1,17 @@
+package org.apache.taverna.mobile.injection;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import javax.inject.Scope;
+
+/**
+ * A scoping annotation to permit objects whose lifetime should
+ * conform to the life of the Activity to be memorised in the
+ * correct component.
+ */
+
+@Scope
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PerActivity {
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/injection/component/ActivityComponent.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/injection/component/ActivityComponent.java b/app/src/main/java/org/apache/taverna/mobile/injection/component/ActivityComponent.java
new file mode 100644
index 0000000..c6705f6
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/injection/component/ActivityComponent.java
@@ -0,0 +1,78 @@
+package org.apache.taverna.mobile.injection.component;
+
+import org.apache.taverna.mobile.injection.PerActivity;
+import org.apache.taverna.mobile.injection.module.ActivityModule;
+import org.apache.taverna.mobile.ui.DashboardActivity;
+import org.apache.taverna.mobile.ui.anouncements.AnnouncementFragment;
+import org.apache.taverna.mobile.ui.favouriteworkflow.FavouriteWorkflowsActivity;
+import org.apache.taverna.mobile.ui.favouriteworkflow.FavouriteWorkflowsFragment;
+import org.apache.taverna.mobile.ui.favouriteworkflowdetail.FavouriteWorkflowDetailActivity;
+import org.apache.taverna.mobile.ui.favouriteworkflowdetail.FavouriteWorkflowDetailFragment;
+import org.apache.taverna.mobile.ui.imagezoom.ImageZoomActivity;
+import org.apache.taverna.mobile.ui.imagezoom.ImageZoomFragment;
+import org.apache.taverna.mobile.ui.login.LoginActivity;
+import org.apache.taverna.mobile.ui.login.LoginFragment;
+import org.apache.taverna.mobile.ui.myworkflows.MyWorkflowActivity;
+import org.apache.taverna.mobile.ui.myworkflows.MyWorkflowFragment;
+import org.apache.taverna.mobile.ui.playerlogin.PlayerLoginFragment;
+import org.apache.taverna.mobile.ui.tutorial.TutorialActivity;
+import org.apache.taverna.mobile.ui.usage.UsageActivity;
+import org.apache.taverna.mobile.ui.userprofile.UserProfileActivity;
+import org.apache.taverna.mobile.ui.userprofile.UserProfileFragment;
+import org.apache.taverna.mobile.ui.workflow.WorkflowFragment;
+import org.apache.taverna.mobile.ui.workflowdetail.WorkflowDetailActivity;
+import org.apache.taverna.mobile.ui.workflowdetail.WorkflowDetailFragment;
+import org.apache.taverna.mobile.ui.workflowrun.WorkflowRunActivity;
+
+import dagger.Component;
+
+/**
+ * This component inject dependencies to all Activities across the application
+ */
+
+@PerActivity
+@Component(dependencies = ApplicationComponent.class, modules = ActivityModule.class)
+public interface ActivityComponent {
+
+    void inject(DashboardActivity dashboardActivity);
+
+    void inject(FavouriteWorkflowsActivity favouriteWorkflowsActivity);
+
+    void inject(FavouriteWorkflowDetailActivity favouriteWorkflowDetailActivity);
+
+    void inject(ImageZoomActivity imageZoomActivity);
+
+    void inject(LoginActivity loginActivity);
+
+    void inject(MyWorkflowActivity myWorkflowActivity);
+
+    void inject(TutorialActivity tutorialActivity);
+
+    void inject(UsageActivity usageActivity);
+
+    void inject(UserProfileActivity userProfileActivity);
+
+    void inject(WorkflowDetailActivity workflowDetailActivity);
+
+    void inject(AnnouncementFragment announcementFragment);
+
+    void inject(FavouriteWorkflowsFragment favouriteWorkflowsFragment);
+
+    void inject(FavouriteWorkflowDetailFragment favouriteWorkflowDetailFragment);
+
+    void inject(ImageZoomFragment imageZoomFragment);
+
+    void inject(LoginFragment loginFragment);
+
+    void inject(MyWorkflowFragment myWorkflowFragment);
+
+    void inject(PlayerLoginFragment playerLoginFragment);
+
+    void inject(UserProfileFragment userProfileFragment);
+
+    void inject(WorkflowFragment workflowFragment);
+
+    void inject(WorkflowDetailFragment workflowDetailFragment);
+
+    void inject(WorkflowRunActivity workflowRunActivity);
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/injection/component/ApplicationComponent.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/injection/component/ApplicationComponent.java b/app/src/main/java/org/apache/taverna/mobile/injection/component/ApplicationComponent.java
new file mode 100644
index 0000000..517a3a5
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/injection/component/ApplicationComponent.java
@@ -0,0 +1,26 @@
+package org.apache.taverna.mobile.injection.component;
+
+import android.app.Application;
+import android.content.Context;
+
+import org.apache.taverna.mobile.data.DataManager;
+import org.apache.taverna.mobile.data.local.PreferencesHelper;
+import org.apache.taverna.mobile.injection.ApplicationContext;
+import org.apache.taverna.mobile.injection.module.ActivityModule;
+import org.apache.taverna.mobile.injection.module.ApplicationModule;
+
+import javax.inject.Singleton;
+
+import dagger.Component;
+
+@Singleton
+@Component(modules = ApplicationModule.class)
+public interface ApplicationComponent {
+
+    @ApplicationContext
+    Context context();
+    Application application();
+    DataManager dataManager();
+    PreferencesHelper preferencesHelper();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/injection/module/ActivityModule.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/injection/module/ActivityModule.java b/app/src/main/java/org/apache/taverna/mobile/injection/module/ActivityModule.java
new file mode 100644
index 0000000..d54752a
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/injection/module/ActivityModule.java
@@ -0,0 +1,30 @@
+package org.apache.taverna.mobile.injection.module;
+
+import android.app.Activity;
+import android.content.Context;
+
+import org.apache.taverna.mobile.injection.ActivityContext;
+
+import dagger.Module;
+import dagger.Provides;
+
+@Module
+public class ActivityModule {
+
+    private Activity mActivity;
+
+    public ActivityModule(Activity activity) {
+        mActivity = activity;
+    }
+
+    @Provides
+    Activity provideActivity() {
+        return mActivity;
+    }
+
+    @Provides
+    @ActivityContext
+    Context providesContext() {
+        return mActivity;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/injection/module/ApplicationModule.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/injection/module/ApplicationModule.java b/app/src/main/java/org/apache/taverna/mobile/injection/module/ApplicationModule.java
new file mode 100644
index 0000000..f6c04c6
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/injection/module/ApplicationModule.java
@@ -0,0 +1,40 @@
+package org.apache.taverna.mobile.injection.module;
+
+import android.app.Application;
+import android.content.Context;
+import android.content.SharedPreferences;
+
+import com.raizlabs.android.dbflow.annotation.Database;
+
+import org.apache.taverna.mobile.data.remote.TavernaService;
+import org.apache.taverna.mobile.injection.ApplicationContext;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+
+/**
+ * Provide application-level dependencies.
+ */
+
+@Module
+public class ApplicationModule {
+    protected final Application mApplication;
+
+    public ApplicationModule(Application application) {
+        mApplication = application;
+    }
+
+    @Provides
+    Application provideApplication() {
+        return mApplication;
+    }
+
+    @Provides
+    @ApplicationContext
+    Context provideContext() {
+        return mApplication;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/DashboardActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/DashboardActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/DashboardActivity.java
index 2b32bbf..4410d5f 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/DashboardActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/DashboardActivity.java
@@ -55,15 +55,19 @@ import com.bumptech.glide.load.resource.drawable.GlideDrawable;
 import com.bumptech.glide.request.animation.GlideAnimation;
 import com.bumptech.glide.request.target.SimpleTarget;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
 import de.hdodenhof.circleimageview.CircleImageView;
 
-import static org.apache.taverna.mobile.TavernaApplication.getContext;
+import static com.raizlabs.android.dbflow.config.FlowManager.getContext;
 
 public class DashboardActivity extends AppCompatActivity {
 
+    @Inject DataManager dataManager;
+
     @BindView(R.id.nav_view)
     NavigationView navigationView;
 
@@ -74,7 +78,6 @@ public class DashboardActivity extends AppCompatActivity {
     Toolbar toolbar;
 
     private Dialog dialog;
-    private DataManager dataManager;
     private Fragment fragment;
     private MenuItem item;
 
@@ -110,8 +113,6 @@ public class DashboardActivity extends AppCompatActivity {
             navigationView.setCheckedItem(R.id.nav_workflows);
         }
 
-        dataManager = new DataManager(new PreferencesHelper(this));
-
         setNavHeader();
     }
 
@@ -277,7 +278,7 @@ public class DashboardActivity extends AppCompatActivity {
     private void signOut() {
         mDrawerLayout.closeDrawers();
         dataManager.getPreferencesHelper().clear();
-        dataManager.mDBHelper.clearFavouriteWorkflow();
+        dataManager.getDBHelper().clearFavouriteWorkflow();
 
         startActivity(new Intent(getApplicationContext(),
                 LoginActivity.class));

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/DownloadingFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/DownloadingFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/DownloadingFragment.java
index 11c1300..4c3dc8b 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/DownloadingFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/DownloadingFragment.java
@@ -32,10 +32,8 @@ import org.apache.taverna.mobile.utils.Constants;
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
-
 public class DownloadingFragment extends Fragment {
 
-
     @BindView(R.id.tvMessage)
     TextView tv_Message;
 
@@ -50,7 +48,6 @@ public class DownloadingFragment extends Fragment {
         return fragment;
     }
 
-
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -76,5 +73,4 @@ public class DownloadingFragment extends Fragment {
 
         tv_Message.setText(message);
     }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/FlashScreenActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/FlashScreenActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/FlashScreenActivity.java
index e882a5a..2a1dd61 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/FlashScreenActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/FlashScreenActivity.java
@@ -18,7 +18,6 @@
  */
 package org.apache.taverna.mobile.ui;
 
-
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
@@ -32,6 +31,8 @@ import org.apache.taverna.mobile.ui.tutorial.TutorialActivity;
 
 import java.util.concurrent.TimeUnit;
 
+import javax.inject.Inject;
+
 import io.reactivex.Observable;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.functions.Consumer;
@@ -39,16 +40,14 @@ import io.reactivex.schedulers.Schedulers;
 
 public class FlashScreenActivity extends AppCompatActivity {
 
-    private DataManager dataManager;
-    private PreferencesHelper preferencesHelper;
-
+    @Inject
+    DataManager dataManager;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_flash_screen);
-        preferencesHelper = new PreferencesHelper(this);
-        dataManager = new DataManager(new PreferencesHelper(this));
+
         Observable.timer(2, TimeUnit.SECONDS)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
@@ -57,7 +56,7 @@ public class FlashScreenActivity extends AppCompatActivity {
                     public void accept(Long aLong) throws Exception {
                         if (!dataManager.getPreferencesHelper().isLoggedInFlag()) {
                             dataManager.getPreferencesHelper().clear();
-                            if (preferencesHelper.isFirstTimeLaunch()) {
+                            if (dataManager.getPreferencesHelper().isFirstTimeLaunch()) {
                                 startActivity(new Intent(FlashScreenActivity.this,
                                         TutorialActivity.class));
                                 (FlashScreenActivity.this).finish();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/adapter/AnnouncementAdapter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/AnnouncementAdapter.java b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/AnnouncementAdapter.java
index 70b91af..a3cc635 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/AnnouncementAdapter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/AnnouncementAdapter.java
@@ -30,10 +30,11 @@ import android.widget.TextView;
 
 import java.util.List;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
-
 public class AnnouncementAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
 
     private final int VIEW_ITEM = 1;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/adapter/FavouriteWorkflowsAdapter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/FavouriteWorkflowsAdapter.java b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/FavouriteWorkflowsAdapter.java
index c5c462f..44ba09b 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/FavouriteWorkflowsAdapter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/FavouriteWorkflowsAdapter.java
@@ -42,6 +42,8 @@ import org.apache.taverna.mobile.data.model.Workflow;
 
 import java.util.List;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
@@ -50,9 +52,9 @@ public class FavouriteWorkflowsAdapter extends RecyclerView.Adapter<RecyclerView
     private static final String TAG = FavouriteWorkflowsAdapter.class.getName();
 
     private final List<Workflow> mWorkflowList;
-
     private final Context context;
 
+
     public FavouriteWorkflowsAdapter(List<Workflow> mWorkflowList, Context context) {
         this.mWorkflowList = mWorkflowList;
         this.context = context;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/adapter/TutorialSliderAdapter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/TutorialSliderAdapter.java b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/TutorialSliderAdapter.java
index 607d2e2..ebdc277 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/TutorialSliderAdapter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/TutorialSliderAdapter.java
@@ -25,12 +25,17 @@ import android.view.View;
 import android.view.ViewGroup;
 
 import org.apache.taverna.mobile.data.model.TutorialSliderEnum;
+import org.apache.taverna.mobile.injection.ApplicationContext;
+
+import javax.inject.Inject;
 
 
 public class TutorialSliderAdapter extends PagerAdapter {
 
     private Context context;
-    public TutorialSliderAdapter(Context context) {
+
+    @Inject
+    public TutorialSliderAdapter(@ApplicationContext Context context) {
         this.context = context;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/adapter/WorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/WorkflowAdapter.java b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/WorkflowAdapter.java
index 0b7901d..ab011f6 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/WorkflowAdapter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/WorkflowAdapter.java
@@ -43,6 +43,8 @@ import android.widget.TextView;
 
 import java.util.List;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
@@ -54,9 +56,9 @@ public class WorkflowAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
     private static final String TAG = WorkflowAdapter.class.getName();
 
     private final List<Workflow> mWorkflowList;
-
     private final Context context;
 
+
     public WorkflowAdapter(List<Workflow> mWorkflowList, Context context) {
         this.mWorkflowList = mWorkflowList;
         this.context = context;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementFragment.java
index 40a8c27..ac1df9b 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementFragment.java
@@ -22,9 +22,12 @@ import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.DataManager;
 import org.apache.taverna.mobile.data.model.Announcements;
 import org.apache.taverna.mobile.data.model.DetailAnnouncement;
+import org.apache.taverna.mobile.injection.component.ActivityComponent;
+import org.apache.taverna.mobile.injection.module.ActivityModule;
 import org.apache.taverna.mobile.ui.adapter.AnnouncementAdapter;
 import org.apache.taverna.mobile.ui.adapter.EndlessRecyclerOnScrollListener;
 import org.apache.taverna.mobile.ui.adapter.RecyclerItemClickListner;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.utils.ConnectionInfo;
 import org.apache.taverna.mobile.utils.ScrollChildSwipeRefreshLayout;
 
@@ -48,15 +51,23 @@ import android.widget.Button;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
-
 public class AnnouncementFragment extends Fragment implements RecyclerItemClickListner
         .OnItemClickListener, AnnouncementMvpView {
 
     public final String LOG_TAG = getClass().getSimpleName();
 
+    @Inject
+    DataManager dataManager;
+    @Inject
+    AnnouncementPresenter mAnnouncementPresenter;
+
+    AnnouncementAdapter mAnnouncementAdapter;
+
     @BindView(R.id.rv_movies)
     RecyclerView mRecyclerView;
 
@@ -72,12 +83,6 @@ public class AnnouncementFragment extends Fragment implements RecyclerItemClickL
 
     private Announcements mAnnouncements;
 
-    private DataManager dataManager;
-
-    private AnnouncementPresenter mAnnouncementPresenter;
-
-    private AnnouncementAdapter mAnnouncementAdapter;
-
     private int mPageNumber = 1;
 
     private DetailAnnouncement mAnnouncementDetail;
@@ -101,10 +106,7 @@ public class AnnouncementFragment extends Fragment implements RecyclerItemClickL
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-
-        mAnnouncements = new Announcements();
-        dataManager = new DataManager();
-        mAnnouncementPresenter = new AnnouncementPresenter(dataManager);
+        ((BaseActivity) getActivity()).getActivityComponent().inject(this);
         setHasOptionsMenu(true);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenter.java
index 633d544..6045e82 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/anouncements/AnnouncementPresenter.java
@@ -29,6 +29,8 @@ import org.apache.taverna.mobile.ui.base.BasePresenter;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.inject.Inject;
+
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.observers.DisposableObserver;
 import io.reactivex.schedulers.Schedulers;
@@ -41,6 +43,7 @@ public class AnnouncementPresenter extends BasePresenter<AnnouncementMvpView> {
     private DataManager mDataManager;
     private CompositeDisposable compositeDisposable;
 
+    @Inject
     public AnnouncementPresenter(DataManager dataManager) {
         mDataManager = dataManager;
         compositeDisposable = new CompositeDisposable();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/base/BaseActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/base/BaseActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/base/BaseActivity.java
new file mode 100644
index 0000000..37710b7
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/base/BaseActivity.java
@@ -0,0 +1,27 @@
+package org.apache.taverna.mobile.ui.base;
+
+import org.apache.taverna.mobile.TavernaApplication;
+import org.apache.taverna.mobile.injection.component.ActivityComponent;
+import org.apache.taverna.mobile.injection.component.DaggerActivityComponent;
+import org.apache.taverna.mobile.injection.module.ActivityModule;
+
+import android.support.v7.app.AppCompatActivity;
+
+/**
+ * @author lusifer
+ */
+public class BaseActivity extends AppCompatActivity {
+
+    private ActivityComponent activityComponent;
+
+
+    public ActivityComponent getActivityComponent() {
+        if (activityComponent == null) {
+            activityComponent = DaggerActivityComponent.builder()
+                    .activityModule(new ActivityModule(this))
+                    .applicationComponent(TavernaApplication.get(this).getComponent())
+                    .build();
+        }
+        return activityComponent;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsActivity.java
index a8cceef..898322c 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsActivity.java
@@ -9,12 +9,13 @@ import android.view.Menu;
 import android.view.MenuItem;
 
 import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.utils.ActivityUtils;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
-public class FavouriteWorkflowsActivity extends AppCompatActivity {
+public class FavouriteWorkflowsActivity extends BaseActivity {
 
     @BindView(R.id.toolbar)
     Toolbar mToolbar;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsFragment.java
index d988d78..8f0c4ab 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsFragment.java
@@ -18,12 +18,12 @@
  */
 package org.apache.taverna.mobile.ui.favouriteworkflow;
 
-
 import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.DataManager;
 import org.apache.taverna.mobile.data.model.Workflow;
 import org.apache.taverna.mobile.ui.adapter.FavouriteWorkflowsAdapter;
 import org.apache.taverna.mobile.ui.adapter.RecyclerItemClickListner;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.ui.favouriteworkflowdetail.FavouriteWorkflowDetailActivity;
 import org.apache.taverna.mobile.utils.Constants;
 
@@ -50,6 +50,8 @@ import android.widget.Toast;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
@@ -58,6 +60,10 @@ public class FavouriteWorkflowsFragment extends Fragment
 
     public final String LOG_TAG = getClass().getSimpleName();
 
+    @Inject DataManager dataManager;
+    @Inject FavouriteWorkflowsPresenter mFavouriteWorkflowsPresenter;
+    FavouriteWorkflowsAdapter mFavouriteWorkflowsAdapter;
+    FavouriteWorkflowsAdapter mSearchFavouriteWorkflowAdapter;
 
     @BindView(R.id.rv_fav_workflows)
     RecyclerView mRecyclerView;
@@ -68,25 +74,13 @@ public class FavouriteWorkflowsFragment extends Fragment
     @BindView(R.id.layout_empty_fav_workflow)
     RelativeLayout tvNoWorkflowError;
 
-    private DataManager dataManager;
-
-    private FavouriteWorkflowsPresenter mFavouriteWorkflowsPresenter;
-
-    private FavouriteWorkflowsAdapter mFavouriteWorkflowsAdapter;
-
-    private List<Workflow> mWorkflowList;
+    List<Workflow> mWorkflowList;
     private SearchView searchView;
-    private FavouriteWorkflowsAdapter mSearchFavouriteWorkflowAdapter;
-
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        dataManager = new DataManager();
-
-        mFavouriteWorkflowsPresenter = new FavouriteWorkflowsPresenter(dataManager);
-
         mWorkflowList = new ArrayList<>();
         setHasOptionsMenu(true);
     }
@@ -97,7 +91,7 @@ public class FavouriteWorkflowsFragment extends Fragment
 
         View rootView = inflater.inflate(R.layout.fragment_favourite_workflow_list,
                 container, false);
-
+        ((BaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
 
         mFavouriteWorkflowsPresenter.attachView(this);

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsPresenter.java
index f0ab7bf..093545e 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflow/FavouriteWorkflowsPresenter.java
@@ -28,12 +28,13 @@ import org.apache.taverna.mobile.utils.RxSearch;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+import javax.inject.Inject;
+
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
 import io.reactivex.observers.DisposableObserver;
 import io.reactivex.schedulers.Schedulers;
 
-
 public class FavouriteWorkflowsPresenter extends BasePresenter<FavouriteWorkflowsMvpView> {
 
     public final String LOG_TAG = getClass().getSimpleName();
@@ -41,6 +42,7 @@ public class FavouriteWorkflowsPresenter extends BasePresenter<FavouriteWorkflow
     private DataManager mDataManager;
     private CompositeDisposable compositeDisposable;
 
+    @Inject
     public FavouriteWorkflowsPresenter(DataManager dataManager) {
         mDataManager = dataManager;
         compositeDisposable = new CompositeDisposable();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailActivity.java
index 6e84a9e..5e102d9 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailActivity.java
@@ -26,12 +26,13 @@ import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.Toolbar;
 
 import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.utils.Constants;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
-public class FavouriteWorkflowDetailActivity extends AppCompatActivity {
+public class FavouriteWorkflowDetailActivity extends BaseActivity {
 
     @BindView(R.id.toolbar)
     Toolbar mToolbar;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailFragment.java
index de44e59..2da966c 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailFragment.java
@@ -50,12 +50,15 @@ import org.apache.taverna.mobile.data.DataManager;
 import org.apache.taverna.mobile.data.model.License;
 import org.apache.taverna.mobile.data.model.User;
 import org.apache.taverna.mobile.data.model.Workflow;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.ui.imagezoom.ImageZoomActivity;
 import org.apache.taverna.mobile.ui.imagezoom.ImageZoomFragment;
 import org.apache.taverna.mobile.ui.workflowrun.WorkflowRunActivity;
 import org.apache.taverna.mobile.utils.ConnectionInfo;
 import org.apache.taverna.mobile.utils.Constants;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
@@ -67,6 +70,9 @@ public class FavouriteWorkflowDetailFragment extends Fragment
 
     public final String LOG_TAG = getClass().getSimpleName();
 
+    @Inject DataManager dataManager;
+    @Inject FavouriteWorkflowDetailPresenter mWorkflowDetailPresenter;
+
     @BindView(R.id.ivWorkflowImage)
     ImageView workflowImage;
 
@@ -105,10 +111,6 @@ public class FavouriteWorkflowDetailFragment extends Fragment
 
     private AlertDialog alertDialog;
 
-    private DataManager dataManager;
-
-    private FavouriteWorkflowDetailPresenter mWorkflowDetailPresenter;
-
     private String id;
 
     private String licenceId = null;
@@ -136,8 +138,6 @@ public class FavouriteWorkflowDetailFragment extends Fragment
 
         id = getArguments().getString(ID);
 
-        dataManager = new DataManager();
-        mWorkflowDetailPresenter = new FavouriteWorkflowDetailPresenter(dataManager);
 
     }
 
@@ -146,7 +146,7 @@ public class FavouriteWorkflowDetailFragment extends Fragment
             savedInstanceState) {
 
         View rootView = inflater.inflate(R.layout.fragment_detail_workflow, container, false);
-
+        ((BaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
 
         mWorkflowDetailPresenter.attachView(this);

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailPresenter.java
index fe03548..d02d058 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/favouriteworkflowdetail/FavouriteWorkflowDetailPresenter.java
@@ -27,6 +27,8 @@ import org.apache.taverna.mobile.ui.base.BasePresenter;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.inject.Inject;
+
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.observers.DisposableObserver;
 import io.reactivex.schedulers.Schedulers;
@@ -40,6 +42,7 @@ public class FavouriteWorkflowDetailPresenter extends
     private DataManager mDataManager;
     private CompositeDisposable compositeDisposable;
 
+    @Inject
     public FavouriteWorkflowDetailPresenter(DataManager dataManager) {
         mDataManager = dataManager;
         compositeDisposable = new CompositeDisposable();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomActivity.java
index a49370c..3782973 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomActivity.java
@@ -24,11 +24,12 @@ import android.support.annotation.Nullable;
 import android.support.v7.app.AppCompatActivity;
 
 import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.utils.ActivityUtils;
 
 import butterknife.ButterKnife;
 
-public class ImageZoomActivity extends AppCompatActivity {
+public class ImageZoomActivity extends BaseActivity {
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomFragment.java
index ad5680f..fcb2b41 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomFragment.java
@@ -40,8 +40,11 @@ import com.bumptech.glide.request.target.SizeReadyCallback;
 import com.bumptech.glide.request.target.Target;
 
 import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.utils.ConnectionInfo;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
@@ -55,6 +58,7 @@ public class ImageZoomFragment extends Fragment implements ImageZoomMvpView {
 
     private static final String SERVER_ERROR = "Sever Error. Please try after sometime";
 
+    @Inject ImageZoomPresenter mImageZoomPresenter;
 
     @BindView(R.id.ivWorkflowImage)
     ImageView workflowImage;
@@ -68,10 +72,6 @@ public class ImageZoomFragment extends Fragment implements ImageZoomMvpView {
 
     private String jpgURI;
 
-    private ImageZoomPresenter mImageZoomPresenter;
-
-
-
     public static ImageZoomFragment newInstance(String jpgURI, String svgURI) {
         Bundle args = new Bundle();
         args.putString(JPG_URI, jpgURI);
@@ -86,7 +86,6 @@ public class ImageZoomFragment extends Fragment implements ImageZoomMvpView {
         super.onCreate(savedInstanceState);
         svgURI = getArguments().getString(SVG_URI);
         jpgURI = getArguments().getString(JPG_URI);
-        mImageZoomPresenter = new ImageZoomPresenter();
 
     }
 
@@ -95,7 +94,7 @@ public class ImageZoomFragment extends Fragment implements ImageZoomMvpView {
             savedInstanceState) {
 
         View rootView = inflater.inflate(R.layout.fragment_image_zoom, container, false);
-
+        ((BaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
 
         mImageZoomPresenter.attachView(this);

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomPresenter.java
index fd8d43d..426405a 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomPresenter.java
@@ -43,11 +43,13 @@ import org.apache.taverna.mobile.utils.SvgDrawableTranscoder;
 
 import java.io.InputStream;
 
-public class ImageZoomPresenter extends BasePresenter<ImageZoomMvpView> {
+import javax.inject.Inject;
 
+public class ImageZoomPresenter extends BasePresenter<ImageZoomMvpView> {
 
     private GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> requestBuilder;
 
+    @Inject
     public ImageZoomPresenter() {
 
     }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginActivity.java
index 61d2341..882095c 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginActivity.java
@@ -22,10 +22,11 @@ import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 
 import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.utils.ActivityUtils;
 
 
-public class LoginActivity extends AppCompatActivity {
+public class LoginActivity extends BaseActivity {
     private static final String TAG = "LoginActivity";
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginFragment.java
index 23b97b8..930cc2a 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginFragment.java
@@ -23,6 +23,7 @@ import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.DataManager;
 import org.apache.taverna.mobile.data.local.PreferencesHelper;
 import org.apache.taverna.mobile.ui.DashboardActivity;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.utils.ConnectionInfo;
 
 import android.app.ProgressDialog;
@@ -44,12 +45,17 @@ import android.view.WindowManager;
 import android.widget.CheckBox;
 import android.widget.EditText;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
 
 public class LoginFragment extends Fragment implements LoginMvpView, View.OnFocusChangeListener {
 
+    @Inject DataManager dataManager;
+    @Inject LoginPresenter mLoginPresenter;
+
     @BindView(R.id.etEmail)
     EditText mEditTextEmail;
 
@@ -65,15 +71,10 @@ public class LoginFragment extends Fragment implements LoginMvpView, View.OnFocu
     @BindView(R.id.cbRemember)
     CheckBox mCheckBoxRemember;
 
-    private DataManager dataManager;
-    private LoginPresenter mLoginPresenter;
-
-
     private ProgressDialog progressDialog;
 
     private final String myExperimentURL = "https://www.myexperiment.org/users/new";
 
-
     public static LoginFragment newInstance() {
 
         LoginFragment fragment = new LoginFragment();
@@ -85,9 +86,6 @@ public class LoginFragment extends Fragment implements LoginMvpView, View.OnFocu
         super.onCreate(savedInstanceState);
 
 
-        dataManager = new DataManager(new PreferencesHelper(getContext()));
-        mLoginPresenter = new LoginPresenter(dataManager);
-
     }
 
     @Override
@@ -95,6 +93,7 @@ public class LoginFragment extends Fragment implements LoginMvpView, View.OnFocu
             savedInstanceState) {
 
         View rootView = inflater.inflate(R.layout.fragment_login, container, false);
+        ((BaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
         mLoginPresenter.attachView(this);
         return rootView;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginPresenter.java
index 4b85914..e3fd901 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/login/LoginPresenter.java
@@ -25,12 +25,13 @@ import org.apache.taverna.mobile.data.DataManager;
 import org.apache.taverna.mobile.data.model.User;
 import org.apache.taverna.mobile.ui.base.BasePresenter;
 
+import javax.inject.Inject;
+
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
 import io.reactivex.observers.DisposableObserver;
 import io.reactivex.schedulers.Schedulers;
 
-
 public class LoginPresenter extends BasePresenter<LoginMvpView> {
 
     public final String LOG_TAG = getClass().getSimpleName();
@@ -38,6 +39,7 @@ public class LoginPresenter extends BasePresenter<LoginMvpView> {
     private DataManager mDataManager;
     private CompositeDisposable compositeDisposable;
 
+    @Inject
     public LoginPresenter(DataManager dataManager) {
         mDataManager = dataManager;
         compositeDisposable = new CompositeDisposable();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowActivity.java
new file mode 100644
index 0000000..440af4f
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowActivity.java
@@ -0,0 +1,61 @@
+package org.apache.taverna.mobile.ui.myworkflows;
+
+import android.support.annotation.Nullable;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.support.v7.widget.Toolbar;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
+import org.apache.taverna.mobile.utils.ActivityUtils;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+public class MyWorkflowActivity extends BaseActivity {
+
+    @BindView(R.id.toolbar)
+    Toolbar mToolbar;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_my_workflows);
+
+        ButterKnife.bind(this);
+
+        setSupportActionBar(mToolbar);
+        ActionBar actionbar = getSupportActionBar();
+
+        if (actionbar != null) {
+            actionbar.setHomeButtonEnabled(true);
+            actionbar.setDisplayHomeAsUpEnabled(true);
+            actionbar.setTitle(R.string.title_nav_my_workflows);
+        }
+
+        if (savedInstanceState == null) {
+            ActivityUtils.addFragmentToActivity(getSupportFragmentManager(),
+                    new MyWorkflowFragment(), R.id.frame_container);
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.dashboard_main, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case android.R.id.home:
+                finish();
+                return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowFragment.java
index 0247d90..3f890dc 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowFragment.java
@@ -24,6 +24,7 @@ import org.apache.taverna.mobile.data.local.PreferencesHelper;
 import org.apache.taverna.mobile.data.model.Workflow;
 import org.apache.taverna.mobile.ui.adapter.RecyclerItemClickListner;
 import org.apache.taverna.mobile.ui.adapter.WorkflowAdapter;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.ui.workflowdetail.WorkflowDetailActivity;
 import org.apache.taverna.mobile.utils.ConnectionInfo;
 import org.apache.taverna.mobile.utils.ScrollChildSwipeRefreshLayout;
@@ -47,6 +48,8 @@ import android.widget.RelativeLayout;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
@@ -55,6 +58,10 @@ public class MyWorkflowFragment extends Fragment implements MyWorkflowMvpView,
 
     public final String LOG_TAG = getClass().getSimpleName();
 
+    @Inject DataManager dataManager;
+    @Inject MyWorkflowPresenter mWorkflowPresenter;
+    WorkflowAdapter mWorkflowAdapter;
+
     @BindView(R.id.rv_workflows)
     RecyclerView mRecyclerView;
 
@@ -67,13 +74,6 @@ public class MyWorkflowFragment extends Fragment implements MyWorkflowMvpView,
     @BindView(R.id.layout_empty_workflows)
     RelativeLayout mTextViewNoWorkflow;
 
-    private DataManager dataManager;
-
-    private MyWorkflowPresenter mWorkflowPresenter;
-
-    private WorkflowAdapter mWorkflowAdapter;
-
-
     private List<Workflow> mWorkflowList;
 
     @Override
@@ -82,9 +82,6 @@ public class MyWorkflowFragment extends Fragment implements MyWorkflowMvpView,
 
         mWorkflowList = new ArrayList<>();
 
-        dataManager = new DataManager(new PreferencesHelper(getContext()));
-
-        mWorkflowPresenter = new MyWorkflowPresenter(dataManager);
 
         setHasOptionsMenu(true);
     }
@@ -94,7 +91,7 @@ public class MyWorkflowFragment extends Fragment implements MyWorkflowMvpView,
             savedInstanceState) {
 
         View rootView = inflater.inflate(R.layout.fragment_dashboard, container, false);
-
+        ((BaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
 
         mWorkflowPresenter.attachView(this);

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowPresenter.java
index 2fea21c..0107501 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowPresenter.java
@@ -28,6 +28,8 @@ import org.apache.taverna.mobile.ui.base.BasePresenter;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.inject.Inject;
+
 import io.reactivex.Observable;
 import io.reactivex.ObservableSource;
 import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -41,9 +43,9 @@ public class MyWorkflowPresenter extends BasePresenter<MyWorkflowMvpView> {
     public final String LOG_TAG = getClass().getSimpleName();
 
     private DataManager mDataManager;
-
     private CompositeDisposable compositeDisposable;
 
+    @Inject
     public MyWorkflowPresenter(DataManager dataManager) {
         mDataManager = dataManager;
         compositeDisposable = new CompositeDisposable();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowsActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowsActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowsActivity.java
deleted file mode 100644
index 92aa528..0000000
--- a/app/src/main/java/org/apache/taverna/mobile/ui/myworkflows/MyWorkflowsActivity.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.apache.taverna.mobile.ui.myworkflows;
-
-import android.support.annotation.Nullable;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
-import android.os.Bundle;
-import android.support.v7.widget.Toolbar;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import org.apache.taverna.mobile.R;
-import org.apache.taverna.mobile.utils.ActivityUtils;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-public class MyWorkflowsActivity extends AppCompatActivity {
-
-    @BindView(R.id.toolbar)
-    Toolbar mToolbar;
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_my_workflows);
-
-        ButterKnife.bind(this);
-
-        setSupportActionBar(mToolbar);
-        ActionBar actionbar = getSupportActionBar();
-
-        if (actionbar != null) {
-            actionbar.setHomeButtonEnabled(true);
-            actionbar.setDisplayHomeAsUpEnabled(true);
-            actionbar.setTitle(R.string.title_nav_my_workflows);
-        }
-
-        if (savedInstanceState == null) {
-            ActivityUtils.addFragmentToActivity(getSupportFragmentManager(),
-                    new MyWorkflowFragment(), R.id.frame_container);
-        }
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.dashboard_main, menu);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case android.R.id.home:
-                finish();
-                return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginFragment.java
index 6c78ca8..3195f93 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginFragment.java
@@ -22,6 +22,7 @@ package org.apache.taverna.mobile.ui.playerlogin;
 import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.DataManager;
 import org.apache.taverna.mobile.data.local.PreferencesHelper;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.utils.ConnectionInfo;
 
 import android.content.Context;
@@ -39,6 +40,8 @@ import android.view.WindowManager;
 import android.widget.CheckBox;
 import android.widget.EditText;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
@@ -47,6 +50,9 @@ import butterknife.OnClick;
 public class PlayerLoginFragment extends Fragment implements PlayerLoginMvpView, View
         .OnFocusChangeListener {
 
+    @Inject DataManager dataManager;
+    @Inject PlayerLoginPresenter mPlayerLoginPresenter;
+
     @BindView(R.id.etEmail)
     EditText mEditTextEmail;
 
@@ -62,13 +68,10 @@ public class PlayerLoginFragment extends Fragment implements PlayerLoginMvpView,
     @BindView(R.id.cbRemember)
     CheckBox mCheckBoxRemember;
     OnSuccessful mCallback;
-    private DataManager dataManager;
-    private PlayerLoginPresenter mPlayerLoginPresenter;
 
     public static PlayerLoginFragment newInstance() {
 
         Bundle args = new Bundle();
-
         PlayerLoginFragment fragment = new PlayerLoginFragment();
         fragment.setArguments(args);
         return fragment;
@@ -78,8 +81,6 @@ public class PlayerLoginFragment extends Fragment implements PlayerLoginMvpView,
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        dataManager = new DataManager(new PreferencesHelper(getContext()));
-        mPlayerLoginPresenter = new PlayerLoginPresenter(dataManager);
 
     }
 
@@ -88,6 +89,7 @@ public class PlayerLoginFragment extends Fragment implements PlayerLoginMvpView,
             savedInstanceState) {
 
         View rootView = inflater.inflate(R.layout.fragment_player_login_layout, container, false);
+        ((BaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
         mPlayerLoginPresenter.attachView(this);
         String email = dataManager.getPreferencesHelper().getPlayerUserEmail();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginPresenter.java
index b8a4d65..b75a9d0 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/playerlogin/PlayerLoginPresenter.java
@@ -25,6 +25,8 @@ import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.DataManager;
 import org.apache.taverna.mobile.ui.base.BasePresenter;
 
+import javax.inject.Inject;
+
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
 import io.reactivex.observers.DisposableObserver;
@@ -39,6 +41,7 @@ public class PlayerLoginPresenter extends BasePresenter<PlayerLoginMvpView> {
     private DataManager mDataManager;
     private CompositeDisposable compositeDisposable;
 
+    @Inject
     public PlayerLoginPresenter(DataManager dataManager) {
         mDataManager = dataManager;
         compositeDisposable = new CompositeDisposable();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/tutorial/TutorialActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/tutorial/TutorialActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/tutorial/TutorialActivity.java
index 23b11f0..1efaa9c 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/tutorial/TutorialActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/tutorial/TutorialActivity.java
@@ -33,14 +33,16 @@ import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.local.PreferencesHelper;
 import org.apache.taverna.mobile.data.model.TutorialSliderEnum;
 import org.apache.taverna.mobile.ui.adapter.TutorialSliderAdapter;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.ui.login.LoginActivity;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
 
-
-public class TutorialActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
+public class TutorialActivity extends BaseActivity implements ViewPager.OnPageChangeListener {
 
     @BindView(R.id.slide_pager)
     ViewPager slidePager;
@@ -54,12 +56,13 @@ public class TutorialActivity extends AppCompatActivity implements ViewPager.OnP
     @BindView(R.id.btn_next)
     Button bNext;
 
-    private PreferencesHelper preferencesHelper;
+    @Inject
+    PreferencesHelper preferencesHelper;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        preferencesHelper = new PreferencesHelper(this);
+        getActivityComponent().inject(this);
 
         setContentView(R.layout.activity_tutorial);
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileActivity.java b/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileActivity.java
index 9e3719f..437fd47 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileActivity.java
@@ -26,11 +26,12 @@ import android.support.v7.widget.Toolbar;
 import android.view.MenuItem;
 
 import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.utils.ActivityUtils;
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
-public class UserProfileActivity extends AppCompatActivity {
+public class UserProfileActivity extends BaseActivity {
 
     @BindView(R.id.toolbar)
     Toolbar mToolbar;
@@ -55,7 +56,6 @@ public class UserProfileActivity extends AppCompatActivity {
             ActivityUtils.addFragmentToActivity(getSupportFragmentManager(),
                     new UserProfileFragment(), R.id.frame_container);
         }
-
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileFragment.java
index c80a17e..de266f2 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/userprofile/UserProfileFragment.java
@@ -17,8 +17,11 @@ import com.bumptech.glide.request.target.SimpleTarget;
 import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.DataManager;
 import org.apache.taverna.mobile.data.local.PreferencesHelper;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.ui.favouriteworkflow.FavouriteWorkflowsActivity;
-import org.apache.taverna.mobile.ui.myworkflows.MyWorkflowsActivity;
+import org.apache.taverna.mobile.ui.myworkflows.MyWorkflowActivity;
+
+import javax.inject.Inject;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
@@ -27,6 +30,8 @@ import de.hdodenhof.circleimageview.CircleImageView;
 
 public class UserProfileFragment extends Fragment {
 
+    @Inject DataManager dataManager;
+
     @BindView(R.id.user_name)
     TextView mUserName;
 
@@ -48,8 +53,6 @@ public class UserProfileFragment extends Fragment {
     @BindView(R.id.user_country)
     TextView mUserCountry;
 
-    private DataManager dataManager;
-
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
         return inflater.inflate(R.layout.fragment_user_profile, parent, false);
@@ -58,6 +61,7 @@ public class UserProfileFragment extends Fragment {
 
     @Override
     public void onViewCreated(View view, Bundle savedInstanceState) {
+        ((BaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, view);
 
         setUserDetail();
@@ -66,7 +70,7 @@ public class UserProfileFragment extends Fragment {
 
     @OnClick(R.id.my_workflow_layout)
     void myWorkflows(View v) {
-        Intent intent = new Intent(getActivity(), MyWorkflowsActivity.class);
+        Intent intent = new Intent(getActivity(), MyWorkflowActivity.class);
         getActivity().startActivity(intent);
     }
 
@@ -78,8 +82,6 @@ public class UserProfileFragment extends Fragment {
 
     private void setUserDetail() {
 
-        dataManager = new DataManager(new PreferencesHelper(getContext()));
-
         String userName = dataManager.getPreferencesHelper().getUserName();
         String userDescription = dataManager.getPreferencesHelper().getUserDescription();
         String userEmail = dataManager.getPreferencesHelper().getUserEmail();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowFragment.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowFragment.java
index ddd9b0b..b87b947 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowFragment.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowFragment.java
@@ -18,7 +18,6 @@
  */
 package org.apache.taverna.mobile.ui.workflow;
 
-
 import org.apache.taverna.mobile.R;
 import org.apache.taverna.mobile.data.DataManager;
 import org.apache.taverna.mobile.data.model.Workflow;
@@ -26,6 +25,7 @@ import org.apache.taverna.mobile.data.model.Workflows;
 import org.apache.taverna.mobile.ui.adapter.EndlessRecyclerOnScrollListener;
 import org.apache.taverna.mobile.ui.adapter.RecyclerItemClickListner;
 import org.apache.taverna.mobile.ui.adapter.WorkflowAdapter;
+import org.apache.taverna.mobile.ui.base.BaseActivity;
 import org.apache.taverna.mobile.ui.workflowdetail.WorkflowDetailActivity;
 import org.apache.taverna.mobile.utils.ConnectionInfo;
 import org.apache.taverna.mobile.utils.Constants;
@@ -53,6 +53,8 @@ import android.widget.ProgressBar;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.ButterKnife;
 
@@ -61,6 +63,11 @@ public class WorkflowFragment extends Fragment implements WorkflowMvpView,
 
     public final String LOG_TAG = getClass().getSimpleName();
 
+    @Inject
+    WorkflowPresenter mWorkflowPresenter;
+    WorkflowAdapter mWorkflowAdapter;
+    WorkflowAdapter mSearchWorkflowAdapter;
+
     @BindView(R.id.rv_workflows)
     RecyclerView mRecyclerView;
 
@@ -70,10 +77,6 @@ public class WorkflowFragment extends Fragment implements WorkflowMvpView,
     @BindView(R.id.swipe_refresh)
     ScrollChildSwipeRefreshLayout mSwipeRefresh;
 
-    private WorkflowPresenter mWorkflowPresenter;
-    private WorkflowAdapter mWorkflowAdapter;
-    private WorkflowAdapter mSearchWorkflowAdapter;
-
     private int mPageNumber = 1;
 
     private int mSearchPageNumber = 1;
@@ -87,8 +90,6 @@ public class WorkflowFragment extends Fragment implements WorkflowMvpView,
         super.onCreate(savedInstanceState);
         mWorkflowList = new ArrayList<>();
         mSearchWorkflowList = new ArrayList<>();
-        DataManager dataManager = new DataManager();
-        mWorkflowPresenter = new WorkflowPresenter(dataManager);
         setHasOptionsMenu(true);
     }
 
@@ -96,6 +97,7 @@ public class WorkflowFragment extends Fragment implements WorkflowMvpView,
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
             savedInstanceState) {
         View rootView = inflater.inflate(R.layout.fragment_dashboard, container, false);
+        ((BaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
         mWorkflowPresenter.attachView(this);
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c421e709/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowPresenter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowPresenter.java b/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowPresenter.java
index 18a166a..24d0827 100644
--- a/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowPresenter.java
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/workflow/WorkflowPresenter.java
@@ -32,6 +32,8 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
+import javax.inject.Inject;
+
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
 import io.reactivex.observers.DisposableObserver;
@@ -40,10 +42,11 @@ import io.reactivex.schedulers.Schedulers;
 public class WorkflowPresenter extends BasePresenter<WorkflowMvpView> {
 
     public final String LOG_TAG = WorkflowPresenter.class.getSimpleName();
+
     private DataManager mDataManager;
     private CompositeDisposable compositeDisposable;
 
-
+    @Inject
     public WorkflowPresenter(DataManager dataManager) {
         mDataManager = dataManager;
         compositeDisposable = new CompositeDisposable();