/* * Copyright (C) 2007 The Android Open Source Project * * 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 android.view; import com.android.frameworks.coretests.R; import android.app.ListActivity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.view.ViewGroup; import android.view.LayoutInflater; import android.view.ContextMenu.ContextMenuInfo; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.TextView; /** * Exercises context menus in lists */ public class ListContextMenu extends ListActivity implements View.OnCreateContextMenuListener { static final String TAG = "ListContextMenu"; ThrashListAdapter mAdapter; private class ThrashListAdapter extends BaseAdapter { private LayoutInflater mInflater; private String[] mTitles = new String[100]; public ThrashListAdapter(Context context) { mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mTitles = new String[100]; int i; for (i=0; i<100; i++) { mTitles[i] = "[" + i + "]"; } } public int getCount() { return mTitles.length; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { TextView view; if (convertView == null) { view = (TextView) mInflater.inflate(android.R.layout.simple_list_item_1, null); } else { view = (TextView) convertView; } view.setText("List item " + mTitles[position]); return view; } } @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); mAdapter = new ThrashListAdapter(this); getListView().setOnCreateContextMenuListener(this); setListAdapter(mAdapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem item = menu.add(0, 0, 0, "Really long menu item name"); item.setTitleCondensed("Long name"); item.setIcon(R.drawable.black_square); SubMenu sm = menu.addSubMenu(0, 0, 0, "The 2nd item, a sub menu").setIcon(R.drawable.black_square_stretchable); item = sm.getItem(); item.setTitleCondensed("Sub menu"); sm.add(1, 0, 0, "Subitem 1"); sm.add(1, 0, 0, "Subitem 2"); sm.add(1, 0, 0, "Subitem 3"); sm.setGroupCheckable(1, true, true); menu.add(0, 0, 0, "Item 3"); menu.add(0, 0, 0, "Item 4"); menu.add(0, 0, 0, "Item 5"); menu.add(0, 0, 0, "Item 6"); menu.add(0, 0, 0, "Item 7"); menu.add(0, 0, 0, "Item 8"); menu.add(0, 0, 0, "Item 9"); sm = menu.addSubMenu(0, 0, 0, "Item 10 SM"); sm.add(0, 0, 0, "Subitem 1"); sm.add(0, 0, 0, "Subitem 2"); sm.add(0, 0, 0, "Subitem 3"); sm.add(0, 0, 0, "Subitem 4"); sm.add(0, 0, 0, "Subitem 5"); sm.add(0, 0, 0, "Subitem 6"); sm.add(0, 0, 0, "Subitem 7"); sm.add(0, 0, 0, "Subitem 8"); return true; } public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; String text = ((TextView) info.targetView).getText().toString(); if (text.contains("[0]")) { menu.setHeaderTitle("This is a test of the title and the icon").setHeaderIcon( android.R.drawable.sym_def_app_icon); } else if (text.contains("[1]")) { menu.setHeaderTitle("This is a test of just the title"); } else { TextView textView = new TextView(this); textView.setText("This is a test of a custom View"); menu.setHeaderView(textView); } menu.add(0, 0, 0, "Test 1"); SubMenu sm = menu.addSubMenu(0, 0, 0, "Test 1.5 SM"); sm.add(0, 0, 0, "CM Subitem 1"); sm.add(0, 0, 0, "CM Subitem 2"); sm.add(0, 0, 0, "CM Subitem 3"); menu.add(0, 0, 0, "Test 2"); menu.add(0, 0, 0, "Test 3"); menu.add(0, 0, 0, "Test 4"); menu.add(0, 0, 0, "Test 5"); menu.add(0, 0, 0, "Test 6"); menu.add(0, 0, 0, "Test 7"); menu.add(0, 0, 0, "Test 8"); menu.add(0, 0, 0, "Test 9"); menu.add(0, 0, 0, "Test 10"); menu.add(0, 0, 0, "Test 11"); menu.add(0, 0, 0, "Test 12"); menu.add(0, 0, 0, "Test 13"); menu.add(0, 0, 0, "Test 14"); menu.add(0, 0, 0, "Test 15"); menu.add(0, 0, 0, "Test 16"); menu.add(0, 0, 0, "Test 17"); menu.add(0, 0, 0, "Test 18"); menu.add(0, 0, 0, "Test 19"); menu.add(0, 0, 0, "Test 20"); menu.add(0, 0, 0, "Test 21"); menu.add(0, 0, 0, "Test 22"); menu.add(0, 0, 0, "Test 23"); menu.add(0, 0, 0, "Test 24"); } @Override public boolean onOptionsItemSelected(MenuItem item) { Log.i(TAG, "Options item " + item.toString() + " selected."); return super.onOptionsItemSelected(item); } @Override public void onOptionsMenuClosed(Menu menu) { Log.i(TAG, "Options menu closed"); } @Override public boolean onContextItemSelected(MenuItem item) { Log.i(TAG, "Context item " + item.toString() + " selected."); return super.onContextItemSelected(item); } @Override public void onContextMenuClosed(Menu menu) { Log.i(TAG, "Context menu closed"); } }