package com.actionbarsherlock.internal.view.menu;

import android.content.ComponentName;
import android.content.Intent;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;

/** Used to carry an instance of our version of Menu through a native channel. */
public class MenuMule implements Menu {
    private static final String ERROR = "Cannot interact with object designed for temporary "
            + "instance passing. Make sure you using both SherlockFragmentActivity and "
            + "SherlockFragment.";


    private final com.actionbarsherlock.view.Menu mMenu;

    public MenuMule(com.actionbarsherlock.view.Menu menu) {
        mMenu = menu;
    }

    public com.actionbarsherlock.view.Menu unwrap() {
        return mMenu;
    }


    @Override
    public MenuItem add(CharSequence arg0) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public MenuItem add(int arg0) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public MenuItem add(int arg0, int arg1, int arg2, CharSequence arg3) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public MenuItem add(int arg0, int arg1, int arg2, int arg3) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public int addIntentOptions(int arg0, int arg1, int arg2,
            ComponentName arg3, Intent[] arg4, Intent arg5, int arg6,
            MenuItem[] arg7) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public SubMenu addSubMenu(CharSequence arg0) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public SubMenu addSubMenu(int arg0) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public SubMenu addSubMenu(int arg0, int arg1, int arg2, CharSequence arg3) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public SubMenu addSubMenu(int arg0, int arg1, int arg2, int arg3) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public void clear() {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public void close() {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public MenuItem findItem(int arg0) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public MenuItem getItem(int arg0) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public boolean hasVisibleItems() {
        return mMenu.hasVisibleItems();
        //throw new IllegalStateException(ERROR);
    }

    @Override
    public boolean isShortcutKey(int arg0, KeyEvent arg1) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public boolean performIdentifierAction(int arg0, int arg1) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public boolean performShortcut(int arg0, KeyEvent arg1, int arg2) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public void removeGroup(int arg0) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public void removeItem(int arg0) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public void setGroupCheckable(int arg0, boolean arg1, boolean arg2) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public void setGroupEnabled(int arg0, boolean arg1) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public void setGroupVisible(int arg0, boolean arg1) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public void setQwertyMode(boolean arg0) {
        throw new IllegalStateException(ERROR);
    }

    @Override
    public int size() {
        throw new IllegalStateException(ERROR);
    }
}
