package net.osmand.plus; import gnu.trove.list.array.TIntArrayList; import java.util.ArrayList; import android.view.Menu; import android.view.MenuItem; public class OptionsMenuHelper { public interface OnOptionsMenuClick { public void prepareOptionsMenu(Menu menu, MenuItem item); public boolean onClick(MenuItem item); } final TIntArrayList items = new TIntArrayList(); final TIntArrayList itemNames = new TIntArrayList(); final TIntArrayList visible = new TIntArrayList(); final ArrayList<OnOptionsMenuClick> listeners = new ArrayList<OnOptionsMenuClick>(); final TIntArrayList iconList = new TIntArrayList(); public OptionsMenuHelper() { } public void registerOptionsMenu(Menu menu) { for (int i = 0; i < items.size(); i++) { int resItemId = items.get(i); int resName = itemNames.get(i); int resIcon = iconList.get(i); boolean visibility = visible.get(i) > 0; if (resIcon != -1) { menu.add(Menu.CATEGORY_CONTAINER, resItemId, Menu.NONE, resName).setVisible(visibility).setIcon(resIcon); } else { menu.add(Menu.CATEGORY_CONTAINER, resItemId, Menu.NONE, resName).setVisible(visibility); } } } public boolean onClick(MenuItem mi) { int id = mi.getItemId(); int ind = items.indexOf(id); if(ind >= 0 && ind < listeners.size() && listeners.get(ind) != null) { return listeners.get(ind).onClick(mi); } return false; } public void prepareOptionsMenu(Menu menu) { for (int i = 0; i < items.size(); i++) { int resItemId = items.get(i); OnOptionsMenuClick l = listeners.get(i); if (l != null) { l.prepareOptionsMenu(menu, menu.findItem(resItemId)); } } } public void registerOptionsMenuItem(int resItemId, int resName, int resIcon, boolean visibility, OnOptionsMenuClick onClick) { items.add(resItemId); itemNames.add(resName); visible.add(visibility ? 1 : 0); listeners.add(onClick); iconList.add(resIcon); } public void registerOptionsMenuItem(int resItemId, int resName, int resIcon, OnOptionsMenuClick onClick) { registerOptionsMenuItem(resItemId, resName, resIcon, true, onClick); } public void registerOptionsMenuItem(int resItemId, int resName, boolean visibility, OnOptionsMenuClick onClick) { registerOptionsMenuItem(resItemId, resName, -1, visibility, onClick); } public void registerOptionsMenuItem(int resItemId, int resName, OnOptionsMenuClick onClick) { registerOptionsMenuItem(resItemId, resName, -1, true, onClick); } }