add image zoom fragment

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/7d6d86bf
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/7d6d86bf
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/7d6d86bf

Branch: refs/heads/master
Commit: 7d6d86bfa38f3434dff1a94e7c2b5773ea88f307
Parents: cb1384b
Author: Sagar <[email protected]>
Authored: Sun Jul 24 19:25:22 2016 +0530
Committer: Sagar <[email protected]>
Committed: Sun Jul 24 19:25:22 2016 +0530

----------------------------------------------------------------------
 .../mobile/ui/imagezoom/ImageZoomFragment.java  | 243 +++++++++++++++++++
 1 file changed, 243 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/7d6d86bf/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
new file mode 100644
index 0000000..7599e35
--- /dev/null
+++ 
b/app/src/main/java/org/apache/taverna/mobile/ui/imagezoom/ImageZoomFragment.java
@@ -0,0 +1,243 @@
+package org.apache.taverna.mobile.ui.imagezoom;
+
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.load.resource.drawable.GlideDrawable;
+import com.bumptech.glide.request.Request;
+import com.bumptech.glide.request.animation.GlideAnimation;
+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.data.DataManager;
+import org.apache.taverna.mobile.utils.ConnectionInfo;
+
+import android.content.Context;
+import android.graphics.Matrix;
+import android.graphics.PointF;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.annotation.Nullable;
+import android.support.design.widget.Snackbar;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+import uk.co.senab.photoview.PhotoViewAttacher;
+
+public class ImageZoomFragment extends Fragment implements ImageZoomMvpView {
+
+    @BindView(R.id.ivWorkflowImage)
+    ImageView workflowImage;
+
+    @BindView(R.id.ivClose)
+    ImageView close;
+
+    public static final String ID = "id";
+
+    private static final String SERVER_ERROR = "Sever Error. Please try after 
sometime";
+
+    private static final String TAG = "ImageZoomFragment";
+
+    private String id;
+
+    private String jpgURI;
+
+    private DataManager dataManager;
+
+    private ImageZoomPresenter mImageZoomPresenter;
+
+    private ConnectionInfo mConnectionInfo;
+
+    PhotoViewAttacher mAttacher;
+
+    // These matrices will be used to scale points of the image
+    Matrix matrix = new Matrix();
+    Matrix savedMatrix = new Matrix();
+
+    // The 3 states (events) which the user is trying to perform
+    static final int NONE = 0;
+    static final int DRAG = 1;
+    static final int ZOOM = 2;
+    int mode = NONE;
+
+    // these PointF objects are used to record the point(s) the user is 
touching
+    PointF start = new PointF();
+    PointF mid = new PointF();
+    float oldDist = 1f;
+
+    public static ImageZoomFragment newInstance(String id) {
+
+        Bundle args = new Bundle();
+
+        args.putString(ID, id);
+
+        ImageZoomFragment fragment = new ImageZoomFragment();
+        fragment.setArguments(args);
+
+        return fragment;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        id = getArguments().getString(ID);
+
+        dataManager = new DataManager();
+        mImageZoomPresenter = new ImageZoomPresenter(dataManager);
+        mConnectionInfo = new ConnectionInfo(getContext());
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle
+            savedInstanceState) {
+
+        View rootView = inflater.inflate(R.layout.fragment_image_zoom, 
container, false);
+
+        ButterKnife.bind(this, rootView);
+
+        mImageZoomPresenter.attachView(this);
+
+        return rootView;
+    }
+
+    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        if (mConnectionInfo.isConnectingToInternet()) {
+
+            mImageZoomPresenter.loadImage(id, workflowImage);
+        } else {
+
+            showErrorSnackBar(getString(R.string.no_internet));
+        }
+
+
+
+
+    }
+
+    @OnClick(R.id.ivClose)
+    public void closeActivity(View v) {
+
+        getActivity().finish();
+    }
+
+
+
+    @Override
+    public void showErrorSnackBar(String error) {
+
+        final Snackbar snackbar = Snackbar.make(workflowImage, error, 
Snackbar.LENGTH_INDEFINITE);
+
+        snackbar.setAction("OK", new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+
+                snackbar.dismiss();
+                getActivity().finish();
+            }
+        });
+
+        snackbar.show();
+
+        Handler handler = new Handler();
+
+        handler.postDelayed(new Runnable() {
+            public void run() {
+                snackbar.dismiss();
+                getActivity().finish();
+            }
+        }, 2000);
+    }
+
+    @Override
+    public Context getAppContext() {
+        return getContext();
+    }
+
+    @Override
+    public void setJPGuri(String uri) {
+        jpgURI = uri;
+    }
+
+    @Override
+    public void setJPGImage() {
+
+
+        Glide.with(getContext())
+                .load(jpgURI)
+                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
+                .placeholder(R.drawable.placeholder)
+                .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
+                .into(new Target<GlideDrawable>() {
+                    @Override
+                    public void onLoadStarted(Drawable placeholder) {
+                        workflowImage.setImageDrawable(placeholder);
+                    }
+
+                    @Override
+                    public void onLoadFailed(Exception e, Drawable 
errorDrawable) {
+                        showErrorSnackBar(SERVER_ERROR);
+                    }
+
+                    @Override
+                    public void onResourceReady(GlideDrawable resource, 
GlideAnimation<? super GlideDrawable> glideAnimation) {
+                        workflowImage.setImageDrawable(resource.getCurrent());
+                        addImageAttacher();
+
+                    }
+
+                    @Override
+                    public void onLoadCleared(Drawable placeholder) {
+                        workflowImage.setImageDrawable(placeholder);
+                    }
+
+                    @Override
+                    public void getSize(SizeReadyCallback cb) {
+
+                    }
+
+                    @Override
+                    public void setRequest(Request request) {
+
+                    }
+
+                    @Override
+                    public Request getRequest() {
+                        return null;
+                    }
+
+                    @Override
+                    public void onStart() {
+
+                    }
+
+                    @Override
+                    public void onStop() {
+
+                    }
+
+                    @Override
+                    public void onDestroy() {
+
+                    }
+                });
+
+    }
+
+    @Override
+    public void addImageAttacher() {
+        mAttacher = new PhotoViewAttacher(workflowImage);
+    }
+
+
+}

Reply via email to