package com.limemobile.app.launcher.widget; import android.content.Context; import android.os.Build; import android.view.Menu; import android.view.MenuItem; import android.view.View; /* This class exposes a subset of PopupMenu functionality, and chooses whether * to use the platform PopupMenu (on Honeycomb or above) or a backported version. */ public class QuickSelectMenu { // android.widget.PopupMenu mImplPlatform = null; com.limemobile.app.launcher.widget.PopupMenu mImplBackport = null; private enum ImplMode { PLATFORM, BACKPORT, NONE }; ImplMode mMode = ImplMode.NONE; private OnItemSelectedListener mItemSelectedListener; public QuickSelectMenu(Context context, View anchor) { // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // mMode = ImplMode.PLATFORM; // mImplPlatform = new android.widget.PopupMenu(context, anchor); // mImplPlatform // .setOnMenuItemClickListener(new android.widget.PopupMenu.OnMenuItemClickListener() { // @Override // public boolean onMenuItemClick(MenuItem item) { // return onMenuItemClickImpl(item); // } // }); // } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) { mMode = ImplMode.BACKPORT; mImplBackport = new com.limemobile.app.launcher.widget.PopupMenu(context, anchor); mImplBackport .setOnMenuItemClickListener(new com.limemobile.app.launcher.widget.PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { return onMenuItemClickImpl(item); } }); // } } // not sure if we want to expose this or just an add() method. public Menu getMenu() { // if (mMode == ImplMode.PLATFORM) { // Menu menu = mImplPlatform.getMenu(); // return menu; // } if (mMode == ImplMode.BACKPORT) { Menu menu = mImplBackport.getMenu(); return menu; } return null; } /** * Interface responsible for receiving menu item click events if the items * themselves do not have individual item click listeners. */ public interface OnItemSelectedListener { /** * This method will be invoked when an item is selected. * * @param item * {@link CharSequence} that was selected * @param id */ public void onItemSelected(CharSequence item, int id); } public void setOnItemSelectedListener(OnItemSelectedListener listener) { mItemSelectedListener = listener; } public void show() { // if (mMode == ImplMode.PLATFORM) { // mImplPlatform.show(); // } if (mMode == ImplMode.BACKPORT) { mImplBackport.show(); } } public void dismiss() { // if (mMode == ImplMode.PLATFORM) { // mImplPlatform.dismiss(); // } if (mMode == ImplMode.BACKPORT) { mImplBackport.dismiss(); } } // popup.setOnMenuItemClickListener(new // android.widget.PopupMenu.OnMenuItemClickListener() { public boolean onMenuItemClickImpl(MenuItem item) { CharSequence name = item.getTitle(); int id = item.getItemId(); if (this.mItemSelectedListener != null) this.mItemSelectedListener.onItemSelected(name, id); return true; } }