/* * Copyright 2012-2014 eBay Software Foundation and selendroid committers. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package io.selendroid.testapp; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.Dialog; import android.app.ProgressDialog; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnLongClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.TextView; import android.widget.Toast; /** * Demo project to verify selendroid actions. * * @author ddary */ public class HomeScreenActivity extends Activity { private static final int DIALOG_ALERT = 10; private static final int DIALOG_LONG_PRESS = 12; private static final int DIALOG_DOWNLOAD_PROGRESS = 11; private static String TAG = "Selendroid-demoapp"; private ProgressDialog progressDialog = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i(TAG, "onCreate"); setContentView(io.selendroid.testapp.R.layout.homescreen); Button button = (Button) findViewById(io.selendroid.testapp.R.id.buttonTest); button.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { showDialog(DIALOG_LONG_PRESS); return true; } }); initExceptionTestButton(); initExceptionTestField(); } @Override protected void onResume() { TextView textview = ((TextView) findViewById(io.selendroid.testapp.R.id.visibleTextView)); textview.setVisibility(View.INVISIBLE); super.onResume(); } public void displayPopupWindow(View view) { LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); View popupView = layoutInflater.inflate(io.selendroid.testapp.R.layout.popup_window, null); final PopupWindow popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); Button btnDismiss = (Button) popupView.findViewById(io.selendroid.testapp.R.id.popup_dismiss_button); btnDismiss.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub popupWindow.dismiss(); } }); Button btnOpenPopup = (Button) findViewById(io.selendroid.testapp.R.id.showPopupWindowButton); popupWindow.showAsDropDown(btnOpenPopup, -50, -300); } public void showL10nDialog(View view) { showDialog(DIALOG_ALERT); } public void showWaitingDialog(View view) { new MyAsyncTask().execute(""); } public void showWebViewDialog(View view) { Intent nextScreen = new Intent(getApplicationContext(), WebViewActivity.class); startActivity(nextScreen); } public void showTouchActionsDialog(View view) { Intent nextScreen = new Intent(getApplicationContext(), TouchGesturesActivity.class); startActivity(nextScreen); } public void showSearchDialog(View view) { Intent nextScreen = new Intent(getApplicationContext(), SearchUsersActivity.class); startActivity(nextScreen); } public void showUserRegistrationDialog(View view) { Intent nextScreen = new Intent(getApplicationContext(), RegisterUserActivity.class); startActivity(nextScreen); } public void displayToast(View view) { Context context = getApplicationContext(); CharSequence text = "Hello selendroid toast!"; int duration = Toast.LENGTH_LONG; Toast toast = Toast.makeText(context, text, duration); toast.show(); } public void displayTextView(View view) { TextView textview = ((TextView) findViewById(io.selendroid.testapp.R.id.visibleTextView)); if (textview.isShown()) { textview.setVisibility(View.INVISIBLE); } else { textview.setVisibility(View.VISIBLE); } } public void displayAndFocus(View view) { LinearLayout linearLayout = ((LinearLayout) findViewById(io.selendroid.testapp.R.id.focusedLayout)); if (linearLayout.isShown()) { linearLayout.setVisibility(View.GONE); } else { linearLayout.setVisibility(View.VISIBLE); linearLayout.requestFocus(); } } @Override protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_ALERT: // Create out AlterDialog Builder builder = new AlertDialog.Builder(this); builder.setMessage("This will end the activity"); builder.setCancelable(true); builder.setPositiveButton("I agree", new OkOnClickListener()); builder.setNegativeButton("No, no", new CancelOnClickListener()); AlertDialog dialog = builder.create(); dialog.show(); return dialog; case DIALOG_LONG_PRESS: Builder builder2 = new AlertDialog.Builder(this); builder2.setMessage("Long Press Tap has been received."); builder2.setCancelable(true); builder2.setPositiveButton("Ok", new CancelOnClickListener()); AlertDialog dialog2 = builder2.create(); dialog2.show(); return dialog2; case DIALOG_DOWNLOAD_PROGRESS: progressDialog = new ProgressDialog(this); progressDialog.setMessage("Waiting Dialog"); progressDialog.setIndeterminate(false); progressDialog.setMax(100); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setCancelable(true); progressDialog.show(); return progressDialog; } return super.onCreateDialog(id); } private final class CancelOnClickListener implements DialogInterface.OnClickListener { public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "Activity will continue", Toast.LENGTH_LONG).show(); } } private final class OkOnClickListener implements DialogInterface.OnClickListener { public void onClick(DialogInterface dialog, int which) { HomeScreenActivity.this.finish(); } } class MyAsyncTask extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); showDialog(DIALOG_DOWNLOAD_PROGRESS); } @Override protected String doInBackground(String... params) { try { Thread.sleep(3000); progressDialog.setProgress(25); Thread.sleep(3000); progressDialog.setProgress(50); Thread.sleep(3000); progressDialog.setProgress(75); Thread.sleep(3000); progressDialog.setProgress(100); } catch (Exception e) {} return null; } @Override protected void onPostExecute(String unused) { try { dismissDialog(DIALOG_DOWNLOAD_PROGRESS); } catch (Exception e) { // ignore } showUserRegistrationDialog(null); } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(io.selendroid.testapp.R.layout.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case io.selendroid.testapp.R.id.menu_home: startActivity(new Intent(getApplicationContext(), HomeScreenActivity.class)); return true; case io.selendroid.testapp.R.id.menu_web_view: startActivity(new Intent(getApplicationContext(), WebViewActivity.class)); return true; case io.selendroid.testapp.R.id.menu_multiple_web_views: startActivity(new Intent(getApplicationContext(), MultipleWebViewsActivity.class)); return true; case io.selendroid.testapp.R.id.extreem_large_view: startActivity(new Intent(getApplicationContext(), ExtremLargeActivity.class)); return true; case io.selendroid.testapp.R.id.menu_find_employee: Intent intent = new Intent("android.intent.action.MAIN"); intent .setComponent(ComponentName .unflattenFromString("io.selendroid.directory/io.selendroid.directory.EmployeeDirectoy")); intent.addCategory("android.intent.category.LAUNCHER"); intent.setData(Uri.parse("http://selendroid.io/directory#employees/4")); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } } private void initExceptionTestButton() { Button exceptionTestButton = (Button) findViewById(io.selendroid.testapp.R.id.exceptionTestButton); exceptionTestButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { throw new RuntimeException("Unhandled Exception Test!"); } }); } private void initExceptionTestField() { EditText exceptionTestField = (EditText) findViewById(io.selendroid.testapp.R.id.exceptionTestField); exceptionTestField.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void afterTextChanged(Editable editable) { throw new RuntimeException("Unhandled Exception Test!"); } }); } }