http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/app/src/main/java/org/apache/taverna/mobile/broadcastreceivers/WorkflowDownloadReceiver.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/broadcastreceivers/WorkflowDownloadReceiver.java
 
b/app/src/main/java/org/apache/taverna/mobile/broadcastreceivers/WorkflowDownloadReceiver.java
index 0657b46..383f707 100644
--- 
a/app/src/main/java/org/apache/taverna/mobile/broadcastreceivers/WorkflowDownloadReceiver.java
+++ 
b/app/src/main/java/org/apache/taverna/mobile/broadcastreceivers/WorkflowDownloadReceiver.java
@@ -2,10 +2,10 @@ package org.apache.taverna.mobile.broadcastreceivers;
 /**
  * Apache Taverna Mobile
  * Copyright 2015 The Apache Software Foundation
-
+ *
  * This product includes software developed at
  * The Apache Software Foundation (http://www.apache.org/).
-
+ *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
@@ -23,15 +23,16 @@ package org.apache.taverna.mobile.broadcastreceivers;
  * specific language governing permissions and limitations
  * under the License.
  */
+
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.utils.WorkflowDownloadManager;
+
 import android.app.DownloadManager;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.database.Cursor;
 
-import org.apache.taverna.mobile.R;
-import org.apache.taverna.mobile.utils.WorkflowDownloadManager;
-
 public class WorkflowDownloadReceiver extends BroadcastReceiver {
     public WorkflowDownloadReceiver() {
     }
@@ -43,19 +44,21 @@ public class WorkflowDownloadReceiver extends 
BroadcastReceiver {
         DownloadManager mgr = (DownloadManager) 
context.getSystemService(Context.DOWNLOAD_SERVICE);
         WorkflowDownloadManager wdm = new WorkflowDownloadManager(context, 
mgr);
 
-        DownloadManager.Query query = new DownloadManager.Query(); //ask for 
information about the download queue
+        DownloadManager.Query query = new DownloadManager.Query(); //ask for 
information about
+        // the download queue
         query.setFilterById(receivedID);
         Cursor cur = mgr.query(query);
         int index = cur.getColumnIndex(DownloadManager.COLUMN_STATUS);
-//        String workflow = 
cur.getString(cur.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME));
+//        String workflow = cur.getString(cur.getColumnIndex(DownloadManager
+// .COLUMN_LOCAL_FILENAME));
 
-        if(cur.moveToFirst()) {
-            if(cur.getInt(index) == DownloadManager.STATUS_SUCCESSFUL){
+        if (cur.moveToFirst()) {
+            if (cur.getInt(index) == DownloadManager.STATUS_SUCCESSFUL) {
                 
wdm.sendNotification(context.getResources().getString(R.string.downloadcomplete));
-            }else{
+            } else {
                 
wdm.sendNotification(context.getResources().getString(R.string.downloadfailed));
             }
-        }else{
+        } else {
             
wdm.sendNotification(context.getResources().getString(R.string.downloadfailed));
         }
         cur.close();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/app/src/main/java/org/apache/taverna/mobile/customviews/WorkflowPreviewImageView.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/customviews/WorkflowPreviewImageView.java
 
b/app/src/main/java/org/apache/taverna/mobile/customviews/WorkflowPreviewImageView.java
index 5f5276e..fb0b497 100644
--- 
a/app/src/main/java/org/apache/taverna/mobile/customviews/WorkflowPreviewImageView.java
+++ 
b/app/src/main/java/org/apache/taverna/mobile/customviews/WorkflowPreviewImageView.java
@@ -2,10 +2,10 @@ package org.apache.taverna.mobile.customviews;
 /**
  * Apache Taverna Mobile
  * Copyright 2015 The Apache Software Foundation
-
+ *
  * This product includes software developed at
  * The Apache Software Foundation (http://www.apache.org/).
-
+ *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
@@ -37,13 +37,12 @@ import android.widget.ImageView;
 /**
  * Created by Akah Harvey on 6/29/15.
  */
-public class WorkflowPreviewImageView extends ImageView{
-    Matrix matrix = new Matrix();
-
+public class WorkflowPreviewImageView extends ImageView {
     static final int NONE = 0;
     static final int DRAG = 1;
     static final int ZOOM = 2;
     static final int CLICK = 3;
+    Matrix matrix = new Matrix();
     int mode = NONE;
 
     PointF last = new PointF();
@@ -60,8 +59,7 @@ public class WorkflowPreviewImageView extends ImageView{
     ScaleGestureDetector mScaleDetector;
     Context context;
 
-    public WorkflowPreviewImageView(Context context, AttributeSet attr)
-    {
+    public WorkflowPreviewImageView(Context context, AttributeSet attr) {
         super(context, attr);
         super.setClickable(true);
         this.context = context;
@@ -71,12 +69,10 @@ public class WorkflowPreviewImageView extends ImageView{
         setImageMatrix(matrix);
         setScaleType(ScaleType.MATRIX);
 
-        setOnTouchListener(new OnTouchListener()
-        {
+        setOnTouchListener(new OnTouchListener() {
 
             @Override
-            public boolean onTouch(View v, MotionEvent event)
-            {
+            public boolean onTouch(View v, MotionEvent event) {
                 mScaleDetector.onTouchEvent(event);
 
                 matrix.getValues(m);
@@ -84,8 +80,7 @@ public class WorkflowPreviewImageView extends ImageView{
                 float y = m[Matrix.MTRANS_Y];
                 PointF curr = new PointF(event.getX(), event.getY());
 
-                switch (event.getAction())
-                {
+                switch (event.getAction()) {
                     //when one finger is touching
                     //set the mode to DRAG
                     case MotionEvent.ACTION_DOWN:
@@ -105,38 +100,36 @@ public class WorkflowPreviewImageView extends ImageView{
                     case MotionEvent.ACTION_MOVE:
                         //if the mode is ZOOM or
                         //if the mode is DRAG and already zoomed
-                        if (mode == ZOOM || (mode == DRAG && saveScale > 
minScale))
-                        {
-                            float deltaX = curr.x - last.x;// x difference
-                            float deltaY = curr.y - last.y;// y difference
-                            float scaleWidth = Math.round(origWidth * 
saveScale);// width after applying current scale
-                            float scaleHeight = Math.round(origHeight * 
saveScale);// height after applying current scale
+                        if (mode == ZOOM || (mode == DRAG && saveScale > 
minScale)) {
+                            float deltaX = curr.x - last.x; // x difference
+                            float deltaY = curr.y - last.y; // y difference
+                            float scaleWidth = Math.round(origWidth * 
saveScale); // width after
+                            // applying current scale
+                            float scaleHeight = Math.round(origHeight * 
saveScale); // height
+                            // after applying current scale
                             //if scaleWidth is smaller than the views width
                             //in other words if the image width fits in the 
view
                             //limit left and right movement
-                            if (scaleWidth < width)
-                            {
+                            if (scaleWidth < width) {
                                 deltaX = 0;
-                                if (y + deltaY > 0)
+                                if (y + deltaY > 0) {
                                     deltaY = -y;
-                                else if (y + deltaY < -bottom)
+                                } else if (y + deltaY < -bottom) {
                                     deltaY = -(y + bottom);
-                            }
-                            //if scaleHeight is smaller than the views height
-                            //in other words if the image height fits in the 
view
-                            //limit up and down movement
-                            else if (scaleHeight < height)
-                            {
+                                }
+                            } else if (scaleHeight < height) {
+                                //if scaleHeight is smaller than the views 
height
+                                //in other words if the image height fits in 
the view
+                                //limit up and down movement
                                 deltaY = 0;
-                                if (x + deltaX > 0)
+                                if (x + deltaX > 0) {
                                     deltaX = -x;
-                                else if (x + deltaX < -right)
+                                } else if (x + deltaX < -right) {
                                     deltaX = -(x + right);
-                            }
+                                }
+                            } else {
                             //if the image doesnt fit in the width or height
                             //limit both up and down and left and right
-                            else
-                            {
                                 if (x + deltaX > 0)
                                     deltaX = -x;
                                 else if (x + deltaX < -right)
@@ -175,65 +168,80 @@ public class WorkflowPreviewImageView extends ImageView{
     }
 
     @Override
-    public void setImageBitmap(Bitmap bm)
-    {
+    public void setImageBitmap(Bitmap bm) {
         super.setImageBitmap(bm);
         bmWidth = bm.getWidth();
         bmHeight = bm.getHeight();
     }
 
-    public void setMaxZoom(float x)
-    {
+    public void setMaxZoom(float x) {
         maxScale = x;
     }
 
-    private class ScaleListener extends 
ScaleGestureDetector.SimpleOnScaleGestureListener
-    {
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        width = MeasureSpec.getSize(widthMeasureSpec);
+        height = MeasureSpec.getSize(heightMeasureSpec);
+        //Fit to screen.
+        float scale;
+        float scaleX = width / bmWidth;
+        float scaleY = height / bmHeight;
+        scale = Math.min(scaleX, scaleY);
+        matrix.setScale(scale, scale);
+        setImageMatrix(matrix);
+        saveScale = 1f;
+
+        // Center the image
+        redundantYSpace = height - (scale * bmHeight);
+        redundantXSpace = width - (scale * bmWidth);
+        redundantYSpace /= 2;
+        redundantXSpace /= 2;
+
+        matrix.postTranslate(redundantXSpace, redundantYSpace);
+
+        origWidth = width - 2 * redundantXSpace;
+        origHeight = height - 2 * redundantYSpace;
+        right = width * saveScale - width - (2 * redundantXSpace * saveScale);
+        bottom = height * saveScale - height - (2 * redundantYSpace * 
saveScale);
+        setImageMatrix(matrix);
+    }
+
+    private class ScaleListener extends 
ScaleGestureDetector.SimpleOnScaleGestureListener {
 
         @Override
-        public boolean onScaleBegin(ScaleGestureDetector detector)
-        {
+        public boolean onScaleBegin(ScaleGestureDetector detector) {
             mode = ZOOM;
             return true;
         }
 
         @Override
-        public boolean onScale(ScaleGestureDetector detector)
-        {
+        public boolean onScale(ScaleGestureDetector detector) {
             float mScaleFactor = detector.getScaleFactor();
             float origScale = saveScale;
             saveScale *= mScaleFactor;
-            if (saveScale > maxScale)
-            {
+            if (saveScale > maxScale) {
                 saveScale = maxScale;
                 mScaleFactor = maxScale / origScale;
-            }
-            else if (saveScale < minScale)
-            {
+            } else if (saveScale < minScale) {
                 saveScale = minScale;
                 mScaleFactor = minScale / origScale;
             }
             right = width * saveScale - width - (2 * redundantXSpace * 
saveScale);
             bottom = height * saveScale - height - (2 * redundantYSpace * 
saveScale);
-            if (origWidth * saveScale <= width || origHeight * saveScale <= 
height)
-            {
+            if (origWidth * saveScale <= width || origHeight * saveScale <= 
height) {
                 matrix.postScale(mScaleFactor, mScaleFactor, width / 2, height 
/ 2);
-                if (mScaleFactor < 1)
-                {
+                if (mScaleFactor < 1) {
                     matrix.getValues(m);
                     float x = m[Matrix.MTRANS_X];
                     float y = m[Matrix.MTRANS_Y];
-                    if (mScaleFactor < 1)
-                    {
-                        if (Math.round(origWidth * saveScale) < width)
-                        {
+                    if (mScaleFactor < 1) {
+                        if (Math.round(origWidth * saveScale) < width) {
                             if (y < -bottom)
                                 matrix.postTranslate(0, -(y + bottom));
                             else if (y > 0)
                                 matrix.postTranslate(0, -y);
-                        }
-                        else
-                        {
+                        } else {
                             if (x < -right)
                                 matrix.postTranslate(-(x + right), 0);
                             else if (x > 0)
@@ -241,10 +249,9 @@ public class WorkflowPreviewImageView extends ImageView{
                         }
                     }
                 }
-            }
-            else
-            {
-                matrix.postScale(mScaleFactor, mScaleFactor, 
detector.getFocusX(), detector.getFocusY());
+            } else {
+                matrix.postScale(mScaleFactor, mScaleFactor, 
detector.getFocusX(), detector
+                        .getFocusY());
                 matrix.getValues(m);
                 float x = m[Matrix.MTRANS_X];
                 float y = m[Matrix.MTRANS_Y];
@@ -262,34 +269,4 @@ public class WorkflowPreviewImageView extends ImageView{
             return true;
         }
     }
-
-    @Override
-    protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
-    {
-        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-        width = MeasureSpec.getSize(widthMeasureSpec);
-        height = MeasureSpec.getSize(heightMeasureSpec);
-        //Fit to screen.
-        float scale;
-        float scaleX =  width / bmWidth;
-        float scaleY = height / bmHeight;
-        scale = Math.min(scaleX, scaleY);
-        matrix.setScale(scale, scale);
-        setImageMatrix(matrix);
-        saveScale = 1f;
-
-        // Center the image
-        redundantYSpace = height - (scale * bmHeight) ;
-        redundantXSpace = width - (scale * bmWidth);
-        redundantYSpace /= 2;
-        redundantXSpace /= 2;
-
-        matrix.postTranslate(redundantXSpace, redundantYSpace);
-
-        origWidth = width - 2 * redundantXSpace;
-        origHeight = height - 2 * redundantYSpace;
-        right = width * saveScale - width - (2 * redundantXSpace * saveScale);
-        bottom = height * saveScale - height - (2 * redundantYSpace * 
saveScale);
-        setImageMatrix(matrix);
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/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 d41accf..52863e3 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
@@ -1,7 +1,7 @@
 package org.apache.taverna.mobile.data;
 
-import org.apache.taverna.mobile.data.model.DetailAnnouncement;
 import org.apache.taverna.mobile.data.model.Announcements;
+import org.apache.taverna.mobile.data.model.DetailAnnouncement;
 import org.apache.taverna.mobile.data.remote.BaseApiManager;
 
 import rx.Observable;
@@ -13,22 +13,20 @@ public class DataManager {
 
     public BaseApiManager mBaseApiManager = new BaseApiManager();
 
-    public DataManager(){
+    public DataManager() {
     }
 
     /**
-     *
      * @return List of all Announcement
      */
-    public Observable<Announcements> getAllAnnouncement(int pageNumber){
+    public Observable<Announcements> getAllAnnouncement(int pageNumber) {
         return mBaseApiManager.getTavernaApi().getAllAnnouncements(pageNumber);
     }
 
     /**
-     *
      * @return Detail of Announcement
      */
-    public Observable<DetailAnnouncement> getAnnouncementDetail(String id){
+    public Observable<DetailAnnouncement> getAnnouncementDetail(String id) {
         return mBaseApiManager.getTavernaApi().getAnnouncement(id);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/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 7f32e5a..3904374 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
@@ -1,30 +1,48 @@
 package org.apache.taverna.mobile.data.model;
 
-import android.os.Parcel;
-import android.os.Parcelable;
-
 import org.simpleframework.xml.Attribute;
 import org.simpleframework.xml.Text;
 
+import android.os.Parcel;
+import android.os.Parcelable;
+
 /**
  * Created by Sagar
  */
 public class Announcement implements Parcelable {
 
+    public static final Parcelable.Creator<Announcement> CREATOR = new 
Parcelable
+            .Creator<Announcement>() {
+        @Override
+        public Announcement createFromParcel(Parcel source) {
+            return new Announcement(source);
+        }
+
+        @Override
+        public Announcement[] newArray(int size) {
+            return new Announcement[size];
+        }
+    };
     @Attribute(name = "resource", required = false)
     String resource;
-
-
     @Attribute(name = "uri", required = false)
     String uri;
-
-
     @Attribute(name = "id", required = false)
     String id;
-
     @Text
     String content;
 
+    public Announcement() {
+    }
+
+
+    protected Announcement(Parcel in) {
+        this.resource = in.readString();
+        this.uri = in.readString();
+        this.id = in.readString();
+        this.content = in.readString();
+    }
+
     public String getContent() {
         return content;
     }
@@ -33,7 +51,6 @@ public class Announcement implements Parcelable {
         this.content = content;
     }
 
-
     public String getResource() {
         return this.resource;
     }
@@ -42,7 +59,6 @@ public class Announcement implements Parcelable {
         this.resource = _value;
     }
 
-
     public String getUri() {
         return this.uri;
     }
@@ -51,7 +67,6 @@ public class Announcement implements Parcelable {
         this.uri = _value;
     }
 
-
     public String getId() {
         return this.id;
     }
@@ -60,7 +75,6 @@ public class Announcement implements Parcelable {
         this.id = _value;
     }
 
-
     @Override
     public int describeContents() {
         return 0;
@@ -73,26 +87,4 @@ public class Announcement implements Parcelable {
         dest.writeString(this.id);
         dest.writeString(this.content);
     }
-
-    public Announcement() {
-    }
-
-    protected Announcement(Parcel in) {
-        this.resource = in.readString();
-        this.uri = in.readString();
-        this.id = in.readString();
-        this.content = in.readString();
-    }
-
-    public static final Parcelable.Creator<Announcement> CREATOR = new 
Parcelable.Creator<Announcement>() {
-        @Override
-        public Announcement createFromParcel(Parcel source) {
-            return new Announcement(source);
-        }
-
-        @Override
-        public Announcement[] newArray(int size) {
-            return new Announcement[size];
-        }
-    };
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/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 01454da..3050637 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
@@ -1,10 +1,11 @@
 package org.apache.taverna.mobile.data.model;
-import android.os.Parcel;
-import android.os.Parcelable;
 
 import org.simpleframework.xml.ElementList;
 import org.simpleframework.xml.Root;
 
+import android.os.Parcel;
+import android.os.Parcelable;
+
 import java.util.List;
 
 /**
@@ -13,15 +14,36 @@ import java.util.List;
 @Root(name = "announcements")
 public class Announcements implements Parcelable {
 
+    public static final Parcelable.Creator<Announcements> CREATOR = new 
Parcelable
+            .Creator<Announcements>() {
+        @Override
+        public Announcements createFromParcel(Parcel source) {
+            return new Announcements(source);
+        }
+
+        @Override
+        public Announcements[] newArray(int size) {
+            return new Announcements[size];
+        }
+    };
     @ElementList(name = "announcement", inline = true, required = false)
     List<Announcement> announcement;
 
+    public Announcements() {
+    }
 
 
+    protected Announcements(Parcel in) {
+        this.announcement = in.createTypedArrayList(Announcement.CREATOR);
+    }
 
-    public List<Announcement> getAnnouncement() { return this.announcement; }
-    public void setAnnouncement(List<Announcement> _value) { this.announcement 
= _value; }
+    public List<Announcement> getAnnouncement() {
+        return this.announcement;
+    }
 
+    public void setAnnouncement(List<Announcement> _value) {
+        this.announcement = _value;
+    }
 
     @Override
     public int describeContents() {
@@ -32,23 +54,4 @@ public class Announcements implements Parcelable {
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeTypedList(this.announcement);
     }
-
-    public Announcements() {
-    }
-
-    protected Announcements(Parcel in) {
-        this.announcement = in.createTypedArrayList(Announcement.CREATOR);
-    }
-
-    public static final Parcelable.Creator<Announcements> CREATOR = new 
Parcelable.Creator<Announcements>() {
-        @Override
-        public Announcements createFromParcel(Parcel source) {
-            return new Announcements(source);
-        }
-
-        @Override
-        public Announcements[] newArray(int size) {
-            return new Announcements[size];
-        }
-    };
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/app/src/main/java/org/apache/taverna/mobile/data/model/Author.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/data/model/Author.java 
b/app/src/main/java/org/apache/taverna/mobile/data/model/Author.java
index 111f64f..09df99f 100644
--- a/app/src/main/java/org/apache/taverna/mobile/data/model/Author.java
+++ b/app/src/main/java/org/apache/taverna/mobile/data/model/Author.java
@@ -1,82 +1,89 @@
 package org.apache.taverna.mobile.data.model;
 
-import android.os.Parcel;
-import android.os.Parcelable;
-
 import org.simpleframework.xml.Attribute;
 import org.simpleframework.xml.Text;
 
+import android.os.Parcel;
+import android.os.Parcelable;
+
 /**
  * Created by Sagar
  */
 public class Author implements Parcelable {
 
-        @Attribute(name="resource", required = false)
-        String resource;
-
-
-        @Attribute(name="uri", required = false)
-        String uri;
-
-
-        @Attribute(name="id", required = false)
-        String id;
-
-        @Text
-        String content;
-
-        public String getContent() {
-            return content;
-        }
-        public void setContent(String content) {
-            this.content = content;
-        }
-
-
-        public String getResource() { return this.resource; }
-        public void setResource(String _value) { this.resource = _value; }
-
-
-        public String getUri() { return this.uri; }
-        public void setUri(String _value) { this.uri = _value; }
-
-
-        public String getId() { return this.id; }
-        public void setId(String _value) { this.id = _value; }
-
-
+    public static final Parcelable.Creator<Author> CREATOR = new 
Parcelable.Creator<Author>() {
         @Override
-        public int describeContents() {
-                return 0;
+        public Author createFromParcel(Parcel source) {
+            return new Author(source);
         }
 
         @Override
-        public void writeToParcel(Parcel dest, int flags) {
-                dest.writeString(this.resource);
-                dest.writeString(this.uri);
-                dest.writeString(this.id);
-                dest.writeString(this.content);
-        }
-
-        public Author() {
+        public Author[] newArray(int size) {
+            return new Author[size];
         }
-
-        protected Author(Parcel in) {
-                this.resource = in.readString();
-                this.uri = in.readString();
-                this.id = in.readString();
-                this.content = in.readString();
-        }
-
-        public static final Parcelable.Creator<Author> CREATOR = new 
Parcelable.Creator<Author>() {
-                @Override
-                public Author createFromParcel(Parcel source) {
-                        return new Author(source);
-                }
-
-                @Override
-                public Author[] newArray(int size) {
-                        return new Author[size];
-                }
-        };
+    };
+    @Attribute(name = "resource", required = false)
+    String resource;
+    @Attribute(name = "uri", required = false)
+    String uri;
+    @Attribute(name = "id", required = false)
+    String id;
+    @Text
+    String content;
+
+    public Author() {
+    }
+
+
+    protected Author(Parcel in) {
+        this.resource = in.readString();
+        this.uri = in.readString();
+        this.id = in.readString();
+        this.content = in.readString();
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getResource() {
+        return this.resource;
+    }
+
+    public void setResource(String _value) {
+        this.resource = _value;
+    }
+
+    public String getUri() {
+        return this.uri;
+    }
+
+    public void setUri(String _value) {
+        this.uri = _value;
+    }
+
+    public String getId() {
+        return this.id;
+    }
+
+    public void setId(String _value) {
+        this.id = _value;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeString(this.resource);
+        dest.writeString(this.uri);
+        dest.writeString(this.id);
+        dest.writeString(this.content);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/app/src/main/java/org/apache/taverna/mobile/data/model/DetailAnnouncement.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/data/model/DetailAnnouncement.java
 
b/app/src/main/java/org/apache/taverna/mobile/data/model/DetailAnnouncement.java
index d291fe3..2715d88 100644
--- 
a/app/src/main/java/org/apache/taverna/mobile/data/model/DetailAnnouncement.java
+++ 
b/app/src/main/java/org/apache/taverna/mobile/data/model/DetailAnnouncement.java
@@ -1,44 +1,61 @@
 package org.apache.taverna.mobile.data.model;
 
-import android.os.Parcel;
-import android.os.Parcelable;
-
 import org.simpleframework.xml.Attribute;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
+import android.os.Parcel;
+import android.os.Parcelable;
+
 /**
  * Created by Sagar
  */
 @Root(name = "announcement")
 public class DetailAnnouncement implements Parcelable {
 
+    public static final Parcelable.Creator<DetailAnnouncement> CREATOR = new 
Parcelable
+            .Creator<DetailAnnouncement>() {
+        @Override
+        public DetailAnnouncement createFromParcel(Parcel source) {
+            return new DetailAnnouncement(source);
+        }
+
+        @Override
+        public DetailAnnouncement[] newArray(int size) {
+            return new DetailAnnouncement[size];
+        }
+    };
+    @Attribute(name = "resource", required = false)
+    String resource;
+    @Attribute(name = "uri", required = false)
+    String uri;
+    @Attribute(name = "id", required = false)
+    String id;
     @Element(name = "author")
     private Author author;
-
     @Element(name = "title")
     private String title;
-
     @Element(name = "text")
     private String text;
-
     @Element(name = "created-at")
     private String date;
-
-    @Attribute(name = "resource", required = false)
-    String resource;
-
-
-    @Attribute(name = "uri", required = false)
-    String uri;
-
-
-    @Attribute(name = "id", required = false)
-    String id;
-
     @Element(name = "id")
     private String idElement;
 
+    public DetailAnnouncement() {
+    }
+
+    protected DetailAnnouncement(Parcel in) {
+        this.author = in.readParcelable(Author.class.getClassLoader());
+        this.title = in.readString();
+        this.text = in.readString();
+        this.date = in.readString();
+        this.resource = in.readString();
+        this.uri = in.readString();
+        this.id = in.readString();
+        this.idElement = in.readString();
+    }
+
     public String getIdElement() {
         return idElement;
     }
@@ -55,7 +72,6 @@ public class DetailAnnouncement implements Parcelable {
         this.resource = _value;
     }
 
-
     public String getUri() {
         return this.uri;
     }
@@ -64,7 +80,6 @@ public class DetailAnnouncement implements Parcelable {
         this.uri = _value;
     }
 
-
     public String getId() {
         return this.id;
     }
@@ -73,7 +88,6 @@ public class DetailAnnouncement implements Parcelable {
         this.id = _value;
     }
 
-
     public Author getAuthor() {
         return author;
     }
@@ -106,7 +120,6 @@ public class DetailAnnouncement implements Parcelable {
         this.date = date;
     }
 
-
     @Override
     public int describeContents() {
         return 0;
@@ -123,32 +136,6 @@ public class DetailAnnouncement implements Parcelable {
         dest.writeString(this.id);
         dest.writeString(this.idElement);
     }
-
-    public DetailAnnouncement() {
-    }
-
-    protected DetailAnnouncement(Parcel in) {
-        this.author = in.readParcelable(Author.class.getClassLoader());
-        this.title = in.readString();
-        this.text = in.readString();
-        this.date = in.readString();
-        this.resource = in.readString();
-        this.uri = in.readString();
-        this.id = in.readString();
-        this.idElement = in.readString();
-    }
-
-    public static final Parcelable.Creator<DetailAnnouncement> CREATOR = new 
Parcelable.Creator<DetailAnnouncement>() {
-        @Override
-        public DetailAnnouncement createFromParcel(Parcel source) {
-            return new DetailAnnouncement(source);
-        }
-
-        @Override
-        public DetailAnnouncement[] newArray(int size) {
-            return new DetailAnnouncement[size];
-        }
-    };
 }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/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 ec97b34..4fa690b 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
@@ -10,13 +10,12 @@ import 
retrofit2.converter.simplexml.SimpleXmlConverterFactory;
 public class BaseApiManager {
 
 
-    String ENDPOINT = "http://www.myexperiment.org/";;
-
     public TavernaService mTavernaService;
+    String ENDPOINT = "http://www.myexperiment.org/";;
 
-    public BaseApiManager(){
+    public BaseApiManager() {
 
-        mTavernaService = createApi(TavernaService.class,ENDPOINT);
+        mTavernaService = createApi(TavernaService.class, ENDPOINT);
     }
 
     /******** Helper class that sets up a new services *******/
@@ -29,10 +28,10 @@ public class BaseApiManager {
                 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                 .build();
 
-        return  retrofit.create(clazz);
+        return retrofit.create(clazz);
     }
 
-    public TavernaService getTavernaApi(){
+    public TavernaService getTavernaApi() {
         return mTavernaService;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java 
b/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
index f483490..cbc05e3 100644
--- 
a/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
+++ 
b/app/src/main/java/org/apache/taverna/mobile/data/remote/TavernaService.java
@@ -1,7 +1,7 @@
 package org.apache.taverna.mobile.data.remote;
 
-import org.apache.taverna.mobile.data.model.DetailAnnouncement;
 import org.apache.taverna.mobile.data.model.Announcements;
+import org.apache.taverna.mobile.data.model.DetailAnnouncement;
 
 import retrofit2.http.GET;
 import retrofit2.http.Query;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/app/src/main/java/org/apache/taverna/mobile/fragments/FavoriteFragment.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/fragments/FavoriteFragment.java 
b/app/src/main/java/org/apache/taverna/mobile/fragments/FavoriteFragment.java
index dccaa01..86278a8 100644
--- 
a/app/src/main/java/org/apache/taverna/mobile/fragments/FavoriteFragment.java
+++ 
b/app/src/main/java/org/apache/taverna/mobile/fragments/FavoriteFragment.java
@@ -25,6 +25,12 @@ package org.apache.taverna.mobile.fragments;
 * under the License.
 */
 
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.adapters.FavoriteWorkflowAdapter;
+import org.apache.taverna.mobile.adapters.WorkflowAdapter;
+import org.apache.taverna.mobile.utils.WorkflowDB;
+import org.json.JSONException;
+
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.support.v7.widget.LinearLayoutManager;
@@ -34,16 +40,9 @@ import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.AdapterView;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import org.apache.taverna.mobile.R;
-import org.apache.taverna.mobile.adapters.FavoriteWorkflowAdapter;
-import org.apache.taverna.mobile.adapters.WorkflowAdapter;
-import org.apache.taverna.mobile.utils.Workflow_DB;
-import org.json.JSONException;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -51,16 +50,19 @@ import java.util.List;
 /**
  * Created by Larry Akah on 6/6/15.
  */
-public class FavoriteFragment extends Fragment implements 
RecyclerView.OnCreateContextMenuListener{
+public class FavoriteFragment extends Fragment implements 
RecyclerView.OnCreateContextMenuListener {
     /**
      * The fragment argument representing the section number for this
      * fragment.
      */
     private static final String ARG_SECTION_NUMBER = "SECTION_NUMBER";
     public FavoriteWorkflowAdapter favoriteAdapter;
+    public WorkflowDB myWorkflowDb;
     private RecyclerView wFavoriteListView;
     private RecyclerView.AdapterDataObserver dataObserver;
-    public Workflow_DB myWorkflowDb;
+
+    public FavoriteFragment() {
+    }
 
     /**
      * Returns a new instance of this fragment for the given section
@@ -75,22 +77,19 @@ public class FavoriteFragment extends Fragment implements 
RecyclerView.OnCreateC
         return fragment;
     }
 
-    public FavoriteFragment() {
-    }
-
     @Override
-    public void onCreate(Bundle savedInstanceState){
+    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        dataObserver = new RecyclerView.AdapterDataObserver(){
+        dataObserver = new RecyclerView.AdapterDataObserver() {
             @Override
             public void onChanged() {
                 super.onChanged();
-               // Toast.makeText(getActivity(), "data changed", 
Toast.LENGTH_SHORT).show();
+                // Toast.makeText(getActivity(), "data changed", 
Toast.LENGTH_SHORT).show();
                 setUpFavoriteData();
                 setUpListView();
             }
         };
-       setUpFavoriteData();
+        setUpFavoriteData();
 
     }
 
@@ -98,7 +97,7 @@ public class FavoriteFragment extends Fragment implements 
RecyclerView.OnCreateC
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                              Bundle savedInstanceState) {
         View rootView = inflater.inflate(R.layout.fragment_dashboard_main, 
container, false);
-        wFavoriteListView = 
(RecyclerView)rootView.findViewById(R.id.favoriteList);
+        wFavoriteListView = (RecyclerView) 
rootView.findViewById(R.id.favoriteList);
         wFavoriteListView.setHasFixedSize(true);
         wFavoriteListView.setLayoutManager(new 
LinearLayoutManager(getActivity()));
         wFavoriteListView.setAdapter(favoriteAdapter);
@@ -108,15 +107,16 @@ public class FavoriteFragment extends Fragment implements 
RecyclerView.OnCreateC
     /**
      * Prepare the data to be used in the list as favorite items
      */
-    private void setUpFavoriteData(){
-        myWorkflowDb = new Workflow_DB(getActivity(), 
WorkflowAdapter.WORKFLOW_FAVORITE_KEY);
+    private void setUpFavoriteData() {
+        myWorkflowDb = new WorkflowDB(getActivity(), 
WorkflowAdapter.WORKFLOW_FAVORITE_KEY);
         try {
             List<ArrayList<Object>> mfavorites = myWorkflowDb.get();
             favoriteAdapter = new FavoriteWorkflowAdapter(getActivity(), 
mfavorites);
             favoriteAdapter.registerAdapterDataObserver(dataObserver);
         } catch (JSONException e) {
             e.printStackTrace();
-            favoriteAdapter = new FavoriteWorkflowAdapter(getActivity(),  
Collections.<ArrayList<Object>>emptyList());
+            favoriteAdapter = new FavoriteWorkflowAdapter(getActivity(), 
Collections
+                    .<ArrayList<Object>>emptyList());
             favoriteAdapter.registerAdapterDataObserver(dataObserver);
         }
     }
@@ -124,9 +124,10 @@ public class FavoriteFragment extends Fragment implements 
RecyclerView.OnCreateC
     /**
      * Populate the listview using the adapter
      */
-    private void setUpListView(){
+    private void setUpListView() {
         wFavoriteListView.setAdapter(favoriteAdapter);
     }
+
     /**
      * Called when a context menu for the {@code view} is about to be shown.
      * Unlike {@link #onCreateOptionsMenu}, this will be called every
@@ -143,14 +144,11 @@ public class FavoriteFragment extends Fragment implements 
RecyclerView.OnCreateC
      * <p/>
      * It is not safe to hold onto the context menu after this method returns.
      * {@inheritDoc}
-     *
-     * @param menu
-     * @param v
-     * @param menuInfo
      */
     @Override
-    public void onCreateContextMenu(ContextMenu menu, View v, 
ContextMenu.ContextMenuInfo menuInfo) {
-       // super.onCreateContextMenu(menu, v, menuInfo);
+    public void onCreateContextMenu(ContextMenu menu, View v, 
ContextMenu.ContextMenuInfo
+            menuInfo) {
+        // super.onCreateContextMenu(menu, v, menuInfo);
         menu.add("View");
         menu.add("Remove");
         menu.setHeaderIcon(R.mipmap.ic_launcher);
@@ -178,14 +176,13 @@ public class FavoriteFragment extends Fragment implements 
RecyclerView.OnCreateC
     @Override
     public boolean onContextItemSelected(MenuItem item) {
         String title = (String) item.getTitle();
-        if(title.equals("View")){
-            Toast.makeText(getActivity(),"View", Toast.LENGTH_SHORT).show();
+        if (title.equals("View")) {
+            Toast.makeText(getActivity(), "View", Toast.LENGTH_SHORT).show();
             return true;
-        }
-        else if (title.equals("Remove")){
-            Toast.makeText(getActivity(),"Removing", 
Toast.LENGTH_SHORT).show();
+        } else if (title.equals("Remove")) {
+            Toast.makeText(getActivity(), "Removing", 
Toast.LENGTH_SHORT).show();
             return true;
-        }else
+        } else
             return super.onContextItemSelected(item);
     }
 
@@ -198,7 +195,7 @@ public class FavoriteFragment extends Fragment implements 
RecyclerView.OnCreateC
     @Override
     public void onResume() {
         super.onResume();
-       // setUpListView();
+        // setUpListView();
         //wFavoriteListView.setOnCreateContextMenuListener(this);
         //registerForContextMenu(wFavoriteListView);
 
@@ -218,9 +215,9 @@ public class FavoriteFragment extends Fragment implements 
RecyclerView.OnCreateC
     /**
      * Causes the empty textView to be set and become visible
      */
-    private void setEmptyText(){
+    private void setEmptyText() {
         View emptyView = wFavoriteListView.getChildAt(1);
-        if(emptyView instanceof TextView){
+        if (emptyView instanceof TextView) {
             emptyView.setVisibility(View.VISIBLE);
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
 
b/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
index 2b83374..98523a1 100644
--- 
a/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
+++ 
b/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
@@ -2,10 +2,10 @@ package org.apache.taverna.mobile.fragments;
 /**
  * Apache Taverna Mobile
  * Copyright 2015 The Apache Software Foundation
-
+ *
  * This product includes software developed at
  * The Apache Software Foundation (http://www.apache.org/).
-
+ *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
@@ -24,6 +24,13 @@ package org.apache.taverna.mobile.fragments;
  * under the License.
  */
 
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.adapters.WorkflowAdapter;
+import org.apache.taverna.mobile.tavernamobile.User;
+import org.apache.taverna.mobile.tavernamobile.Workflow;
+import org.apache.taverna.mobile.utils.AvatarLoader;
+import org.apache.taverna.mobile.utils.WorkflowLoader;
+
 import android.app.Activity;
 import android.app.ProgressDialog;
 import android.app.SearchManager;
@@ -52,14 +59,6 @@ import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import org.apache.taverna.mobile.R;
-import org.apache.taverna.mobile.activities.DashboardMainActivity;
-import org.apache.taverna.mobile.adapters.WorkflowAdapter;
-import org.apache.taverna.mobile.tavernamobile.User;
-import org.apache.taverna.mobile.tavernamobile.Workflow;
-import org.apache.taverna.mobile.utils.AvatarLoader;
-import org.apache.taverna.mobile.utils.WorkflowLoader;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.HttpURLConnection;
@@ -73,43 +72,47 @@ import java.util.List;
  * with a GridView.
  * <p/>
  */
-public class WorkflowItemFragment extends Fragment implements 
SwipeRefreshLayout.OnRefreshListener,SearchView.OnQueryTextListener {
+public class WorkflowItemFragment extends Fragment implements 
SwipeRefreshLayout
+        .OnRefreshListener, SearchView.OnQueryTextListener {
 
     // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
     private static final String ARG_PARAM1 = "param1";
     private static final String ARG_PARAM2 = "param2";
-
-    private Animation in;
-    private ProgressDialog mProgressDialog; //progressbar used to indicate the 
state of the workflow loaders
-
-    private String mParam1;
-    private String mParam2;
-
+    public static Context cx;
+    //variables controlling the different kinds of data loading
+    public static boolean isLoadMoreData = false;
+    public static boolean isRefreshData = false;
     /**
      * The fragment's ListView/GridView.
      */
     private static RecyclerView mListView;
-    private SwipeRefreshLayout swipeRefreshLayout;
-
     private static View rootView;
-    public static Context cx;
     private static boolean STATE_ON = false;
     private static TextView noDataText;
     private static LruCache<String, Bitmap> avatarCache;
-    private LinearLayoutManager mLinearLayoutManager;
     private static WorkflowAdapter workflowAdapter;
-
     //variables for controlling the infinite scroll mechanism
     private static int previousTotal = 0;
+    private Animation in;
+    private ProgressDialog mProgressDialog; //progressbar used to indicate the 
state of the
+    // workflow loaders
+    private String mParam1;
+    private String mParam2;
+    private SwipeRefreshLayout swipeRefreshLayout;
+    private LinearLayoutManager mLinearLayoutManager;
     private int visibleThreshold = 3;
     private int firstVisibleItem, visibleItemCount, totalItemCount;
     private int currentPage = 1;
-    private boolean loading  = true;
+    private boolean loading = true;
     private InfiniteScrollListener scrollListener;
     private RecyclerView.AdapterDataObserver workflowObserver;
-    //variables controlling the different kinds of data loading
-    public static boolean isLoadMoreData = false;
-    public static boolean isRefreshData = false;
+
+    /**
+     * Mandatory empty constructor for the fragment manager to instantiate the
+     * fragment (e.g. upon screen orientation changes).
+     */
+    public WorkflowItemFragment() {
+    }
 
     public static WorkflowItemFragment newInstance(String param1, String 
param2) {
         WorkflowItemFragment fragment = new WorkflowItemFragment();
@@ -120,13 +123,77 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
         return fragment;
     }
 
+    public static void updateWorkflowUI(final List<Workflow> data) {
+
+        ((Activity) cx).runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                WorkflowItemFragment.workflowAdapter = new WorkflowAdapter(cx, 
data);
+                if (isLoadMoreData) {
+                    isLoadMoreData = false;
+                    isRefreshData = false;
+                    ((WorkflowAdapter) mListView.getAdapter()).addItems(data, 
previousTotal);
+                } else
+                    mListView.swapAdapter(workflowAdapter, false);
+
+                if (WorkflowItemFragment.workflowAdapter.getItemCount() == 0) {
+                    mListView.setVisibility(View.GONE);
+                    noDataText.setVisibility(View.VISIBLE);
+                    //  Toast.makeText(cx, cx.getResources().getString(R.string
+                    // .err_workflow_conn), Toast.LENGTH_LONG).show();
+                } else {
+                    mListView.setVisibility(View.VISIBLE);
+                    noDataText.setVisibility(View.GONE);
+                }
+            }
+        });
+    }
+
+    public static void startLoadingAvatar(final User author) {
+
+        ((Activity) cx).runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                synchronized (this) {
+                    
author.getUserViewHolder().author_name.setText(author.getName());
+                    //((TextView) 
rootView.findViewById(R.id.workflow_author)).setText(author
+                    // .getName());
+                    //check whether avatar is already in the cache before 
trying to download it
+                    // from remote resource
+                    if (avatarCache.get(author.getDetails_uri()) == null)
+                        new 
AvatarLoader(author.getUserViewHolder()).execute(author
+                                .getDetails_uri(), author.getRow_id());
+                    else {
+                        
author.getUserViewHolder().author_profile.setImageBitmap(avatarCache.get
+                                (author.getDetails_uri()));
+//                        ((ImageView) 
rootView.findViewById(R.id.author_profile_image))
+// .setImageBitmap(avatarCache.get(author.getDetails_uri()));
+                    }
+                    System.out.println("Author cached ID " + 
author.getDetails_uri() + "\n Name: " +
+                            "" + author.getName());
+                }
+            }
+        });
+    }
+
     /**
-     * Mandatory empty constructor for the fragment manager to instantiate the
-     * fragment (e.g. upon screen orientation changes).
+     * Called when avatar xml has finished parsing. fetches the avatar 
remotely and updates the item
+     * in the list view
+     *
+     * @param author the author avatar to load
      */
-    public WorkflowItemFragment() {
-    }
+    public static void updateAvatar(final User author) {
 
+        ((Activity) cx).runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                //      new LoadAuthorAvatar((ImageView) 
rootView.findViewById(R.id
+                // 
.author_profile_image),author.getDetails_uri()).execute(author.getAvatar_url());
+                new 
LoadAuthorAvatar(author.getUserViewHolder().author_profile, author
+                        .getDetails_uri()).execute(author.getAvatar_url());
+            }
+        });
+    }
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -135,13 +202,14 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
         cx = getActivity();
         mLinearLayoutManager = new LinearLayoutManager(cx);
         scrollListener = new InfiniteScrollListener();
-        workflowObserver= new RecyclerView.AdapterDataObserver() {
+        workflowObserver = new RecyclerView.AdapterDataObserver() {
 
             @Override
             public void onItemRangeInserted(int positionStart, int itemCount) {
                 super.onItemRangeInserted(positionStart, itemCount);
-                mListView.swapAdapter(workflowAdapter,false);
-                Toast.makeText(getActivity(), "adding more workflows to 
listview", Toast.LENGTH_SHORT).show();
+                mListView.swapAdapter(workflowAdapter, false);
+                Toast.makeText(getActivity(), "adding more workflows to 
listview", Toast
+                        .LENGTH_SHORT).show();
             }
         };
         workflowAdapter = new WorkflowAdapter(getActivity());
@@ -151,11 +219,12 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
             mParam1 = getArguments().getString(ARG_PARAM1);
             mParam2 = getArguments().getString(ARG_PARAM2);
         }
-        in = 
AnimationUtils.loadAnimation(getActivity(),android.R.anim.slide_in_left);
+        in = AnimationUtils.loadAnimation(getActivity(), 
android.R.anim.slide_in_left);
     }
 
     @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup 
container,Bundle savedInstanceState) {
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle
+            savedInstanceState) {
         rootView = inflater.inflate(R.layout.fragment_item, container, false);
         noDataText = (TextView) rootView.findViewById(android.R.id.empty);
         swipeRefreshLayout = (SwipeRefreshLayout) 
rootView.findViewById(R.id.refresh);
@@ -171,12 +240,13 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
         mListView.setItemAnimator(new DefaultItemAnimator());
 
         final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
-        // Use 1/8th of the available memory for this memory cache. up to 4MB 
for high screen densities and 1.2Mb for low sds
+        // Use 1/8th of the available memory for this memory cache. up to 4MB 
for high screen
+        // densities and 1.2Mb for low sds
         final int cacheSize = maxMemory / 8;
-        avatarCache = new LruCache<String, Bitmap>(cacheSize){
+        avatarCache = new LruCache<String, Bitmap>(cacheSize) {
             @Override
-            protected int sizeOf(String key, Bitmap bitmap){
-            // The cache size will be measured in kilobytes
+            protected int sizeOf(String key, Bitmap bitmap) {
+                // The cache size will be measured in kilobytes
                 return bitmap.getByteCount() / 1024;
             }
         };
@@ -189,7 +259,7 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
         super.onAttach(activity);
         try {
 
-           // ((DashboardMainActivity) activity).onSectionAttached(1);
+            // ((DashboardMainActivity) activity).onSectionAttached(1);
         } catch (ClassCastException e) {
             throw new ClassCastException(activity.toString()
                     + " must implement OnFragmentInteractionListener");
@@ -214,8 +284,8 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
     @Override
     public void onResume() {
         super.onResume();
-        if(!STATE_ON) {
-            new WorkflowLoader(getActivity(), 
swipeRefreshLayout).execute(""+currentPage);
+        if (!STATE_ON) {
+            new WorkflowLoader(getActivity(), swipeRefreshLayout).execute("" + 
currentPage);
 
             if (mListView.getAdapter().getItemCount() == 0) {
                 mListView.setVisibility(View.GONE);
@@ -226,7 +296,8 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
                 noDataText.setVisibility(View.GONE);
             }
         }
-//        
((RecyclerView)(getActivity()).findViewById(R.id.favoriteList)).getAdapter().notifyDataSetChanged();
+//        
((RecyclerView)(getActivity()).findViewById(R.id.favoriteList)).getAdapter()
+// .notifyDataSetChanged();
     }
 
     @Override
@@ -239,12 +310,14 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         super.onCreateOptionsMenu(menu, inflater);
         //menu.clear();
-        if(menu.size() == 1) {
+        if (menu.size() == 1) {
             //get the searchview and set the searchable configuration
-            SearchManager searchManager = (SearchManager) 
getActivity().getSystemService(Context.SEARCH_SERVICE);
+            SearchManager searchManager = (SearchManager) 
getActivity().getSystemService(Context
+                    .SEARCH_SERVICE);
             SearchView searchView = (SearchView) 
menu.findItem(R.id.action_search).getActionView();
             //assuming this activity is the searchable activity
-            
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
+            
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity()
+                    .getComponentName()));
             searchView.setSubmitButtonEnabled(true);
             searchView.setOnQueryTextListener(this);
 //            searchView.setOnSearchClickListener(this);
@@ -257,8 +330,8 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        if(item.getTitle().equals("Refresh")){
-            new WorkflowLoader(getActivity(),swipeRefreshLayout).execute("1");
+        if (item.getTitle().equals("Refresh")) {
+            new WorkflowLoader(getActivity(), swipeRefreshLayout).execute("1");
             return true;
         }
         return super.onOptionsItemSelected(item);
@@ -267,15 +340,15 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
     @Override
     public void onDestroy() {
         super.onDetach();
-      //  workflowAdapter.unregisterAdapterDataObserver(workflowObserver);
+        //  workflowAdapter.unregisterAdapterDataObserver(workflowObserver);
     }
 
     //handle a request to query for given workflows
-    private void performSearch(String search){
+    private void performSearch(String search) {
         WorkflowAdapter ladapter = new WorkflowAdapter(getActivity());
         WorkflowAdapter wk = workflowAdapter;
 
-        if(!TextUtils.isEmpty(search)) {
+        if (!TextUtils.isEmpty(search)) {
             if (null != wk)
                 for (int i = 0; i < wk.getItemCount(); i++) {
                     Workflow workflow = wk.getItem(i);
@@ -286,7 +359,8 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
 
             mListView.swapAdapter(ladapter, true);
             if (ladapter.getItemCount() == 0)
-                Toast.makeText(getActivity(), "No workflows found matching 
criteria", Toast.LENGTH_SHORT).show();
+                Toast.makeText(getActivity(), "No workflows found matching 
criteria", Toast
+                        .LENGTH_SHORT).show();
         }
     }
 
@@ -295,11 +369,13 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
         isRefreshData = true;
         isLoadMoreData = false;
 
-        new WorkflowLoader(getActivity(),swipeRefreshLayout).execute(""+1);
+        new WorkflowLoader(getActivity(), swipeRefreshLayout).execute("" + 1);
     }
 
     /**
-     * Search action triggered, handle the search request. Filter the 
workflows by name/title and swap current adapter with the new adapter
+     * Search action triggered, handle the search request. Filter the 
workflows by name/title and
+     * swap current adapter with the new adapter
+     *
      * @param query Search string criteria
      * @return whether or not user handled request 'manually'
      */
@@ -315,66 +391,6 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
         return true;
     }
 
-    public static void updateWorkflowUI(final List<Workflow> data) {
-
-        ((Activity)cx).runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                WorkflowItemFragment.workflowAdapter = new 
WorkflowAdapter(cx,data);
-                if(isLoadMoreData) {
-                    isLoadMoreData = false;
-                    isRefreshData = false;
-                    ((WorkflowAdapter)mListView.getAdapter()).addItems(data, 
previousTotal);
-                }else
-                    mListView.swapAdapter(workflowAdapter, false);
-
-                if(WorkflowItemFragment.workflowAdapter.getItemCount() == 0){
-                    mListView.setVisibility(View.GONE);
-                    noDataText.setVisibility(View.VISIBLE);
-                  //  Toast.makeText(cx, 
cx.getResources().getString(R.string.err_workflow_conn), 
Toast.LENGTH_LONG).show();
-                }else{
-                    mListView.setVisibility(View.VISIBLE);
-                    noDataText.setVisibility(View.GONE);
-                }
-            }
-        });
-    }
-
-    public static void startLoadingAvatar(final User author) {
-
-        ((Activity)cx).runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                synchronized (this) {
-                    
author.getUserViewHolder().author_name.setText(author.getName());
-                    //((TextView) 
rootView.findViewById(R.id.workflow_author)).setText(author.getName());
-                    //check whether avatar is already in the cache before 
trying to download it from remote resource
-                    if(avatarCache.get(author.getDetails_uri()) == null)
-                        new 
AvatarLoader(author.getUserViewHolder()).execute(author.getDetails_uri(), 
author.getRow_id());
-                    else{
-                        
author.getUserViewHolder().author_profile.setImageBitmap(avatarCache.get(author.getDetails_uri()));
-//                        ((ImageView) 
rootView.findViewById(R.id.author_profile_image)).setImageBitmap(avatarCache.get(author.getDetails_uri()));
-                    }
-                    System.out.println("Author cached ID 
"+author.getDetails_uri()+"\n Name: "+author.getName());
-                }
-            }
-        });
-    }
-
-    /**
-     * Called when avatar xml has finished parsing. fetches the avatar 
remotely and updates the item in the list view
-     * @param author the author avatar to load
-     */
-    public static void updateAvatar(final User author) {
-
-        ((Activity)cx).runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-               //      new LoadAuthorAvatar((ImageView) 
rootView.findViewById(R.id.author_profile_image),author.getDetails_uri()).execute(author.getAvatar_url());
-                new LoadAuthorAvatar( 
author.getUserViewHolder().author_profile,author.getDetails_uri()).execute(author.getAvatar_url());
-            }
-        });
-    }
     /**
      * Load the Author Avatar from a background Task
      */
@@ -413,13 +429,13 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
             try {
                 avatarCache.put(row_id_as_key, bitmap);
 
-            }catch(NullPointerException np){
+            } catch (NullPointerException np) {
 
             }
         }
     }
 
-    private class InfiniteScrollListener extends RecyclerView.OnScrollListener{
+    private class InfiniteScrollListener extends RecyclerView.OnScrollListener 
{
         /**
          * Callback method to be invoked when the RecyclerView has been 
scrolled. This will be
          * called after the scroll has completed.
@@ -437,18 +453,19 @@ public class WorkflowItemFragment extends Fragment 
implements SwipeRefreshLayout
             visibleItemCount = mListView.getChildCount();
             totalItemCount = mLinearLayoutManager.getItemCount();
             firstVisibleItem = 
mLinearLayoutManager.findFirstVisibleItemPosition();
-            if(loading){
-                if(totalItemCount > previousTotal){
+            if (loading) {
+                if (totalItemCount > previousTotal) {
                     loading = false;
                     previousTotal = totalItemCount;
                 }
             }
-            if(!loading && (totalItemCount - visibleItemCount) <= 
(firstVisibleItem+visibleThreshold)){
+            if (!loading && (totalItemCount - visibleItemCount) <= 
(firstVisibleItem +
+                    visibleThreshold)) {
                 //list has reached end, load more.
                 Toast.makeText(getActivity(), "Loading more", 
Toast.LENGTH_SHORT).show();
                 isLoadMoreData = true;
                 currentPage++;
-                new 
WorkflowLoader(getActivity(),swipeRefreshLayout).execute(""+currentPage);
+                new WorkflowLoader(getActivity(), 
swipeRefreshLayout).execute("" + currentPage);
                 System.out.println(currentPage);
                 loading = true;
             }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowViewpager.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowViewpager.java 
b/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowViewpager.java
new file mode 100644
index 0000000..0d5acb6
--- /dev/null
+++ 
b/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowViewpager.java
@@ -0,0 +1,114 @@
+package org.apache.taverna.mobile.fragments;
+
+import org.apache.taverna.mobile.R;
+
+import android.os.Bundle;
+import android.support.design.widget.TabLayout;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentPagerAdapter;
+import android.support.v4.view.ViewPager;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by rajan on 8/3/16.
+ */
+public class WorkflowViewpager extends Fragment {
+
+    private final String LOG_TAG = getClass().getSimpleName();
+
+    ViewPager viewPager;
+    TabLayout tabLayout;
+
+
+    public static WorkflowViewpager getInstance(int position) {
+        WorkflowViewpager myFragment = new WorkflowViewpager();
+        Bundle args = new Bundle();
+        args.putInt("position", position);
+        myFragment.setArguments(args);
+        return myFragment;
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle
+            savedInstanceState) {
+        View workflow_pager = inflater.inflate(R.layout.viewpager_workflow, 
container, false);
+
+        /**
+         * Setting the tool bar in MainActivity for all fragment
+         */
+        Toolbar toolbar = (Toolbar) workflow_pager.findViewById(R.id.toolbar);
+        ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
+
+        final ActionBar ab = ((AppCompatActivity) 
getActivity()).getSupportActionBar();
+        ab.setHomeAsUpIndicator(R.drawable.ic_menu);
+        ab.setDisplayHomeAsUpEnabled(true);
+
+
+        viewPager = (ViewPager) workflow_pager.findViewById(R.id.mviewpager);
+        final Adapter adapter = new Adapter(getChildFragmentManager());
+
+        /**
+         * Dynamically Adding tabs
+         * To add the new Tab "Go to res/values/category_id and add new title 
and category id"
+         */
+        adapter.addFragment(new WorkflowItemFragment(), 
getResources().getString(R.string
+                .title_explore));
+        adapter.addFragment(new FavoriteFragment(), 
getResources().getString(R.string
+                .title_favorite));
+
+        viewPager.setAdapter(adapter);
+        viewPager.setOffscreenPageLimit(2);
+        tabLayout = (TabLayout) workflow_pager.findViewById(R.id.mtablayout);
+        tabLayout.setupWithViewPager(viewPager);
+
+        return workflow_pager;
+    }
+
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        Log.i(LOG_TAG, "Workflow_viewpager.onCreate");
+
+    }
+
+    static class Adapter extends FragmentPagerAdapter {
+        private final List<Fragment> mFragments = new ArrayList<>();
+        private final List<String> mFragmentTitles = new ArrayList<>();
+
+        public Adapter(FragmentManager fm) {
+            super(fm);
+        }
+
+        public void addFragment(Fragment fragment, String title) {
+            mFragments.add(fragment);
+            mFragmentTitles.add(title);
+        }
+
+        @Override
+        public Fragment getItem(int position) {
+            return mFragments.get(position);
+        }
+
+        @Override
+        public int getCount() {
+            return mFragments.size();
+        }
+
+
+        @Override
+        public CharSequence getPageTitle(int position) {
+            return mFragmentTitles.get(position);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/e752e97d/app/src/main/java/org/apache/taverna/mobile/fragments/Workflow_viewpager.java
----------------------------------------------------------------------
diff --git 
a/app/src/main/java/org/apache/taverna/mobile/fragments/Workflow_viewpager.java 
b/app/src/main/java/org/apache/taverna/mobile/fragments/Workflow_viewpager.java
deleted file mode 100644
index 753645f..0000000
--- 
a/app/src/main/java/org/apache/taverna/mobile/fragments/Workflow_viewpager.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package org.apache.taverna.mobile.fragments;
-
-import android.os.Bundle;
-import android.support.design.widget.TabLayout;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.support.v4.app.FragmentManager;
-import org.apache.taverna.mobile.R;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by rajan on 8/3/16.
- */
-public class Workflow_viewpager extends Fragment{
-
-       private final String LOG_TAG = getClass().getSimpleName();
-
-       ViewPager viewPager;
-       TabLayout tabLayout;
-
-
-       public static Workflow_viewpager getInstance(int position) {
-               Workflow_viewpager myFragment = new Workflow_viewpager();
-               Bundle args = new Bundle();
-               args.putInt("position", position);
-               myFragment.setArguments(args);
-               return myFragment;
-       }
-
-       @Override
-       public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) {
-               View workflow_pager = 
inflater.inflate(R.layout.viewpager_workflow, container, false);
-
-               /**
-                * Setting the tool bar in MainActivity for all fragment
-                */
-               Toolbar toolbar = (Toolbar) 
workflow_pager.findViewById(R.id.toolbar);
-               ((AppCompatActivity) 
getActivity()).setSupportActionBar(toolbar);
-
-               final ActionBar ab = ((AppCompatActivity) 
getActivity()).getSupportActionBar();
-               ab.setHomeAsUpIndicator(R.drawable.ic_menu);
-               ab.setDisplayHomeAsUpEnabled(true);
-
-
-               viewPager = (ViewPager) 
workflow_pager.findViewById(R.id.mviewpager);
-               final Adapter adapter = new Adapter(getChildFragmentManager());
-
-               /**
-                * Dynamically Adding tabs
-                * To add the new Tab "Go to res/values/category_id and add new 
title and category id"
-                */
-               adapter.addFragment(new WorkflowItemFragment() , 
getResources().getString(R.string.title_explore));
-               adapter.addFragment(new FavoriteFragment(), 
getResources().getString(R.string.title_favorite));
-
-               viewPager.setAdapter(adapter);
-               viewPager.setOffscreenPageLimit(2);
-               tabLayout = (TabLayout) 
workflow_pager.findViewById(R.id.mtablayout);
-               tabLayout.setupWithViewPager(viewPager);
-
-               return workflow_pager;
-       }
-
-
-
-       @Override
-       public void onViewCreated(View view, Bundle savedInstanceState)
-       {
-               super.onViewCreated(view, savedInstanceState);
-               Log.i(LOG_TAG, "Workflow_viewpager.onCreate");
-
-       }
-
-       static class Adapter extends FragmentPagerAdapter
-       {
-               private final List<Fragment> mFragments = new ArrayList<>();
-               private final List<String> mFragmentTitles = new ArrayList<>();
-
-               public Adapter(FragmentManager fm) {
-                       super(fm);
-               }
-
-               public void addFragment(Fragment fragment, String title) {
-                       mFragments.add(fragment);
-                       mFragmentTitles.add(title);
-               }
-
-               @Override
-               public Fragment getItem(int position) {
-                       return mFragments.get(position);
-               }
-
-               @Override
-               public int getCount() {
-                       return mFragments.size();
-               }
-
-
-
-               @Override
-               public CharSequence getPageTitle(int position) {
-                       return mFragmentTitles.get(position);
-               }
-       }
-}

Reply via email to