package org.intermine.app.activity; /* * Copyright (C) 2015 InterMine * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. See the LICENSE file for more * information or http://www.gnu.org/copyleft/lesser.html. * */ import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.ProgressBar; import org.intermine.app.R; import org.intermine.app.util.Strs; import org.intermine.app.util.Views; import org.intermine.app.web.BaseWebClient; import butterknife.ButterKnife; import butterknife.InjectView; /** * @author Daria Komkova <Daria_Komkova @ hotmail.com> */ public class WebActivity extends BaseActivity { public static final String LOAD_URL_EXTRA = "load_url"; public static final String TITLE_EXTRA = "title"; protected String mUrl; protected String mTitle; @InjectView(R.id.web_container) WebView mWebView; @InjectView(R.id.progress_bar) ProgressBar mProgressBar; @InjectView(R.id.default_toolbar) Toolbar mToolbar; private Client mWebClient; // -------------------------------------------------------------------------------------------- // Inner Classes // -------------------------------------------------------------------------------------------- public static void start(Activity activity, String title, String url) { Intent intent = new Intent(activity, WebActivity.class); intent.putExtra(LOAD_URL_EXTRA, url); intent.putExtra(TITLE_EXTRA, title); activity.startActivity(intent); activity.finish(); } // -------------------------------------------------------------------------------------------- // Static Methods // -------------------------------------------------------------------------------------------- @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web_activity); ButterKnife.inject(this); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); if (mUrl == null) { mUrl = getIntent().getStringExtra(LOAD_URL_EXTRA); } if (mTitle == null) { mTitle = getIntent().getStringExtra(TITLE_EXTRA); } initContent(); setUpWebViewClients(); mWebView.loadUrl(mUrl); } // -------------------------------------------------------------------------------------------- // Inner Classes // -------------------------------------------------------------------------------------------- protected void initContent() { if (!Strs.isNullOrEmpty(mTitle)) { setTitle(mTitle); } mWebView.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY); WebSettings settings = mWebView.getSettings(); settings.setJavaScriptEnabled(true); settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); } // -------------------------------------------------------------------------------------------- // Activity Lifecycle // -------------------------------------------------------------------------------------------- private void setUpWebViewClients() { mWebClient = new Client(); mWebView.setWebViewClient(mWebClient); } // -------------------------------------------------------------------------------------------- // Helper Methods // -------------------------------------------------------------------------------------------- private void setLoading(boolean loading) { if (loading) { Views.setInvisible(mWebView); Views.setVisible(mProgressBar); } else { Views.setVisible(mWebView); Views.setGone(mProgressBar); } } private class Client extends BaseWebClient { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); setLoading(true); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); setLoading(false); } } }