/* * Copyright (c) 2012 Hai Bison * * See the file LICENSE at the root directory of this project for copying * permission. */ package group.pals.android.lib.ui.filechooser.utils.ui; import group.pals.android.lib.ui.filechooser.R; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; /** * Utilities for context menu. * * @author Hai Bison * @since v4.3 beta * */ public class ContextMenuUtils { /** * Shows context menu. * * @param context * {@link Context} * @param iconId * resource icon ID of the dialog. * @param title * title of the dialog. * @param itemIds * array of resource IDs of strings. * @param listener * {@link OnMenuItemClickListener} */ public static void showContextMenu(Context context, int iconId, String title, final Integer[] itemIds, final OnMenuItemClickListener listener) { final MenuItemAdapter _adapter = new MenuItemAdapter(context, itemIds); View view = LayoutInflater.from(context).inflate(R.layout.afc_context_menu_view, null); ListView listview = (ListView) view.findViewById(R.id.afc_context_menu_view_listview_menu); listview.setAdapter(_adapter); final AlertDialog _dlg = Dlg.newDlg(context); // don't use Cancel button _dlg.setButton(DialogInterface.BUTTON_NEGATIVE, null, (DialogInterface.OnClickListener) null); _dlg.setCanceledOnTouchOutside(true); if (iconId > 0) _dlg.setIcon(iconId); _dlg.setTitle(title); _dlg.setView(view); if (listener != null) { listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { _dlg.dismiss(); listener.onClick(itemIds[position]); }// onItemClick() }); }// if listener != null _dlg.show(); }// showContextMenu() /** * Shows context menu. * * @param context * {@link Context} * @param iconId * resource icon ID of the dialog. * @param titleId * resource ID of the title of the dialog. {@code 0} will be * ignored. * @param itemIds * array of resource IDs of strings. * @param listener * {@link OnMenuItemClickListener} */ public static void showContextMenu(Context context, int iconId, int titleId, Integer[] itemIds, OnMenuItemClickListener listener) { showContextMenu(context, iconId, titleId > 0 ? context.getString(titleId) : null, itemIds, listener); }// showContextMenu() // ========== // INTERFACES /** * @author Hai Bison * @since v4.3 beta * */ public static interface OnMenuItemClickListener { /** * This method will be called after the menu dismissed. * * @param resId * the resource ID of the title of the menu item. */ void onClick(int resId); }// OnMenuItemClickListener }