mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
5.4 KiB
Java
186 lines
5.4 KiB
Java
package com.actionbarsherlock.internal.view.menu;
|
|
|
|
import java.util.WeakHashMap;
|
|
import android.content.ComponentName;
|
|
import android.content.Intent;
|
|
import android.view.KeyEvent;
|
|
import com.actionbarsherlock.view.Menu;
|
|
import com.actionbarsherlock.view.MenuItem;
|
|
import com.actionbarsherlock.view.SubMenu;
|
|
|
|
public class MenuWrapper implements Menu {
|
|
private final android.view.Menu mNativeMenu;
|
|
|
|
private final WeakHashMap<android.view.MenuItem, MenuItem> mNativeMap =
|
|
new WeakHashMap<android.view.MenuItem, MenuItem>();
|
|
|
|
|
|
public MenuWrapper(android.view.Menu nativeMenu) {
|
|
mNativeMenu = nativeMenu;
|
|
}
|
|
|
|
public android.view.Menu unwrap() {
|
|
return mNativeMenu;
|
|
}
|
|
|
|
private MenuItem addInternal(android.view.MenuItem nativeItem) {
|
|
MenuItem item = new MenuItemWrapper(nativeItem);
|
|
mNativeMap.put(nativeItem, item);
|
|
return item;
|
|
}
|
|
|
|
@Override
|
|
public MenuItem add(CharSequence title) {
|
|
return addInternal(mNativeMenu.add(title));
|
|
}
|
|
|
|
@Override
|
|
public MenuItem add(int titleRes) {
|
|
return addInternal(mNativeMenu.add(titleRes));
|
|
}
|
|
|
|
@Override
|
|
public MenuItem add(int groupId, int itemId, int order, CharSequence title) {
|
|
return addInternal(mNativeMenu.add(groupId, itemId, order, title));
|
|
}
|
|
|
|
@Override
|
|
public MenuItem add(int groupId, int itemId, int order, int titleRes) {
|
|
return addInternal(mNativeMenu.add(groupId, itemId, order, titleRes));
|
|
}
|
|
|
|
private SubMenu addInternal(android.view.SubMenu nativeSubMenu) {
|
|
SubMenu subMenu = new SubMenuWrapper(nativeSubMenu);
|
|
android.view.MenuItem nativeItem = nativeSubMenu.getItem();
|
|
MenuItem item = subMenu.getItem();
|
|
mNativeMap.put(nativeItem, item);
|
|
return subMenu;
|
|
}
|
|
|
|
@Override
|
|
public SubMenu addSubMenu(CharSequence title) {
|
|
return addInternal(mNativeMenu.addSubMenu(title));
|
|
}
|
|
|
|
@Override
|
|
public SubMenu addSubMenu(int titleRes) {
|
|
return addInternal(mNativeMenu.addSubMenu(titleRes));
|
|
}
|
|
|
|
@Override
|
|
public SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title) {
|
|
return addInternal(mNativeMenu.addSubMenu(groupId, itemId, order, title));
|
|
}
|
|
|
|
@Override
|
|
public SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) {
|
|
return addInternal(mNativeMenu.addSubMenu(groupId, itemId, order, titleRes));
|
|
}
|
|
|
|
@Override
|
|
public int addIntentOptions(int groupId, int itemId, int order, ComponentName caller, Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems) {
|
|
int result;
|
|
if (outSpecificItems != null) {
|
|
android.view.MenuItem[] nativeOutItems = new android.view.MenuItem[outSpecificItems.length];
|
|
result = mNativeMenu.addIntentOptions(groupId, itemId, order, caller, specifics, intent, flags, nativeOutItems);
|
|
for (int i = 0, length = outSpecificItems.length; i < length; i++) {
|
|
outSpecificItems[i] = new MenuItemWrapper(nativeOutItems[i]);
|
|
}
|
|
} else {
|
|
result = mNativeMenu.addIntentOptions(groupId, itemId, order, caller, specifics, intent, flags, null);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
public void removeItem(int id) {
|
|
mNativeMenu.removeItem(id);
|
|
}
|
|
|
|
@Override
|
|
public void removeGroup(int groupId) {
|
|
mNativeMenu.removeGroup(groupId);
|
|
}
|
|
|
|
@Override
|
|
public void clear() {
|
|
mNativeMap.clear();
|
|
mNativeMenu.clear();
|
|
}
|
|
|
|
@Override
|
|
public void setGroupCheckable(int group, boolean checkable, boolean exclusive) {
|
|
mNativeMenu.setGroupCheckable(group, checkable, exclusive);
|
|
}
|
|
|
|
@Override
|
|
public void setGroupVisible(int group, boolean visible) {
|
|
mNativeMenu.setGroupVisible(group, visible);
|
|
}
|
|
|
|
@Override
|
|
public void setGroupEnabled(int group, boolean enabled) {
|
|
mNativeMenu.setGroupEnabled(group, enabled);
|
|
}
|
|
|
|
@Override
|
|
public boolean hasVisibleItems() {
|
|
return mNativeMenu.hasVisibleItems();
|
|
}
|
|
|
|
@Override
|
|
public MenuItem findItem(int id) {
|
|
android.view.MenuItem nativeItem = mNativeMenu.findItem(id);
|
|
return findItem(nativeItem);
|
|
}
|
|
|
|
public MenuItem findItem(android.view.MenuItem nativeItem) {
|
|
if (nativeItem == null) {
|
|
return null;
|
|
}
|
|
|
|
MenuItem wrapped = mNativeMap.get(nativeItem);
|
|
if (wrapped != null) {
|
|
return wrapped;
|
|
}
|
|
|
|
return addInternal(nativeItem);
|
|
}
|
|
|
|
@Override
|
|
public int size() {
|
|
return mNativeMenu.size();
|
|
}
|
|
|
|
@Override
|
|
public MenuItem getItem(int index) {
|
|
android.view.MenuItem nativeItem = mNativeMenu.getItem(index);
|
|
return findItem(nativeItem);
|
|
}
|
|
|
|
@Override
|
|
public void close() {
|
|
mNativeMenu.close();
|
|
}
|
|
|
|
@Override
|
|
public boolean performShortcut(int keyCode, KeyEvent event, int flags) {
|
|
return mNativeMenu.performShortcut(keyCode, event, flags);
|
|
}
|
|
|
|
@Override
|
|
public boolean isShortcutKey(int keyCode, KeyEvent event) {
|
|
return mNativeMenu.isShortcutKey(keyCode, event);
|
|
}
|
|
|
|
@Override
|
|
public boolean performIdentifierAction(int id, int flags) {
|
|
return mNativeMenu.performIdentifierAction(id, flags);
|
|
}
|
|
|
|
@Override
|
|
public void setQwertyMode(boolean isQwerty) {
|
|
mNativeMenu.setQwertyMode(isQwerty);
|
|
}
|
|
}
|