package android.support.v7.internal.view.menu;
import android.content.Context;
import android.support.v4.internal.view.SupportContextMenu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import org.holoeverywhere.widget.FrameLayout;
public class ContextMenuDecorView extends FrameLayout implements
MenuPresenter.Callback, MenuBuilder.Callback {
private ContextMenuBuilder mContextMenu;
private ContextMenuListener mListener;
private MenuDialogHelper mMenuDialogHelper;
private ContextMenuListenersProvider mProvider;
public ContextMenuDecorView(Context context) {
super(context);
setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
}
@Override
public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) {
if (mListener == null) {
return;
}
mListener.onContextMenuClosed((SupportContextMenu) menu);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}
@Override
public boolean onMenuItemSelected(MenuBuilder menuBuilder, MenuItem menuItem) {
if (mListener == null) {
return false;
}
if (menuBuilder instanceof ContextMenuBuilder
&& menuItem instanceof MenuItemImpl) {
((MenuItemImpl) menuItem).setMenuInfo(((ContextMenuBuilder) menuBuilder)
.getContextMenuInfo());
}
return mListener.onContextItemSelected(menuItem);
}
@Override
public void onMenuModeChange(MenuBuilder menu) {
}
@Override
public boolean onOpenSubMenu(MenuBuilder subMenu) {
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return false;
}
public void setProvider(ContextMenuListenersProvider provider) {
mProvider = provider;
}
@Override
public boolean showContextMenuForChild(View originalView) {
mListener = mProvider.getContextMenuListener(originalView);
if (mListener == null) {
return super.showContextMenuForChild(originalView);
}
if (mContextMenu == null) {
mContextMenu = new ContextMenuBuilder(getContext(), mListener);
mContextMenu.setCallback(this);
} else {
mContextMenu.clearAll();
mContextMenu.setContextMenuListener(mListener);
}
mMenuDialogHelper = mContextMenu.show(originalView, originalView.getWindowToken());
if (mMenuDialogHelper != null) {
mMenuDialogHelper.setPresenterCallback(this);
return true;
} else {
return false;
}
}
public interface ContextMenuListenersProvider {
public ContextMenuListener getContextMenuListener(View view);
}
}