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