1f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev/* 2f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * Copyright (C) 2014 The Android Open Source Project 3f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * 4f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * Licensed under the Apache License, Version 2.0 (the "License"); 5f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * you may not use this file except in compliance with the License. 6f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * You may obtain a copy of the License at 7f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * 8f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * http://www.apache.org/licenses/LICENSE-2.0 9f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * 10f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * Unless required by applicable law or agreed to in writing, software 11f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * distributed under the License is distributed on an "AS IS" BASIS, 12f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * See the License for the specific language governing permissions and 14f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * limitations under the License. 15f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev */ 16f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 17f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevpackage com.google.android.apps.common.testing.ui.testapp; 18f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 19f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.app.Activity; 20f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.os.Build; 21f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.os.Bundle; 22f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.view.ContextMenu; 23f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.view.ContextMenu.ContextMenuInfo; 24f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.view.Menu; 25f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.view.MenuInflater; 26f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.view.MenuItem; 27f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.view.View; 28f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.widget.PopupMenu; 29f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.widget.PopupMenu.OnMenuItemClickListener; 30f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevimport android.widget.TextView; 31f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 32f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev/** 33f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * Shows MenuActivity with Options menu, Context menu and Popup menu. Click on a menu item changes 34f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev * text of R.id.textMenuResult. 35f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev */ 36f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelevpublic class MenuActivity extends Activity { 37f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 38f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev @Override 39f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev protected void onCreate(Bundle savedInstanceState) { 40f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev super.onCreate(savedInstanceState); 41f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev setContentView(R.layout.menu_activity); 42f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev registerForContextMenu(findViewById(R.id.text_context_menu)); 43f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } 44f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 45f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev @Override 46f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 47f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev super.onCreateContextMenu(menu, v, menuInfo); 48f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev MenuInflater inflater = getMenuInflater(); 49f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev inflater.inflate(R.menu.contextmenu, menu); 50f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } 51f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 52f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev @Override 53f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev public boolean onOptionsItemSelected(MenuItem item) { 54f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev TextView text = (TextView) findViewById(R.id.text_menu_result); 55f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev text.setText(item.getTitle()); 56f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev return true; 57f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } 58f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 59f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev @Override 60f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev public boolean onCreateOptionsMenu(Menu menu) { 61f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev MenuInflater inflater = getMenuInflater(); 62f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev inflater.inflate(R.menu.optionsmenu, menu); 63f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev return true; 64f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } 65f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 66f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev @Override 67f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev public boolean onContextItemSelected(MenuItem item) { 68f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev TextView text = (TextView) findViewById(R.id.text_menu_result); 69f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev text.setText(item.getTitle()); 70f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev return true; 71f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } 72f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 73f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev public void showPopup(View view) { 74f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { 75f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev TextView text = (TextView) findViewById(R.id.text_menu_result); 76f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev text.setText("Not supported in API " + Build.VERSION.SDK_INT); 77f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } else { 78f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev PopupMenu popup = new PopupMenu(this, view); 79f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev popup.setOnMenuItemClickListener(new PopupMenuListener()); 80f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev popup.getMenuInflater().inflate(R.menu.popupmenu, popup.getMenu()); 81f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev popup.show(); 82f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } 83f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } 84f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 85f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev @Override 86f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev public boolean onMenuItemSelected(int featureId, MenuItem item) { 87f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev return super.onMenuItemSelected(featureId, item); 88f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } 89f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev 90f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev private class PopupMenuListener implements OnMenuItemClickListener { 91f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev @Override 92f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev public boolean onMenuItemClick(MenuItem item) { 93f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev TextView text = (TextView) findViewById(R.id.text_menu_result); 94f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev text.setText(item.getTitle()); 95f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev return true; 96f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } 97f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev } 98f69eb9ac2856f470cb79f57141f711ed3ceed99dNick Korostelev} 99